Ubuntu22.04配置ROS2+PX4仿真环境

Ubuntu22.04配置ROS2+PX4仿真环境


主要参考源:

https://blog.csdn.net/weixin_44174421/article/details/135827130

https://blog.csdn.net/Zecet/article/details/130474620

一、准备工作

  1. 确保网络能够连接到github,出错主要源自于此;

  2. 确保EmPy库的版本是3.3.4,否则会在colcon build的时候出错。现在安装ubuntu22.04更新后的EmPy版本为4.0,因而需要退回到3.3.4版本。在Ubuntu下,多种开源软件联合工作,各种版本不匹配而导致问题是非常常见的。

    1. Empy库是一个强大、稳健且成熟的模板系统,用于在模板文本中插入Python代码;
    2. 版本回退命令如下(先卸载再安装)
    python 复制代码
    pip3 uninstall empy
    pip3 install empy==3.3.4
  3. 安装git工具

    python 复制代码
    sudo apt update
    sudo apt upgrade
    sudo apt install git
    #查看git版本
    git --version

二、安装ROS2

推荐使用鱼香ROS安装。

python 复制代码
wget http://fishros.com/install -O fishros & . fishros

三、安装ROS2相关依赖

python 复制代码
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固件

python 复制代码
#下载源码 --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之间通信的桥梁。

python 复制代码
#下载源码
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工作空间并生成代码样例

此后的工作主要在此空间内进行

python 复制代码
#创建工作空间路径
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

python 复制代码
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

八、问题汇总

  1. Gazebo-GL问题

    a. 错误信息: OpenGL 3.3 is not supported. Please update your graphics card drivers.

    b. 解决方法:

    python 复制代码
    export MESA_GL_VERSION_OVERRIDE=3.3
  2. Gazebo闪退

    a. 错误信息: 按上述步骤操作之后,将不再提示错误信息,但Gazebo还是会闪退

    b. 解决方法:

    python 复制代码
    #在PX4-Autopilot文件夹下搜索px4-rc.simulator文件,应该有两个。
    #在文件内添加一句,如下所示
    --render-engine ogre
相关推荐
元Y亨H4 天前
华硕主机重装 Ubuntu 系统完全指南
ubuntu
字节逆旅6 天前
ubuntu应用深度守护
ubuntu
欧云服务器12 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
智渊AI12 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
The️12 天前
Linux驱动开发之Read_Write函数
linux·运维·服务器·驱动开发·ubuntu·交互
再战300年12 天前
Samba在ubuntu上安装部署
linux·运维·ubuntu
qwfys20012 天前
How to install golang 1.26.0 to Ubuntu 24.04
ubuntu·golang·install
木尧大兄弟12 天前
Ubuntu 系统安装 OpenClaw 并接入飞书记录
linux·ubuntu·飞书·openclaw
小虾爬滑丫爬12 天前
ubuntu上设置Tomcat 开机启动
ubuntu·tomcat·开机启动
老师用之于民12 天前
【DAY25】线程与进程通信:共享内存、同步机制及实现方案
linux·c语言·ubuntu·visual studio code