*MAVROS应该是一直在不断地读取飞控内部的状态数据并自动以ROS话题的形式发布出来,它并不知道谁在订阅,哪个节点想订阅到自然能订阅到。(这也应该是为什么MAVROS有个消息黑名单)

本文主要是介绍*MAVROS应该是一直在不断地读取飞控内部的状态数据并自动以ROS话题的形式发布出来,它并不知道谁在订阅,哪个节点想订阅到自然能订阅到。(这也应该是为什么MAVROS有个消息黑名单),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我之前还有的一个疑问就是MAVROS怎么知道谁订阅了哪种MAVROS话题呢?我现在觉得啊,是这样啊,就是MAVROS一直在不断地读取飞控内部的状态数据并自动以ROS话题的形式发布出来,它并不知道谁在订阅,哪个节点想订阅到自然能订阅到。

也是受到下面这篇博文的启发,这篇博文我也有转载。

https://blog.csdn.net/SIR_wkp/article/details/87861658

 

 

我记得ROS这边是可以有个黑名单的,就是禁止哪些MAVROS话题的发布。是不是如果不禁止他们就都会发布。那这也再一次说明我的理解是对的。

可以见我这篇博文

https://blog.csdn.net/sinat_16643223/article/details/112636193

这是普罗米修斯里面的,不过我看着黑名单还包括板载计算机发给飞控的话题种类。

 

我还看到MAVROS自身就带了几个pluginlists.yaml,可以找找有没有什么关系。

 

 

启动MAVROS的launch文件里面写了加载这个px4_pluginlists.yaml文件。

https://blog.csdn.net/weixin_44917390/article/details/106427533

 

 

我们应该可以直接ros topic list 看一下这个所有的话题,里面mavros的有哪些。很多我怀疑就是mavros自动发布的,就算我没有订阅它也在发布。

 

看了下这篇文章,我觉得应该就是的,接收到一个Mavlink消息调用回调函数转为ROS消息发布。只要不在黑名单上的应该都会自动进行。这可能也是为什么他们要建立一个黑名单,不然消息就太多了,是吧,这样想想就合理了。之所以黑名单还有板载计算机发往飞控的消息,可能是为了避免什么消息都能发往飞控都能控制飞控,对不对。所以黑名单里面双向的消息都有。

这篇文章分析得非常细致。

https://blog.csdn.net/SIR_wkp/article/details/87861658

这篇关于*MAVROS应该是一直在不断地读取飞控内部的状态数据并自动以ROS话题的形式发布出来,它并不知道谁在订阅,哪个节点想订阅到自然能订阅到。(这也应该是为什么MAVROS有个消息黑名单)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/507163

相关文章

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque