跳转至

工具链协议汇总

一、仿真平台基本协议(全流程通用)

RflySim 各模块间协议与数据交互流程图

上述图展示了 RflySim 平台中运动仿真模块与各类外部接口间的典型数据流交互关系,涵盖了自驾仪软件/硬件在环模块、三维仿真引擎、控制器与传感器回传路径等。为支撑这一交互体系,RflySim 平台定义了一系列标准化协议,包括控制指令下发、传感器数据回传、配置驱动执行、日志记录等。下表汇总了这些基础协议及其适用平台与核心功能。

协议名称 对接平台或模块 功能描述
[UDP/TCP通信端口] RflySim 主程序、控制模块、回传模块 统一指定仿真通信使用的端口号范围,通常由RflySim主程序如CopterSim内部分配,暴露给上层控制器等外部程序的端口配置见对应接口中的port字段
[UDP控制指令协议] Simulink、Python控制器 实时下发控制指令(如期望姿态、速度、轨迹点),支持多机广播或单机控制
[UDP传感器回传协议] Python/ROS客户端 实时回传仿真IMU、GPS、图像等传感器数据
[自动化仿真配置协议] RflySim主程序配置生成/控制指令生成 标准结构化任务与仿真场景配置格式,支持一键启动和批量实验自动化
[日志记录协议] 仿真数据记录系统 以时间戳对飞行状态、传感器数据、控制命令等进行结构化记录,支持导出为CSV等格式

二、RflySim 对接无人系统 / 机器人相关平台协议

RflySim 支持对接多个主流无人系统平台及其通信中间件,包括飞控板 PX4、机器人操作系统 ROS1/ROS2、动捕系统 VRPN 等。以下协议为系统间无缝互操作提供基础保障,是系统集成和软硬联调的重要桥梁。

协议名称 适用平台 功能描述
[MAVLink] PX4, ArduPilot, QGroundControl 轻量化飞控通信协议,支持位置/姿态/状态传输与控制命令下发
[VRPN (Virtual-Reality Peripheral Network)] 动作捕捉系统(如OptiTrack、NOKOV) 提供稳定的6DoF位姿传输,支持MATLAB、Simulink等平台订阅与闭环控制
[ROS Topic / Service / Action] ROS1, ROS2 发布-订阅消息机制、服务调用、行为树决策机制等,连接感知-决策-控制全链条
[DDS (Data Distribution Service)] ROS2(Foxy/Galactic 等) 高性能实时通信中间件,提供多节点可靠低延迟传输支撑

三、网络通信与组网协议(针对无人系统集群控制开发)

在多机集群控制和分布式协同研究中,网络通信效率和协议灵活性至关重要。本节整理了 RflySim 平台支持的主流通信协议,包括 Redis、MQTT、NS-3 等,以及平台自定义的粗粒度网络结构模拟机制。

协议名称 主要用途 功能描述
自定义组网通信 多机编队、异构系统联合控制 通过UDP广播/单播结合自定义消息结构实现控制器之间的信息交换
[MQTT] 云端/边缘低带宽环境下的多机通信 基于主题的发布订阅机制,支持QoS控制与断线重连
Redis 发布-订阅 局域网内高效多机状态广播与命令同步 键值对存储结合频道订阅机制,低延迟、结构简单,适合快速实验
[自定义粗粒度组网仿真] 通信策略验证与延迟测试 构建简化网络拓扑与通信策略,测试抗丢包/抗延迟能力
[NS-3 协议栈仿真] 仿真集群中的网络行为建模 可构建TCP/IP、UDP、802.11等网络协议模型用于通信行为测试

四、用户引导

不同类型的开发者在使用 RflySim 时将面向不同的接口模块。本节按使用目标将典型用户分为控制算法开发者、感知决策开发者以及集群与组网研究者,并为其分别提供推荐接口与使用路径,助力高效集成与快速验证。

应用目标 示例接口
下发控制命令 使用 Simulink / Python 实现控制逻辑,并经 UDP 向仿真平台下发指令
接收飞行状态与传感器数据 监听回传端口(如14550/14600),实时接收 /imu, /gps, /odom 等数据流
使用真实飞控/硬件联调 通过 QGroundControl 连接 PX4,结合 MAVLink 实现仿真与实物统一控制流程

