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 Humble
、QGC
禁止无脑复制:首先大部分命令都有先后顺序,就是要上一个命令执行成下一个才能执行成功,对于不熟悉的命令可以直接复制问
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!
上一篇: Shell脚本基础知识-初步版
下一篇: SSH 远程登录报错:kex_exchange_identification: Connection closed.....
本文标签
ROS2 Humble 为例) Ubuntu搭建PX4无人机仿真环境(5) —— 仿真环境搭建(以Ubuntu 22.04
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。