跳转至

RflyUdpBigMode 模块文档

所属工具箱:RflySim Swarm

RflyUdpBigMode 模块外观

简介

一句话描述:该模块通过固定 UDP 协议接收外部程序发送的大模式或航点数据,并将最多 20 组四维数据输出到 Simulink。

RflyUdpBigMode 是面向大模式控制、任务规划和外部上位机交互的 UDP 接收 S-Function。模块在仿真开始后绑定本机 UDP 5005 端口,接收包含包头、包编号、点数量、航点数据和 CRC32 校验值的数据包;校验通过后,将数据整理为 single 类型向量输出,并向发送端返回 ACK。

该模块适用于由 Python、C++、大语言模型规划器或其他外部程序生成航点/模式控制数据,再在 Simulink 中进行集群控制或路径跟踪的场景。

端口说明

输入端口(Inputs)

本模块无输入端口。

输出端口(Outputs)

端口名 数据类型 维度 说明
WaypointData single 80x1 最多 20 组四维数据,每组按 [x, y, z, yaw] 输出;未接收到合法数据时全部输出 0

上层发送端可根据任务协议将前若干组解释为解锁、起降、Offboard、航点编号或多机控制量,其余组解释为航点坐标。Simulink 侧应与发送端保持相同的数据含义约定。

参数配置(Parameters)

本模块无 Mask 参数。

数据通信协议

UDP 端口

项目
本地监听端口 5005
接收超时 5 ms
采样时间 1/30 s
最大数据组数 20

数据包结构

字段 类型 说明
header uint16 固定包头 0xAA55
packet_id uint16 包编号,用于 ACK 确认
num_points uint8 当前数据包包含的数据组数量,超过 20 时按 20 组截断
reserved uint8 保留字段
waypoints Waypoint[num_points] 每组包含 double xdouble yfloat zfloat yaw
crc32 uint32 对包头和数据区计算的 CRC32 校验值

ACK 结构

字段 类型 说明
header uint16 固定包头 0xAA55
packet_id uint16 被确认的数据包编号
status uint8 0x01 表示接收成功,0x02 表示 CRC 校验失败
reserved uint8 保留字段

模块特性(Block Characteristics)

特性项
模块类型 Level-2 C/C++ S-Function
S-Function 名称 RflyUdpBigMode
输入端口数量 0
输出端口数量 1
输出数据类型 single
输出宽度 80
代码生成支持

使用说明

  1. 启动用于发送大模式或航点数据的外部程序。
  2. 确认外部程序向 Simulink 所在主机的 UDP 5005 端口发送数据。
  3. 在 Simulink 模型中将 RflyUdpBigMode 输出连接到自定义数据解析、航点控制或集群控制模块。
  4. 在发送端根据 ACK status 判断数据是否被接收并通过 CRC 校验。

注意事项与常见问题

  • 端口占用:同一台主机上只能有一个进程绑定 UDP 5005 端口,启动前需要关闭其他占用该端口的程序。
  • 输出补零:模块只输出最近一次通过校验的数据;没有合法数据时输出全零向量,控制逻辑应对全零输入进行保护。
  • CRC 一致性:发送端 CRC32 计算范围必须与模块一致,即对包头和航点数据计算,不包含末尾 CRC 字段本身。
  • 数据含义约定:模块本身只解析四维数据组,不判断每组数据在任务层的含义,发送端与 Simulink 解析端必须统一协议。

更新日志

  • v4.10 (2026-05-07): 新增 RflyUdpBigMode 模块帮助文档,并接入 Simulink Help 按钮索引。