2. 感知与决策模块开发者(使用 Python + ROS1 / ROS2)

应用目标 示例接口
感知数据发布/订阅(图像、IMU) 使用 VisionCaptureApi.py 将仿真图像/IMU发布为 ROS Topic,进行YOLO识别、SLAM等任务
控制指令回传 订阅感知结果,根据决策策略生成控制指令,再通过 UDP/MAVLink 接口回传至仿真平台

3. 无人集群控制与组网研究者

应用目标 示例接口
多机信息同步/命令广播(组网通信) 使用 Redis/MQTT 实现多节点共享目标状态与路径信息,保持集群一致性
仿真环境中验证通信协议行为(组网仿真) 使用 NS-3 模拟信道损耗/带宽/干扰等,评估通信机制对集群任务执行的影响
多机协同规划/调度(集中式、分布式控制) 利用自定义组网通信接口在 Python 中实现中心调度器或局部协同策略

附:典型工作流模板


通信端口与协议细节

RflySim 平台使用统一规划的 UDP/TCP 端口体系和硬件串口,支持硬件飞控 HIL、PX4 SITL、三维引擎、视觉传感器和多机并行仿真。

编号规则

表中的 n 表示 CopterID,通常从 1 开始。++(n-1) 表示按飞机编号递增,++2*(n-1) 表示每架飞机间隔 2 个端口。

通信类别 接口/协议 默认端口或串口 数据方向 用途
HITL 串口 /dev/ttyUSBnCOMn 波特率 921600 飞控与 CopterSim 双向 硬件在环 MAVLink 和 HIL 数据
PX4 SITL MAVLink TCP 4561++(n-1) PX4 SITL 到 CopterSim/QGC PX4 SITL 主 MAVLink 链路
PX4 SITL 传感器 HIL UDP 17540++(n-1) CopterSim 到 PX4 HIL 传感器输入
PX4 SITL 执行器 HIL UDP 16540++(n-1) PX4 到 CopterSim 电机/舵面控制输出
状态返回 UDP 20101++2*(n-1) CopterSim 到外部程序 飞控状态、MAVLink 数据或控制回传
外部控制接收 UDP 20100++2*(n-1) 外部程序到 CopterSim/PX4 Python、Simulink 或外部控制输入
真值数据输出 UDP 30101++2*(n-1) CopterSim 到外部程序 位姿、速度、欧拉角、传感器真值等
故障/综合模型控制 UDP 30100++2*(n-1) 外部程序到 CopterSim/模型 故障注入、模型参数、综合模型输入
低层桥接 UDP 40100++2*(n-1) PX4、CopterSim、外部程序 底层 PX4 数据桥接
QGroundControl UDP/TCP UDP 14550,TCP 18570++(n-1) QGC 与飞控双向 地面站连接
三维场景同步 UDP 200082000920010++(n-1) CopterSim/Python 到 RflySim3D 场景命令、载具位姿、对象状态
视觉图像流 共享内存或 UDP Config.json 配置 RflySim3D 到视觉程序 RGB、深度、分割、点云等数据

端口配置

视觉数据流若使用 UDP,需要在 Config.jsonSendProtocol 中配置 IP 与端口。外部控制端口可通过 Config.json、Simulink 模块参数或 Python 接口参数修改,但同一架飞机的同一方向数据不应被多个进程同时监听。

主要数据链路

链路 典型消息 说明
飞控执行器到模型 mavlink_hil_actuator_controls PX4 输出电机、舵机等执行器控制量,进入模型的 inPWMs
模型传感器到飞控 mavlink_hil_sensormavlink_hil_gps CopterSim/Simulink 模型输出 IMU、气压计、磁力计、GPS
Python/Simulink 外部控制 Offboard 控制、位置/速度/姿态控制结构体 通过 20100 系列端口进入 CopterSim 或 PX4 桥接模块
真值与日志输出 VehileInfo60doutCopterData 通过 30101 系列端口输出到 Python、Simulink 或日志系统
RflySim3D 场景交互 位姿包、控制台命令、碰撞/传感器反馈 200082000920010 系列端口承担场景同步

