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

简介¶
一句话描述:用于向PX4的uORB话题发布指定格式消息的uORB数据发布接口模块。
该模块属于RflySim工具链uORB通信接口库,支持用户在Simulink仿真环境中,将自定义的运算结果或控制数据按照PX4 uORB消息格式发布到对应话题。该模块支持自定义配置输入端口,可匹配任意已定义uORB话题的字段结构,生成代码时会自动包含对应uORB话题的定义文件。
该模块典型应用于用户自定义飞控算法开发场景,配合uORB Read模块使用,可实现Simulink层算法与PX4飞控栈之间的uORB消息交互,能够与CopterSim、RflySim3D、PX4完成联合仿真,用户可直接将自定义消息发布给PX4飞控,实现自定义控制逻辑的仿真与验证。
端口说明¶
输入端口(Inputs)¶
本模块输入端口由uORB Parameter Names and Data Type区域的配置动态生成,每个端口对应uORB话题的一个消息字段,典型配置格式如下:
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
| 自定义字段名 | 用户指定 | 用户指定 | 待发布的uORB消息对应字段的数值 |
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
uORB Topic |
string |
vehicle_attitude |
任意合法uORB话题名 | 待发布消息的uORB话题名称 |
uORB Parameter Names and Data Type |
表格配置 | 空 | - | 配置待发布消息各字段的名称、数据类型和维度 |
Sample time(s) |
double |
0.01 |
>0 |
模块采样时间 |
参数设置说明¶
uORB Topic¶
指定需要发布消息的uORB话题名称,名称必须与PX4固件msg目录下已定义的话题文件名一致(不带.msg后缀)。可点击Open.msg file按钮打开当前指定话题的消息定义文件查看字段要求,点击Open.msg folder按钮可打开所有已定义uORB话题所在的文件夹查看所有可用话题。
uORB Parameter Names and Data Type¶
该区域通过表格配置所有需要发布的消息字段,每一行对应一个输入端口:
- 变量名(
Name):必须与话题消息定义文件中对应字段的名称完全一致 - 数据类型(
Data Type):必须与话题消息定义中对应字段的数据类型一致,支持double、single、int8、int16、int32等常用数据类型 - 维度(
Dimension):必须与话题消息定义中对应字段的维度一致,标量填写1,数组填写对应长度
Sample time(s)¶
指定模块向uORB发布消息的采样间隔,单位为秒。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、int8、int16、int32、uint8、uint16、uint32 等 |
| 直接馈通(Direct Feedthrough) | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 是 |
数据通信协议¶
本模块不涉及网络通信。
相关模块¶
| 模块名 | 说明 |
|---|---|
uORB Read |
从指定uORB话题读取消息数据,将消息各字段输出到对应端口 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:该模块必须在RflySim初始化配置模块初始化完成后运行,不可将uORB Write模块的输出/输入直接接入飞控启动前的逻辑,否则会出现话题注册失败、数据发布无效的问题。
- 话题定义匹配:填写的uORB Topic名称必须与PX4固件
msg目录下定义的话题名称完全一致,模块配置的每个输入端口的字段名、数据类型、维度必须和对应话题msg定义文件中的字段完全匹配,否则会导致代码编译报错或发布消息数据异常。 - 自定义话题处理:如果使用自定义新增的uORB话题,需要先将自定义的
.msg文件放入PX4固件的msg目录,完成PX4固件的编译刷新后才能在该模块中正常识别使用,否则无法加载自定义话题定义。 - 采样时间匹配:设置的模块采样时间需要匹配对应uORB话题的更新频率,不可设置远大于话题设计更新频率的采样时间,避免不必要的资源占用;若和uORB Read模块配合使用,双方采样时间尽量匹配应用需求,避免出现数据发布与读取不同步的问题。
- 重复发布问题:不可在同一个Simulink模型中对同一个uORB话题添加多个uORB Write模块同时发布数据,会导致话题数据冲突,出现不可预期的读写错误。
更新日志¶
v4.20(2024-08-09): 初始版本发布,提供基础uORB话题消息发布功能,支持自定义配置输入端口对应uORB消息字段。