基础实验篇

2023-11-03

导读

uORB是PX4/Pixhawk系统中非常重要且关键的模块之一,是用于无人机模块间通信的协议机制。本篇将详细介绍uORB并详细拆解uORB消息读写与自定义实验全流程(二)。

基础实验篇 | uORB消息读写与自定义实验(二)

01

RflySim平台的uORB消息读写功能

PX4的uORB消息系统是提供了非常强大且方便的内部模块间数据交互能力,所有模块都可以将数据放在消息池中,其他模块可以从消息池订阅到所需数据。但uORB消息读、写以及自定义消息的开发过程如前期例程所示较为繁琐。

RflySim平台基于MATLAB/Simulink软件开发了Pixhawk Target Block工具箱,该工具箱中的uORB Read and Write中提供了丰富的uORB消息读取、写入及自定义消息的模块;其中主要的模型介绍如下:

图片

在Simulink中使用这三个接口,其参数配置包括消息类型、话题名称和消息数据。消息类型是指要写入的消息的类型,可以在PX4源代码中的“msg”目录下找到相应的消息类型定义文件。话题名称是指要写入的消息所对应的话题名称,可以在PX4源代码中的“topics”目录下找到相应的话题定义文件。uORB消息栏选择如下格式:中间双下划线“__”是分隔线,分割线前表示uORB消息的文件名,分割线后表示uORB的消息ID。actuator_controls__actuator_controls_0上述格式表示消息文件为actuator_controls.msg,消息ID为actuator_controls_0,且在同一个主消息下可以自定义多个不同的消息ID。消息数据是指要写入的实际数据,可以在Simulink模型中的其他模块中生成。注:以上三个模块只能在PX4飞控系统中使用,因此在使用之前需要确保已经正确地配置了PX4的开发环境,并且已经将Simulink模型成功地部署到PX4上;且在使用“uORB Read Function-Call Trigger”模块前,需要先在PX4中定义相应的uORB消息。

①:uORB消息数据监听接口模块。该接口可以通过调用外部函数的形式响应接收到的新消息。在Simulink中使用uORB Read Function-Call Trigger接口,可以通过回调函数(本例程未使用)来处理新消息。

图片

②:uORB消息数据发布接口模块。该接口允许用户向uORB话题发布指定的值或结构体。

图片

③:uORB消息数据发布接口高级模块。该接口可允许用户对其发布的数据进行更灵活的控制。在Simulink中使用uORB Write Advanced接口,可以实现更加复杂和精确的消息发布方式。可选择要写入的消息文件和一个消息ID。此外,还可以设置消息的优先级、队列大小等高级选项。

图片

02

基于RflySim平台的uORB消息读写实验

基于RflySim提供的丰富的uORB消息读、写接口,可用于控制器设计、飞控内部数据监听等方面的实验开发中,本次实验整体框架图如下所示:

图片

同时,RflySim平台提供rfly_px4这一uORB消息来向外发送数据(向40100系列端口发送特定数据)。本实验中,通过rfly_px4消息将从飞控内部读取到的消息转发之后,在进行硬件在环仿真时,即可在Simulink中监听这一消息。Simulink监听uORB消息demo如下:

图片

将uORB消息读写demo文件通过自动代码生成的方式烧录到飞控中之后,打开QGC的Anslyze Tools->MAVLINK 控制台中,输入listener actuator_controls、listener actuator_controls_0即可看到本例程的运行效果如下:

图片

在进行硬件在环仿真时,打开Simulink监听程序,点击运行即可监听到写入的uORB消息,如下图所示:

参考资料

[1]. https://doc.rflysim.com/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基础实验篇 的相关文章

  • C++多态

    文章目录 多态 重写 虚函数 C 11 override 和 final 重载 重写 重定义 抽象类 接口继承和实现继承 多态的原理 虚函数表 单继承和多继承的虚函数表 总结 多态 多态 可以理解为一种事务有多种形态 不同的对象可以通过多态
  • 牛客错题集(2)

    这里写目录标题 专业知识 计算机组成原理 数据结构 C C 操作系统 计算机网络 数据库 软件测试 软件工程 知识盲区 运维 JAVA 编程基础 Linux 网络基础 编译和体系结构 前端 专业知识 计算机组成原理 Q 由于CPU内部的操作
  • cout执行顺序从右到左!!!

    cout在执行的时候为从右向左先执行 输出时为按照原来的顺序在从左向右输出

