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

简介¶
一句话描述:实飞场景下基于VRPN协议直接接收动作捕捉系统数据,并可将动捕信息转发给PX4无人机的多机集群通信模块。
该模块是RflySim Swarm工具链专为室外/室内实机集群试飞开发的动捕数据接收组件,相比通过ROS中转动捕数据的方案,可有效降低数据传输时延,支持单架或多架无人机的动捕数据同时接收。该模块可适配连续/非连续编号的无人机ID与IP配置,支持自定义数据采样频率,输出整合后的多无人机状态数据,需搭配vrpn_data_decoder模块完成数据解析。当勾选isSendVision参数后,模块可直接将包含位置、速度、加速度的动捕数据通过MAVLink协议转发给对应PX4无人机,供飞控内部滤波器融合使用,仅在开环控制场景下可关闭转发功能,可适配MATLAB与动捕软件同机部署或跨机部署的多种组网场景。
端口说明¶
输入端口(Inputs)¶
本模块无输入端口。
输出端口(Outputs)¶
| 端口名 | 数据类型 | 维度 | N*30×1 |
输出所有接收的多架无人机动捕状态数据,每架无人机对应30维数据,需搭配vrpn_data_decoder模块进行数据解析 |
|---|---|---|---|---|
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Vrpn IP Address |
string |
127.0.0.1 |
合法IPv4地址字符串 | 动捕软件所在设备的IP地址 |
Vehicle number or CopterID list |
vector<int> / int |
1 |
正整数/正整数数组 | 配置无人机数量或自定义无人机ID列表 |
Sample Time |
double |
1/30 |
>0 或 -1 | 模块采样时间,设置为-1时继承Simulink全局仿真步长 |
isSendVision |
bool |
checked |
true/false |
是否将接收到的动捕数据通过MAVLINK发送给无人机 |
Drone base IP Address or IP list seperated by ',' |
string |
192.168.151.1 |
合法IP格式字符串 | 目标无人机的IP地址,多架不连续IP使用逗号分隔 |
Drone base UDP Port or list |
int |
15501 |
正整数 | 最小无人机ID对应的UDP端口,配合ID配置使用 |
参数设置说明¶
Vehicle number or CopterID list¶
当无人机ID为连续编号时,直接填写无人机总数量,配合Drone base UDP Port参数即可,此时最小端口为基础端口,ID从1开始连续编号;当需要配置非连续无人机ID时,直接输入ID数组,例如[1 3 7]表示接收ID为1、3、7共3架无人机的动捕数据。单架非1编号无人机可以两种方式配置:输入[3](ID数组),或保持数值输入为1,将Drone base UDP Port设置为15503。
Vrpn IP Address¶
当MATLAB控制程序与动捕软件运行在同一台计算机时,使用默认值127.0.0.1即可;当两者运行在不同设备时,需要修改为部署动捕软件设备的实际局域网IP地址。
Drone base IP Address or IP list seperated by ','¶
当多架无人机IP为连续网段时,仅需要填写第一架无人机的IP即可;当无人机IP不连续时,使用英文逗号分隔多个IP地址,顺序需要与无人机ID列表顺序保持一致。
Sample Time¶
推荐设置为1/30对应30Hz的动捕数据发送频率,也可设置为-1,此时模块将使用Simulink模型的全局仿真步长。当系统中存在不同采样频率的模块时,必须设置本参数避免Simulink模型报错。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single |
| 直接馈通(Direct Feedthrough) | 否 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块涉及两种UDP网络通信:
- 与动捕系统的VRPN通信:连接用户配置的
Vrpn IP Address,默认动捕服务端口由VRPN协议规定为3883,接收动捕发布的无人机位姿数据 - 与无人机的MAVLink通信:当勾选
isSendVision选项时,模块会将动捕数据通过UDP转发给无人机,端口规则为: - 基础端口为
Drone base UDP Port配置值,ID为n的无人机对应端口为Drone base UDP Port + (n - 最小飞机ID) - IP规则为:连续编号的无人机仅需填写第一架无人机IP,后续无人机IP按顺序递增;不连续编号则按ID顺序填写逗号分隔的对应无人机IP
输出数据格式为30维的状态向量,包含多架无人机的位置、速度、加速度等动捕数据,需解码器解析使用。
相关模块¶
| 模块名 | 说明 |
|---|---|
vrpn_data_decoder |
解析RflyVrpnRecv输出的30维动捕数据,提取单架无人机的状态信息 |
RflyUdpSend |
RflySim Swarm集群控制UDP发送模块,用于向无人机发送控制指令 |
RflyUdpRecv |
RflySim Swarm集群控制UDP接收模块,用于接收无人机的状态反馈 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:该模块仅适用于实飞场景,请勿在仿真任务中添加使用。请确保模型开始仿真前,动捕软件已经正常启动并完成目标识别追踪,网络连接已经建立,否则模块会初始化失败无法接收动捕数据。
- 参数配置规则:配置多无人机ID和IP时,需要遵循对应规则:不连续ID需以空格分隔填写为向量形式(如
[1 3 7]),不连续IP需以英文逗号分隔填写,不可混淆分隔符;Base端口需配合ID配置使用,当ID为连续编号时,Base端口为最小ID对应的端口,当配置为自定义ID列表时,Base端口参数失效,每个ID对应的端口会自动计算为15500 + ID。 - 采样时间匹配:推荐设置模块采样时间为
-1,匹配Simulink模型全局仿真频率,同时将全局仿真频率设置为30Hz,符合多数动捕系统的输出频率。如果模型中存在多速率任务,需确保该模块采样时间和动捕系统输出频率匹配,避免数据丢包或Simulink仿真报错。 - 网络连通性:当MATLAB和动捕软件不在同一台电脑时,需确保两台设备在同一局域网内,可互相ping通,关闭电脑防火墙后再进行数据接收,否则会出现连接失败无法接收数据的问题。配置无人机IP时,也需确保MATLAB主机和所有无人机在同一局域网内。
- 输出数据使用:模块输出为打包后的30维多机状态向量,必须搭配
vrpn_data_decoder模块解析得到单架无人机的位置、速度等状态数据,不可直接使用原始输出。 - 低时延优化:该模块相比通过ROS转发动捕数据时延更低,若仍出现明显时延,可尝试将动捕软件和MATLAB部署在同一台电脑,Vrpn IP地址设置为
127.0.0.1可获得最低时延。
更新日志¶
v4.20(2024-05-03): 新增RflyVrpnRecv动捕数据接收模块,支持多无人机动捕数据低时延接收与转发,支持连续/不连续无人机ID与IP配置。