ROS学习笔记八:创建ROS msg和srv

本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg、rossrv和roscp。

msg和srv简介

  • msg:描述ROS messages内容的简单text文件,它们用来生成不同语言的messages源码;
  • srv:一个srv文件描述一个服务,它由两部分组成:一个请求和一个回应。
    msg文件存放在一个软件包的msg目录中,而srv文件则存放在srv目录中来。

msg文件

msg文件就是一个简单的text文件,其中每行有一个类型和名称,可用的类型如下:

int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
Header(包含一个timestamp和坐标系信息)

srv文件

srv文件和msg文件很相像,除了它包含两个部分:请求和回应

int64 A
int64 B
---
int64 sum

上面一部分为request,下面一部分为response。

使用msg

创建一个msg文件

cd ~/ros_tutorial/src/beginner-tutorial
mkdir msg
echo "int64 num">msg/Num.msg

由于msg文件用来产生C++,python等源代码,需要进行一些配置。
首先是修改package.xml文件,确保该文件中以下三行内容没有被注释掉:

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

然后修改CMakeist.txt文件:

  • 在find_package函数中加入message_generation依赖
find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgsmessage_generation
)
  • 在catkin_package函数中加入message_runtime依赖
catkin_package(...CATKIN_DEPENDS message_runtime ......)
  • 修改add_message_file函数,添加入自己创建的Num.msg文件
add_message_files(FILESNum.msg
)
  • 确保generate_messages函数被调用运行,去掉注释符号#
generate_messages(DEPENDENCIESstd_msgs
)

使用rosmsg

rosmsg show [message type]
rosmsg show beginner-tutorials/Num
int64 num

如果实在记不住在哪个软件包中时,可以省略软件包

rosmsg show Num
[beginner_tutorials/Num]:
int64 num

使用srv

创建一个srv文件

可以从其他软件包中复制过来一个srv文件,使用roscp命令:

roscp [package_name] [file_to_copy] [copy_path]
roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

srv文件也要用来产生C++,python等源代码,也要需要进行一些配置。其配置流程和msg大体一致,其中find_package和catkin_package函数的配置是一样的,另外需要将add_service_file中添加入自己创建的srv文件,如下:

add_service_files(FILESAddTwoInts.srv
)

使用rossrv

rossrv show <service type>
rossrv show beginner-tutorials/AddTwoInts
int64 a
int64 b
---
int64 sum

总结:msg和srv的一般步骤

  • 首先是修改package.xml文件,确保该文件中与message有关的内容没有被注释掉。
  • 然后修改CMakeist.txt文件:
    • 在find_package函数中加入message_generation依赖;
    • 在catkin_package函数中加入message_runtime依赖;
    • 修改add_message_file函数,添加入自己创建的Num.msg文件;或者在add_service_file函数中添加入自己创建的srv文件;
    • 确保generate_messages函数被调用运行,去掉注释符号#;
  • 重新编译生成软件包。

祝枫
2016年8月26日于哈尔滨

