4、Gazebo仿真环境:从安装到起飞
Gazebo,说白了就是PX4的「虚拟试飞场」。
我刚开始接触PX4时,最头疼的就是每次改代码都要跑真机。炸一次机,几百块就没了。后来用了Gazebo,嗯,真香。你可以在电脑上模拟各种环境——室内、室外、甚至火星表面。今天我就带你一步步搭好这个环境。
核心要点:Gazebo + PX4 = 软件在环(SITL)仿真。你的飞控代码跑在电脑上,Gazebo提供物理引擎和传感器数据。两者通过MAVLink通信。
4.1 Gazebo安装:两条路,选一条
安装Gazebo,我个人习惯用Ubuntu 20.04 + Gazebo 11。这个组合最稳,我在项目中踩过的坑最少。
方式一:一键安装(推荐新手)
# 安装Gazebo 11
curl -sSL http://get.gazebosim.org | sh
# 验证安装
gazebo --version
方式二:源码编译(老手专用)
为什么要编译源码?因为有时候你需要改仿真模型。我曾经为了模拟一个特殊的多旋翼构型,不得不改Gazebo的插件代码。
# 安装依赖
sudo apt-get install build-essential cmake git
# 克隆源码
git clone https://github.com/osrf/gazebo.git
cd gazebo
mkdir build && cd build
cmake ..
make -j4
sudo make install
我的建议:第一次用,直接装二进制包。等你有需求了再折腾源码。别一开始就把自己劝退了。
4.2 PX4与Gazebo集成:打通任督二脉
装好Gazebo只是第一步。关键是怎么让PX4和它「对上话」。
PX4官方已经帮我们做好了集成。你只需要安装PX4的仿真依赖包:
# 安装PX4仿真依赖
cd ~/PX4-Autopilot
make px4_sitl gazebo
这条命令会做三件事:
- 编译PX4固件(SITL版本)
- 启动Gazebo服务器
- 加载默认的iris模型
等等,你可能会问:「为什么是iris?」
因为iris是PX4的「标准小白鼠」。我在项目中90%的仿真测试都用它。它稳定、参数公开、社区资源多。
注意:第一次编译会下载很多依赖包。网速不好的话,建议先配好国内镜像源。我曾经在客户现场等了一个小时...嗯,很尴尬。
4.3 启动仿真环境:三步走
启动仿真环境,说白了就三步:
- 打开终端1:启动PX4 SITL
- 打开终端2:启动QGroundControl(地面站)
- 打开终端3:发送指令控制无人机
具体操作:
# 终端1:启动仿真
cd ~/PX4-Autopilot
make px4_sitl gazebo
# 终端2:启动地面站(可选,但强烈建议)
./QGroundControl.AppImage
# 终端3:通过MAVSDK或命令行控制
pxh> commander takeoff
你看到Gazebo窗口里出现一架四旋翼,然后它缓缓起飞——那一刻,说实话,挺有成就感的。
4.4 常见仿真模型:不止有iris
PX4支持多种仿真模型。我整理了一个表格,方便你查阅:
| 模型名称 | 类型 | 适用场景 | 启动命令 |
|---|---|---|---|
| iris | 四旋翼 | 通用测试、初学者 | make px4_sitl gazebo |
| typhoon_h480 | 六旋翼 | 载重测试、冗余验证 | make px4_sitl gazebo_typhoon_h480 |
| plane | 固定翼 | VTOL过渡、巡航测试 | make px4_sitl gazebo_plane |
| standard_vtol | 垂直起降固定翼 | 混合模式验证 | make px4_sitl gazebo_standard_vtol |
| rover | 地面车 | 地面导航测试 | make px4_sitl gazebo_rover |
怎么切换模型?很简单:
# 启动固定翼仿真
make px4_sitl gazebo_plane
# 启动六旋翼仿真
make px4_sitl gazebo_typhoon_h480
避坑指南:我曾经在切换模型时忘了关掉之前的Gazebo进程。结果两个模型同时加载,直接卡死。记得每次切换前先killall gzserver。
4.5 核心逻辑:一张图看懂
说了这么多,你可能有点晕。我画了一张流程图,帮你理清关系:
这张图你看懂了吗?
简单说:PX4发指令给Gazebo,Gazebo模拟物理世界,把传感器数据返回给PX4。地面站和用户终端可以随时介入。
4.6 常见问题与解决
我整理了几个新手最容易遇到的问题:
- Gazebo启动后黑屏:显卡驱动问题。试试
export SVGA_VGPU10=0再启动。 - 无人机起飞后乱飘:检查一下GPS仿真是否开启。默认是开启的,但有时候模型配置会漏掉。
- 编译报错找不到头文件:大概率是依赖没装全。运行
make px4_sitl gazebo前,先跑一遍make clean。
重要提醒:仿真环境里的参数和真机不一样。比如PID增益,仿真里调好的值,真机上可能完全不能用。我见过有人直接拿仿真参数刷真机,结果炸了。嗯,那个人就是我。
好了,Gazebo环境就讲到这里。你跟着操作一遍,应该能跑起来。如果卡住了,回头看看这张流程图,理清数据流向,问题往往就迎刃而解。