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

简介¶
一句话描述:支持自定义uORB消息ID匹配、可通过输入信号控制消息发送时机的进阶uORB消息发布接口模块。
该模块是RflySim工具链uORB通讯接口库中uORB Write功能的进阶扩展版本,适配需要灵活控制uORB消息发送逻辑的开发场景。它支持设置与文件名不匹配的uORB消息ID,相比基础进阶版本新增了isSend控制端口,开发者可通过该输入信号灵活控制消息是否发送,适合开发仅需单次触发的命令类消息、或是自定义调整消息发送频率的应用场景。
该模块运行在Simulink环境中,可配合CopterSim实现与PX4飞控的uORB通讯交互,开发者可在Simulink中设计自定义控制逻辑,通过该模块将处理后的消息发布给PX4飞控,也可结合RflySim3D完成仿真可视化验证,是RflySim工具链中实现Simulink与PX4自定义双向交互的核心功能模块之一。
端口说明¶
输入端口(Inputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
isSend |
double |
1×1 |
发送控制信号,非零值表示本次采样触发uORB消息发送,零值表示不发送 |
| 自定义字段端口 | 由配置决定 | 由配置决定 | 每个端口对应所选uORB话题的一个消息字段,端口名、数据类型、维度与消息字段配置一致 |
输出端口(Outputs)¶
本模块无输出端口。
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
uORB Topic |
string |
vehicle_gps_position |
任意合法uORB消息文件名 | 目标uORB消息主题名称,可通过选择按钮导入.msg文件自动配置 |
Variable Name |
cell array |
自动填充 | - | uORB消息各字段的名称,对应输入端口名称 |
Data Type |
cell array |
自动填充 | double/single/int8/uint8/int16/uint16/int32/uint32/boolean |
每个消息字段对应输入端口的数据类型 |
Dimension |
cell array |
自动填充 | 正整数/[行 列] | 每个消息字段对应输入端口的维度 |
Advertisement Queue |
int |
1 |
≥1的整数 |
消息队列优先级,0表示不使用消息队列,有效值从1开始 |
Sample time |
double |
0.01 |
>0 |
模块采样时间,单位为秒 |
参数设置说明¶
uORB Topic¶
点击Select.msg file按钮可打开uORB消息列表选择目标话题,点击Open.msg file可查看选中消息的具体字段定义,修改后点击Apply可自动填充所有消息字段的名称、数据类型和维度配置。本模块支持uORB消息ID与文件名不同的配置场景,相比基础进阶模块适配更多自定义消息场景。
isSend端口控制¶
本模块额外增加isSend输入端口,可通过该端口控制消息是否在当前采样周期发送,适合仅需单次发送的命令类消息,或通过外部逻辑限制消息发送频率,使用示例中可通过时间逻辑实现1Hz等固定频率的消息发送控制。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、int8、int16、int32、uint8、uint16、uint32、bool |
| 直接馈通 | 是 |
| 采样时间 | 离散 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块通过uORB接口与PX4飞控进程进行内部进程通信,将配置好的uORB话题数据发布到飞控消息总线,遵循PX4原生uORB消息队列通信规则,消息队列优先级由模块参数Advertisement Queue配置。
相关模块¶
| 模块名 | 说明 |
|---|---|
uORB Read |
基础uORB消息读取模块,读取指定uORB话题的消息数据 |
uORB Write |
基础uORB消息发布模块,将输入数据发布到指定uORB话题 |
uORB Read Advanced |
进阶uORB消息读取模块,支持自定义多字段消息读取配置 |
uORB Write Advanced |
进阶uORB消息发布模块,支持自定义多字段消息发布配置 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:使用前需先完成对应uORB Topic的加载,修改uORB Topic后必须点击参数界面的
Apply按钮应用配置,否则模块输入端口不会更新为对应消息字段,会引发端口匹配错误。 - 消息队列配置:
Advertisement Queue参数取值从1开始排列,填0代表无消息队列,需要根据PX4飞控消息发布规则配置优先级,错误的取值会导致消息发布失败。 - isSend端口使用:模块仅在
isSend输入为真(非零)时才会发布当前消息,适合控制单次发送或降发送频率;如果需要持续发布消息,可直接将isSend端口接恒定高电平信号。 - 采样时间匹配:模块采样时间需要和Simulink模型的基础采样时间匹配,若需要通过
isSend控制发送频率,需保证模块采样时间高于目标发送频率,避免触发丢失,例如实现1Hz发送时,模块采样时间应设置为0.1s或更短。 - 话题命名规则:若uORB消息ID和文件名不同,需在
uORB Topic参数中填写实际使用的消息ID,不能直接使用文件名,否则会找不到对应话题导致发布失败。
更新日志¶
v4.2.0(2024-08-09): 新增uORB Write Advanced_dai模块,支持uORB消息ID和文件名不同的配置,新增isSend接口支持消息发送控制,适配命令类消息发送与发送频率控制场景