Ubuntu22.04配置ROS2+PX4仿真环境
主要参考源:
https://blog.****.net/weixin_44174421/article/details/135827130
https://blog.****.net/Zecet/article/details/130474620
一、准备工作
- 确保网络能够连接到github,出错主要源自于此;
- 确保EmPy库的版本是3.3.4,否则会在colcon build的时候出错。现在安装ubuntu22.04更新后的EmPy版本为4.0,因而需要退回到3.3.4版本。在Ubuntu下,多种开源软件联合工作,各种版本不匹配而导致问题是非常常见的。
- Empy库是一个强大、稳健且成熟的模板系统,用于在模板文本中插入Python代码;
- 版本回退命令如下(先卸载再安装)
pip3 uninstall empy pip3 install empy==3.3.4
- 安装git工具
sudo apt update sudo apt upgrade sudo apt install git #查看git版本 git --version
二、安装ROS2
推荐使用鱼香ROS安装。
wget http://fishros.com/install -O fishros & . fishros
三、安装ROS2相关依赖
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
pip3 install --user empy==3.3.4 pyros-genmsg setuptools
#安装colcon最容易出错,可以多参考博客
sudo apt install python3-colcon-common-extensions
sudo apt install ros-humble-desktop python3-argcomplete
sudo apt install ros-dev-tools
四、安装PX4固件
#下载源码 --recursive会递归下载二级及以下文件
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
# 进入PX4-Autopilot文件夹,确认源码是否下载完毕,如果因网络等未下载完全,则需要进一步下载更新
cd PX4-Autopilot
git submodule update --init --recursive
# 源码下载完毕后,执行下面操作
bash ./Tools/setup/ubuntu.sh
#显示 relogin or reboot when you attempting to install Nuttx
#即说明上一步成功
make px4_sitl gz_x500
#成功后将会显示Gazebo界面,并且里面有一架飞机
五、安装XRCE-DDS代理
XRCE-DDS是ROS2与PX4之间通信的桥梁。
#下载源码
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
#进入文件夹
cd Micro-XRCE-DDS-Agent
#新建文件夹build
mkdir build
#进入build文件夹
cd build
#执行cmake
cmake ..
#执行make
make
#安装?
sudo make install
#????
sudo ldconfig /usr/local/lib/
#安装完成后,启动代理,端口号为8888
MicroXRCEAgent udp4 -p 8888
六、创建ROS2工作空间并生成代码样例
此后的工作主要在此空间内进行
#创建工作空间路径
mkdir -p ~/ws_ros2/src/
#进入src文件夹,将下面的源码下载至src
cd ~/ws_ros2/src/
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git
#返回至工作空间根目录下进行编译
cd ..
#执行colcon编译
colcon build
#成功后,以上步骤在此后的工作中不需要再重复
source install/local_setup.bash
#执行代码样例
ros2 run px4_ros_com offboard_control
七、安装Mavros2
到第六部分为止,ROS2与PX4已经可以通过MicroXRCE通信并进行仿真,但在无人机中更常用的还是Mavros,因此还要安装Mavros2
mkdir -p ~/mavros2_ws/src
cd ~/mavros2_ws
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y
sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh
#注意:下面一行的路径与catkin build得到的不同
echo "source ~/mavros2_ws/install/setup.bash" >> ~/.bashrc
八、问题汇总
-
Gazebo-GL问题
a. 错误信息: OpenGL 3.3 is not supported. Please update your graphics card drivers.b. 解决方法:
export MESA_GL_VERSION_OVERRIDE=3.3
-
Gazebo闪退
a. 错误信息: 按上述步骤操作之后,将不再提示错误信息,但Gazebo还是会闪退
b. 解决方法:#在PX4-Autopilot文件夹下搜索px4-rc.simulator文件,应该有两个。 #在文件内添加一句,如下所示 --render-engine ogre