模块二:Isaac Sim + Pegasus + PX4 官方 Iris 试飞

说明目标:

前置条件:

验证目标:

01 Pegasus 插件安装与启用

Pegasus 插件安装分为两个步骤:将 Pegasus 安装到 Isaac Sim 使用的 Python 环境,然后在 Isaac Sim GUI 中添加 extension 路径并启用插件。

验证环境中的 Pegasus 源码位置:

如需复现 Pegasus 安装流程,可使用 Isaac Sim 环境中的 Python:

当前项目脚本会通过 sys.path 加入 /home/robot-a/Documents/PegasusSimulator/extensions/pegasus.simulator,因此脚本加载目标无人机时可以直接找到 Pegasus Python 包。

安装完成后,启动 Isaac Sim GUI。在菜单栏进入:

Extensions 入口

在 Extensions 界面右上角打开 Settings,把 Pegasus extension 路径加入 Isaac Sim 的搜索路径。

Extensions 设置界面

点击路径列表旁边的加号,添加 Pegasus 源码里的 extensions 目录。需注意,添加对象是 extensions 目录,不是其中的 pegasus.simulator 子目录。

常见路径:

点击加号添加 Pegasus extensions 路径

路径添加完成后,在左上角搜索 pegasus。路径正确时,列表里会出现 Pegasus 插件。点击 Install 安装。

搜索并安装 Pegasus 插件

选择和 Isaac Sim 版本匹配的插件版本。验证环境使用本地 /home/robot-a/Documents/PegasusSimulator,添加路径后勾选 Enabled

 

02 PX4-Autopilot、px4_msgs、Micro XRCE-DDS Agent、QGC 的作用

本节说明验证环境中已安装的软件包,并给出在单独目录中重新下载和编译的复现流程。复现安装流程时,应避免移动或删除现有可用目录。

验证环境关键路径:

系统版本和 ROS 2 版本按下表对应:

UbuntuROS 2source 命令
20.04Foxysource /opt/ros/foxy/setup.bash
22.04Humblesource /opt/ros/humble/setup.bash
24.04Jazzysource /opt/ros/jazzy/setup.bash

验证环境为 Ubuntu 24.04.4,宿主机 ROS 2 控制终端使用 Jazzy:

需注意:/home/robot-a/run_isaacsim.sh 内部会为 Isaac Sim ROS 2 Bridge 设置 ROS_DISTRO=humbleRMW_IMPLEMENTATION=rmw_cyclonedds_cpp。这属于 Isaac Sim 启动环境,不等同于控制终端需要 source Humble。

安装基础工具:

设置 locale:

确认对应 ROS 2 发行版已安装:

Ubuntu 20.04 + Foxy:

Ubuntu 22.04 + Humble:

Ubuntu 24.04 + Jazzy:

初始化 rosdep

每个新的 ROS 2 控制终端均需要 source:

Ubuntu 20.04 + Foxy:

Ubuntu 22.04 + Humble:

Ubuntu 24.04 + Jazzy:

PX4-Autopilot 是飞控代码仓库。仿真时运行的是 PX4 SITL。Pegasus 通过 PX4 MAVLink backend 启动或连接它。

PX4-Autopilot 负责这些飞控逻辑:

验证环境位置:

验证已有安装时执行:

如需重新下载并编译,安装目录可自行选择:

如果 Pegasus 要自动启动 PX4,Pegasus UI 里的 PX4 路径应指向这个目录:

版本要对齐:

px4_msgs 是 PX4 和 ROS 2 通信用的消息定义包。ROS 2 节点要发布 OffboardControlModeTrajectorySetpointVehicleCommand,就需要它。

它的作用包括:

验证环境位置:

验证已有安装时执行:

Ubuntu 20.04 + Foxy:

Ubuntu 22.04 + Humble:

Ubuntu 24.04 + Jazzy:

如需在重新下载和编译px4_msgs ,流程如下:

Ubuntu 20.04 + Foxy:

Ubuntu 22.04 + Humble:

