ROS机器人程序设计(原书第2版)2.4.11 创建msg和srv文件

2.4.11 创建msg和srv文件

在这一节中,我们将会学习如何在节点中创建msg和srv文件。它们是用于说明传输数据的类型和数据值的文件。ROS会根据这些文件内容自动地为我们创建所需的代码,以便msg和srv文件能够被节点使用。第一步,我们先学习msg文件。

在上一节使用的示例中,我们已经创建了两个具有标准类型message的节点。现在,我们要学习如何使用ROS工具创建自定义消息。

首先,在chapter2_tutorials功能包下创建msg文件夹,并在其中创建一个新的文件chapter2_msg1.msg。在文件中增加以下行:

 

现在编辑package.xml,从<build_depend>message_generation</build_depend>和<run_depend>message_runtime</run_depend>行删除<!-- -->,然后编辑CMakeList.txt,按下面所示加入message_generation:

 

找到如下行,取消注释,并加入新消息名称:

 

现在,用下面命令进行编译:

 

检查编译是否成功,使用下面rosmsg命令:

 

如果你在chapter2_msg1.msg文件中看到一样的内容,说明编译正确。

现在创建一个srv文件。在chapter2_tutorials文件夹下创建一个名为srv的文件夹,并新建文件chapter2_srv1.srv,在文件中增加以下行:

 

为了编译新的msg和srv文件,必须取消在package.xml和CMakeLists.txt中的如下行的注释。这些包含消息和服务的配置信息,并告诉ROS如何编译。

首先,按下面方式从chapter2_tutorials功能包中打开package.xml文件:

 

找到下面行并取消注释:

 

 

使用下面命令打开CMakeLists.txt:

 

找到下面行,取消注释,并改为正确数据:

 

为了生成消息,你需要在find_ package部分添加message_generation行:

 

在add_message_files如下位置添加消息和服务文件的名字:

 

取消generate_messages部分的注释,使得消息和服务可以顺利生成:

 

测试编译是否成功,使用如下rossrv命令:

 

如果你在chapter2_srv1.srv文件中看到相同的内容,说明编译正确。

时间: 2024-10-25 15:02:22

ROS机器人程序设计(原书第2版)2.4.11 创建msg和srv文件的相关文章

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.6.3 文件加锁机制

2.6.3 文件加锁机制 考虑一下多个同时执行的程序需要修改同一个文件的情形,很明显,这些程序需要以某种方式进行通信,不然这个文件很容易被损坏.文件锁可以解决这个问题,它可以控制对文件或文件中某个范围的字节的访问. 假设你的应用程序将用户的偏好存储在一个配置文件中,当用户调用这个应用的两个实例时,这两个实例就有可能会同时希望写这个配置文件.在这种情况下,第一个实例应该锁定这个文件,当第二个实例发现这个文件被锁定时,它必须决策是等待直至这个文件解锁,还是直接跳过这个写操作过程. 要锁定一个文件,可

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.5 操作文件

2.5 操作文件 你已经学习了如何从文件中读写数据,然而文件管理的内涵远远比读写要广.Path和Files类封装了在用户机器上处理文件系统所需的所有功能.例如,Files类可以用来移除或重命名文件,或者查询文件最后被修改的时间.换句话说,输入/输出流类关心的是文件的内容,而我们在此处要讨论的类关心的是在磁盘上如何存储文件. Path接口和Files类是在Java SE 7中新添加进来的,它们用起来比自JDK 1.0以来就一直使用的File类要方便得多.我们认为这两个类会在Java程序员中流行起来

ROS机器人程序设计(原书第2版).

机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique Fernández) 路易斯·桑切斯·克雷斯波(Luis Sánchez Crespo) 阿尼尔·马哈塔尼(Anil Mahtani) 亚伦·马丁内斯(Aaron Martinez) 著 刘锦涛 张瑞雷 等译 图书在版编目(CIP)数据 ROS机器人程序设计(原书第2版) / (西)恩里克·费尔南

ROS机器人程序设计(原书第2版)第1章 ROS Hydro系统入门

第1章 ROS Hydro系统入门 欢迎开始阅读本书第1章.本章将介绍如何安装ROS系统,它是一种新的标准化机器人系统软件框架.本书是基于ROS Fuerte的<ROS机器人程序设计>一书的升级版.通过ROS,你可以使用大量的示例代码和开源程序轻松地完成机器人编程和控制.同时,你还能够理解如何使用各种传感器与执行器,并为你的机器人增加新的功能,如自动导航和视觉感知等.得益于开源理念,以及持续开发最先进算法并不断提供新功能的开源社区,ROS不断进步完善. 通过本书,你将学习到如下内容: 在特定版

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

《机器学习与R语言(原书第2版)》一1.2 机器学习的使用与滥用

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第1章,第1.2节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 1.2 机器学习的使用与滥用 大多数人听说过下国际象棋的计算机深蓝(Deep Blue)-第一台和一位世界冠军对弈并获胜的计算机,或者在电视问答游戏节目Jeopardy中击败两个人类对手的计算机Watson.基于这些令人震惊的成绩,有人预测计算机智能将在许多信息科学领域取

《面向对象的思考过程(原书第4版)》一1.9 继承

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,第1.9节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 1.9 继承 面向对象程序设计的最强大的功能之一就是代码重用.结构化设计提供的代码重用非常受限.你可以编写一个功能块,然后多次重用它.但是面向对象的设计更进一步,允许你定义类之间的关系,通过组织和识别不同类之间的共性,不仅可以实现代码重用,也可以指导设计.继承是实现该功能的主

《面向对象的思考过程(原书第4版)》一1.5 究竟什么是对象

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,第1.5节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 1.5 究竟什么是对象 对象是面向对象程序中的基础材料.使用面向对象技术的程序本质上是对象的集合.举例来说,一个公司系统包含了代表公司雇员的对象.接下来的小节描述了这些对象的数据和行为. 1.5.1 对象数据 存放在对象中的数据代表了该对象的状态.在面向对象术语中,数据被称为

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一导读

前 言 致读者 本书是按照Java SE 8完全更新后的<Java核心技术 卷Ⅱ 高级特性(原书第10版)>.卷Ⅰ主要介绍了Java语言的一些关键特性:而本卷主要介绍编程人员进行专业软件开发时需要了解的高级主题.因此,与本书卷Ⅰ和之前的版本一样,我们仍将本书定位于用Java技术进行实际项目开发的编程人员. 编写任何一本书籍都难免会有一些错误或不准确的地方.我们非常乐意听到读者的意见.当然,我们更希望对本书问题的报告只听到一次.为此,我们创建了一个FAQ.bug修正以及应急方案的网站http:/