在Ubuntu20.04系统下安装无人机PX4飞控仿真环境(Gazebo+Mavros+PX4)

一. 前言

各位看官老爷们许久不见了,笔者经过这段时间的沉淀之后决定整理出一份无人机仿真环境搭建的完整教程,希望这份教程能够帮助各位成功在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
### 垂直起降无人机仿真资料与教程 对于垂直起降无人机系统的设计和开发而言,仿真环境扮演着至关重要的角色。这类平台通常集成了固定翼机的高效巡航能力和多旋翼无人机构型下的灵活垂直升降特性。 #### 1. 使用Gazebo进行模拟 Gazebo是一款广泛应用于机器人技术研究中的开源物理引擎工具包,支持多种类型的空中载具模型创建以及复杂场景构建。通过安装并配置特定于VTOL(Vertical Takeoff and Landing)车辆的动力学参数文件(.sdf),可以实现逼真度较高的行行为重现[^3]。 ```bash sudo apt-get install ros-noetic-gazebo-ros-pkgs ros-noetic-ar-drone ``` 这段命令用于在Ubuntu系统上基于ROS(Noetic Ninjemys版本)环境中部署必要的软件包来启动AR Drone虚拟实例作为测试对象之一;当然也可以替换为目标制造商所提供的其他官方资源链接地址来进行相应调整以适应不同品牌型号的产品需求特点。 #### 2. MATLAB/Simulink建模分析 MATLAB提供了丰富的函数库帮助工程师快速搭建数学模型,并利用Simulink图形化界面直观呈现整个系统的运作流程图。针对混合推进方式带来的特殊挑战——比如过渡阶段的姿态保持精度要求较高等情况,则可以通过编写自定义模块进一步细化处理逻辑从而达到预期效果[^4]。 ```matlab % 创建一个新的SIMULINK项目 new_system('MyVTOLDemo'); add_block('simulink/Signal Routing/Mux', 'MyVTOLDemo/MUX') set_param(gcbh, 'Inputs','3') % 设置输入端口数量为三个分别对应XYZ轴方向上的力矩分量 save_system; close_system('MyVTOLDemo',0); ``` 上述脚本展示了如何初始化一个简单的信号合成组件以便后续连接至更复杂的制器结构之中去完成诸如路径规划之类的高级功能拓展工作。 #### 3. 开源框架PX4及其配套文档 PX4是一个专为小型无人驾驶航空器打造的操作系统级解决方案,在社区内拥有庞大的开发者群体贡献了大量的外围设备驱动程序和支持材料可供查阅学习。特别是其中有关Hybrid VTOL章节深入浅出地讲解了从硬件选型到最后成品组装调试全过程当中的要点难点所在[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值