告别WSL2图形化难题:在VMware Ubuntu20.04上保姆级搭建PX4+Gazebo仿真环境
2026/4/25 11:05:50 网站建设 项目流程

虚拟机环境下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 -y

1.2 更换软件源加速下载

国内用户建议更换为阿里云或清华源以大幅提升软件下载速度:

  1. 打开"软件和更新"设置
  2. 在"下载自"下拉菜单中选择"其他..."
  3. 选择mirrors.aliyun.commirrors.tuna.tsinghua.edu.cn
  4. 确认后重新加载软件列表

提示:更换源后若出现某些包找不到的情况,可尝试切换回默认源或选择其他镜像站点。

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 jsonschema

2.2 获取PX4源代码

建议使用递归克隆方式获取PX4-Autopilot及其所有子模块:

git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot

如果克隆过程中子模块更新失败,可尝试:

git submodule update --init --recursive

2.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 -y

3.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 -y

4. 运行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 gazebo

5.3 性能优化技巧

虚拟机环境下运行Gazebo可能资源紧张,以下优化措施可提升性能:

  1. 调整Gazebo渲染设置

    • 在Gazebo界面中:Edit > Preferences > Rendering
    • 降低抗锯齿级别
    • 禁用阴影和特效
  2. 使用轻量级桌面环境

    sudo apt install lubuntu-desktop
  3. 分配更多主机资源

    • 增加虚拟机内存和CPU核心数
    • 为虚拟机预留更多显存
  4. 关闭不必要的服务

    sudo systemctl disable snapd.service

6. 集成开发环境配置

6.1 Qt Creator配置

PX4官方推荐使用Qt Creator作为开发IDE:

  1. 安装Qt Creator:

    sudo apt install qtcreator -y
  2. 导入PX4项目:

    • 打开Qt Creator,选择"Open Project"
    • 导航到PX4-Autopilot目录,选择CMakeLists.txt
    • 选择"Desktop"套件,点击"Configure Project"
  3. 设置构建步骤:

    • 在Projects > Build & Run中,添加自定义构建步骤:
      make px4_sitl_default gazebo

6.2 VS Code配置

对于偏好VS Code的用户:

  1. 安装C/C++和CMake Tools扩展
  2. 打开PX4-Autopilot文件夹
  3. 选择CMake: [Debug] px4_sitl_default作为活动工具链
  4. 配置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时,建议采用以下高效工作流:

  1. 代码编辑

    • 使用主机上的专业编辑器(如VS Code)通过共享文件夹编辑代码
    • 或者配置SSH远程开发
  2. 版本控制

    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
  3. 自动化测试: PX4提供了完善的测试框架,可运行:

    ./Tools/sitl_run.sh ./build/px4_sitl_default/bin/px4 none gazebo none none tests_mission
  4. 日志分析: 仿真日志默认存储在~/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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询