MAVROS的进一步理解

一、Mavros简介

顾名思义, mavros就是mavlink+ros。mavros是PX4官方提供的一个运行于ros下收发mavlink消息的工具,利用mavros可以发送mavlink消息给飞控(可以控制飞机),并且可以从飞控中接受数据(例如:飞控的位置速度 IMU数据等等)。在px4中,mavlink模块负责接收和发送mavlink消息。(比如和QGC地面站通信)在机载电脑中,mavros底层代码负责接收和发送mavlink消息。我们利用plugin发布的ros话题去编写代码,实现功能,然后发布控制相关的ros话题,plugin接收我们的话题,替我们发送给飞控。

二、ROS与PX4通讯关系如下图:

在这里插入图片描述

如需要进行上层开发则在ROS中编写代码,订阅或发布MAVROS话题,从而订阅无人机的状态,及发布无人机的期望位置或期望速度,px4飞控追踪此期望运动。因此无论上层控制程序多么复杂,最后都是分解成为控制无人机的位置,速度或姿态等,通过mavros发布给飞控进行跟踪。若进行底层飞控的开发,需研读px4开发手册,修改px4代码。其中MAVROS与MAVLink不需修改。因此学习MAVROS是ROS控制无人机需要首先学习的。

三、PX4无人机消息

1、uorb理解

uORB(Micro Object Request Broker,微对象请求代理器)是PX4/Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。实际上uORB是一套跨「进程」 的IPC通讯模块。在Pixhawk中, 所有的功能被独立以进程模块为单位进行实现并工作。而进程间的数据交互就由为重要,必须要能够符合实时、有序的特点。

PX4中所有消息都有自己对应的uorb消息名称。

链接: PX4消息理解

2、Mavlink协议理解

https://www.cnblogs.com/daxuezhidao/p/5750143.html

3、ros通信原理

链接: ros通信原理

四、Plugin理解

plugins:可以理解为是mavros包提供给我们的一些接口,如果需要用到某 个plugin,建议可以看看plugin的源码,有的时候它默认的方向定义和一些 细节可以自己修改一下,方便使用。有些plugin对于我们的任务是用不到的, 可以将它添加到黑名单中禁用

链接: MAVROS黑名单设置

五、Mavros中的Plugin的作用

1、读取飞控发送出来的封装成mavlink的消息,解码后转为ROS消息类型的话题或者服务消息,提供给ROS上层进行订阅和调用

2、订阅我们发布的话题,封装成mavlink消息,编码,然后发送给飞控

六、飞控mavlink模块的作用

1、接收:读取ROS机载电脑发送过来的消息,转为uorb消息,提供底层飞控使用

2、发布:订阅飞控中的uorb消息,封装成mavlink消息发布出去

3、开发过程:我们利用plugin发布的ros话题去编写代码,实现功能,然后发布控制相关的ros话题,plugin接收我们的话题,替我们发送给飞控

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

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

相关文章

30 树的定义

树的定义 树的度?叶节点? 注意:k为叶节点 孩子/双亲/子孙/祖先 树的高度? 有序树 森林 树的一些操作: 粗略的框架代码: 省略。。。 小结: 树是线性表的扩展

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

铭文市场的火爆带来“Fair Launch”这种全新的代币启动方式,Fair Launch 的特点在于其为所有人参与 Launch 带来了公平的机会,所有链上玩家们都需要通过先到先得的方式 Mint 资产,VC 在 Fair Launch 中几乎没有话语权,不同的投资者…

基于蚁群算法的TSP问题建模求解(Python)

