跳转至

RflyUdpFast 模块文档

所属工具箱:RflySim Swarm

RflyUdpFast 模块外观

简介

一句话描述:用于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。支持两种通信数据格式:

  1. FullData模式:输入单无人机控制数据为15维double向量,输出单无人机状态数据为28维double向量,数据格式符合原始功能说明定义。
  2. SimpleData模式:输入单无人机控制数据为5维double向量,输出单无人机状态数据为12维double向量,数据格式符合原始功能说明定义。

相关模块

模块名 说明
RflyUdpReceive 用于接收单个无人机UDP数据的基础通信模块
RflyUdpSend 用于发送单个无人机UDP控制数据的基础通信模块

使用示例

相关使用示例请参考以下路径:

[RflySim安装路径]/RflySimAPIs/10.RflySimSwarm/1.BasicExps/e1_RflyUdpSwarmExp/Readme.pdf

请在上述路径中查看 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列表与全局坐标原点设置,适配大规模集群仿真场景。