uORB消息读取与写入实验框架总览
一. 总体说明 —文件目录
uORB消息读取与写入例程目录:
[安装目录]\RflySimAPIs\5.RflySimFlyCtrl\0.ApiExps\6.uORB-Read-Write
自定义uORB消息例程目录:
[安装目录]\5.RflySimFlyCtrl\0.ApiExps\7.uORB-Create
二. 总体说明 — 预备知识
uORB(MicroObjectRequestBroker,微对象请求代理器)是PX4/Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理,此外还需要了解PX4软件系统。
PX4软件系统可以分为若干个小模块,每个模块独立运行(多线程并行),各个模块通过uORB消息模块的订阅与发布功能实现数据的传输与交互,更多信息可以参考PX4官网。
PX4官网连接:https://docs.px4.io/main/zh/index.html
三. 关键子模块介绍
在您安装完成RflySim平台之后,进入Simulink库浏览器中可以看到uORB Read and Write每个子模块。
3.1 uORB Read Async—获取与uORB Topic相关的数据
如下图所示,该块将获取与uORB主题相关的数据,该主题驱动该块所在的异步子系统。主题名称将根据回调自动确定,并且需要为该主题指定总线对象。更多信息可点击对话框的“帮助”按钮查看。
3.2 uORB Read Function-CallTrigger—uORB消息读取回调函数触发模块
如下图所示,这个模块提供了两个功能,第一个是从某个uORB话题订阅对应的消息;第二个是对异步事件,采用触发函数调用信号的方法订阅话题上的消息数据。
如下图所示,第一个功能的使用步骤为:
● 选择一个已定义的话题
点击按钮“Select uORB Topic msg”可以打开话题列表以供选择。
● 创建总线(bus)对象
Simulink的总线对象用来接收uORB的消息,点击按钮“Create Bus Object”,Simulink将从.msg文件夹中找到对应的消息文件,并将其映射到MATLAB工作空间生成总线对象。
● 设置uORB读间隔
非异步模式下,需要设置查询频率,单位是毫秒,某些话题设置了最高数据更新速率,设置的频率不要超过这个最大值。
第二个功能的使用步骤为:
● 选择函数调用触发器
● 设置查询超时和任务名
当选择了异步功能,采样时间设置框就消失了,这个时候需要设置查询超时参数和任务名。异步功能会衍生出一个新的线程,负责运行和函数触发信号相关的代码,它会通过查询来等待话题上新的数据的到来。此时需要另一个模块来读取话题上的数据,即“读uORB函数触发器数据模块”,如下图所示:
3.3 uORB Write—uORB消息数据发布接口模块
该接口允许用户向uORB话题发布指定的值或结构体,通过这个模块可以向某个uORB话题发布对应的消息,话题必须经过正确的定义,一些已定义的话题放在目录C:\PX4PSP\Firmware\msg下,在生成的代码中会自动包含话题的定义文件。
如下图所示,可以输入话题名,点击按钮“Open.msg file”打开对应的消息内容,点击按钮“Open.msg folder”打开话题列表,设置输入端口名及数据类型以对应话题消息。
3.4 uORB Write Advanced—uORB消息数据发布接口高级模块
该接口可允许用户对其发布的数据进行更灵活的控制。在Simulink中使用uORB Write Advanced接口,可以实现更加复杂和精确的消息发布方式,可选择要写入的消息文件和一个消息ID,还可设置消息的优先级、队列大小等高级选项。
如下图所示,可以看到当前话题名,点按钮“Open.msg file”打开对应的消息内容,点击按钮“Select.msg file”打开话题列表,并且可以设置输入端口名及数据类型以对应话题消息。
3.5 uORB Write Advanced_dai—uORB消息数据发布接口进阶模块
如下图所示相较于uORB Write Advanced,uORB Write Advanced_dai新增自定义uORB MsgID功能。
相关资料:
[1]. 全权,杜光勋,赵峙尧,戴训华,任锦瑞,邓恒译.四旋翼飞行器设计与控制[M],电子工业出版社,2018.
[2]. PX4官网:https://docs.px4.io/main/zh/index.html
附加资源
官方文档:RflySim官方文档 https://rflysim.com/doc/zh/
社区交流:加入RflySim技术交流群 951534390
下篇文章介绍 “uORB消息读取与写入实验”实验原理,敬请关注!