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

简介¶
一句话描述:从PX4的uORB通信总线读取指定主题的最新数据,并驱动该模块所在的异步子系统运行。
该模块是RflySim工具链中实现Simulink与PX4飞控进行uORB通信的核心读取模块,归属于uORB Read and Write接口库,支持用户在Simulink自定义控制算法开发过程中,直接获取PX4飞控内部的uORB主题数据。该模块通过指定uORB主题名称与对应总线对象,可输出符合PX4飞控中任意主题的结构化数据,输出结果可直接作为Simulink控制逻辑的输入。
该模块主要用在基于异步仿真开发场景中,当PX4更新对应uORB主题更新时会触发该模块所在的异步子系统执行,配合CopterSim完成Simulink与PX4飞控的通信交互,支持用户在Simulink中开发自定义飞控逻辑、状态观测或数据分析功能,也可配合RflySim3D实现可视化仿真。用户可配合其他uORB读写模块,完成定制化的Pixhawk飞控代码半实物仿真或者纯软件在环仿真开发。
端口说明¶
输入端口(Inputs)¶
本模块无输入端口。
输出端口(Outputs)¶
| 端口名 | 数据类型 | 维度 | 说明 |
|---|---|---|---|
uORB 数据 |
由Bus Object定义 | 由Bus Object定义 | 指定uORB主题对应的最新仿真数据,用于驱动下游控制逻辑 |
参数配置(Parameters)¶
双击模块打开的 Mask 对话框中可配置以下参数:
| 参数名 | 类型 | 默认值 | 可选值/范围 | 说明 |
|---|---|---|---|---|
Delected Topic |
string |
无 | 由工程中已定义uORB主题确定 | 指定要读取的uORB主题名称 |
Enter Bus Object |
BusObject |
无 | 由工程中已定义总线对象确定 | 指定与uORB主题关联的总线对象,定义输出数据的结构和数据类型 |
参数设置说明¶
Delected Topic¶
该参数用于指定需要异步读取数据的uORB主题名称,主题名称会根据回调自动匹配工程中实际存在的通信主题,需确保选择的主题与实际通信的主题一致,否则无法正确读取数据。
Enter Bus Object¶
该参数用于指定目标uORB主题对应的总线对象,总线对象定义了该主题输出消息的数据结构和各字段数据类型,模块输出端口的维度和数据类型由该总线对象决定;使用时需要保证该总线对象与异步触发外层模块的总线对象一致。
模块特性(Block Characteristics)¶
| 特性项 | 值 |
|---|---|
| 支持的数据类型 | double、single、uint8、uint16、uint32、int8、int16、int32 |
| 直接馈通 | 否 |
| 采样时间 | 继承 |
| 代码生成支持 | 否 |
数据通信协议¶
本模块基于uORB进程内通信协议读取PX4内部主题数据,无需外部网络端口配置,模块直接访问PX4仿真环境的uORB主题共享数据区获取指定主题最新数据。
相关模块¶
| 模块名 | 说明 |
|---|---|
uORB Read Sync |
同步读取指定uORB主题数据,适用于固定步长仿真轮询读取场景 |
uORB Write |
将Simulink仿真数据写入指定uORB主题,供PX4飞控逻辑读取使用 |
使用示例¶
相关使用示例请参考以下路径:
请在上述路径中查看
Readme.pdf获取完整的示例说明与操作步骤。
注意事项与常见问题¶
- 初始化顺序:该模块需与RflySim无人机飞控仿真环境完成初始化绑定后才能正常读取数据,需要先完成PX4仿真环境配置与uORB话题注册,再运行仿真,否则会输出空数据或触发总线类型不匹配错误。
- 总线一致性要求:模块中指定的
Enter Bus Object总线对象,必须与实际uORB话题的消息结构完全匹配,同时需和异步子系统外层触发模块的总线定义保持一致,否则会出现数据解析错误或Simulink编译报错。 - 异步触发逻辑:该模块本身用于驱动异步子系统运行,输出为指定uORB话题的最新更新数据,不要将其放置在同步采样的循环子系统中重复读取,否则会导致数据时序混乱。
- 话题名称匹配:模块的
Delected Topic主题名称会自动根据uORB注册回调生成,请不要手动修改该参数,否则会出现话题找不到,无法读取数据的问题。 - 空数据处理:仿真初始阶段uORB话题尚未完成第一次更新时,该模块会输出全0初始数据,下游控制逻辑需要添加初始状态判断,避免初始控制量异常导致仿真发散。
更新日志¶
v4.3.0(2024-08-08): 新增uORB Read Async异步读取模块,支持通过uORB主题驱动异步子系统并输出最新主题数据