ROS/ROS2 接口参考¶
RflySim 工具链支持通过 ROS 1 (Noetic) 和 ROS 2 (Humble/Jazzy) 与仿真系统通信,主要通过 MAVROS / MAVROS2 实现 PX4 与 ROS 生态的桥接。
MAVROS 概述¶
MAVROS 是连接 PX4 自驾仪与 ROS 生态的桥梁,负责将 MAVLink 消息转换为 ROS 话题和服务:
graph LR
PX4[PX4 SITL/HITL] <-->|MAVLink<br>UDP| MAVROS[MAVROS]
MAVROS <-->|ROS Topics/Services| ROS[ROS 节点]
ROS --> ALGO[感知/决策/控制算法]
常用 ROS 话题¶
订阅话题(读取状态)¶
| 话题 | 消息类型 | 说明 |
|---|---|---|
/mavros/state |
mavros_msgs/State |
自驾仪连接/解锁/飞行模式状态 |
/mavros/local_position/pose |
geometry_msgs/PoseStamped |
本地坐标系位置与姿态 |
/mavros/local_position/velocity_local |
geometry_msgs/TwistStamped |
本地速度 |
/mavros/global_position/global |
sensor_msgs/NavSatFix |
GPS 全球坐标 |
/mavros/imu/data |
sensor_msgs/Imu |
IMU 数据 |
/mavros/battery |
sensor_msgs/BatteryState |
电池状态 |
发布话题(发送控制)¶
| 话题 | 消息类型 | 说明 |
|---|---|---|
/mavros/setpoint_position/local |
geometry_msgs/PoseStamped |
位置设定点 |
/mavros/setpoint_velocity/cmd_vel_unstamped |
geometry_msgs/Twist |
速度设定点 |
/mavros/setpoint_raw/local |
mavros_msgs/PositionTarget |
原始位置/速度/加速度设定点 |
/mavros/setpoint_raw/attitude |
mavros_msgs/AttitudeTarget |
姿态设定点 |
常用服务¶
| 服务 | 类型 | 说明 |
|---|---|---|
/mavros/cmd/arming |
mavros_msgs/CommandBool |
解锁/上锁 |
/mavros/set_mode |
mavros_msgs/SetMode |
切换飞行模式 |
/mavros/cmd/takeoff |
mavros_msgs/CommandTOL |
起飞 |
/mavros/cmd/land |
mavros_msgs/CommandTOL |
降落 |
ROS 2 (uXRCE-DDS)¶
PX4 v1.14+ 原生支持 ROS 2 通信,通过 Micro XRCE-DDS Agent 直接将 uORB 消息转为 ROS 2 话题,无需 MAVROS:
graph LR
PX4[PX4] <-->|uXRCE-DDS| AGENT[Micro XRCE-DDS Agent]
AGENT <-->|ROS 2 Topics| ROS2[ROS 2 节点]
快速启动¶
ROS 1 + MAVROS¶
# 在 WinWSL 中执行
# 启动 MAVROS 并连接 SITL(默认端口 14540)
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
或使用快捷方式 RflyTools\MavrosRun。
ROS 2 + MAVROS2¶
相关例程¶
| 例程 | 路径 |
|---|---|
| MAVROS 功能测试 | RflySimAPIs\2.RflySimUsage\0.ApiExps\e6_ROSMavrosReadme |
| ROS 视觉感知 | RflySimAPIs\8.VisionPerception\ |
| ROS 集群控制 | RflySimAPIs\10.SwarmControl\ |