前言
搭建PX4仿真环境一个有挑战性的过程,如果没有一个有经验的人来带的话会走很多弯路。我在搭建PX4仿真环境的时候,不知道Linux、ROS、git,语言也只会一个C语言,没有任何无人机基础,纯小白一个,靠着自学与网上的各种教程,花了一两个月才搭好基本的仿真环境框架。我会将搭建步骤一步步演示,强烈建议大家看看 环境建议 这一节,概念的话了解就行。
搭建仿真环境系列教程👇
ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装
ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站
ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建
ubuntu安装ROS melodic(最新、超详细图文教程)
概念介绍
在搭建环境之前还是希望大家能看看这些概念,避免大家概念模糊。
- PX4
所谓无人机的飞控,就是无人机的飞行控制系统。无人机飞控能够稳定无人机飞行姿态,并能控制无人机自主或半自主飞行,是无人机的大脑。而PX4是自动驾驶仪软件(或称为固件),基于Nuttx实时操作系统开发的,可以驱动无人机或无人车。它是Pixhawk 的原生固件,虽然起步比APM晚。它与地面站(地面控制站)在一起组成一个完全独立的自动驾驶系统。它是一个在GitHub上开源的一个项目,项目地址 ,还有官方参考文档 (这里建议新手多看看官方文档)。
- QGC
QGC地面站是Dronecode地面控制站称为QGC地面站 。它是基于 Qt 开发的。如果使用的是 PX4固件 ,建议使用QGC地面站 。使用者可以用QGroundControl将PX4固件加载(烧写)到飞行器控制硬件上,可以设置飞行器,更改不同参数,获取实时飞行信息以及创建和执行完全自主的任务,如航点规划。QGroundControl是跨平台的,可以在Windows,Android,MacOS或Linux上运行。它是一个在GitHub上开源的一个项目,项目地址 ,还有官方参考文档
- MAVSDK
MAVSDK 基于Mavlink协议的sdk包,可以使机载电脑与MAVLink协议兼容的无人机通信,从而控制无人机。多用于PX4固件 ,它最初是使用C++写的,经过发展,现在已经支持Python、Java、C#、Rust、Swift、Go、JavaScript,适合多平台开发。它是一个在GitHub上开源的一个项目,mavlink/MAVSDK: API and library for MAVLink compatible systems ,还有官方参考 Introduction · MAVSDK Guide
- APM
Ardupilot Mega或称为APM 也是一款自驾仪软件,是早在2007年由DIY无人机社区(DIY Drones)推出的飞控产品。APM刚开始是基于Arduino的开源平台,后来软件代码不断状大,原来的硬件不能胜任最新代码,再后来开发者就把Ardupilot代码转移到了Pixhawk平台上,基于Nuttx实时操作系统,兼容了Pixhawh硬件平台。目前主要是支持的5种设备的目录包括ArduPlane(固定翼)、ArduCopter(直升机/多旋翼)、APMrover2、AntennaTracker、ArduSub。它是一个在GitHub上开源的一个项目,项目地址 ,还有官方参考文档 。
- MP
Misson Planner简称MP ,是Windows 平台运行的一款APM/PIX的专属地面站,基于 C# 开发的,对于Windows 兼容更好,其他平台也可以运行,但兼容性不是很好。如果使用 APM固件 ,建议使用MP地面站 。它的基本功能与 QGC 是一样的,虽然功能强大多样,但是太冗余。它是一个在GitHub上开源的一个项目,项目地址 ,还有官方参考文档
- Dronekit
DroneKit 是一款Python语言的无人机开发库,同样基于Mavlink协议,可以对使用MAVLink通讯协议的ArduPilot和PX4无人机进行控制,多用于ArduPilot固件 。它最初是使用Python编写的,后面也支持了Java,跨平台性没有MAVSDK好,但个人觉得更容易上手。它是一个在GitHub上开源的一个项目,DroneKit-Python library for communicating with Drones via MAVLink. ,还有官方参考 DroneKit-Python’s documentation
- MAVROS
MAVROS是一个ROS(Robot Operating System)软件包 ,它提供了一组ROS节点,可以将ROS系统与MAVLink协议兼容的无人机(例如Pixhawk)集成在一起,所以不管是什么固件,只要是支持MAVLink协议,都可以用MAVROS。通过MAVROS,ROS系统可以与无人机通信,接收和发送MAVLink消息,控制无人机的姿态、速度和位置等。MAVROS也提供了许多其他功能,例如姿态解算、飞行模式切换、航点导航和状态反馈等。
MAVROS的设计旨在使它易于与ROS系统集成,它提供了一组简单的ROS服务和ROS消息,可以用于机载电脑与无人机进行通信和控制无人机 ,实现无人机的自主飞行。此外,MAVROS还提供了一组C++ API和Python API,使开发人员可以轻松地编写自己的ROS节点,使用MAVLink协议控制无人机。
环境建议
大家安装的时候可能会碰到跟教程的步骤一样但是运行出错的问题,这大概率就是环境问题,只要环境选好了,就会少很多麻烦。
- Ubuntu:
对于新手直接用在虚拟机里装 ubuntu 就可以,如果后续对仿真的性能有要求,可以在自己的笔记本上装双系统,或者组个Linux主机也行。至于 ubuntu 的版本 我目前接触到的最多的是 18.04 (ROS1 melodic)和 20.04(ROS1 noetic) ,而 PX4 官方目前的最新稳定版固件(v1.14) 也只支持 18.04 、20.04 、22.04 。大家可以根据自己需要自行选择,但是目前不建议使用 ROS2 ,因为现在 ROS2 的一些资料不如 ROS1 多,而且有些功能包还没有很好的移植过去,所以推荐用 ROS1。
- 依赖安装:
在正式安装之前还需要安装很多依赖,官方也提供了一个安装脚本,里面包括需要的 python包、软件库、交叉编译器,gazebo等 ,脚本会根据你的 ubuntu 的版本自行选择安装。建议大家使用他提供的脚本就行,使用方法可以看这篇文章👇
ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建
- 交叉编译器:
交叉编译器可以将宿主机上的程序编译后,能够在目标机上运行。一般是在 x86架构 的平台上写好程序,然后用交叉编译器编译,再将可执行文件烧到 arm架构 的平台上。如果想自己编译飞控固件烧到飞控上,就需要安装交叉编译器。
(建了个交流群,方便大家交流学习 😁)
如有其他问题,或者发现文章有错误,请在评论区留言
Keep learning!
参考
Introduction · MAVSDK Guide (mavlink.io)
DroneKit-Python’s documentation
Plane documentation (ardupilot.org)
PX4(Pixhawk)和Audupilot(APM)的区别与联系