RflyUdpFast 模块文档¶
所属工具箱:RflySim Swarm

简介¶
一句话描述:用于Simulink集群仿真中与多个CopterSim实例实现快速UDP数据通信,支持向多架无人机发送控制指令并接收实时状态反馈,适配大规模无人机集群仿真场景。
该模块是RflySim Swarm集群工具链中的核心通信模块,专门面向多无人机集群仿真开发设计,支持FullData全数据和SimpleData精简数据两种通信模式,可根据集群规模灵活选择:全数据模式可提供完整的无人机状态信息,适合中小规模、对数据完整性要求高的集群仿真;精简模式压缩了传输数据量,可保障数十上百架无人机大规模集群仿真的通信效率。
该模块通过UDP协议与本地或远程主机上的多个CopterSim实例进行通信,可接收Simulink中设计的集群控制算法输出的控制指令,转发给对应CopterSim实例中运行的PX4飞控,同时将PX4输出的无人机实时状态数据回传给Simulink供控制算法运算,结合RflySim3D可实现大规模无人机集群的可视化仿真验证。用户可自定义连接的无人机ID、IP地址与GPS坐标原点,适配本地单机多无人机仿真和多机分布式集群仿真场景。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
Ctrl_UAV1 |
double |
15×1 (FullData模式) / 5×1 (SimpleData模式) | 第1架无人机的控制输入,维度由所选UDP通信模式决定 |
Ctrl_UAVn |
double |
15×1 (FullData模式) / 5×1 (SimpleData模式) | 第n架无人机的控制输入,n等于配置的Vehicle Number,模块将生成对应数量的输入端口 |
输出端口(Outputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
State_UAV1 |
double |
28×1 (FullData模式) / 12×1 (SimpleData模式) | 第1架无人机的状态反馈输出,维度由所选UDP通信模式决定 |
State_UAVn |
double |
28×1 (FullData模式) / 12×1 (SimpleData模式) | 第n架无人机的状态反馈输出,n等于配置的Vehicle Number,模块将生成对应数量的输出端口 |
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
IP Address |
string |
"127.0.0.1" |
任意合法IPv4地址 | CopterSim实例所在目标主机的IP地址 |
Vehicle Number |
int |
1 |
1~255 |
需要连接的CopterSim实例总数量 |
CopterID List |
int vector |
[1] |
任意正整数向量 | 需要连接的无人机ID列表,长度等于连接的无人机总数量 |
UDP Mode |
enum |
FullData |
FullData, SimpleData |
UDP通信数据模式,FullData为全数据模式,SimpleData为精简数据模式 |
GPS Orin |
double vector |
[0, 0, 0] |
任意三维向量 | GPS坐标原点,用于解算无人机全局位置 |
Sample Time |
double |
0.01 |
>0 | 模块采样时间,需与Simulink仿真步长匹配 |
Start Port |
int |
20100 |
任意合法端口号 | UDP通信起始端口号 [待确认] |
Real Flight Mode |
bool |
false |
true/false |
是否为实机飞行模式 [待确认] |
参数设置说明¶
CopterID List¶
该参数为向量格式,指定本模块连接的所有无人机的ID编号,向量长度必须等于Vehicle Number配置的无人机数量。示例:[1:5]表示连接ID为1~5的共5架无人机,[6:10]表示连接ID为6~10的共5架无人机。
UDP Mode¶
FullData全数据模式:单架无人机输入为15维,包含完整MAVLink Offboard控制信息,适合飞机数量较少、需要完整控制参数的场景;输出为28维,包含完整的无人机状态反馈信息。SimpleData精简模式:单架无人机输入为5维,仅包含基础控制信息,适合飞机数量较多的大规模集群仿真场景;输出为12维,仅包含仿真常用的核心状态信息。
GPS Orin¶
该参数为三维GPS坐标原点(纬度,经度,高度),用于将无人机的绝对GPS坐标转换为以该原点为基准的全局位置,全局位置坐标与CopterSim中UE场景的PosE坐标对齐,适用于大规模集群仿真时的全局位置解算。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块基于UDP协议与多个CopterSim实例通信,端口规则为:每个无人机占用一个独立端口,起始端口由参数指定,第i个无人机(从0开始计数)的接收端口为起始端口 + 2*i,目标发送端口为起始端口 + 2*i + 1。支持两种通信数据格式:
- FullData模式:输入单无人机控制数据为15维double向量,输出单无人机状态数据为28维double向量,数据格式符合原始功能说明定义。
- SimpleData模式:输入单无人机控制数据为5维double向量,输出单无人机状态数据为12维double向量,数据格式符合原始功能说明定义。
相关模块¶
| 模块名 | 说明 |
|---|---|
RflyUdpReceive |
用于接收单个无人机UDP数据的基础通信模块 |
RflyUdpSend |
用于发送单个无人机UDP控制数据的基础通信模块 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:本模块需要先启动所有目标CopterSim实例后,再启动Simulink仿真,否则模块无法完成UDP连接建立,会导致数据接收失败。若需要连接远程IP地址的CopterSim,需提前确保两台设备网络连通、防火墙开放对应UDP端口。
- 采样时间匹配:模块的
Sample Time参数必须与Simulink模型的仿真步长匹配,建议设置为1ms或2ms,过大的采样时间会导致通信丢包、无人机状态更新不及时,影响控制效果。 - 参数配置一致性:
CopterID List中配置的飞机ID必须和对应CopterSim实例中设置的飞机ID一致,否则会出现数据对应错误,无法正确控制目标无人机。Vehicle Number的数值必须和CopterID List的长度一致,否则会导致端口生成错误,仿真无法正常启动。 - 通信模式选择:当集群无人机数量超过10架时,建议选择
SimpleData精简模式,可有效降低通信带宽占用,避免大规模仿真时出现卡顿或丢包;若需要获取GPS原始信息、定位精度等完整状态数据,且飞机数量较少时,再选择FullData完整模式。 - 坐标单位转换:
FullData模式输出的GPS相关数据部分存在单位缩放,使用输出数据时需按照说明完成单位转换:GPS经纬高需要将经纬度除以1e7、高度除以1e3得到米制单位,GPS速度需要除以100得到m/s单位,相对高度需要除以1000得到米制单位,航向角需要除以1000得到0~360度的角度值。 - 坐标原点一致性:大规模集群仿真中,所有RflyUdpFast模块的
GPS Orin参数必须和CopterSim软件中设置的坐标原点一致,否则解算得到的GlobalPos全局位置会出现偏移,无法对应UE地图的实际坐标。 - 端口分配规则:本模块会根据
CopterID自动分配UDP端口,同一台电脑内多个RflyUdpFast模块不可配置重复的飞机ID,否则会出现端口占用冲突,导致通信失败。
更新日志¶
v4.1.0(2024-05-03): 初始版本发布,支持与多个CopterSim实例进行快速UDP数据通信,提供FullData和SimpleData两种通信模式,支持自定义无人机ID列表与全局坐标原点设置,适配大规模集群仿真场景。