Ubuntu搭建PX4无人机仿真环境(5) —— 仿真环境搭建(以Ubuntu 22.04,ROS2 Humble 为例)

Tfly__ 2024-09-30 17:37:01 阅读 80

目录

前言1. 准备下载源码方式一:方式二:

安装依赖安装 Gazebo

2. 安装 Micro XRCE-DDS Agent3. 编译4. 通信5. offboard 测试参考

前言

本教程基于 ROS2 ,在搭建之前,需要把 <code>ROS2、QGC 等基础环境安装配置完成。但是这块的资料相比较于 ROS1 下的少很多,不利于快速上手和后期开发,小白慎选!

小白必看:👇👇👇👇👇👇👇

本次安装是以 px4 v1.14.0 为例,不适用之前的 px4 版本。

我的配置如下:

虚拟机 Ubuntu 22.04 (运行内存 4G、硬盘内存 80G) 、ROS2 HumbleQGC

禁止无脑复制:首先大部分命令都有先后顺序,就是要上一个命令执行成下一个才能执行成功,对于不熟悉的命令可以直接复制问AI 这样还能顺带学习学习;其次在有些情况下多个命令一起执行会出现奇怪的错误,而且有些命令旁边有注释,有时候复制上去可能也会出现错误。建议使用虚拟机:虽然虚拟机得性能有限,但是对于新手入门阶段是完全够用了,后续大型仿真再用双系统也比较熟悉了。而且虚拟机有一个快照功能,可以保存当前虚拟机的状态 (相当于存档),这样如果后面出了问题要重新搭建环境,可以用快照回到上一个状态,这样就不用重头开始(我一般是安装好 ROS 拍一个、安装好 mavros 拍一个…)。关于网络:由于一些懂得都得的原因,再加上每个人的网络环境不同,我们下载 GitHub上的资源、安装 Python 包、apt 安装包等会时快时慢,所以大家会换源,比如一开始的换 apt 软件安装源等。但是下载资源一定要耐心,如果是网络问题,可以尝试多执行几次命令,而且有些我也给了相应的解决方案。

基于 ROS2 的 PX4 仿真环境搭建系列: 👇👇👇

建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍

Ubuntu安装ROS(2) —— 安装ROS2 humble(最新、超详细图文教程,包含配置rosdep)-CSDN博客

ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍_Tfly__的博客-CSDN博客

ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站_Tfly__的博客-CSDN博客

ROS1 请看 👇👇👇

ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建、基于ROS1-CSDN博客

如果想要自己编译 PX4 固件可以看 Ubuntu编译PX4固件 这篇教程

1. 准备

下载源码

方式一:

从 Github 上下载,但是比较考验个人网速

sudo apt install git

下载并切换版本:

git clone https://github.com/PX4/PX4-Autopilot.git # 下载源码

mv PX4-Autopilot PX4_Firmware # 更改目录名

cd PX4_Firmware

git checkout v1.14.0 # 切换版本

更新子模块:

git submodule update --init --recursive # 更新下载子模块

方式二:

从提供的网盘里下载,或者从QQ群(961297255)里下载

链接:https://pan.baidu.com/s/1OmXhfRaE_CsYG0F_4mYyzg

提取码:lq9a

下载后解压,然后执行下面命令:

cd PX4_Firmware

wget https://gitee.com/tyx6/mytools/raw/main/px4/set_executable.sh

chmod +x set_executable.sh

./set_executable.sh

在这里插入图片描述

安装依赖

<code>sudo apt install ros-dev-tools

cd ~/PX4_Firmware/Tools/setup

修改文件并备份 (就把 pip 安装源换成了清华源),这一步是可做可不做,如果觉得python 包下载太慢了,可以试试

sed -i.bak 's|\/requirements.txt|\/requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple|' ./ubuntu.sh

chmod +x ubuntu.sh

./ubuntu.sh --no-nuttx --no-sim-tools

# 这是官方提供的脚本 有两个可选参数

# --no-sim-tools 不安装仿真环境

# --no-nuttx 不安装交叉编译环境

#(如果需要自己编译飞控固件,烧录到飞控中,那就需要交叉编译环境)

# 脚本执行时间,跟个人网络有关,可能需要一段时间

重启 Ubuntu

安装 Gazebo

Gazebo是一款强大的3D仿真软件,主要用于机器人学的研究和开发。它提供了高度逼真的物理模拟环境,包括动力学、碰撞检测、传感器模型以及与真实世界相似的物理属性如重力、摩擦力等。Gazebo可以模拟各种类型的机器人,从移动机器人、无人机到机械臂,甚至可以模拟整个城市环境。

