创建ROS消息和ROS服务


消息(msg):msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码.
服务(srv):一个srv文件描述一项服务。它包含两个部分:请求和响应。
msg文件存放在package的msg目录下,srv文件则存放在srv目录下。
msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:

  • int8, int16, int32, int64 (plus uint*)
  • float32, float64
  • string
  • time, duration
  • other msg files
  • variable-length array[] and fixed-length array[C]

srv文件分为请求和响应两部分,由’—'分隔.

1. 创建一个msg

$ cd ~/catkin_ws/src/beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg

确保msg文件被转换成c++,Python及其他语言的源代码:
在package.xml中,添加如下代码:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

在 CMakeLists.txt文件中,利用find_packag函数,增加对message_generation的依赖,这样就可以生成消息了。
你可以直接在COMPONENTS的列表里增加message_generation,就像这样:

find_package(catkin REQUIRED COMPONENTS 
roscpp 
rospy 
std_msgs 
message_generation
)

需要确保你设置了运行依赖:

catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)

找到如下代码块:

# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )

去掉注释符号#,用你的.msg文件替代Message*.msg,就像下边这样:

add_message_files(
  FILES
  Num.msg
)

手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project。 确保添加了如下代码:

generate_messages(
  DEPENDENCIES
  std_msgs
)

1.2 使用rosmsg

通过rosmsg show命令,检查ROS是否能够识别消息。
使用方法,无需运行roscore:
$ rosmsg show [message type]
例子:$ rosmsg show beginner_tutorials/Num
如果忘记了消息所在的package,可以省略掉package名。

2.使用srv

2.1 创建一个srv

在工作包路径下:
mkdir srv
利用roscp复制文件,用法:
$ roscp [package_name] [file_to_copy_path] [copy_path]
创建完成服务之后,需要在CMakeLists.txt文件中做一些修改:
删掉#,去除对下边语句的注释:

# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )

用你自己的srv文件名替换掉那些Service*.srv文件:

add_service_files(
  FILES
  AddTwoInts.srv
)

2.3 使用rossrv

通过rosmsg show命令,检查ROS是否能够识该服务。
用法:
$ rossrv show <service type>
例子:$ rossrv show beginner_tutorials/AddTwoInts

3.msg和srv都需要的步骤

确保含有依赖,

# generate_messages(
# DEPENDENCIES
# # std_msgs # Or other packages containing msgs
# )

去掉注释并附加上所有你消息文件所依赖的那些含有.msg文件的package。对其进行修改:

generate_messages(
  DEPENDENCIES
  std_msgs
)

由于增加了新的消息,所以我们需要重新编译我们的package。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值