mavros话题订阅后无法触发回调

前提

使用树莓派与pixhawk通信,安装好mavros,树莓派与pixhawk串口连接
启动节点mavros节点后,通过ros2 topic list可以查看到一系列话题
查看话题的类型可以去wiki mavros中查看
或者使用ros2 topic info 话题名称可以查看到

问题描述

  1. 订阅话题···/mavros/global_position/compass_hdg···
this->create_subscription<std_msg::msg::Float64>("/mavros/global_position/compass_hdg", 10, callbackfunc)

回调函数

void callbackfunc(const std_msg::msg::Float64::SharedPtr msg)
{cout << "callbackfunc" << endl;cout << "sub: " << msg->data << endl;
}

编译运行节点,无法触发回调函数,一句打印都没看到
使用 ros2 topic list可以看到话题存在,但是订阅后无法获得消息

分析

使用 ros2 topic info /mavros/global_position/compass_hdg查看

Type: std_msgs/msg/Float64
Publisher count: 1
Subscription count: 1

有1个订阅者,说明已经订阅上了,话题名称和话题类型已经对上
使用工具rqt_graph查看节点之间的关系,包含了话题发布与订阅,在连接图上可以看到和预想的一致
自己写了个一模一样的话题发布出来,也可以订阅到,说明订阅者没有问题

原因

从发布者找问题,在rqt_graph图谱上可以查看发布的话题配置信息
在这里插入图片描述
其中QOS(服务质量)下的reliability: best_effort
Qos是ros2才有的,相关信息可参考这
reliability默认是reliable
既然发布话题配置了best_effort,订阅者也需要配置,否则读取不到信息

解决办法

10 -> rclcpp::SensorDataQoS()

订阅话题修改为

this->create_subscription<std_msg::msg::Float64>("/mavros/global_position/compass_hdg",  rclcpp::SensorDataQoS(), callbackfunc)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有硬件基础可以学单片机吗?

没有硬件基础可以学单片机吗&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&#xff0c;让我不断提升自己&#xff0c…

实验3-单链表

1、现单链表的主要基本操作&#xff0c;并写一个主程序验证&#xff1b; 代码 //1、现单链表的主要基本操作&#xff0c;并写一个主程序验证&#xff1b; #include <iostream> using namespace std; typedef int ElemType; typedef struct LNode{ElemType data;struct …

一.算法基础

目录 1.算法基础 2.算法概念 3.时间复杂度--用来评估算法运行效率的一个式子 如何简单快速的判断算法复杂度? 4.空间复杂度 1.算法基础 2.算法概念 --静态动态 3.时间复杂度--用来评估算法运行效率的一个式子 ----一个单位!!! 1-在什么配置下运行(机器) 2-问题的规模…

头歌-十大经典排序算法

第1关&#xff1a;冒泡排序 任务描述 本关任务&#xff1a;实现冒泡排序算法&#xff0c;并将乱序数列变成升序。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.冒泡排序算法。 冒泡排序算法 冒泡排序重复地遍历待排序的数列&#xff0c;每次比较两个相…

①【Docker】Linux安装Docker容器教程

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ ①【Docker】Linux安装Docker容器教程 &#x…

slf4j 打印当前类和方法

spring initializr 自动包含依赖,也可以在 pom.xml 文件中添加 slf4j 的依赖,指定版本 例如我这边默认版本是 1.7.36 通过添加依赖修改版本为 1.7.32<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version…

JavaScript数组sort自定义排序

背景 刷LeetCode时&#xff0c;遇到一道简单的数组排序题&#xff1a; 问题 想着直接用js的数组sort自定义排序即可&#xff0c;奈何测试用例运行总是不通过&#xff0c;返回的一直都是原数组。 代码排查 复制代码到Firefox浏览器控制台运行&#xff0c;结果输出的是正确结果&a…

Nginx的日志怎么看,在哪看,access.log日志内容详解

Nginx 的日志文件通常位于服务器的文件系统中&#xff0c;具体位置可能因配置而异。以下是查看 Nginx 日志的几种方法&#xff1a; 1、查看访问日志&#xff1a;在默认配置下&#xff0c;Nginx 的访问日志文件路径为 /var/log/nginx/access.log。您可以通过命令 sudo cat /var…

3、设计模式之工厂模式1(Factory)

