虚拟机环境下PX4与Gazebo仿真环境搭建全攻略
对于无人机和机器人开发者而言,一个稳定的仿真环境至关重要。许多开发者最初尝试在WSL2中搭建PX4和Gazebo环境,却常常遇到图形界面无法显示的困扰。本文将详细介绍在VMware虚拟机中配置Ubuntu 20.04,并搭建完整的PX4+Gazebo仿真环境的步骤,帮助开发者避开常见陷阱。
1. 环境准备与基础配置
1.1 VMware虚拟机设置
在开始之前,确保已安装最新版VMware Workstation Player(免费版即可满足需求)。创建新虚拟机时,建议分配至少4GB内存(8GB更佳)和50GB磁盘空间。选择Ubuntu 20.04 LTS作为客户机操作系统,这是PX4官方推荐的稳定版本。
关键虚拟机设置参数:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 处理器核心数 | 2-4核 | 多核有助于Gazebo仿真运行 |
| 内存 | 4-8GB | 低于4GB可能导致性能问题 |
| 图形加速 | 3D加速启用 | 必须开启以支持Gazebo渲染 |
| 网络适配器 | NAT模式 | 便于主机与虚拟机间通信 |
安装完成后,首先执行系统更新:
sudo apt update && sudo apt upgrade -y1.2 更换软件源加速下载
国内用户建议更换为阿里云或清华源以大幅提升软件下载速度:
- 打开"软件和更新"设置
- 在"下载自"下拉菜单中选择"其他..."
- 选择
mirrors.aliyun.com或mirrors.tuna.tsinghua.edu.cn - 确认后重新加载软件列表
提示:更换源后若出现某些包找不到的情况,可尝试切换回默认源或选择其他镜像站点。
2. PX4开发环境搭建
2.1 安装基础依赖工具链
PX4开发需要一系列基础工具,通过以下命令安装:
sudo apt install git zip qtcreator cmake build-essential genromfs ninja-build -y对于Python相关依赖(PX4使用Python 3):
sudo apt install python3-pip python3-dev python3-wheel -y pip3 install --user kconfiglib jinja2 gcovr jsonschema2.2 获取PX4源代码
建议使用递归克隆方式获取PX4-Autopilot及其所有子模块:
git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot如果克隆过程中子模块更新失败,可尝试:
git submodule update --init --recursive2.3 运行安装脚本
PX4提供了便捷的安装脚本,会自动安装剩余依赖:
bash ./Tools/setup/ubuntu.sh安装完成后,终端会提示需要重新登录或重启系统以使更改生效。这是正常现象,因为脚本修改了用户组和环境变量。
3. Gazebo仿真器配置
3.1 Gazebo版本选择
Gazebo目前有两个主要版本可供选择:
- Gazebo Classic:传统的Gazebo 11版本,稳定且兼容性好
- Gazebo Garden:新一代Gazebo版本,具有更多新特性但可能不够稳定
对于大多数PX4仿真需求,Gazebo Classic已经足够。但如果需要使用最新功能,可以选择安装Gazebo Garden。
3.2 安装Gazebo Classic
Gazebo Classic通常随PX4安装脚本自动安装。如需手动安装:
sudo apt install gazebo11 libgazebo11-dev -y3.3 安装Gazebo Garden(可选)
如需安装Gazebo Garden,需先添加其官方仓库:
sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null sudo apt update sudo apt install gz-garden -y4. 运行PX4-Gazebo仿真
4.1 编译并启动仿真环境
进入PX4-Autopilot目录,编译SITL(Software In The Loop)默认配置:
make px4_sitl_default gazebo首次编译可能需要较长时间(10-30分钟,取决于机器性能)。成功后,Gazebo界面将自动弹出,显示一个包含四旋翼无人机的空场景。
4.2 基本飞行控制测试
在Gazebo启动后,可以在终端中输入MAVLink命令控制无人机:
- 解锁无人机:
commander arm - 起飞到5米高度:
commander takeoff - 降落:
commander land - 返回发射点并降落:
commander return
4.3 常见问题排查
Gazebo界面无法显示:
- 确认VMware Tools已正确安装
- 检查虚拟机3D加速是否启用
- 尝试降低图形质量设置:编辑
~/.gazebo/gui.ini,将render_engine改为ogre
PX4编译失败:
- 确保所有依赖已安装完整
- 尝试清理后重新编译:
make clean make px4_sitl_default gazebo - 检查网络连接是否稳定,特别是子模块下载时
Gazebo模型加载缓慢:
- 提前下载模型包(约300MB):
wget http://models.gazebosim.org/model.tar.bz2 tar -jxf model.tar.bz2 -C ~/.gazebo/models/
5. 高级配置与优化
5.1 多无人机仿真
PX4支持同时仿真多架无人机。首先编译支持多机的版本:
make px4_sitl_default gazebo_multi然后通过启动脚本控制无人机数量:
./Tools/gazebo_sitl_multiple_run.sh -n 4这将启动4架无人机,每架都有独立的PX4实例和MAVLink端口(从14540开始)。
5.2 自定义仿真环境
Gazebo支持加载自定义世界文件。PX4自带几个示例环境:
- 空世界:
make px4_sitl_default gazebo - 有地形的世界:
make px4_sitl_default gazebo_terrain - 室内环境:
make px4_sitl_default gazebo_indoors
要使用自定义世界,将其放入PX4-Autopilot/Tools/sitl_gazebo/worlds/目录,然后通过环境变量指定:
export PX4_SITL_WORLD=my_custom.world make px4_sitl_default gazebo5.3 性能优化技巧
虚拟机环境下运行Gazebo可能资源紧张,以下优化措施可提升性能:
调整Gazebo渲染设置:
- 在Gazebo界面中:Edit > Preferences > Rendering
- 降低抗锯齿级别
- 禁用阴影和特效
使用轻量级桌面环境:
sudo apt install lubuntu-desktop分配更多主机资源:
- 增加虚拟机内存和CPU核心数
- 为虚拟机预留更多显存
关闭不必要的服务:
sudo systemctl disable snapd.service
6. 集成开发环境配置
6.1 Qt Creator配置
PX4官方推荐使用Qt Creator作为开发IDE:
安装Qt Creator:
sudo apt install qtcreator -y导入PX4项目:
- 打开Qt Creator,选择"Open Project"
- 导航到PX4-Autopilot目录,选择
CMakeLists.txt - 选择"Desktop"套件,点击"Configure Project"
设置构建步骤:
- 在Projects > Build & Run中,添加自定义构建步骤:
make px4_sitl_default gazebo
- 在Projects > Build & Run中,添加自定义构建步骤:
6.2 VS Code配置
对于偏好VS Code的用户:
- 安装C/C++和CMake Tools扩展
- 打开PX4-Autopilot文件夹
- 选择CMake: [Debug] px4_sitl_default作为活动工具链
- 配置launch.json用于调试:
{ "name": "PX4 SITL Debug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/px4_sitl_default/bin/px4", "args": [ "${workspaceFolder}/ROMFS/px4fmu_common", "-s", "${workspaceFolder}/init.d-posix/rcS" ], "cwd": "${workspaceFolder}", "environment": [{"name": "PX4_SIM_MODEL", "value": "iris"}] }
7. 实际开发工作流建议
在虚拟机中开发PX4时,建议采用以下高效工作流:
代码编辑:
- 使用主机上的专业编辑器(如VS Code)通过共享文件夹编辑代码
- 或者配置SSH远程开发
版本控制:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com" git remote set-url origin git@github.com:yourname/PX4-Autopilot.git自动化测试: PX4提供了完善的测试框架,可运行:
./Tools/sitl_run.sh ./build/px4_sitl_default/bin/px4 none gazebo none none tests_mission日志分析: 仿真日志默认存储在
~/Documents/FlightLogs/中,可使用Flight Review在线工具分析:python3 -m pip install --user pyulog ulog_info <logfile.ulg>
对于需要频繁重启仿真的开发者,可以编写简单的shell脚本自动化这一过程。例如,创建restart_sim.sh:
#!/bin/bash pkill -f px4 make px4_sitl_default gazebo