跳转至

uORB Write Advanced_dai 模块文档

所属工具箱:uORB Read and Write

uORB Write Advanced_dai 模块外观

简介

一句话描述:支持自定义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)

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

数据通信协议

本模块通过uORB接口与PX4飞控进程进行内部进程通信,将配置好的uORB话题数据发布到飞控消息总线,遵循PX4原生uORB消息队列通信规则,消息队列优先级由模块参数Advertisement Queue配置。

相关模块

模块名 说明
uORB Read 基础uORB消息读取模块,读取指定uORB话题的消息数据
uORB Write 基础uORB消息发布模块,将输入数据发布到指定uORB话题
uORB Read Advanced 进阶uORB消息读取模块,支持自定义多字段消息读取配置
uORB Write Advanced 进阶uORB消息发布模块,支持自定义多字段消息发布配置

使用示例

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

[RflySim安装路径]/RflySimAPIs/5.RflySimFlyCtrl/0.ApiExps/9.uORB-Read-Write/Readme.pdf

请在上述路径中查看 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接口支持消息发送控制,适配命令类消息发送与发送频率控制场景