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

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 COMPONENTS
   roscpp
   rospy
   std_msgs
   message_generation
)
  • 在catkin_package函数中加入message_runtime依赖
catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)
  • 修改add_message_file函数,添加入自己创建的Num.msg文件
add_message_files(
  FILES
  Num.msg
)
  • 确保generate_messages函数被调用运行,去掉注释符号#
generate_messages(
  DEPENDENCIES
  std_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(
  FILES
  AddTwoInts.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日于哈尔滨

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值