基于蚁群算法的TSP问题建模求解 一、蚁群优化算法(Ant Colony Optimization,ACO)1.1 蚁群算法的起源——“双桥实验”1.2 蚁群优化算法思想1.3 蚁群算法应用于求解组合优化问题 二、基于蚁群算法的TSP问题建模求解2.1 旅行商问题(…

软件测试|web自动化测试神器playwright教程(三十八)

简介 在我们使用selenium时,我们可以获取元素的属性,元素的文本值,以及输入框的内容等,作为比selenium更为强大的web自动化测试神器,playwright也可以实现对元素属性,文本值和输入框内容的抓取&#xff0c…

Mysql事务的处理

1、事务,就是一组命令的操作。 不过这一组命令,我们有时候需要使用手动提交; 1、使用这组命令可以查询出来现在的提交方式:自动提交(就是命令输入,点击enter后,会不会直接对表格产生修改&#x…

重温经典struts1之自定义全局异常处理类处理异常以及<exeception>标签的配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 前面的文章,我们学习了,Action类中调用Service,通过try…catch代码块,catch自定义异常类,通过ActionMessage…

metrics安装异常原因【doesn‘t contain any IP SANs】

1、问题背景 安装好k8s后,安装metrics-server后发现对应的pod一直无法启动。 apiVersion: v1 kind: ServiceAccount metadata:labels:k8s-app: metrics-servername: metrics-servernamespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: Cl…

05.neuvector网络学习与管控实现

原文链接,欢迎大家关注我的github 一、网络的策略学习 1.1.非主机模式的网络连接学习 agent进程侧: 调用taskAddContainer->taskInterceptContainer->programDP->DPCtrlAddTapPort为所有非host模式的容器向dp传送 DPAddTapPortReq对象数据.&…

成就动机测试

成就动机测试广泛应用在职业发展领域,如:企业Hr人力资源管理部门,用于评估分析员工的潜能和价值,适用场景有人才招聘,岗位晋升,绩效考评等等。在大学生做职业规划,求职应聘中,应用成…

数据结构与算法(十一) 排序算法一

int nArray[] { 8,5,3,2,7 };如下一个数组,现对其进行从小到大排序 选择排序 选择排序:将小的依次放在前面 具象化如下: void swap(int *nSValue,int *nDValue) 交换函数 { int nTempValue 0; nTempValue *nSValue; *nSVal…

Spring Boot 整合支付宝实现在线支付方案(沙箱环境)

文章目录 1.理解沙箱环境2.沙箱环境接入准备2.1 访问开发者控制台2.2 获取重要信息2.3 处理秘钥 3.接入支付宝支付的流程4.实现支付4.1 添加 SDK 依赖4.2 创建配置类4.3 支付宝订单管理接口实现流程4.4 支付宝支付接口实现流程 5.支付宝支付功能演示7.总结 TIP:对于…

分享一个好用的免费在线扣图网址

具体效果 附地址 https://cutout.aiwave.cc/

【python】基础知识类的语法功能讲解

Python代码定义了一个名为Calculation的类,用于执行基础的数学运算(加法、减法、乘法、除法和取模)。下面我将详细解释各个部分的功能,并以列表形式总结: 类定义: class Calculation: 定义了一个名为Cal…

iOS Universal Links(通用链接)详细教程

一:Universal Links是用来做什么的? iOS9.0推出的用于应用之间跳转的一种机, 通过一个https的链接启动app。如果手机有安装需要启动的app,可实现无缝跳转。如果没有安装,会打开网页。 实现场景:微信链接无…

Flink窗口(2)—— Window API

目录 窗口分配器 时间窗口 计数窗口 全局窗口 窗口函数 增量聚合函数 全窗口函数(full window functions) 增量聚合和全窗口函数的结合使用 Window API 主要由两部分构成:窗口分配器(Window Assigners)和窗口函…

Memcache简介与运维

开源、高性能、高并发的分布式内存缓存系统。 作用 缓存关系型数据库的结果,减少数据库自身访问的次数。 常见内存缓存服务软件对比 memcache 纯内存 redis、memcachedb 可持久化存储,同时会使用磁盘存 …

Typora使用及Markdow学习笔记1

编程如画,我是panda! 最近有在学习Markdown,所以这次分享一下我的Markdown学习笔记 目录 前言 一、标题 二、段落 1.换行 2.分割线 三、文字显示 1.字体 2.上下标 四、列表 1.无序列表 2.有序列表 3.任务列表 五、区块 六、代…

外包干了5个月,感觉技术退步明显......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四…

深入理解Spring IOC

1. IOC 理论 IOC 全称控制反转,英文名为 Inversion of Control,它还有一个别名为 DI(Dependency Injection),即依赖注入。 在我们刚接触Spring的时候,我们就听说了IOC,但是对于IOC的理解,貌似…

ubuntu 20.04下 Tesla P100加速卡使用

1.系统环境:系统ubuntu 20.04, python 3.8 2.查看cuDNN/CUDA与tensorflow的版本关系如下: Build from source | TensorFlow 从上图可以看出,python3.8 对应的tensorflow/cuDNN/CUDA版本。 3.安装tensorflow #pip3 install tensorflow 新版…