UDP_40100_RflyPx4Recv 模块文档¶
所属工具箱:RflySim Model

简介¶
一句话描述:该模块用于通过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)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、int32_t、uint32_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飞控舵机输出数据模块 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
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消息的功能。