在这里插入图片描述

根据上图说明,Gazebo 官方做了更新将之前的 Gazebo Ignition 命名为 Gazebo,以前的 Gazebo 现在叫 Gazebo Classic ,而 Ubuntu 22.04 及以后的版本就支持 Gazebo (Gazebo Ignition) 。

因为几年前官方对 Gazebo 进行了重大架构变更,然后将变更后的版本叫 Gazebo Ignition,旧的仍叫 Gazebo。后面Gazebo Ignition 逐渐成熟并经过使用验证,所以他结束了旧的 Gazebo ( Gazebo 11 是 Gazebo Classic 的最后一个版本,支持到 2025 年 ),并重新对它们命了名。而且两个应该不能共存,安装一个会卸载另一个。

<code>cd ~/PX4_Firmware/Tools/setup

./ubuntu.sh --no-nuttx

# 这一步会安装仿真环境,包括 gazebo

# 脚本执行时间,跟个人网络有关,可能需要一段时间

再运行一下 gazebo

gz sim

在这里插入图片描述

重启 Ubuntu

2. 安装 Micro XRCE-DDS Agent

在这里插入图片描述

在 ROS2 中 PX4 使用 uXRCE-DDS 中间件来允许在配套计算机上发布和订阅 uORB 消息,就像它们是 ROS2 话题一样。这提供了 PX4 和 ROS2 之间快速可靠的集成,并使 ROS2 应用程序更容易获取车辆信息和发送命令,如上图所示。

这应该跟 ROS2 将中间件改为 DDS 有关,但是官方又说明了在 ROS2 中仍可以使用 MAVROS ,可能官方觉得在 ROS2 中 Micro XRCE-DDS Agent 更好用 😂,也可能是因为 MAVLink 是外部通信协议,uORB 是内部通信协议。

下载源码:

<code>git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git

编译:

cd Micro-XRCE-DDS-Agent

mkdir build

cd build

cmake ..

make # make 的时候还会下载代码,跟个人网速有有关,大概要10-20分钟

在这里插入图片描述

安装

<code>sudo make install

sudo ldconfig /usr/local/lib/ # 更新动态链接器的缓存

在这里插入图片描述

3. 编译

<code>cd ~/PX4_Firmware

make px4_sitl gz_x500 # 这步可能有点慢

出现这个表示编译成功 😄

在这里插入图片描述

注:如果在虚拟机中可能遇到下面错误,这是由于在虚拟机设置中开启了 3D 图形加速,导致系统的 <code>OpenGL 版本降低。

在这里插入图片描述

参考这个 Issue 中的解决方法,降低仿真使用的渲染引擎的版本

打开文件,修改处大概在 73 行:

<code>gedit ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/px4-rc.simulator

修改前:

if [ -z "${HEADLESS}" ]; then

# HEADLESS not set, starting gui

${gz_command} ${gz_sub_command} -g &

fi

修改后:

if [ -z "${HEADLESS}" ]; then

# HEADLESS not set, starting gui

${gz_command} ${gz_sub_command} -g --render-engine ogre &

fi

然后,再重新编译

4. 通信

打开一个终端,启动 MicroXRCEAgent:

MicroXRCEAgent udp4 -p 8888

打开另一个终端,启动仿真:

cd ~/PX4_Firmware

make px4_sitl gz_x500

都启动后,可以看到通信成功

在这里插入图片描述

5. offboard 测试

创建工作空间:

<code>mkdir -p ~/ros2_ws/src

下载源码:

cd ~/ros2_ws/src

git clone https://github.com/PX4/px4_msgs.git

git clone https://github.com/PX4/px4_ros_com.git

编译:

cd ~/ros2_ws

colcon build

在这里插入图片描述

更新环境:

<code>echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc

source ~/.bashrc #使环境生效

测试:

打开 QGC

终端一,启动 MicroXRCEAgent:

MicroXRCEAgent udp4 -p 8888

终端二,启动仿真:

cd ~/PX4_Firmware

make px4_sitl gz_x500

终端三,启动官方 offboard 案例(上升5米):

ros2 run px4_ros_com offboard_control

到这 PX4 无人机基本仿真环境就搭建完成了,大家可以基于此来拓展自己的仿真。

建了个交流群,方便大家交流学习,但是关于 ROS2 下的 PX4 仿真资料不多 😁

在这里插入图片描述

参考

PX4 ROS 2 User Guide

PX4 documentation

uXRCE-DDS

Ubuntu Development Environment

a-new-era-for-gazebo

如有其他问题,或者发现文章有错误,请在评论区留言

Keep learning!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。