随机推荐

  • Animate cc怎么导出HTML,使用 Animate CC 导出图形和视频

    导出应用程序首选参数 您可以在专家和初学者首选参数之间切换 您还可将自己的应用程序设置 包括工具栏设置 键盘快捷键和其他应用程序设置 导出为单个文件 只需进行简单的文件导出和导入操作 即可跨设备应用您的应用程序首选参数 导出首选参数 导出全
  • ipfs-hdfs分布式文件系统

    HDFS hadoop项目的核心子项目 基于流数据模式访问和处理超大文件的需求而开发的 数据的分布式存储和处理 namenode 和 datanode 的内置服务器可帮助用户轻松检查群集的状态 namenode 管理维护着文件系统树以及整个
  • webgl 第三人称相机

    发现自己越来越懒了 基础的我不写了 有很多博客都写了 连w3c都有 瞬间没有心思写下去了 并且也很忙 每天都在研究 别骂我 真心没心思 我会考虑写一些难度大点的 这样有动力点 代码如下 看下面需要注意的是向量的计算
  • 计算机桌面背景显示方式有几种,如何让计算机自动更改桌面背景

    您可能对以下主题感兴趣 如何使计算机自动更改桌面背景 核心提示 本教程将向您展示如何使计算机自动更改桌面背景 Windows 7支持多种桌面背景切换功能 以使我们的桌面更加美观 但对于喜欢按文件夹保存图片的用户 如果在设置桌面背景时指定了包
  • 测试开发必备技能与成长路径

    可以通过学习不断往上攻关 比如搭建测试平台 掌握代码分析能力 进行持续交付 代码质量监控等
  • Vue Router 的query和params的区别?

    区别一 1 query相当于get请求 页面跳转的时候可以在地址栏看到请求参数 2 params相当于post请求 参数不会在地址栏中显示 所以用params传值相对安全 简记 params参数在地址栏中不会显示 query会显示 区别二
  • Ubuntu18.04.2设置系统时间问题

    Ubuntu18 04 2设置系统时区问题 出现情况 系统时区设置正确 但是系统时间比实际快8小时 原因为系统硬件时间是UTC格式 需要将其改为CST格式 使用以下命令 timedatectl set local rtc adjust sy
  • 功耗测评

    STM32F103C8T6 MCU越来越广泛的应用在生产生活的各个领域 外接丰富的传感器 功能模块 通信模块 显示存储等可以形成各种可样的产品项目应用 对于功耗要求比较高的产品 一般会选择STM32L系列的MCU 但是从功耗的评测角度 逻辑
  • 内容产品项目作品

    一 项目背景介绍 如果让大家来做一个没接触过的产品 思路 先了解产品所在的行业 多看看第三方的行业研究的文章 了解产品的主要竞品 这样做产品设计的时候不会乱搞 常见的内容产品形态 图文 音视频 直播等 二 内容产品生态及产品架构 产品架构端
  • < ElementUi组件库: el-progress 进度条Bug及样式调整 >

    ElementUi组件库 el progress 进度条Bug及样式调整 前言 一 实现原理 gt 修改 el progress 进度条样式 及 渐变进度条样式 二 案例代码 前言效果图案例 gt HTML代码 gt CSS代码 三 效果演
  • Unity使用vscode无法跳转到引用等一些问题

    软件 unity2019 vscode 前提 一直在用visiostudio做Unity开发 但vscode确实有很多优点 今天在一个全新电脑下搭建环境 竟遇到了许多问题 vscode无法跳转到引用 F12不起作用 无法引用using Un
  • V字钩爪。

    题目链接 题解 分块 就是有一些点之间是永远没有交集的 因为每一个点只与前面第k个元素以及后面那k个元素有关 所以我们应该把那些出现矛盾的点放到一起 然后进行讨论 下面是AC代码 include
  • java包的介绍

    包 包就是文件夹 用来管理各种不同功能的 java 类 方便后续管理 包名的规则 公司域名反写 包的作用 需要全部英文小写 见名知意 导包的规则 使用同一个包中的类时 不需要导包 使用 java Lang 包中的类时 不需要导包 其他情况都
  • python中怎么样统计一张图像中白色和黑色像素点个数(二值图)

    前言 有时候需要计算一张图片里的里黑白像素的个数来计算某些指标 所以这里就教大家怎么计算 代码实现 import numpy as np import cv2 二值化图像直接 print len im im 255 print len im
  • centos6、centos7、ubntu去除ip link 中bond

    说明 在对服务器重新配置网络时候 往往需要提前清楚网络和网卡相关信息 这里坐下说明和记录 centos6去除网络配置 网络配置路径 etc sysconfig network scripts 去除网络配置前先做备份 mkdir opt ne
  • SpringMVC实现文件的上传和下载

    SpringMVC文件的上传和下载 一 SpringMVC文件上传 1 什么是文件上传 文件上传 指的就是将用户本地计算机中文件上传到服务器上的过程称之为文件上传 2 文件上传编程步骤 1 Client选择文件 上传页面 1 method
  • TypeScript的基础类型

    1 boolean类型 boolean表示布尔值类型 即true和false 例 let isDone boolean false 2 number类型 number表示数字类型 包括整数和浮点数 例 let decimal number
  • 如何开发和部署微信小程序

    今天开始 用ChatGPT创作技术内容了 要开发和部署微信小程序 您需要遵循以下步骤 1 注册微信小程序账号 在微信公众平台注册小程序账号 通过审核后即可开始开发 2 下载开发工具 微信小程序开发工具是一款免费的IDE 可在Windows
  • ElasticSearch7 数据类型之日期类型

    日期类型 Date datatype Elasticsearch7 日期表达成类型 日期格式化的字符串 比如 2015 01 01 或者 2015 01 01 12 10 30 毫秒级别的 long 类型 秒级别的 integer 类型 M
  • 基础实验篇

    导读 uORB是PX4 Pixhawk系统中非常重要且关键的模块之一 是用于无人机模块间通信的协议机制 本篇将详细介绍uORB并详细拆解uORB消息读写与自定义实验全流程 二 基础实验篇 uORB消息读写与自定义实验 二 01 RflySi