PX4 源码自带 Gazebo Harmonic 仿真,不需要单独安装仿真器。本文整理 PX4 + Gazebo Harmonic 的常用操作:启动仿真、查看 Gazebo 话题、桥接到 ROS 2,以及独立启动、无界面、多机等启动参数。

环境安装

下载 PX4 源码即可:

1
git clone git@github.com:dreamer198/PX4-Autopilot.git --recursive

命令中的 --recursive 表示同时下载子模块。

基本使用

启动仿真

进入 PX4 目录,编译并启动仿真:

1
2
cd /path/to/PX4-Autopilot
make px4_sitl gz_x500

这会编译并启动 x500 无人机模型。

其他常用模型:

1
2
make px4_sitl gz_x500_depth    # 带深度相机的 x500
make px4_sitl gz_rc_cessna # Cessna 固定翼模型

Gazebo 话题操作

查看所有 Gazebo 话题:

1
gz topic -l

查看特定话题的数据:

1
gz topic -e -t <话题名称>

桥接到 ROS 2

桥接话题需要安装 ros-humble-ros-gzharmonic,而不是 ROS 2 自带的 ros-humble-ros-gz。

桥接命令的格式:

1
ros2 run ros_gz_bridge parameter_bridge /TOPIC@ROS_MSG@GZ_MSG
写法 含义
/TOPIC Gazebo 中的话题名
ROS_MSG ROS 2 消息类型
GZ_MSG Gazebo 消息类型
@ 双向桥接
[ Gazebo → ROS 单向
] ROS → Gazebo 单向

桥接后话题名保持不变。例如桥接深度相机图像:

1
ros2 run ros_gz_bridge parameter_bridge /depth_camera@sensor_msgs/msg/Image[gz.msgs.Image

高级配置

独立启动模式

只启动 PX4,等待单独启动的 Gazebo 环境:

1
PX4_GZ_STANDALONE=1 make px4_sitl gz_x500

无GUI模式

不启动图形界面,减少内存占用:

1
HEADLESS=1 make px4_sitl gz_x500

设置地理位置

手动设置世界模型的中心经纬高:

1
2
3
4
export PX4_HOME_LAT=51.1788
export PX4_HOME_LON=-1.8263
export PX4_HOME_ALT=101
make px4_sitl gz_x500

选择世界模型

设置特定的世界模型:

1
PX4_GZ_WORLD=Baylands make px4_sitl gz_x500

调整仿真速度

1
PX4_SIM_SPEED_FACTOR=2 make px4_sitl gz_x500

参数配置要点

配置项 参数 说明
飞行机型 PX4_SYS_AUTOSTART 指定使用的机型编号
新建飞机 PX4_SIM_MODEL 或 PX4_GZ_MODEL_NAME 连接已有飞机
初始位置 PX4_GZ_MODEL_POSE 设置模型的初始位姿
世界模型 PX4_GZ_WORLD 选择Gazebo世界环境
启动模式 PX4_GZ_STANDALONE 是否独立启动
仿真速度 PX4_SIM_SPEED_FACTOR 仿真速度倍率

直接使用px4二进制文件

除了 make,也可以直接运行编译好的 px4 二进制文件,参数调整更灵活:

1
./build/px4_sitl_default/bin/px4 -i <实例编号>

-i 用来区分不同的无人机实例。

多机仿真示例

1
2
3
4
5
6
7
8
# 第一架无人机
PX4_SYS_AUTOSTART=4001 PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 -i 1

# 第二架无人机(独立启动,位置偏移 1 米)
PX4_GZ_STANDALONE=1 PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_POSE="0,1" PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 -i 2

# 第三架无人机(Cessna 模型,位置偏移 2 米)
PX4_GZ_STANDALONE=1 PX4_SYS_AUTOSTART=4003 PX4_GZ_MODEL_POSE="0,2" PX4_SIM_MODEL=gz_rc_cessna ./build/px4_sitl_default/bin/px4 -i 3

常见问题

问题 处理方法
桥接失败 确认安装的是 ros-humble-ros-gzharmonic
仿真启动慢 用 HEADLESS=1 关闭图形界面,或调整 PX4_SIM_SPEED_FACTOR
多机实例冲突 用 -i 给每个实例分配唯一编号

参考资源