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

简介¶
一句话描述:基于UDP协议实现MAVLink数据的收发,支持同时对多架无人机进行仿真控制或实际飞行控制,是RflySim集群开发中MATLAB/Simulink连接底层飞控与可视化的核心通信模块。
该模块是RflySim Swarm集群工具链的核心基础模块,负责完成Simulink环境中用户控制算法与底层飞控(仿真PX4飞控或真实PX4飞控)之间的MAVLink协议数据交互,既支持多无人机软件在环仿真,也支持多无人机实机飞行控制。在仿真场景中,该模块会按照RflySim平台默认规则建立UDP通信,对接CopterSim的仿真模型与PX4软件飞控,同时可通过UDP将无人机状态数据转发至RflySim3D进行三维可视化渲染;用户开发的集群控制算法输出的控制指令可通过该模块封装为MAVLink报文发送给各无人机飞控,同时该模块会将各无人机的飞行状态数据输出给Simulink端的控制算法。在实飞场景中,勾选RealflyMode后,该模块可按照配置的静态IP与端口规则,直接与局域网内多架真实无人机的PX4飞控建立通信,实现Simulink端算法对实机集群的直接控制。
该模块输出的原始状态数据需要搭配real_data_decoder模块解析后使用,解析后可得到无人机位置、姿态、飞行模式、电量等多种状态信息,支持用户快速提取所需数据开发集群控制算法,同时支持对连续编号、不连续编号的无人机集群进行灵活配置,适配不同的仿真与实飞场景需求。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
ActuatorOutputs |
double |
N×1 |
N架无人机的控制输出信号,总长度为16*CopterNum,每架无人机对应16维执行器控制信号 |
当配置为N架无人机时,输入为拼接的一维信号,维度随无人机数量动态变化。
输出端口(Outputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
VehicleStates |
double |
N×28 |
N架无人机的状态反馈数据,每架无人机对应28维状态信息,需搭配real_data_decoder模块解析使用 |
输出为N架无人机的状态拼接而成,维度随配置的无人机数量动态变化。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Vehicle number or CopterID list |
double vector |
1 |
任意正整数向量 | 无人机编号列表,向量长度表示无人机数量,向量元素为每架无人机的CopterID |
Sample Time |
double |
1/30 |
>0 或 -1 |
模块采样时间,设置为-1时继承仿真全局采样率 |
RealflyMode |
bool |
false |
true/false |
是否启用真机实飞模式,勾选后启用真机IP/端口配置规则 |
Target IP Address |
string |
127.0.0.1 |
合法IPv4地址字符串 | 仿真模式下CopterSim所在主机的目标IP地址 |
GPS Orin |
double vector |
[0 0 0] |
任意三维向量 | 全局坐标系的GPS原点,格式为[纬度(°) 经度(°) 高度(m)] |
Udp Mode |
enum |
Mavlink_Real |
Mavlink_Full/Mavlink_Simple/Mavlink_Real |
MAVLink通信模式,不同模式对应不同的数据包大小 |
Base IP Address |
string |
192.168.151.101 |
合法IPv4地址字符串,多机不连续时用逗号分隔 | 真机模式下无人机的基准IP地址,连续IP时基准IP按编号自增 |
Base Udp Port |
int |
15501 |
1024~65535 |
真机模式下无人机的基准UDP端口,按编号自增 |
参数设置说明¶
Vehicle number or CopterID list¶
用于指定本模块控制的无人机数量和编号:当控制的无人机编号连续时,可简写为[1:5]表示控制编号1~5共5架无人机;当编号不连续时,直接写编号向量[1 3 5 7]即可,向量长度即为控制的无人机总数量。
Sample Time¶
推荐设置为1/30对应30Hz的通信控制频率,也可设置为-1,让模块继承Simulink模型的全局仿真采样率。如果模型中存在不同频率的任务,建议明确设置本模块的采样时间避免Simulink报错。
RealflyMode¶
软件在环仿真时请勿勾选,实飞控制无人机真机时需要勾选,勾选后会切换为真机模式的IP和端口配置规则。
Udp Mode¶
三种通信模式的数据包负载大小不同,Mavlink_Full传输完整飞控数据包,Mavlink_Simple仅传输核心状态信息,Mavlink_Real适配真实PXI飞控的数据包格式,实飞场景推荐选择Mavlink_Real。
仿真模式(不勾选RealflyMode)配置说明¶
仿真模式下,默认IP为127.0.0.1表示连接本机运行的CopterSim,端口会自动按照规则递增:第N架无人机的端口号为基准端口15500 + CopterID,无需手动配置。GPS原点仅在使用全局GPS坐标的场景下需要修改,默认即可。
真机模式(勾选RealflyMode)配置说明¶
真机模式要求所有无人机提前配置静态IP和端口,遵循基准值按编号递增的规则:例如基准IP为192.168.151.101,基准端口为15501,则CopterID为5的无人机会自动使用IP192.168.151.105、端口15505。如果无人机编号不连续,可直接填写多个IP用逗号分隔,同时在Vehicle number or CopterID list`中填写对应编号即可。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块基于UDP进行MAVLink协议通信,端口与IP规则根据运行模式不同分为两类:
- 非真机模式(仿真模式,不勾选RealflyMode)
- 目标IP:默认
127.0.0.1,可自定义配置目标CopterSim所在主机IP - 端口规则:基准端口为
15500 + 2 * CopterID,每个无人机对应端口随CopterID自增2,收发共用对应端口 -
支持三种MAVLink模式:
Mavlink_Full、Mavlink_Simple、Mavlink_Real,不同模式对应数据包大小不同 -
真机模式(勾选RealflyMode)
- IP规则:支持配置连续/不连续IP,基准IP为起始地址,连续IP规则下每个无人机IP为基准IP最后一位自增1;不连续IP可通过逗号分隔填写多个IP
- 端口规则:基准端口为配置的
Base Udp Port,每个无人机端口为基准端口 + (CopterID - 起始CopterID),即随CopterID自增1 - 通信内容:传输MAVLink格式的无人机控制指令与飞行状态数据
相关模块¶
| 模块名 | 说明 |
|---|---|
real_data_decoder |
对本模块输出的28维状态向量进行解码,输出包含位置、模式、电量等信息的状态总线 |
RflySwarmJoystick |
为多无人机集群仿真提供摇杆控制输入,可配合本模块使用 |
RflySimVehicleBusCreator |
生成符合RflySim平台规范的无人机控制总线,可作为本模块的输入 |
UAVWaypointFollower |
多无人机航点跟踪控制器,输出控制指令可接入本模块发送给无人机 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:仿真场景下,需要先启动CopterSim与对应的飞控仿真程序,再启动Simulink仿真,否则模块无法完成UDP连接,会丢失状态数据。实飞场景下,请确保所有无人机已经完成上电入网、静态IP配置完成后再启动Simulink仿真。
- 采样时间匹配:推荐模块工作频率为30Hz,可将模块采样时间设置为
1/30,或设置采样时间为-1并将Simulink全局仿真频率设置为30Hz。如果模型中存在多个不同频率的任务,需要对本模块的输入输出数据做同步采样处理,否则会触发Simulink速率检测报错。 - CopterID配置规则:无论是仿真还是实飞场景,不连续的无人机ID需要以向量形式按从小到大排列输入,例如
[1 3 5],不可乱序或重复输入,否则会导致IP和端口匹配错误,无法建立通信。 - RealflyMode配置校验:软件在环仿真场景下请勿勾选
RealflyMode,实飞场景下必须勾选RealflyMode,该选项会直接改变IP和端口的分配规则,错误勾选会导致通信失败。 - 实飞IP与端口规则:实飞模式下若无人机IP和端口为连续规则,所有无人机需要提前配置为基准IP自增1、基准端口自增1的规则;若为不连续编号,需要保证输入的CopterID列表与IP列表顺序一一对应,否则会出现控制信号错位。
- 输出数据使用:模块原始输出为28维MAVLink解码向量,必须搭配
real_data_decoder模块解析后才能使用,解析后输出为总线格式,可直接通过Simulink总线选择工具提取所需的位置、姿态、模式、电量等状态数据。 - 防火墙与网络限制:跨主机仿真或实飞场景下,需要关闭主机和无人机端的防火墙,或添加UDP通信端口的放行规则,否则会被拦截导致无法接收数据。
- UDP模式选择:推荐统一使用
Mavlink_Real模式适配RflySim集群通信,不同模式数据包长度不同,错误选择会导致解码失败,输出状态异常。 - GPS原点设置:如果需要使用全局GPS坐标,需要根据实际起飞场地设置正确的GPS原点参数,否则全局位置输出会出现偏差,仿真场景下使用默认值即可。
更新日志¶
v4.10(2024-05-03): 初始版本发布,支持仿真模式与实飞模式下多无人机MAVLink UDP通信,支持不连续无人机ID配置,提供三种MAVLink通信模式选择