[Doc][px4][ros2][gazebo][yolov8]PX4-ROS2-Gazebo-YOLOv8
GIT地址:Https://github.com/monemati/PX4-ROS2-Gazebo-YOLOv8
apt install python3.8-venv
Create a virtual environment
# create
python -m venv /home/xg/px4-venv
# activate
source /home/xg/px4-venv/bin/activate
Clone repository
git clone https://github.com/monemati/PX4-ROS2-Gazebo-YOLOv8.git
Install PX4
cd /home/xg
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
cd PX4-Autopilot/
make px4_sitl
但是提示make不了。又找了其他的文章,ros2+px4的安装
Https://blog.csdn.net/Zecet/article/details/130474620
一、Install PX4
以下步骤需要科学上网:
下载PX4源码
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd /home/xg/PX4-Autopilot
make px4_stil gazebo-classic
安装配套的工具,这步需要注意,我这里安装了一些没用的更新源,需要先删除这部分更新源
APT的源列表通常存储在/etc/apt/sources.list文件中,或者在/etc/apt/sources.list.d/目录下的多个.list文件中。你可以通过以下命令查看这些源
cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/
2. 编辑/etc/apt/sources.list文件
首先,检查主/etc/apt/sources.list文件,看看是否有导致403错误的源。
你可以使用你喜欢的文本编辑器来编辑这个文件,比如nano或vim:
sudo vim /etc/apt/sources.list
在文件中,找到并删除或注释掉(在行前加#)那些导致403 Forbidden的源。例如:
# deb http://example.com/ubuntu focal main restricted
更新APT缓存
删除或注释掉有问题的源后,运行以下命令来更新APT缓存:
sudo apt-get update
确保更新过程不再出现403 Forbidden的错误。
保存并退出编辑器
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
重启电脑(我通过stop docker再start docker操作来模拟,具体是否有效暂不确定)
二、Setup XRCE-DDS Agent & Client
要让ROS2和PX4通讯,需要在PX4上运行XRCE-DDS的客户端,并在计算机上运行XRCE-DDS的代理
1.Setup the Agent
启动一个终端,输入以下指令
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/
但是make 时失败,提示cmake版本要4.20以上,当前我的版本是4.16.我尝试直接升级失败,因此选择手动升级
wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh
sudo mkdir /opt/cmake
sudo sh cmake-3.21.4-linux-x86_64.sh --skip-license --prefix=/opt/cmake
当时,wget下载很慢,直接到该地址通过浏览器的方式进行下载,再放到环境中
然后更新环境变量:
echo 'export PATH=/opt/cmake/bin:$PATH' >>~/.bashrc
source ~/.bashrc
这样再查看cmake版本:
可以了,这样再执行make操作
cd /home/xg/Mirco-XRCE-DDS-Agent
rm -rf ./build
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/
2.启动代理,连接模拟器运行的XRCE-DDS的客户端
MicroXRCEAgent udp4 -p 8888
这样代理就启动了,但是在启动PX4的客户端之前,代理不会接收到任何信息。
Start the Client
PX4的仿真环境会自动启动XRCE-DDS的客户端,并连接到UDP 8888端口。我们打开一个新的终端,启动PX4的仿真:
注意,一定要在px4的目录下,否则会出现错误提示:
cd /home/xg/PX4-Autopilot
make px4_sitl gazebo-classic
三、重新弄下,
1.用了v1.9的image重新展开。重新安装一次
sudo docker run -itd --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v /home/xg/dockfile:/root/chans_files -v /dev/dev -v /run/udev:/run/udev --device /dev/video0 --device /dev/video1 --device /dev/media0 -p 6788:22 --gpus=all ros2_orbslam3_usbcam_d435i_mono_ok_20240821:v1.9 /bin/bash
sudo docker exec -it 1526ebadab12 /bin/bash
service ssh restart
2.删除无效的更新源:
APT的源列表通常存储在/etc/apt/sources.list文件中,或者在/etc/apt/sources.list.d/目录下的多个.list文件中。你可以通过以下命令查看这些源
vim /etc/apt/sources.list
3.开始下载PX4的V1.14.0版本
参考:https://blog.csdn.net/weixin_42037083/article/details/137102858
git clone https://github.com/PX4/PX4-Autopilot.git
cd /home/xg/PX4-Autopilot
git checkout v1.14.0
下一步这个操作会经历180次失败,无所谓,一直尝试,直到完全下载更新完
git submodule update --init --recursive
4.安装必要的组件
bash /home/xg/PX4-Autopilot/Tools/setup/ubuntu.sh
GitHub - theunknowninfinite/Real-Time-UAV-Obstacle-Avoidance-Using-Nonlinear-Programming: Real-time obstacle avoidance utilizing the ModalAI Sentinel Drone with the PX4 flight stack and an Intel Realsense D435i .
Https://github.com/theunknowninfinite/Real-Time-UAV-Obstacle-Avoidance-Using-Nonlinear-Programming
pip3 uninstall em && pip3 install empy==3.3.4
pip3 install pyros-genmsg setuptools
5.执行make
cd /home/xg/PX4-Autopilot
make px4_sitl gazebo-classical
5.安装XRCE
5.1 先升级cmake到3.21
wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh
sudo mkdir /opt/cmake
sudo sh cmake-3.21.4-linux-x86_64.sh --skip-license --prefix=/opt/cmake
wget下载很慢,直接到该地址通过浏览器的方式进行下载,再放到环境中
然后更新环境变量:
echo 'export PATH=/opt/cmake/bin:$PATH' >>~/.bashrc
source ~/.bashrc
这样再查看cmake版本:
cmake --version
5.2 安装
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/
# mavros
sudo apt install ros-foxy-mavros ros-foxy-mavros-extras
# geographiclib
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #此行代码运行完毕需要一定时间
mkdir -p ~/ws_sensor_combined/src/
cd ~/ws_sensor_combined/src/
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git
cd ~/ws_sensor_combined/src/
source /opt/ros/foxy/setup.bash
colcon build
(一)Ubuntu20.04下PX4开发环境搭建(v1.14.0)_ubuntu20.04 px4 ros 编译环境-CSDN博客
四。使用px4_ros2官方镜像
参考链接:Https://blog.csdn.net/lxxwkan/article/details/132044422
还是不行,在windows下安装docker desktop后,通过windows下载px4_ros2镜像,再导出离线文件再导入ubuntu电脑内,再执行
1.解决Docker Engine stopped
Https://blog.csdn.net/cplvfx/article/details/138033592
下载docker desktop后安装,安装完运行软件提示:Docker Engine stoppedwin10系统 Docker 提示Docker Engine stopped
一、检查服务是否开启
找到 【Docker Desktop Service】,启动;
你也可以直接设置为“自动”
找到服务,右键》属性》启动类型:自动》点击“确定”
二、检查 Hyper-V是否安装
windows控制面板》程序和功能》启用或关闭Windows功能》找到Hyper-V》全部勾选后,点击“确定”,等待安装即可
三、检查 bcdedit的hypervisorlaunchtype是否为Auto
【win菜单】右键》选择 Windows PowerShell(管理员),注意要使用管理员操作
输入
bcdedit
查看hypervisorlaunchtype的状态
如果不是Auto
则需要输入下面命令,重启电脑即可。
bcdedit /set hypervisorlaunchtype auto
四、检查CPU是否开启虚拟化:
右键底部菜单》任务管理器》性能》CPU
如何设置:
重启电脑》进入boss》高级设置》处理器设置》CPU》Intel虚拟机》设置为“开启”》保存后退出,重启
1、重启计算机,并在开机时按下特定的按键,如F2、F10、Delete等,进入BIOS设置界面。
2、在BIOS设置界面中,找到“Advanced”或“高级”选项,然后选择“CPU Configuration”或“CPU 配置”选项。
3、在“CPU Configuration”或“CPU 配置”选项中,找到“SVM Mode”或“SVM 模式”选项,然后将其设置为“Enabled”或“启用”状态。
4、保存并退出BIOS设置界面,重新启动计算机。
这样,就可以开启AMD的CPU虚拟化功能,然后可以使用虚拟化软件或模拟器来运行虚拟的操作系统或应用程序了。
五、检查wsl
5.1.是否开启
windows控制面板》程序和功能》启用或关闭Windows功能》找到【适用于Linux的Windows子系统】》勾选后,点击“确定”,等待安装即可
5.2检查更新
打开Windows PowerShell
windows命令分为2种,一种是命令提示符(CMD),另一种是PowerShell;怎么打开他们-CSDN博客
输入命令
wsl --update
2.下载镜像
经过docker desktop这样可以正常显示后,下载镜像
全部完成后,可以看到镜像 。存储路径在这里
3.加载镜像
将文件放在ubuntu电脑里,执行docker load操作
sudo docker load -i px4-ros2-foxy.tar
4.开启容器
sudo docker run -itd --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -v /home/xg/dockfile:/root/chans_files -v /dev/dev -v /run/udev:/run/udev --device /dev/video0 --device /dev/video1 --device /dev/media0 -p 6788:22 --gpus=all 66165367cbba /bin/bash
sudo docker exec -it 0efc4a3bbe40 /bin/bash
5.下载并安装MicroXRCEAgent
5.1 先升级cmake到3.21
wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh
sudo mkdir /opt/cmake
sudo sh cmake-3.21.4-linux-x86_64.sh --skip-license --prefix=/opt/cmake
wget下载很慢,直接到该地址通过浏览器的方式进行下载,再放到环境中
然后更新环境变量:
echo 'export PATH=/opt/cmake/bin:$PATH' >>~/.bashrc
source ~/.bashrc
这样再查看cmake版本:
cmake --version
5.2 安装
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib/
5.3 安装px4 的通信
mkdir -p ~/ws_sensor_combined/src/
cd ~/ws_sensor_combined/src/
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git
cd ~/ws_sensor_combined/src/
source /opt/ros/foxy/setup.bash
colcon build
6.下载px4
git clone https://github.com/PX4/PX4-Autopilot.git
bash /home/xg/PX4-Autopilot/Tools/setup/ubuntu.sh
安装过程中会存在失败的情况,反复多次。直到完整
pip3 install symforce -i https://mirrors.aliyun.com/pypi/simple
开始执行make
make px4_sitl gazebo-classic
这回终于看到了mavlink的交互了
五。设置x11的界面可以看到UI
安装openssh
#下载openssh
apt-get update
apt-get install openssh-server
# 设置root密码,然后设置两遍相同的密码,之后登陆的时候要用到
passwd
# 修改配置文件
apt-get install vim
vim /etc/ssh/sshd_config
# 注释掉 PermitRootLogin prohibit-password 这一行 添加这一行 PermitRootLogin yes
# 注释掉 X11UseLocalhost yes这行,添加这一行 X11UseLocalhost no
# 5. 重启ssh服务
service ssh restart
# 或使用
# /etc/init.d/ssh restart
在windows电脑下打开moba_xterm
# ssh -p 6788 root@192.168.2.83
在docker容器中配置bashrc
vim ~/.bashrc
添加如下内容,注意这里的192.168.3.3是windows电脑的IP,即运行moba_xterm的电脑IP
export 192.168.3.3:0.0
将更改生效:
source ~/.bashrc
如果无法连接到容器,则在容器内尝试重新启动ssh服务:
service ssh restart
试下是否可用:
xclock
如果提示:xclock:command not found
那么在容器内安装x11-apps
apt-get install x11-apps
是可以显示图像了,但是SSH没有成功,不知道为什么
7.无人机5米处定点盘旋
好了,下一步准备利用这个环境测试下无人机在5m的高度上定点盘旋
参考:Https://blog.csdn.net/Zecet/article/details/130474620
7.1Build ROS 2 Workspace
默认的ROS2工作区建立在home目录下,当然这个可以根据需求更改
打开终端,建立一个新的工作区
mkdir -p /home/user/ws_sensor_combined/src/
cd /home/user/ws_sensor_combined/src/
下载例程和px4_msgs
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git
配置ros2 foxy的环境,并用colcon编译工作区
注意:colcon build需要在/home/user/ws_sensor_combined/下
cd ..
source /opt/ros/foxy/setup.bash
colcon build
Running the Example
可以利用以下例程测试是否搭建成功
在终端输入(在~/ws_sensor_combined/目录下)
source install/local_setup.bash
启动示例
ros2 launch px4_ros_com sensor_combined_listener.launch.py
只要PX4以及MicroXCREAgent的仿真是启动着的,就可以在终端接收到订阅的传感器信息:
7.2ROS 2 Offboard Control Example
(注意,此时,PX4以及MicroXCREAgent都是打开状态)打开一个新的终端,进入之前创建的ROS2工作区目录下
cd /home/user/ws_offboard_control/
source source /opt/ros/foxy/setup.bash
source install/local_setup.bash
ros2 run px4_ros_com offboard_control
可以看到无人机慢慢起飞了
于2024年9月2日,好了。这回可以跑其他的环境了 ,保存镜像名称为:
ros2_px4_xrce_ok:v1.2,离线文件名称为:ros2_px4_xrce_ok.tar