工厂模式是什么&#xff1f;     工厂模式是一种创建者模式&#xff0c;用于封装和管理对象的创建&#xff0c;屏蔽了大量的创建细节&#xff0c;根据抽象程度不同&#xff0c;主要分为简单工厂模式、工厂方法模式以及抽象工厂模式。 简单工厂模式 看一个具体的需求 看一个…

Spring Boot 集成 WebSocket 实例 | 前端持续打印远程日志文件更新内容(模拟 tail 命令)

这个是我在 CSDN 的第一百篇原则博文&#xff0c;留念&#x1f60e; #1 需求说明 先说下项目结构&#xff0c;后端基于 Spring Boot 3&#xff0c;前端为 node.js 开发的控制台程序。现在希望能够在前端模拟 tail 命令&#xff0c;持续输出后端的日志文件。 #2 技术方案 #2.…

Ubuntu文本编辑工具nano和vim快捷键

文章目录 Ubuntu文本编辑工具nano和vim快捷键一、前言1.简介2.环境 二、正文1.nano 快捷键1&#xff09;文件操作2&#xff09;编辑操作3&#xff09;光标移动4&#xff09;其他操作 2.vim 快捷键1&#xff09;安装 vim2&#xff09;常规模式&#xff08;1&#xff09;导航&…

蓝桥杯练习:景区导游

视频 UP主的博客 暴力做法&#xff0c;能过 42%数据。如果内存开 1e410 能过 40%&#xff0c;如果开 2e510就只能过 25% #include<bits/stdc.h> #define int long long #define endl \n const int N 1e410; using namespace std; //存两点的距离 typedef pair<in…

ts中高阶类型的理解

高阶类型是TypeScript中一种高级的类型操作&#xff0c;它允许你创建或修改现有类型的结构。这些类型通常作为其他类型的参数&#xff08;即“泛型”&#xff09;来定义新的类型。以下是一些常见的高阶类型示例&#xff1a; 映射类型&#xff08;Mapped Types&#xff09;&…

豆瓣书影音存入Notion

使用Python将图书和影视数据存放入Notion中。 &#x1f5bc;️介绍 环境 Python 3.10 &#xff08;建议 3.11 及以上&#xff09;Pycharm / Vs Code / Vs Code Studio 项目结构 │ .env │ main.py - 主函数、执行程序 │ new_book.txt - 上一次更新书籍 │ new_video.…

GitLab 中国发行版 15.11 重点功能解读【一】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 更多关于极狐GitLab 或者 DevOps 的最佳实践&#xff0c;可以关…

全球首个 AI 软件工程师 Devin它来了!

如果您想每日获取AI最新新闻,欢迎关注文章底部的公众号 Cognition AI 发布 AI 软件工程师 Devin 初创公司 Cognition 近日发布公告,宣布推出全球首个 AI 软件工程师 Devin,并号称会彻底改变人类构建软件的方式。Devin 擅长长期推理能力,可以自主规划和完成软件项目,并在此…

ElasticSearch深度分页问题如何解决

文章目录 概述解决方法深度分页方式from size深度分页之scrollsearch_after 三种分页方式比较 概述 Elasticsearch 的深度分页问题是指在大数据集上进行大量分页查询时可能导致的性能下降和资源消耗增加的情况。这种情况通常发生在需要访问大量数据的情形下&#xff0c;比如用…

【OpenBayes 官方教程】数据读写绑定功能

本教程主要为大家介绍怎样在 OpenBayes 上进行数据的绑定以及如何使用已绑定的数据&#xff0c;新朋友点击下方链接注册后&#xff0c;即可获得 4 小时 RTX 4090 5 小时 CPU 的免费使用时长哦&#xff01; 注册链接 注册 - OpenBayes 首先&#xff0c;创建一个新的容器。 然…

非光滑非凸规划

目录 一&#xff0c;非凸函数的近端梯度下降 1&#xff0c;凸函数的近端梯度下降 2&#xff0c;非凸函数的近端梯度下降 一&#xff0c;非凸函数的近端梯度下降 1&#xff0c;凸函数的近端梯度下降 参考近端梯度下降 2&#xff0c;非凸函数的近端梯度下降

11.17定时调度(血干JAVA系类)

定时调度 11.17.1 Timer 类11.17.2 TimerTask 类11.17.3范例——定时操作【例11.52】建立TimerTask的子类【例11.53】建立测试类&#xff0c;进行任务调度 11.17.1 Timer 类 11.17.2 TimerTask 类 要想执行具体的任务&#xff0c;则必须使用Tim erTas k类。Tim erTas k类是一个…