ROS 学习应用篇(三)话题Topic学习之自定义话题消息的类型的定义与调用

news2024/11/20 9:12:24

自定义消息类型的定义

Person.msg文件的定义(数据接口文件的定义)

创建msg文件

首先在功能包下新建msg文件夹,接着在该文件夹下创建文件。

定义msg文件内容

一个消息最重要的就是数据结构类型。这就需要引入一个msg文件,用于定义一些宏,换句话说,就是定义字符串和数据类型。

一个人有名字,年龄和性别,名字是以字符串的方式输入的,性别的话男女是可以用1和2或者不知道的0来表示,同样年纪也是数字,所以年纪和性别都用unit8来定义。

package.xml文件的编译

还需要在文件中增加依赖的功能包,这就跟python库的引用一样。这一部分分两步,一个是build_depend一个是exec_depent。

这是我们通过终端建立功能包的时候输入的一些依赖,所以如果需要补充依赖的话,除了文件CMakeList.txt文件需要补充package.xml中也需要补齐。

我们自己做的功能包需要的依赖就安排这上面这部分代码的后面即可。

build_depend

build_depend是编译依赖,message_generation是一个消息的编译依赖。

exec_depent 

exec_depent是执行依赖,message_runtime是一个消息的动态执行依赖。

CMakeList.txt文件的修改

添加依赖包

看来我猜的不错,都是在这里添加文件的依赖的。

 链接Person.msg文件

添加这一字段,具体在哪里添加的话,可以通过搜索add_message找到该文档中注释的位置,然后输入就可以了。

链接ROS中已有的依赖

注意,这里是ros中的依赖,开头那里的依赖是ros外的依赖。

链接执行依赖

这一步对应的是exec_depent中添加的依赖,也就是message_runtime。

消息的调用

消息发布

这一部分可以参照(二)的内容,其实是一样的。区别在于主循环段不一样,特别的是name字段因为是string字符串所以需要.c_str()一下。

c++                                                                                python  

消息订阅

跟之前的一模一样。

头文件调用

订阅与发布的主要调用方式,就在代码开始的地方输入头文件,这个Person.h头文件是catkin_make编译功能包后存放在工作空间devel/include下对应的功能包名文件夹下的。

 c++                                                                                python  

CMakeList.txt文件

该文件的修改和已有的消息类型的区别在于最后一行代码,最后一行代码是将这个可执行文件与msg文件产生一个依赖的关系,而原有的消息类型则不需要加入这一行代码也是可以运作的。

题外话

roscore打开的窗口叫rosmaster,它是一个婚介所,帮助发布节点与订阅节点产生联系,一旦二者产生联系,那么该窗口进程就可以被杀死,并不影响节点间的通讯。

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

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

相关文章

FM9918R系列-副边同步整流芯片

产品描述: FM9918R 系列是集成了 MOSFET 的同步整流二极管,用于替换反激式转换器的整流二极管,能够显著减少发热,提升系统的转换效率。IC 通过检测集成 MOSFET 的源漏电压来决定其开关状态。 FM9918R 系列能够兼容连续模式、非连续…

积分上限函数

定积分的形式 a:积分下限 b:积分上限 定积分的值与积分变量无关 积分上限函数的形式 x:自变量 t:积分变量 积分上限是变量,积分下限是常数 定积分的几何意义 x轴所围成面积 x轴以上面积为正 x轴以下面积为负 积分…

【华为数据通信】BFD是什么?

一、概述 BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点: 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。用单一的机制对任何介质、任何协议层进行实时检测。 BFD是一个简单的“Hello”协议。两个系统…

k8s系列-kuboard 该操作平台的使用操作

文章目录 一、相关平台,以及账号和密码镜像打包服务器仓库地址K8s平台数据库mysql 二、平台概述1.集群导入2.集群管理3.名称空间4.访问控制授权5.集群用户操作审计 三、kuboard平台操作手册一、部署服务操作1.名称空间部署2.工作负载部署 一、相关平台,以…

【中国知名企业高管团队】系列64:燕京啤酒

昨天,华研荟介绍了中国可能是最大的啤酒企业:青岛啤酒。接下来介绍总部位于北京的另一家啤酒企业——燕京啤酒。 当我想寻找官方的信息时发现坏了——燕京啤酒的官方PC网站竟然无法打开!倒是设立了一系列的微信公众号,看第一个官…

cmake_install.cmake这个文件有什么用

