在Ubuntu20.04系统下安装无人机PX4飞控仿真环境(Gazebo+Mavros+PX4)
在Ubuntu20.04系统下安装无人机PX4飞控仿真环境
- 一. 前言
- 二. PX4飞控
-
- 1.介绍
- 2.安装
- 三. MAVROS
-
- 1.介绍
- 2.安装
- 四. 搭建仿真环境
-
- 1. 编译Pixhawk 4/FMUv5 固件
- 2. 编译jmavsim软件在环仿真环境
- 3. 编译Gazebo软件在环仿真环境
- 4.配置系统环境
- 5.测试Gazebo+PX4+MAVROS联合仿真环境
- 五.问题总结
-
- 1.执行**catkin init**命令时出现报错catkin: command not found
- 2.执行**wstool update -t src -j8**命令时循环打印**[mavlink,mavros] still active**
- 3. 执行命令**make px4_fmu-v5_default**报错(arm-none-eabi-g++)
- 4. 执行命令**make px4_fmu-v5_default**报错(Failed to clone repository)
- 5.执行命令**make px4_sitl jmavsim**报错
- 6.执行命令**make px4_sitl gazebo-classic**报错
- 7.每次开启新终端都会打印Gazebo插件信息
一. 前言
各位看官老爷们许久不见了,笔者经过这段时间的沉淀之后决定整理出一份无人机仿真环境搭建的完整教程,希望这份教程能够帮助各位成功在Ubuntu系统下搭建出PX4无人机仿真环境。
本次仿真环境搭建的系统环境为Ubuntu 20.04.6 Desktop + ROS Noetic,关于如何安装Ubuntu 20.04系统以及如何在Ubuntu 20.04系统下成功安装ROS,笔者将完整的安装步骤都记录在了之前的几篇文章中(在DellG16电脑中安装Ubuntu20.04双系统,在Ubuntu20.04系统中安装ROS) 看官老爷们可自行安装,在此不进行赘述。
本篇安装教程以官网教程PX4 Autopilot User Guide 为主,辅助参考了这篇文章Ubuntu18.04下PX4+gazebo+QGC实现无人机在仿真环境下的房屋巡视,如果这篇文章确实对各位有所帮助的话,麻烦各位观众老爷点赞、收藏加关注哦!
二. PX4飞控
1.介绍
PX4 是专业自动驾驶仪。它由来自工业界和学术界的世界级开发人员开发,并由一个活跃的全球社区提供支持,为从赛车和货运无人机到地面车辆和潜水器等各种车辆提供动力。它常被应用于无人机、无人车以及无人艇的控制环节中,也可以应用于仿真软件中模拟真实机器人作业过程。
接下来,笔者将介绍PX4飞控的完整安装步骤,主要参考了官网中这个页面下的内容。
2.安装
第一步,下载PX4源码到本地
# 创建本地文件夹
mkdir ~/packages/PX4 && cd ~/packages/PX4
# 下载PX4源码
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
下载过程可能会比较长,需要下载各个子模块,尽量挑一个网速快的时间下,可以反复多试几次,实在不行的话就只能爬个梯子了。
在笔者之前这篇文章中,记载了如何更换系统软件源的详细步骤,如果是因为使用了默认的系统软件源才无法下载PX4源代码,可以按照这篇文章更新系统软件源。
# 子模块源码下载失败
## 远程链接超时
Cloning into '/home/user/packages/PX4/PX4-Autopilot/src/drivers/actuators/vertiq_io/iq-module-communication-cpp'...
error: RPC failed; curl 28 Failed to connect to github.com port 443: Connection timed out
fatal: the remote end hung up unexpectedly
fatal: clone of 'https://github.com/PX4/iq-module-communication-cpp.git' into submodule path '/home/user/packages/PX4/PX4-Autopilot/src/drivers/actuators/vertiq_io/iq-module-communication-cpp' failed
Failed to clone 'src/drivers/actuators/vertiq_io/iq-module-communication-cpp'. Retry scheduled
## 服务器无应答
Cloning into '/home/user/packages/PX4/PX4-Autopilot/src/lib/cdrstream/rosidl'...
fatal: unable to access 'https://github.com/px4/rosidl/': Empty reply from server
fatal: clone of 'https://github.com/px4/rosidl' into submodule path '/home/user/packages/PX4/PX4-Autopilot/src/lib/cdrstream/rosidl' failed
Failed to clone 'src/lib/cdrstream/rosidl'. Retry scheduled
如果只有部分子模块下载失败,比方说下载过程中出现上面那种情况,可以尝试以下命令仅下载子模块内容,不需要重新再下载一次完整版PX4。
# 进入PX4工作目录
cd PX4-Autopilot
# 更新所有子模块到它们当前最新的提交状态
## --recursive:递归地更新所有子模块(包括子模块的子模块)。
## --remote:从子模块的远程仓库拉取最新的更改。
git submodule update --init --recursive --remote
第二步,配置编译环境
# 运行ubuntu.sh
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx
直接运行上述命令之后,可能会出现如下报错
ERROR: pandas 2.0.3 has requirement numpy>=1.20.3; python_version < "3.10", but you'll have numpy 1.17.4 which is incompatible.
对此需要升级系统默认Numpy库,可使用以下命令
# 升级Numpy库到最新版本
pip3 install --upgrade numpy
然后重新运行以下命令
# 运行ubuntu.sh
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools --no-nuttx
如果没有出现ERROR,证明PX4飞控安装成功
第三步,重启电脑
三. MAVROS
1.介绍
MAVROS,全称Mavlink ROS,是一个用于与MAVLINK兼容的无人机飞控进行通信的ROS软件包。它充当了ROS与无人机飞控之间的信息传输媒介,将ROS发布的话题转换为MAVLINK协议的消息,再发送给飞控;同时,也将飞控发送的MAVLINK消息转换为ROS可以识别的话题,供ROS节点订阅和使用。除了MAVROS之外,也可以使用MAVSDK来与无人机飞控进行通信。
接下来,笔者将介绍MAVROS的完整安装步骤,主要参考了官网中这个页面下的内容。MAVROS可以使用两种方式进行安装,一种是二进制安装,另外一种是源码安装,这里我们推荐的是源码安装方式。
2.安装
第一步,创建一个ROS工作空间(如果已经有了一个工作空间可以跳过这一步)
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src
如果执行catkin init命令报错,可以参考文章五.1节的内容。
如果所有指令运行成功,最后终端会出现以下内容
Writing /home/user/catkin_ws/src/.rosinstall
update complete.
第二步,将MAVLink版本信息与源码下载地址存储到工作空间中的 .rosinstall文件中
rosinstall_generator --rosdistro noetic mavlink | tee /tmp/mavros.rosinstall
其中,noetic对应的是当前系统中ROS的版本,可通过roscore命令查看ROS版本,根据自身ROS版本修改上述命令,然后再执行。
如果运行成功,终端会出现以下内容:
- git:
local-name: mavlink
uri: https://github.com/mavlink/mavlink-gbp-release.git
version: release/noetic/mavlink/2024.10.10-1
第三步,将MAVROS稳定版版本信息与源码下载地址同样存储到工作空间中的 .rosinstall文件中
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
如果下载成功,终端会出现以下内容
Using ROS_DISTRO: noetic
- git:
local-name: mavros
uri: https://github.com/mavlink/mavros.git
version: 1.20.0
第四步,在工作空间中下载MAVLink和MAVROS源码及相关依赖项
wstool merge -t src /tmp/mavros.rosinstall
# 下载MAVLink和MAVROS源码
wstool update -t src -j8
# 安装环境依赖
rosdep install --from-paths src --ignore-src -y
如果命令wstool update -t src -j8报错,可参考文章五.2节内容。
所有命令执行成功之后,终端会出现All required rosdeps installed successfully。
第五步,安装GeographicLib数据集
# 执行install_geographiclib_datasets.sh,安装数据集
sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh
安装成功之后,终端会出现以下内容
Installing Geographi