Ubuntu 24.04 + Jazzy:

Jazzy 对应系统 Python 3.12。应避免使用 conda Python 3.13 编译 px4_msgs,否则运行控制脚本时可能出现 libpython3.13.so.1.0UnsupportedTypeSupport 相关错误。这个部分需要注意自身的python版本的问题。

检查消息是否可用:

Micro XRCE-DDS Agent 是 PX4 和 ROS 2 DDS 网络之间的桥。

缺少 Agent 时,常见现象包括:

常见启动形式:

如果没有 source 到 PATH,也可以直接使用绝对路径:

端口和启动方式以实际 PX4 / Pegasus 配置为准。常用端口是 8888

如果系统里没有 MicroXRCEAgent,可以从源码编译:

检查命令:

QGC 是地面站。它不是 ROS 2 控制的必需条件,但调试时可保持打开。

它可用于确认以下状态:

部分飞控问题在终端中不够直观,QGC 通常可以直接显示原因。

通用下载方式以 QGroundControl 官方下载页为准:

进入该页面后,选择 Linux 版本的 AppImage,下载到系统后赋予执行权限:

验证环境已有 QGroundControl AppImage 时,也可以直接使用示例路径:

如果 AppImage 报 FUSE 相关错误,按系统安装兼容包。

Ubuntu 20.04 / Ubuntu 22.04:

Ubuntu 24.04:

本流程要求 QGC 能连接 PX4、显示状态并进行手动控制,不强制使用最新版。

Isaac Sim ROS 2 Bridge 需要在安装 Isaac Sim 时就安装好。它负责把仿真数据发布到 ROS 2,例如 /clock、TF、odometry、camera image。

03 Pegasus UI 配置与 PX4 路径检查

启用成功后,Isaac Sim 里会出现 Pegasus UI。使用前先检查:

如果 PX4 路径不正确,Pegasus UI 可能可以打开,但加载无人机或启动 PX4 backend 时会失败。

Pegasus 插件界面和基础试飞入口

启动 QGC 的常见命令:

QGC 连接后显示 Ready To Fly,说明 Pegasus、PX4、QGC 的基础链路已连通。

04 加载官方 Iris 无人机

Iris 是 PX4/Pegasus 常用的官方四旋翼示例机型。

Iris 的资产和动力学参数已经配置完成,PX4 airframe 通常也匹配。Iris 可正常飞行时,说明 Pegasus、PX4、QGC、MAVLink 基础链路基本正常。

Pegasus 插件界面和基础试飞入口

通用流程:

  1. 启动 Isaac Sim。
  2. 启用 Pegasus 插件。
  3. 在 Pegasus UI 中选择官方 Iris。
  4. 选择 PX4 backend。
  5. 加载场景。
  6. 等待 PX4 SITL 启动。
  7. 打开 QGroundControl。
  8. 确认 QGC 连接 PX4。
  9. 确认 Ready To Fly。
  10. 使用 QGC 虚拟摇杆或手柄起飞、移动、降落。

该链路关系如下:

整体仿真链路

Pegasus 负责在 Isaac Sim 里加载无人机和 PX4 backend;PX4 负责飞控状态机和控制器;QGC 负责地面站连接、状态检查和手动控制。

05 QGC 连接检查与 Ready To Fly 判断

进行代码控制时也可打开 QGC。PX4 无法 arm、拒绝起飞、模式切换失败时,QGC 通常会显示原因。

QGC 可使用虚拟摇杆,也可以接入手柄。检查顺序如下:

QGroundControl 界面

06 手动 arm、takeoff、移动、land

Iris 手动试飞用于确认 Isaac Sim、Pegasus、PX4、QGC 之间的基础链路是否正常。

按以下顺序检查:

07 基础链路故障排查

QGC 无法连接时,按以下项目检查:

Iris 不能起飞时,按下面顺序检查:

PX4 topic 不出现时,检查:

如果没有 /fmu/out/*

08 Iris 试飞检查清单