跳转至

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

# 在 WinWSL 中执行
ros2 launch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

相关例程

例程 路径
MAVROS 功能测试 RflySimAPIs\2.RflySimUsage\0.ApiExps\e6_ROSMavrosReadme
ROS 视觉感知 RflySimAPIs\8.VisionPerception\
ROS 集群控制 RflySimAPIs\10.SwarmControl\