ROS学习笔记八:创建ROS msg和srv相关推荐

  1. ROS学习笔记十一:ROS中数据的记录与重放

    ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...

  2. ROS学习笔记02、ROS使用C++、Python来实现HelloWorld

    文章目录 前言 一.创建工程文件目录 二.实现helloworld 2.1.创建ROS包 2.2.C++版的HelloWorld 2.3.Python版的HelloWorld 三. 借助launch文 ...

  3. ROS学习笔记26(ROS的命令行工具)

    需要说明的是:本篇博客内容来自于<ROS机器人编程 从基本概念到机器人应用程序编程实战>的第五章,本是打算参考和翻译官网相关资料,但官网资料的质量明显没有这本书描述的更为清楚,记录于此仅仅 ...

  4. ROS学习笔记一(ROS的catkin工作空间)

    在安装完成ROS indigo之后,需要查看环境变量是否设置正确,并通过创建一个简单的实例来验证ROS能否正常运行. 1 查看环境变量 在ROS的安装过程中,我们执行了如下命令:(此命令就是向当前用户 ...

  5. ROS学习笔记_创建工作空间(一)

    创建工作空间 mkdir -p ~/catkin_ws_2/src -p参数是将路径上的父子目录同时创建. $ cd ~/catkin_ws_2/ $ catkin_make 在工作空间的根目录下运行 ...

  6. ROS学习笔记02:ROS架构与基础

    文章目录 一.ROS架构 二.第一个ROS例程 (一)turtlesim功能包 1.话题与服务 2.背景色参数 (二)控制乌龟运动 1.启动节点管理器 2.启动乌龟仿真器节点 3.启动键盘控制节点 三 ...

  7. ROS学习笔记九:ROS工具

    ROS有各种工具可以帮助用户使用ROS.应该指出,这些GUI工具是对输入型命令工具的补充.如果包括ROS用户个人发布的工具,那么ROS工具的数量很庞大.其中,本文讨论的工具是对于ROS编程非常有用的辅 ...

  8. ROS学习笔记2(ROS文件系统和ROS常用命令)

    文章目录 1 预备工作 2 ros包文件系统概览 3 文件系统工具 3.1 rospack 3.2 roscd 3.3 roscd log 3.4 rosls 3.5 tab代码补全 4 总结 1 预 ...

  9. ROS学习笔记(一)补充篇 参考创客制造

    我将ROS的CPP部分分成7个部分: 1.基础的node param 2.动态调节参数 3.关于TF变换 4.actionlib 5.插件技术 6.movebase 7.nodelet技术 前言 相比 ...

最新文章

  1. futurejava前台_web前端页面与后端Java的数据交互
  2. 《系统集成项目管理工程师》必背100个知识点-31WBS的分解原则
  3. 第一周 第二天的linux学习
  4. .gitignore失效 无法忽略node_modules问题
  5. airpods耳机敲击没反应_iOS11.2.6造成AirPods耳机出现奇怪问题 网友:解决方法很简单...
  6. Dynamic Graph CNN for Learning on Point Clouds(DGCNN)论文阅读笔记——核心思想:EdgeConv细析
  7. 平均值 oj 山东科技大学 c 语言作业
  8. android audiorecord jni,Android AudioRecord初始化失败
  9. 分治法解决组合问题(递归)
  10. Redis 缓存 + Spring 的集成示例
  11. 联想电脑ideapad_330c拆机清灰、换硅脂步骤大全
  12. UVA 11137 Ingenuous Cubrency (背包水题)
  13. 1000瓶酒其中1瓶有毒,10只老鼠找出毒酒
  14. 【渝粤教育】国家开放大学2019年春季 0777-22T市场开发与营销推广 参考试题
  15. python打印九九乘法口诀_使用Python打印九九乘法口诀表
  16. 14.Yum详解,yum安装,查找,info,反向查找,组,依赖,缓存等所有操作
  17. ORA-00392 ORA-00312 错误处理
  18. 格式工厂去广告版|格式工厂(Format Factory)免费版下载 v4.8.0
  19. Linux下用户账号管理基础
  20. (阿里妈妈)淘宝客解析淘口令获取商品ID淘宝联盟解析淘口令获取num_iid

热门文章

  1. 算法进阶之Leetcode刷题记录
  2. 在 Windows 上安装 TensorFlow(转载)
  3. 读书笔记五:TCP/IP详解之RARP逆地址解析协议
  4. 运用Links方法安装插件
  5. Vue 学习笔记(2)Vue 生命周期、组件
  6. 比特币所有权及隐私问题 | 转账的加密流程
  7. 软件_聚合搜索引擎[博]
  8. python word 英语音标_(完整word版)英语音标大全,推荐文档
  9. html财务统计,财务统计.html · 举子/layuiadmin-templete - Gitee.com
  10. (第十一章)数据表的增删改