协议主题索引

主题 关键内容 建议查阅
MAVLink / MAVROS PX4/APM、QGC、ROS 间的模式切换、解锁、setpoint、状态回传 Python SDK、ROS/ROS2 接口
ROS / DDS 高频状态、传感器、控制闭环和 ROS2 底层实时通信 ROS/ROS2 接口、视觉通信协议
MQTT 低频状态、任务指令、监控面板和云端协同 comm 网络通信、集群控制
NS-3 节点编号、链路质量、时延、丢包、带宽和路由策略 集群通信和组网仿真
Log / Sensor / Ctrl / Coa 日志、传感器、外部控制、协同控制主题 PHM、Simulink 工具箱、Swarm SDK

外部控制、ROS 桥接和地面站联调通常同时涉及 MAVLink 消息和 MAVROS 话题/服务。下表列出常用映射关系,便于在 Python、ROS1/ROS2 或 MAVROS 节点中定位对应的数据链路。

类别 MAVLink 消息 MAVROS 话题/服务 功能说明
状态与位置信息 HEARTBEAT /mavros/state 系统连接状态、飞行模式和解锁状态
状态与位置信息 SYS_STATUS /mavros/battery 电池电量、电源状态和传感器状态
状态与位置信息 GPS_RAW_INT /mavros/global_position/raw/fix GPS 原始经纬度、卫星数量等数据
状态与位置信息 GLOBAL_POSITION_INT /mavros/global_position/global 全球位置、高度和姿态相关信息
状态与位置信息 LOCAL_POSITION_NED /mavros/local_position/pose 本地 NED 坐标系位置与姿态
状态与位置信息 ATTITUDE /mavros/imu/data IMU 解算后的四元数姿态
控制命令 COMMAND_LONG /mavros/cmd/command 起飞、返航、复位等通用命令
控制命令 SET_MODE /mavros/set_mode 切换 OFFBOARDAUTO.MISSION 等飞行模式
控制命令 MANUAL_CONTROL /mavros/rc/override 模拟遥控器控制输入
控制命令 RC_CHANNELS_OVERRIDE /mavros/rc/override 覆盖遥控器通道
参数管理 PARAM_REQUEST_LIST /mavros/param/get 获取参数列表或指定参数值
参数管理 PARAM_SET /mavros/param/set 设置 PX4 参数
任务管理 MISSION_REQUEST_LIST /mavros/mission/pull 下载当前任务航点列表
任务管理 MISSION_ITEM_INT /mavros/mission/push 上传任务航点
传感器数据 HIGHRES_IMU /mavros/imu/data 高精度加速度、角速度和磁力计数据
传感器数据 RAW_IMU /mavros/imu/data_raw 原始未滤波 IMU 数据
传感器数据 OPTICAL_FLOW /mavros/px4flow/raw/optical_flow_rad PX4Flow 光流速度估计
控制输出 POSITION_TARGET_LOCAL_NED /mavros/setpoint_position/local 局部位置或速度 setpoint
控制输出 SERVO_OUTPUT_RAW /mavros/actuator_control 电机、舵机等 PWM 输出通道
系统状态信息 STATUSTEXT /mavros/diagnostics 系统文本状态和诊断信息
系统状态信息 TIMESYNC /mavros/time_reference Companion Computer 与飞控时间同步

NS-3 组网仿真要点

NS-3 通信仿真需要明确节点编号与 CopterID 的映射关系,并同步记录链路延迟、丢包率、带宽、路由策略和飞行日志时间戳。做集群任务评估时,应同时保存飞行状态和网络状态,否则难以判断任务失败是控制问题还是通信链路问题。

端口冲突排查

netstat -ano | findstr ":14550"
netstat -ano | findstr ":20100"
netstat -ano | findstr ":30100"
netstat -ano | findstr ":40100"

发现端口被占用后,可结束对应 PID,或修改脚本/配置中的端口。自动化测试和批量仿真建议在启动前统一清理残留进程。