跳转至

UDP_40100_RflyPx4Recv 模块文档

所属工具箱:RflySim Model

UDP_40100_RflyPx4Recv 模块外观

简介

一句话描述:该模块用于通过UDP协议监听对应端口,读取PX4飞控发布的自定义uORB消息。

该模块属于RflySim Model接口库,是RflySim工具链中支持自定义飞控扩展开发的通信交互模块,支持用户针对多机仿真场景,指定目标飞机ID读取自定义uORB消息,典型应用于自定义扩展控制、飞控算法离线仿真验证等场景。模块会根据输入的飞机ID自动绑定对应的UDP端口(40101加飞机ID偏移),与运行在CopterSim中的PX4飞控进程建立通信,接收PX4发布的自定义uORB数据,解析后输出包含校验和、飞机ID、时间戳以及8维控制量的结构化数据,供Simulink中的自定义算法模块调用处理,支持配合RflySim3D可视化环境完成全流程仿真验证。

端口说明

输入端口(Inputs)

本模块无输入端口。

输出端口(Outputs)

端口名 数据类型 维度 说明
checksum double 1×1 消息校验和,固定值为1234567898
CopterID double 1×1 接收到消息对应的无人机ID
runnedTime double 1×1 消息发送时的时间戳,单位为秒
controls double 1×8 自定义uORB消息的8维控制量

参数配置(Parameters)

双击模块打开的 Mask 对话框中可配置以下参数:

参数名 类型 默认值 可选值/范围 说明
CopterID int 1 1~255 要监听消息的目标无人机ID
Sample Time (s) double 0.01 >0 模块采样时间,单位为秒

参数设置说明

CopterID

本模块会监听对应ID无人机的UDP端口 40101 + 2*CopterID,配置的ID需要和实际发送自定义uORB消息的PX4飞控ID一致。

Sample Time (s)

设置模块的输出更新间隔,推荐设置与PX4飞控的控制周期一致(通常为0.01秒)。

模块特性(Block Characteristics)

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

数据通信协议

本模块基于UDP协议通信,监听端口为40101 + CopterID * 2,其中CopterID为模块参数中配置的飞机ID,起始值为1。接收数据格式为自定义PX4ExtMsg结构体,格式如下:

struct PX4ExtMsg {
    int checksum;          // 校验位,固定值为1234567898
    int CopterID;          // 飞机ID标识
    double runnedTime;     // 当前时间戳,单位为秒
    float controls[8];     // 8个自定义控制量通道
}

相关模块

模块名 说明
UDP_4001_OutSensors 向PX4飞控仿真发送传感器数据
UDP_40100_RflyPx4Send 通过UDP端口发送自定义uORB消息给PX4飞控
QuadcopterMotorMix 多旋翼电机混控输出模块
PX4ActuatorOutput 读取PX4飞控舵机输出数据模块

使用示例

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

[RflySim安装路径]/RflySimAPIs/4.RflySimModel/0.ApiExps/3.ExtCtrlAPI/3.ExtCtrlAPI-UDP40100/Readme.pdf

请在上述路径中查看 Readme.pdf 获取完整的示例说明与操作步骤。

注意事项与常见问题

  • 端口绑定规则:本模块实际监听的端口号为40101 + 2*CopterID,请确保对应端口未被系统其他进程占用,且发送端自定义飞控的uORB消息发送端口与本模块监听端口一致,否则会出现接收数据为空的问题。
  • 初始化顺序:本模块需要在RflySim仿真环境启动、对应多旋翼ID的PX4飞控实例初始化完成后,才能完成UDP端口绑定并正常接收数据,请勿在飞控启动前提前发送测试消息,否则可能无法正常建立UDP连接。
  • 校验和验证:本模块会验证接收到消息的checksum字段,只有校验和等于1234567898的消息才会被正确解析输出,自定义发送消息时请务必保持校验和字段正确,否则输出全为默认0值。
  • 飞机ID匹配:模块参数中设置的CopterID需要与PX4飞控侧发布消息的CopterID一致,否则模块会过滤掉ID不匹配的消息,无法输出有效数据。
  • 采样时间匹配:模块设置的Sample Time (s)建议与PX4飞控侧发布自定义uORB消息的周期一致,最大不要超过消息发布周期的2倍,否则会出现丢包或数据更新不及时的问题。
  • 自定义消息长度:本模块仅适配固定长度的PX4ExtMsg结构体消息,请勿发送超出或不足该结构体长度的自定义UDP数据包,否则会出现解析错误、输出乱码的问题。
  • 多机环境使用:多机仿真场景下,每架飞机需要单独添加本模块并分别设置对应唯一的CopterID,请勿多个模块使用相同ID,否则会出现端口冲突、数据错乱的问题。
  • 使用参考:更多自定义uORB消息的开发配置方法,请参考模块说明中给出的安装目录下示例工程文档,避免消息格式不匹配导致的解析失败。

更新日志

  • v4.0.0 (2023-01-01): 初始版本发布,实现基于UDP 40101+2端口监听读取PX4飞控自定义uORB消息的功能。