uORB Write Advanced 模块文档¶
所属工具箱:uORB Read and Write

简介¶
一句话描述:PX4 uORB消息自定义发布高级模块,支持对uORB消息发布进行灵活的自定义配置。
该模块属于RflySim工具链的uORB读写接口库,面向需要自定义uORB消息发布的开发场景,是基础uORB发布模块的功能扩展。该模块支持用户自主选择目标uORB消息话题,可单独配置每个消息字段的输入端口,同时开放了消息队列优先级、队列大小等高级配置选项,能够满足复杂仿真场景下对uORB消息发布的精确控制需求。
在RflySim仿真工具链中,该模块运行于Simulink环境,可将Simulink中生成的自定义数据按配置封装为uORB消息,发送给PX4仿真进程,实现Simulink与PX4飞控之间的自定义数据交互,常被用于开发自定义飞控算法、传感器数据注入等定制化仿真场景,配合uORB Read系列模块可完成完整的自定义uORB通信流程。
端口说明¶
输入端口(Inputs)¶
本模块的输入端口数量由配置决定,每个输入端口对应uORB话题的一个消息字段,通用格式如下:
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
| 自定义字段名 | 由参数配置决定 | 由参数配置决定 | 对应uORB话题指定字段的待发布数据 |
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
uORB Topic |
string |
vehicle_gps_position |
- | 待发布的uORB话题名称,可通过界面按钮选择.msg文件完成配置 |
| 变量名 | string |
自动填充 | - | 对应uORB话题字段的名称,同时作为输入端口名称 |
| 变量类型 | enum |
自动填充 | double, single, int8, uint8, int16, uint16, int32, uint32, boolean |
对应uORB字段的数据类型 |
| 变量维度 | int 数组 |
自动填充 | 正整数范围 | 对应uORB字段的维度,一维数组填[1 N],多维数组按实际维度填写 |
Advertisement Queue |
int |
1 |
≥1,0表示无队列 |
uORB消息广告的队列优先级,数值越大优先级越高 |
Sample time |
double |
0.01 |
>0 |
模块采样时间,单位为秒 |
参数设置说明¶
uORB Topic¶
选择需要发布的uORB话题,点击Select.msg file可打开话题列表选择对应的消息定义文件,点击Open.msg file可查看消息的字段定义内容,修改后点击Apply即可自动填充所有消息字段的名称、类型和维度信息,生成对应数量的输入端口。
uORB Parameter Names and Data Type¶
该区域用于对每个消息字段进行独立配置,模块会根据配置的字段数量生成对应数量的输入端口,每个输入端口对应一个uORB消息字段,名称和数据类型与配置保持一致。
Advertisement Queue¶
配置uORB话题广告的消息队列优先级,取值从1开始,0代表不使用消息队列,数值越大优先级越高,对应不同的uORB调度策略。
Sample time¶
设置模块的运行采样时间,单位为秒,匹配整个Simulink模型的仿真步长即可。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、int8、int16、int32、uint8、uint16、uint32、boolean |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块通过uORB通信机制实现PX4内部消息发布,使用PX4原生uORB传输协议,无需自定义网络端口。
相关模块¶
| 模块名 | 说明 |
|---|---|
uORB Read |
基础版uORB消息读取模块,支持读取指定uORB话题的消息字段 |
uORB Write |
基础版uORB消息发布模块,可快速实现uORB消息的发布 |
uORB Read Advanced |
高级版uORB消息读取模块,支持对消息读取的更多自定义配置 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:必须先完成uORB Topic的选择并点击
Apply应用配置,才能自动生成对应消息字段的输入端口,修改话题后需要重新点击Apply更新端口配置,否则会出现端口维度、数据类型不匹配的错误。 - 消息队列优先级配置:
Advertisement Queue参数不支持0值,合法优先级从1开始编号,配置为0时不会启用消息队列,可能导致发布的消息丢失。 - 数据类型与维度匹配:模块自动填充的消息字段数据类型、维度与uORB原生消息定义一致,请勿随意修改,若手动修改后与实际消息定义不匹配,会导致数据解析错误、仿真崩溃。
- 采样时间匹配:模块的
Sample time需要和所在仿真模型的基础采样时间匹配,若配置为过大的采样时间会导致消息发布频率低于飞行侧需求,可能引发无人机控制异常;若配置为远小于模型基础采样时间会导致无效重复发布,增加仿真运行负担。 - 话题冲突问题:同一个uORB Topic请勿同时使用多个
uORB Write Advanced模块发布,避免多模块发布数据冲突,导致飞行侧收到错误的消息数据。
更新日志¶
v4.20(2024-08-09): 新增uORB Write Advanced高级uORB消息发布模块,支持自定义消息字段输入端口配置、消息优先级与队列大小设置等高级功能