基于RflySim平台的uORB消息读取与写入实验(一)

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消息读取与写入实验”实验原理,敬请关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值