文档章节

10.创建ROS消息(msg)和ROS服务(srv)

HuangJC
 HuangJC
发布于 2017/05/12 15:46
字数 859
阅读 382
收藏 0

10.1消息(msg)和服务(srv)介绍

消息(msg)是一个描述ros中所使用消息类型的简单文本,它会被用来生成不同语言的源代码

服务(srv)包含两部分:请求和相应。

 

msg里面就是写着 每行生命一个数据类型和变量

可使用数据类型:

  • int8,int16,int32,int64(plus uint*)
  • float32 ,float64
  • string
  • time,duration
  • other msg files
  • variable-length array[] and fixed-length array[C]
  • Header      (这是包包含时间戳和坐标系信息,通常在msg第一行能看到Header header)

 

srv有请求和相应两部分,由‘---’分隔,例如:

 

10.2使用msg

尝试创建一个.msg

首先进入beginner~程序包

cd ~/catkin_ws/src/beginner_tutorials

创建目录msg

mkdir msg

在msg目录下生成一个Num.msg文件,并在里面写上数据类型和变量(int64 num),我们可以使用echo(echo “新内容” > [文件名]是覆盖原有内容,echo “新内容” >> [文件名]是在旧内容基础上追加新内容)

echo "int64 num" > msg/Num.msg

然后,要确保msg文件能转化成c++,Python等其他语言的源代码(就是说我msg中的那些变量能在其他语言中被使用)

①需要查看package.xml中是否包含下面两句,没有的添加上(反正我这边是没有添加的)

<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

注意,在构建时我们只需要"message_generation",在运行时只需要"message_runtime"

②然后打开CmakeLists.txt

rosed beginner_tutorials CMakeLists.txt

③找到find_package,将message_generation添加上,这里的操作是让catkin工作区间增加对message_generation的依赖。


④同样,需要确保设置了运行依赖

⑤添加msg文件。找到如下模块(之前是被注释掉的),修该成这样

⑥然后要确保Cmake(catkin_make)知道去重新配置我们的project(因为这个例子是依赖std_msgs,不要添加roscpp,rospy)

10.3使用rosmsg

样例:rosmsg show [package]/[消息名]

rosmsg show beginner_tutorials/Num

这命令是获取本beginner~程序包中消息的数据类型和变量

会得到 int64 num

也可以是

rosmsg show Num

这种直接通过消息名会返回

 

10.4使用srv

创建一个srv

roscd beginner_tutorials
mkdir srv

这里不再像msg自己写.msg文件,而是通过roscp从其他程序中复制一份

roscp用法:roscp [package_name] [file_to_copy_path] [copy_path]

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

同样确保srv文件被转化成C++,python或其他语言的源代码

①需要查看package.xml中是否包含下面两句,没有的添加上(msg步骤中已经修改,这里不用修改)

<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

注意,在构建时我们只需要"message_generation",在运行时只需要"message_runtime"

②然后打开CmakeLists.txt

rosed beginner_tutorials CMakeLists.txt

③找到find_package,将message_generation添加上,这里的操作是让catkin工作区间增加对message_generation的依赖。(srv也是依赖message_generation,msg步骤中已经添加,所以这里不需要修改)


④同样,需要确保设置了运行依赖(msg步骤中已经修改,这里不需要修改)

⑤增加srv文件部分

⑥然后要确保Cmake(catkin_make)知道去重新配置我们的project(因为这个例子是依赖std_msgs,不要添加roscpp,rospy)(和msg一样,不需要修改)

10.5使用rossrv

rossrv show用法:rossrv show <service type>

例子:

rossrv show beginner_tutorials/AddTwoInts

会看到:

同样可以

rossrv show AddTwoInts

10.6获得帮助

比如:

rosmsg -h

 

rosmsg show -h

 

 

© 著作权归作者所有

HuangJC
粉丝 0
博文 32
码字总数 39927
作品 0
佛山
私信 提问
ROS 服务 消息传递

自定义服务的消息类型 定义服务的消息类型与自定义话题的消息类型类似 1、首先在软件包目录下 新建一个 srv文件夹,并且新建一个消息类型文件 mkdir ~/rosworkspace/src/helloros/srv cd ~/r...

CSDNhuaong
2017/11/22
0
0
ROS 自定义消息类型

引言 学习ROS的过程中,在话题的发布与订阅之间,我一直在思考,我们能不能定义自己的话题名,甚至在编写我们自己的ROS软件包时,定义我们自己的消息类型。 首先能不能定义自己的话题名 当然...

CSDNhuaong
2017/11/22
0
0
Service in roscpp

Service是一种请求-反馈的通信机制。请求的一方通常被称为客户端,提供服务的一方叫做服务器端。Service机制相比于Topic的不同之处在于: 消息的传输是双向的,有反馈的,而不是单一的流向。...

徐凯_xp
05/05
0
0
ROS学习之Arduino篇——读取并发布各种传感器数据

本篇将读取超声波雷达、电位计和人体红外感应模块传感器的值,然后封装成一个消息类型,然后广播出去。 主要包括以下五部分内容: 1. 说明 在ROS里面自定义的msg类型在Arduino下面是不能直接...

wanzew
2018/04/22
0
0
ROS实操笔记四 msg 和srv

msg: msg files are simple text files that describe the fields of a ROS message. They are used to generate source code for messages in different languages. srv: an srv file descr......

placido
2018/11/15
19
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
57分钟前
4
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部