ROSservice 通信方式
操作演示,对 service 通信的理解请看:点击打开链接
1. 使用 rosservice
1.1 rosservice list
假设小乌龟节点仍在运行 rosrun turtlesim turtlesim_node
运行:
rosservice list
结果:
list 命令显示turtlesim节点提供了9个服务:重置(reset), 清除(clear), 再生(spawn), 终止(kill), turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, and turtlesim/set_logger_level. 同时还有另外两个rosout节点提供的服务: /rosout/get_loggers and /rosout/set_logger_level.
1.2 rosservice type
命令格式:
rosservice call [service] [args]
运行:
rosservice type clear
结果:
服务的类型为空(empty),这表明在调用这个服务是不需要参数(比如,请求不需要发送数据,响应也没有数据)
1.3 rosservice call
rosservice call命令调用服务
rosservice call clear
这个命令会清除之前的轨迹。
通过查看再生(spawn)服务的信息,了解带参数的服务:
rosservice type spawn| rossrv show
这个服务使得我们可以在给定的位置和角度生成一只新的乌龟。名字参数是可选的,不设具体的名字,让turtlesim自动创建一个:
rosservice call spawn 2 2 0.2 ""
2. srv文件
1.写法
srv文件的格式如上, --- 是分割线,
上面相当于 “问”,下面相当于 “答”。
如上例,“问”的部分为 bool 类型的检测,“答”的部分为返回检测到的结果,类型是一个数组,这个数组又定义在 msg 文件中(注: srv 只能嵌套 msg 文件),其中的 JointPOS[] 又定义在另一 msg 文件中。
2.修改
很关键的一步:我们要确保srv文件被转换成C++,Python和其他语言的源代码。
现在认为,已经如上一篇:点击打开链接所介绍的 msg,在CMakeLists.txt文件中增加了对message_generation的依赖,message_generation 对msg和srv都起作用。
同样,跟msg文件类似,你也需要在CMakeLists.txt文件中做一些修改。查看上边的说明,增加额外的依赖项。
删掉#,去除对下边语句的注释:
总结
msg 和 srv 写完之后需要修改如下部分:
ROSservice 通信方式的更多相关文章
- Easticsearch通信方式_API
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch概念 a. Elasticsearch是一个基于Luc ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
- activemq的几种基本通信方式总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...
- Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍
<ignore_js_op> 1)NameNode.DataNode和Client NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间.集群 ...
- ROS学习笔记(九)——ROSSERVICE
NEW 1 $ roscore NEW 2 $ rosrun turtlesim turtlesim_node NEW 3 $ rosrun turtlesim turtle_teleop_key N ...
- activemq的两种基本通信方式的使用及总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...
- apple watch 与 iphone 之间的通信方式
apple watch 与 iphone 之间的通信方式:通过watchkit WatchKit应用扩展都提供一个名为WKInterfaceController的子类来管理相应的界面. 启动watch ...
- Linux下进程通信方式(简要概述)
http://blog.sina.com.cn/s/blog_65c209580100u0ee.html (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先 ...
随机推荐
- Map、FlatMap 和 Reduce
Map 作用是生成一个新数组,遍历原数组,将每个元素拿出来做一些变换然后 append 到新的数组中. [1, 2, 3].map((v) => v + 1) // -> [2, 3, 4 ...
- Eclipse RCP难点:给Command传递参数(Object)
这个问题网络上没有答案,国外网站上也没有,本人研究了一天,终于搞明白如何实现,实际上是Eclipse RCP的ICommandService本身就已经提供的方法,只是网络上教的都是使用IHandler ...
- #448 div2 a Pizza Separation
A. Pizza Separation time limit per test1 second memory limit per test256 megabytes inputstandard inp ...
- ActiveX控件的注册和反注册
原文转自 https://blog.csdn.net/piaopiaopiaopiaopiao/article/details/41649495 ActiveX控件,需要注册之后才能使用. 注意:注册 ...
- Python之算法评估-4
一.评估算法的方式分两种,一种是分类算法的评估,一种是回归算法的评估.为什么要分两种呢,因为分类算法中可以通过准确率.精准率.召回率.混淆矩阵.AUC来评估算法的准确度.但是在预测值的时候是没有办法去 ...
- springboot_3
1. 返回数据与返回页面 在写web项目的时候,controller里的返回值一般分为两种,一种是返回页面,也就是ModeAndView,另一种是直接返回数据,比如json格式的数据. 返回一个页面, ...
- linux高频操作: host,用户管理,免密登陆,管道,文件权限,脚本,防火墙,查找
1. 修改hosts和hostname 2. 用户管理 3. 免秘登陆 4. 文件末尾添加 >> 5. 设置可执行文件 6. 任何地方调用 7. Centos6 永久关闭防火墙 8. Ce ...
- Mac Book触摸板失灵的解决办法(触摸板按下失灵)
1. 先关机 2. 同时按住 command+option+R+P 3. 按电源键开机,同时手指保持按住前几个按钮的姿势. 4. 等待电脑发出四下“deng”的声音后松开即可.每次发声间隔大概6~7秒 ...
- JavaScript内置一些方法的实现原理--Object.freeze()、instanceof
const定义的常量,一般是不能修改的. 比如: const TIME_OUT = 10000; 但是当值为引用类型值时,还是可以操作对象,扩展或修改对象属性.方法等等. 以下演示代码的操作是不会报错 ...
- EntityFramework进阶(二)- DbContext预热
本系列原创博客代码已在EntityFramework6.0.0测试通过,转载请标明出处 在DbContext首次调用的时候,会很慢,甚至会有5,6秒的等待,通常称为冷查询.再次调用的时候,几毫秒就能请 ...