(最新)ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍及环境建议

前言

搭建PX4仿真环境一个有挑战性的过程,如果没有一个有经验的人来带的话会走很多弯路。我在搭建PX4仿真环境的时候,不知道Linux、ROS、git,语言也只会一个C语言,没有任何无人机基础,纯小白一个,靠着自学与网上的各种教程,花了一两个月才搭好基本的仿真环境框架。我会将搭建步骤一步步演示,强烈建议大家看看 环境建议 这一节,概念的话了解就行。

搭建仿真环境系列教程👇

ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍

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 documentation

PX4(Pixhawk)和Audupilot(APM)的区别与联系

ArduPilot与Pixhawk什么关系? - 知乎 (zhihu.com)

PX4和ardupilot(APM)的对比

### 环境配置 对于希望在 Ubuntu 22.04 上开展 PX4 的二次开发工作而言,首要任务是搭建合适的开发环境。这涉及安装必要的软件包以及克隆 PX4 自动驾驶仪仓库。 完成 Ubuntu 22.04 LTS 虚拟机的部署之后,在终端执行命令 `git clone https://github.com/PX4/PX4-Autopilot.git --recursive` 来获取最新PX4 源码及其依赖项[^1]。此操作会下载整个项目至本地目录下,并初始化所有子模块以便后续编译过程顺利进行。 如果遇到特定场景下的需求,比如需要访问某些底层硬件特性,则可能还需要额外的操作来准备基础文件系统,例如通过脚本 `./mnt_ubuntu.sh -m ubuntu/` 实现挂载动作[^2]。 ### 开发流程概述 针对 PX4 进行定制化修改或功能扩展时,通常遵循如下几个主要阶段: #### 安装依赖库与工具链 确保已经安装了用于构建固件所需的各种依赖关系。可以参照官方文档中的指导说明逐一添加这些组件。一般情况下,建议使用 apt-get 或者其他包管理器简化这一环节的工作量。 #### 编写自定义逻辑 基于现有框架实现新的算法或是调整已有行为模式。此时应当熟悉 C++ 和 MAVLink 协议等相关技术细节。利用 IDE 如 VSCode 加速编码效率不失为明智之举。 #### 构建测试平台 创建仿真环境验证改动效果至关重要。借助 Gazebo、JMAVSim 等模拟器能够快速迭代设计方案而无需实际飞行设备参与其中。同时也可以考虑集成 ROS (Robot Operating System) 提升交互性和数据处理能力。 #### 部署代理程序 为了使远程控制系统能有效监控并控制无人机的动作表现,需设置好通信桥梁——即所谓的 Agent 。按照既定步骤从源代码着手打造独立版本并与目标节点建立连接即可满足基本要求[^3]。 ```bash # 更新系统并安装必要依赖 sudo apt update && sudo apt upgrade -y sudo apt install build-essential cmake ninja-build git wget python3-pip -y # 设置环境变量(可选) echo "source ~/PX4-Autopilot/Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default" >> ~/.bashrc echo "export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:$(pwd)/models" >> ~/.bashrc source ~/.bashrc # 使用Ninja作为默认生成器加快编译速度 cd ~/PX4-Autopilot make px4_sitl gazebo ``` ### 常见问题解决方案 当面临挑战时,下面列举了一些典型障碍及对应措施供参考: - **无法拉取最新分支**:确认网络状况良好且 GitHub 访问权限正常。 - **缺少头文件或其他资源**:仔细检查是否遗漏了任何前提条件的设定。 - **编译报错提示找不到链接库**:重新审视已安装备份列表里是否存在缺失项。 - **启动失败显示端口冲突**:尝试更改默认监听地址或者关闭占用进程后再试一次。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值