当前位置: 首页 > news >正文

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

自定义消息类型的定义

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,它是一个婚介所,帮助发布节点与订阅节点产生联系,一旦二者产生联系,那么该窗口进程就可以被杀死,并不影响节点间的通讯。

相关文章:

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

自定义消息类型的定义 Person.msg文件的定义(数据接口文件的定义) 创建msg文件 首先在功能包下新建msg文件夹,接着在该文件夹下创建文件。 定义msg文件内容 一个消息最重要的就是数据结构类型。这就需要引入一个msg文件,用于…...

财税服务展示预约小程序的作用是什么

财税财政往往困扰着很多公司,尤其是公司里没有相应职员或工作压力大的情况下,不少商家就会寻找代理记账、审计服务、会计代理等服务的机构。 对财政服务代理机构(会计公司)来说,市场企业多而广,理论上来说…...

RT-Thread提供的网络世界入口 -net组件

作为一款在RTOS领域对网络支持很丰富的RT-Thread,对设备联网功能的支持的工具就是net组件。 位于/rt-thread/components/net路劲下,作为一款基础组件,env与Studio的工程配置项界面的配置项都依赖该目录下的Kconfig。 我们对网络功能的选择&am…...

分享一些有趣的MATLAB提示音(代码可直接复制)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年…...

软件测试|selenium执行js脚本

JavaScript是运行在客户端(浏览器)和服务器端的脚本语言,允许将静态网页转换为交互式网页。可以通过 Python Selenium WebDriver 执行 JavaScript 语句,在Web页面中进行js交互。那么js能做的事,Selenium应该大部分也能…...

【源码复现】图神经网络之PPNP/APPNH

目录 1、论文简介2、论文核心介绍2.1、现有方法局限2.2、PageRank&Personalized PageRank2.3、PPNP&APPNP 3、源码复现3.1、模型总体框架3.2、PPNP3.3、APPNP3.4、MLP(两层) 1、论文简介 论文题目——《PREDICT THEN PROPAGATE: GRAPH NEURAL NETWORKS MEET PERSONALI…...

【算法与数据结构】131、LeetCode分割回文串

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题仍然使用回溯算法的一般结构。加入了一个判断是否是回文串的函数,利用起始和终止索引进…...

网络编程学习笔记

参考: 套接字通信部分 《TCP/IP 网络编程》以及《TCP/IP网络编程》学习笔记 socket 编程 1. 字节序 字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,也就是说对于单字符来说是没有字节序问题的&…...

腾讯待办停运后怎么办呢?导出的ics文件怎么打开查看

待办类工具在日常工作中的应用是比较广泛的,很多人会选择使用待办软件记录备忘事项,其中一些提醒类的工具是比较广泛使用的。腾讯待办属于一款待办事项和日程管理工具,它通常是以微信小程序的形式,为大家提供时间管理规划&#xf…...

家长群如何发成绩?

老师们是否经常被家长们追问:“老师,我孩子的成绩出来了吗?”、“老师,我孩子考了多少分?”等等。要想解决这个问题,看完这篇文章你就可以让家长们能够自助查询孩子的成绩了。 一、什么是成绩查询系统&…...

数组区域检索的优化 --- 分块,线段树,树状数组

思考 首先让我们来思考一个问题,给定一个数组,和left与right的值,让你求这个数组中left到right之间元素的和,你会怎么计算?最简单的当然是遍历。如果有人问你这个问题的时候,他决对是会让你优化的&#xff…...

若依侧边栏添加计数标记效果

2023.11.13今天我学习了如何对若依的侧边栏添加技术标记的效果&#xff0c;如图&#xff1a; 我们需要用到两个页面&#xff1a; 先说子组件实现计数标记效果 1.item.vue <script> export default {name: MenuItem,functional: true,props: {icon: {type: String,defau…...

WebSocket技术解析:实现Web实时双向通信的利器

当今互联网的发展中&#xff0c;实时性成为了越来越重要的需求&#xff0c;特别是在Web应用程序中。传统的HTTP协议在处理实时性方面存在一些局限性&#xff0c;因此WebSocket技术的出现填补了这一空白。WebSocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它允许…...

深圳联强优创手持PDA身份证阅读器 身份证核验手持机

身份证手持机外观比较小巧&#xff0c;方便携带&#xff0c;支持条码识别、人脸识别、NFC卡刷卡、内置二代证加密模块&#xff0c;可离线采集和识别二代身份证&#xff0c;进行身份识别。信息读取更便捷、安全高效。采用IP65高防护等级&#xff0c;1.5M防摔&#xff0c;可以适应…...

力扣labuladong——一刷day31

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣226. 翻转二叉树二、力扣116. 填充每个节点的下一个右侧节点指针三、力扣114. 二叉树展开为链表 二叉树解题的思维模式分两类&#xff1a; 1、是否可以…...

里氏代换原则

