ROS学习(十一)—— msg srv
一、msg 和 srv介绍
1、定义
消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码
服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应。
2、存放位置
msg文件存放在package的msg目录下,srv文件则存放在srv目录下。
3、msg本质
msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:
int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
PS:有一个特殊的类型Header : 包含时间戳和坐标系信息
在msg文件的第一行经常可以看到Header header的声明.
4、SRV文件结构
int64 A
int64 B
---
int64 Sum
srv文件分为请求和响应两部分,由'---'分隔
二、msg
1、创建一个msg
(1)创建msg文件
roscd beginner_tutorials
mkdir msg
echo "int64 num" > msg/Num.msg
(2)修改package.xml,确保msg文件被转换成为C++,Python和其他语言的源代码
要确保msg文件被转换成为C++,Python和其他语言的源代码
-->
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
在package.xml添加这两行
(3)修改CMakeLists.txt
A、修改find_package
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
B、修改catkin_package
catkin_package(
...
CATKIN_DEPENDS message_runtime ...
...)
C、修改add_message_files(记得取消注释)
add_message_files(
FILES
Num.msg
)
D、手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project。(取消注释)
generate_messages(
DEPENDENCIES
std_msgs
)
D、手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project
-->
2、使用rosmsg来确定ROS是否能够识别消息
(1)语法:
rosmsg show [message type]
(2)demo:
rosmsg show beginner_tutorials/Num
(3)如果不确定是哪个包,可以省略包名
rosmsg show Num
三、srv
1、创建一个srv
(1)先创建srv文件夹
roscd beginner_tutorials
mkdir srv
(2)使用复制的方式创建srv文件
A、语法
roscp [package_name] [file_to_copy_path] [copy_path]
B、实例
roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
(3)跟msg一样修改package.xml文件,加入这两个依赖
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
(4)修改CMakeLists.txt中的find_package
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
(5)修改CMakeLists.txt中的add_service_files(去掉注释)
add_service_files(
FILES
AddTwoInts.srv
)
2、使用rossrv来确保ROS可以识别服务
(1)语法:
rossrv show <service type>
(2)demo:
rossrv show beginner_tutorials/AddTwoInts
(3)可以省略包名
rossrv show AddTwoInts
四、msg 和 srv 编译
1、修改CMakelists.txt
generate_messages(
DEPENDENCIES
std_msgs
)
记得去掉注释
2、进行编译
catkin_make install
3、所有在msg路径下的.msg文件都将转换为ROS所支持语言的源代码。
生成的C++头文件将会放置在~/catkin_ws/devel/include/beginner_tutorials/。
Python脚本语言会在 ~/catkin_ws/devel/lib/python2.7/dist-packages/beginner_tutorials/msg 目录下创建。
lisp文件会出现在 ~/catkin_ws/devel/share/common-lisp/ros/beginner_tutorials/msg/ 路径下.
ROS学习(十一)—— msg srv的更多相关文章
- ROS学习手记 - 7 创建ROS msg & srv
至此,我们初步学习了ROS的基本工具,接下来一步步理解ROS的各个工作部件的创建和工作原理. 本文的详细文档:http://wenku.baidu.com/view/623f41b3376baf1ff ...
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameters 我不理解为何 ROS wiki 要把service与parameter放在一起介绍, 很想分 ...
- ROS学习手记 - 8 编写ROS的Publisher and Subscriber
上一节我们完成了 message & srv 文件的创建和加入编译,这次我们要玩简单的Publisher 和 Subscriber 要玩 Publisher 和 Subscriber, 需要具 ...
- ROS学习笔记七:在ROS中使用USB摄像头
下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...
- ROS学习笔记9-创建ros消息和服务
该节内容主要来自于官方文档的两个小节:1.使用rosed来编辑2.创建ros消息的服务 先来看rosed: rosedrosed命令是rosbash的一部分,使用rosed可以直接编辑包中的一个文件, ...
- 关于ROS学习的一些反思
距离发布上一篇ROS的博客已经过去两年了,才发现原来自己已经这么久可没有写过关于ROS的文章,想来很是惭愧.这两年时间,自己怀着程序员的梦想,研究过RTOS,探索过Linux,编写过Android应用 ...
- 【转载】 强化学习(十一) Prioritized Replay DQN
原文地址: https://www.cnblogs.com/pinard/p/9797695.html ------------------------------------------------ ...
- ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)
ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python) 时隔1年,再回来总结这个问题,因为它是ros+python开发中,太常用的一个操作,需要 ...
- ROS学习(四)—— 创建ROS Package
一.caktin Package的组成 1.必须含有 package.xml文件,提供有关程序包的元信息 2.必须含有一个catkin版本的 CmakeLists.txt文件,如果是一个catkin元 ...
- ROS学习网址【原创】
ROS学习网址 http://www.ros.org/ http://www.ros.org/news/book/ http://wiki.ros.org/ http://blog.exbot.net ...
随机推荐
- Spring(七):IOC&DI
什么是IOC? IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源. 而应用了IOC之后, ...
- Flask刷新问题
修改页面中内容,特别是图片后,总是刷新不了.调试时,我常常通过修改端口来解决,从80-99不断改. 服务器部署,也遇到同样问题,重启web服务器,重启计算机都不行,网页已经改过来了,但是图片还是老图片 ...
- 如何检查显卡类型,DirectX和OpenGL的版本
How To: Check the graphics card type and OpenGL version From: http://support.esri.com/technical-arti ...
- 开源的DirectUI界面库
1. duilib简介 duilib是一个开源的DirectUI界面库,简洁但是功能强大.而且还是BSD的license,所以即便是在商业上,大家也可以安心使用.现在大家可以从这个网站获取到他们所有的 ...
- cyml
bin/kafka-topics.sh --create --replication-factor 1 --partitions 1 --topic mc_logger2 --zookeeper lo ...
- NameNode的ZKFC机制
转自: http://hackershell.cn/?p=821 NameNode的HA可以个人认为简单分为共享editLog机制和ZKFC对NameNode状态的控制 在此之前,我先提几个问题: 一 ...
- POI3.10读取Excel模板填充数据后生成新的Excel文件
private final DecimalFormat df = new DecimalFormat("#0.00"); public void test(){ String fi ...
- 解决Visio复制绘图时虚框变实框的问题
参考:http://www.educity.cn/help/653700.html 问题好像是,在VISIO里只要虚线框的大小超过一个界限,拷贝之后就会变成实线框. 解决办法是修改注册表:[运行reg ...
- Shiro整合springboot,freemaker,redis(含权限系统完整源码)
区块链技术联盟 2018-02-08 17:06:40 目录 一.导语 二.shiro功能介绍 三.shiro详解 四.shiro实战案例分享 五.系统配置 六.其他 一.导语 今天推荐给大家一个非常 ...
- Mybatis中的延迟加载的使用方法
Mybatis中的延迟加载的使用方法 在Mybatis中查询订单,然后带出商品信息和快递信息的配置方法 orderMapper.xml配置如下 <?xml version="1.0&q ...