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

编程入门 行业动态 更新时间:2024-10-27 09:44:34

ROS 学习应用篇(三)<a href=https://www.elefans.com/category/jswz/34/1767343.html style=话题Topic学习之自定义话题消息的类型的定义与调用"/>

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学习之自定义话题消息的类型的定义与调用

本文发布于:2023-11-15 10:15:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1598020.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:话题   自定义   定义   类型   消息

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!