package com.jmj.principles.dmeo2.after;/*** 四边形接口*/ public interface Quadrilateral {double getLength();double getWidth();}package com.jmj.principles.dmeo2.after;/*** 长方形类*/ public class Rectangle implements Quadrilateral{private double length;priv…...

Illumination Adaptive Transformer

Abstract. 现实世界中具有挑战性的照明条件&#xff08;低光、曝光不足和曝光过度&#xff09;不仅会产生令人不快的视觉外观&#xff0c;还会影响计算机视觉任务。现有的光自适应方法通常单独处理每种情况。更重要的是&#xff0c;它们中的大多数经常在 RAW 图像上运行或过度…...

【教3妹学编程-算法题】给小朋友们分糖果 II

3妹&#xff1a;1 8得8&#xff0c;2 816&#xff0c; 3 8妇女节… 2哥 : 3妹&#xff0c;在干嘛呢 3妹&#xff1a;双11不是过了嘛&#xff0c; 我看看我这个双十一买了多少钱&#xff0c; 省了多少钱。 2哥 : 我可是一分钱没买。 3妹&#xff1a;我买了不少东西&#xff0c; …...

应急响应练习2

目录 1. 请提交攻击者的ip与系统版本 2. 攻击者通过某个组件漏洞获得服务器权限&#xff0c;请提交该组件的名称 3. 请提交攻击者首次攻击成功的时间 4. 请提交攻击者上传的webshell文件绝对路径 5. 请提交攻击者使用的webshell管理工具 6. 攻击者进一步留下的免杀的webs…...

JS算法练习 11.13

leetcode 2625 扁平化嵌套数组 请你编写一个函数&#xff0c;它接收一个 多维数组 arr 和它的深度 n &#xff0c;并返回该数组的 扁平化 后的结果。 多维数组 是一种包含整数或其他 多维数组 的递归数据结构。 数组 扁平化 是对数组的一种操作&#xff0c;定义是将原数组部…...

跨平台OpenCore配置管理工具:OCAT完整指南

跨平台OpenCore配置管理工具&#xff1a;OCAT完整指南 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore&#xff08;OCAT&#xff09; 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools OpenCore Auxiliary Tools&am…...

patat性能优化技巧:让终端演示更加流畅的7个方法

patat性能优化技巧&#xff1a;让终端演示更加流畅的7个方法 【免费下载链接】patat Terminal-based presentations using Pandoc 项目地址: https://gitcode.com/gh_mirrors/pa/patat patat是一个基于终端的演示工具&#xff0c;它利用Pandoc的强大功能在ANSI终端中呈现…...

CANoe实战指南:从UDS诊断到ECU刷写,手把手构建车载测试台架

1. CANoe测试台架搭建基础 第一次接触车载测试的朋友可能会被各种专业术语吓到&#xff0c;但其实用CANoe搭建测试环境就像组装乐高积木一样有趣。我刚开始做ECU测试时&#xff0c;最头疼的就是如何把硬件设备和软件配置对应起来。后来发现只要掌握几个关键点&#xff0c;半小时…...

像素剧本圣殿参数详解:Qwen2.5-14B-Instruct在长剧本生成中的上下文连贯性保障

像素剧本圣殿参数详解&#xff1a;Qwen2.5-14B-Instruct在长剧本生成中的上下文连贯性保障 1. 专业剧本创作工具的核心挑战 在影视剧本创作领域&#xff0c;维持长篇叙事的连贯性一直是创作者面临的核心难题。传统剧本写作过程中&#xff0c;编剧需要不断回溯前文细节&#x…...

开源项目WSA-Windows-10:让Windows 10焕发Android应用生态新活力

开源项目WSA-Windows-10&#xff1a;让Windows 10焕发Android应用生态新活力 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 在数字化办公与娱乐融…...

5大核心功能解锁QuickBMS:从二进制解析到跨领域数据提取的实战指南

5大核心功能解锁QuickBMS&#xff1a;从二进制解析到跨领域数据提取的实战指南 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS 问题导入&#xff1a;当你面对无法打开的神秘文件时&#xff0c;…...

像素自由:SRWE实现窗口分辨率精准控制的技术突破与行业应用

像素自由&#xff1a;SRWE实现窗口分辨率精准控制的技术突破与行业应用 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 一、场景痛点&#xff1a;分辨率限制下的创作困境 在数字内容创作领域&#xff0c;窗口分…...

给嵌入式新人的第一课:用CubeMX和HAL库,5分钟搞定STM32F407ZGT6的LED灯

给嵌入式新人的第一课&#xff1a;用CubeMX和HAL库&#xff0c;5分钟搞定STM32F407ZGT6的LED灯 当你第一次听说"嵌入式开发"时&#xff0c;脑海中浮现的可能是密密麻麻的电路板和复杂的寄存器配置。但今天我要告诉你一个秘密&#xff1a;现代嵌入式开发已经变得像在V…...

终极指南:Fan Control专业风扇控制软件让你的水冷系统更安静高效

终极指南&#xff1a;Fan Control专业风扇控制软件让你的水冷系统更安静高效 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_T…...

5步搞定Live Avatar数字人模型:阿里开源项目快速体验指南

5步搞定Live Avatar数字人模型&#xff1a;阿里开源项目快速体验指南 1. 数字人技术新体验 想象一下&#xff0c;你只需要一张照片和一段语音&#xff0c;就能让照片里的人"活"过来&#xff0c;对着镜头自然地说话、微笑、做表情。这不是科幻电影里的场景&#xff…...