2023年11月11日,周六上午 目录 简介 举例说明 简介 cmake_install.cmake是由 CMake 自动生成的一个脚本文件,用于在安装过程中执行各种安装操作。 请注意,cmake_install.cmake件是自动生成的,无需手动编辑或修改它。如果需要自…

postman 参数化使用csv导入外部数据

一、参数化脚本入参 postman中变量用{{变量名}}表示变量 二、创建外部数据文件 csv文件逗号分割多个变量和对应值注意编码格式必须为utf-8 三、run collection导入数据文件 四、设置运行参数run 浏览数据 可调试设置迭代次数:防止批量出错,可先设定…

响应式理工实验外语学校学院网站模板源码

模板信息: 模板编号:11862 模板编码:UTF8 模板颜色:蓝色 模板分类:学校、教育、培训、科研 适合行业:学校类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统&#xff0c…

KCC@广州与 TiDB 社区联手—广州开源盛宴

10月21日,KCC广州与 TiDB 社区联手,在海珠区保利中悦广场 29 楼召开了一次难忘的开源盛宴。这不仅仅是 KCC广州的又一次线下见面,更代表着与 TiDB 社区及广州技术社区的首次深度合作。 活动的策划与组织由 KCC广州负责人 - 惠世冀、PingCAP 的…

spring boot configuration annotation processor notconfigured解决方法

spring boot configuration annotation processor notconfigured解决方法 一、问题描述二、解决方法 一、问题描述 我在使用ConfigurationProperties注解的时候idea出现提示信息spring boot configuration annotation processor notconfigured,但是却不影响程序的运…

Clickhouse学习笔记(4)—— Clickhouse SQL

insert insert操作和mysql一致 标准语法:insert into [table_name] values(…),(….)从表到表的插入:insert into [table_name] select a,b,c from [table_name_2] update 和 delete ClickHouse 提供了 Delete 和 Update 的能力,这类操作…

CodeWhisperer 史上最强大的 AI 编程助手!!

最近用了一个叫 CodeWhisperer 的插件,这个软件对于来说开发人员,插件有好多实用的功能,能有效减少我们的重复性工作,让编码更高效,代码质量也提升了很多。 CodeWhisperer 简介 CodeWhisperer 是亚⻢逊出品的一款基于…

GZ038 物联网应用开发赛题第3套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第3套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评…

C++---类的优化构造

首先,先介绍以下拷贝构造和构造的区别。 拷贝构造Date(Date& d)初始化:用一个实例对象去初始化一个未初始化的对象, 例:如果d1未被实例化,则Date d1 d2; 也会被编译器认为拷贝构造&#…

Springboot+vue的企业资产管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的企业资产管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的企业资产管理系统,采用M(model&a…

Shopee店铺支付方式有哪些? Shopee自养号测评提高产品曝光率的有效方法

Shopee作为一家领先的电子商务平台,如何优化你的Shopee店铺商品再结合自养号测评,并提高曝光率和销售能力,其中支付是至关重要一环之一。 虾皮为卖家提供了多种收款方式,包括在线支付、虚拟账户余额和线下支付。市场适应性也是卖…

2023最新版本 从零基础入门C++与QT(学习笔记) -2- 命名空间的使用

🎏在不同的命名空间变量名可相同 创建(如下方代码块) 🎄分析一下构成 🎈-1- namespace 关键字命名空间 🎈-2- wm9 空间名称 🎈-3-括号里边正常定义变量即可 namespace wm9 {int a 99;char b A;float c 9.99;char…

概念解析 | 认知战:21世纪的新战争形式

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:认知战 概念解析 | 认知战:21世纪的新战争形式 背景介绍 随着科技的飞速发展,信息技术深深渗透到各个领域,信息已经成为一种重要的战略资源。传统的战争形式主要依靠武力进攻,…

短视频矩阵seo系统源码搭建----技术定制化开发

一、需要遵循一下技术开发步骤: 1. 确定需求和功能:明确系统的主要目标和需要实现的功能,包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构:根据需求和功能确定系统的架构,包…

【CCF-C解刊】4区逆袭到1区TOP,这本期刊实力强劲,34天录用,7天见刊!

计算机类 • 好刊解读 今天小编带来Elsevier旗下计算机领域好刊的解读,这本期刊从4区逆袭成为中科院1区(TOP),如此实力强劲的期刊,究竟如何? 如有相关领域作者有意向投稿,可作为重点关注&…