跳转至

RflyVrpnRecv 模块文档

所属工具箱:RflySim Swarm

RflyVrpnRecv 模块外观

简介

一句话描述:实飞场景下基于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)

特性项
支持的数据类型 doublesingle
直接馈通(Direct Feedthrough)
采样时间 离散
代码生成支持

数据通信协议

本模块涉及两种UDP网络通信:

  1. 与动捕系统的VRPN通信:连接用户配置的Vrpn IP Address,默认动捕服务端口由VRPN协议规定为3883,接收动捕发布的无人机位姿数据
  2. 与无人机的MAVLink通信:当勾选isSendVision选项时,模块会将动捕数据通过UDP转发给无人机,端口规则为:
  3. 基础端口为Drone base UDP Port配置值,ID为n的无人机对应端口为Drone base UDP Port + (n - 最小飞机ID)
  4. IP规则为:连续编号的无人机仅需填写第一架无人机IP,后续无人机IP按顺序递增;不连续编号则按ID顺序填写逗号分隔的对应无人机IP

输出数据格式为30维的状态向量,包含多架无人机的位置、速度、加速度等动捕数据,需解码器解析使用。

相关模块

模块名 说明
vrpn_data_decoder 解析RflyVrpnRecv输出的30维动捕数据,提取单架无人机的状态信息
RflyUdpSend RflySim Swarm集群控制UDP发送模块,用于向无人机发送控制指令
RflyUdpRecv RflySim Swarm集群控制UDP接收模块,用于接收无人机的状态反馈

使用示例

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

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

请在上述路径中查看 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配置。