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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/549681.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux三剑客之awk篇

目录 1、awk 1.1、awk参数 1.2、awk变量 1.3、awk分割符 1.3.1、FS 1.3.2、OFS 1.3.3、RS 1.3.4、ORS 1.3.5、NF 1.3.6、NR 1.3.7、FNR 1.3.8、FILENAME 1.3.9、ARGC与ARGV 1.4、自定义变量 1.5、printf格式化输出 1、awk 作用:具有强大的文本格式化…

【多线程】阻塞队列 | put()方法 | take()方法 | 生产者-消费者模式 |实现阻塞队列

文章目录 阻塞队列1.生产者-消费者模式生产者消费者模型的意义:1.解耦合2.削峰填谷: 2.阻塞队列的使用BlockingQueue 3.实现阻塞队列唤醒:使用阻塞队列实现生产者消费者模型 阻塞队列 阻塞队列是一种特殊的队列: 1.是线程安全的。…

视频自定义字幕,中英文,彩色的,你也可以,不会不知道吧

前言 关于【SSD系列】: 前端一些有意思的内容,旨在3-10分钟里,有所获,又不为所累。 字幕,大家见过吧,其实你也可以,真的可以,真的真的可以。不难,不难,真的…

leetcode1448.统计二叉树中的好节点数目

1. 题目描述 题目链接 2. 解题思路 首先看一下题目的“核心”,什么是好节点:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。也就是说,我们只要知道了从根节点到该节点的所有的值,就可以判断该节点是…

优斯特:防静电包装解决方案的巧妙运用

在现代电子产品生产与运输领域,防静电包装已成为保障产品安全的必备环节。优斯特凭借其创新的防静电包装解决方案,为客户提供了一种巧妙的方式来确保产品在存储和运输过程中不受静电影响,并且不会被刮花或损坏。 静电对产品的影响 静电对电子…

数学建模--深入剖析线性规划(模型全方位解读+代码分析)

1.简介 (1)线性规划三要素 (2)模型适用赛题 2.典例讲解 (1)问题分析 目标函数是净收益尽可能大,风险尽可能小; 约束条件是交易费的分段函数,以及每一笔投资都是非负数&am…

java绘图在ubuntu报错

把JRT网站部署到ubuntu桌面系统上,开始没测试绘图部分功能,只试了连PostGreSql部分正常。后面试了生成位图部分发现报错。 报下面错误: (ColorModel.java:220)\n\tat java.desktop/java.awt.image.BufferedImage.(BufferedImage.java:286)\n…

阿赵UE学习笔记——28、粒子系统Niagara简介

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用。这次开始学习粒子系统的使用。 一、Cascade系统 在介绍UE5的Niagara系统之前,必须先介绍一下旧版本的粒子系统。   在UE4的时候,虚幻引擎的粒子系统叫做Cascade&#x…

【iOS】——SDWebImage源码学习

文章目录 一、SDWebIamge简介二、SDWebImage的调用流程SDWebImage源码分析1.UIImageViewWebCache层2.UIViewWebCache层3.SDWebManager层4.SDWebCache层5.SDWebImageDownloader层 一、SDWebIamge简介 SDWebImage是iOS中提供图片加载的第三方库,可以给UIKit框架中的控…

思维导图ai生成软件分享5款好用的!

思维导图ai生成软件分享5款好用的! 在快节奏的信息时代,思维导图作为一种有效的思维整理工具,越来越受到人们的青睐。它能够将复杂的思维过程可视化,帮助我们更好地梳理思路、规划工作。近年来,随着人工智能技术的飞速…

整数运算超越存储单元表示范围:上溢出、下溢出、回绕

示例&#xff1a; /*** brief how about integer-underflow-overflow? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <std…

408数据结构,怎么练习算法大题?

其实考研的数据结构算法题是有得分技巧的 得分要点 会写结构定义&#xff08;没有就自己写上&#xff09;写清楚解题的算法思想描述清楚算法实现最后写出时间和空间复杂度 以上这四步是完成一道算法题的基本步骤&#xff0c;也是其中得分的主要地方就是后面两步。但是前面两…

java-spring 图灵 04

在Spring框架中&#xff0c;可以使用org.springframework.core.io.support.ResourcePatternResolver接口的resolveBasePackage方法来将指定的基础包解析为用于包搜索路径的模式规范。 例如&#xff0c;如果基础包是com.example.app&#xff0c;则可以使用resolveBasePackage方法…

【深度学习】【机器学习】用神经网络进行入侵检测,NSL-KDD数据集,基于机器学习(深度学习)判断网络入侵,网络攻击,流量异常【3】

之前用NSL-KDD数据集做入侵检测的项目是&#xff1a; 【1】https://qq742971636.blog.csdn.net/article/details/137082925 【2】https://qq742971636.blog.csdn.net/article/details/137170933 有人问我是不是可以改代码&#xff0c;我说可以。 训练 我将NSL_KDD_Final_1.i…

Open3D 无效点滤波(32)

Open3D 无效点滤波(32) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 这个算法的目标是从点云数据中去除无效的点,这些无效点可能是由于坐标值为无穷大(inf)或者不是数字(NaN)而产生的。这些无效点可能会导致后续处理步骤出现错误或异常,因此在处理点云数据时需…

品深茶创始人是谁?

据说&#xff0c;品深茶的创始人之前是一个程序员&#xff0c;他在软件行业工作十多年&#xff0c;由于常年熬夜加班再加上抽烟喝酒等不良习惯&#xff0c;导致在一次体检中被查出患上了肾癌&#xff0c;对他来说&#xff0c;期待的财务自由还没实现&#xff0c;身体就已经完蛋…

java(网络编程)

什么是网络编程? 在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行的数据传输。 应用场景&#xff1a;即时通信、网游对战、金融证券、国际贸易、邮件、等等 不管是什么场景&#xff0c;都是计算机跟计算机之间通过网络进行数据传输 Java中可以使用ja…

CSS基础:width,height尺寸属性详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。云桃桃&#xff0c;大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web…

vue脚手架CLI的简单使用

目录 初始化脚手架说明具体步骤模板项目的结构main.js入口文件app.vuemain.jsrender main.js 修改默认配置 初始化脚手架 说明 Vue 脚手架是 Vue 官方提供的标准化开发工具&#xff08;开发平台&#xff09;。最新的版本是 4.x。文档: https://cli.vuejs.org/zh/。 具体步骤 …

QFS [VLDB‘13] 论文阅读笔记

原论文&#xff1a;The Quantcast File System (VLDB’13) QFS简介及技术要点 QFS&#xff08;Quantcast File System&#xff09;是由Quantcast开发的一个高效、可扩展的分布式文件系统&#xff0c;旨在提供与Hadoop分布式文件系统&#xff08;HDFS&#xff09;兼容的替代方案…