ROS消息和服务 的创建

msg和srv介绍

  • msg 文件;用于描述ROS消息的字段,为不同编程语言生成源代码。
    msg文件可以使用的类型有:

int8, int16, int32, int64 (以及 uint*)
float32, float64
string
time, duration
其他msg文件
variable-length array[] 和 fixed-length array[C]
Header,它含有时间戳和ROS中广泛使用的坐标帧信息。

示例:

Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist

  • srv文件;一个srv文件描述一个服务,并由request和response组成。

使用msg

  1. 创建msg
    创建msg文件当然可以像Windows那样新建一个文件,并把文件内容写好。同样在终端里也可以利用命令创建编辑
$ roscd beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg

如上创建了一个只包含一句"int64 num" 的msg文件。注意一个元素一行。
代码转换:为确保msg文件能够被顺利转换成目标语言,需要在package.xml中添加如下:

引用文本
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
注意,在构建时,其实只需要message_generation,而在运行时,我们只需要message_runtime。

添加依赖:在CMakeLists.txt文件中,为已经存在里面的find_package调用添加message_generation依赖项,这样就能生成消息了。直接将message_generation添加到COMPONENTS列表中即可

添加文件:找到如下代码块:

引用文本
add_message_files(
FILES
Message1.msg
Message2.msg
)
删除#符号来取消注释,然后将Message*.msg替换为你的.msg文件名

2. 使用rosmsg

调用查看$ rosmsg show beginner_tutorials/Num
在上面的例子中,消息类型包含两部分:beginner_tutorials – 定义消息的软件包。如果不记得msg在哪个包中,也可以省略包名称。尝试:$ rosmsg show Num

Num – 消息的名称Num

使用srv

1.

$ roscd beginner_tutorials
$ mkdir srv

roscp是一个实用的命令行工具,用于将文件从一个包复制到另一个包。$ roscp [package_name] [file_to_copy_path] [copy_path]
现在我们可以从rospy_tutorials包中复制一个服务:

$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

2. 此外,你也需要像之前对消息那样在package.xml中修改服务字段,因此请看上面描述的所需附加依赖项。

引用文本
add_service_files(
FILES
AddTwoInts.srv
)

3.
查看:$ rossrv show beginner_tutorials/AddTwoInts

4.
帮助:

$ rosmsg -h

命令复习:

rospack = ros+pack(age) : provides information related to ROS packages
roscd = ros+cd : changes directory to a ROS package or stack
rosls = ros+ls : lists files in a ROS package
oscp = ros+cp : copies files from/to a ROS package
rosmsg = ros+msg : provides information related to ROS message definitions
rossrv = ros+srv : provides information related to ROS service definitions
catkin_make : makes (compiles) a ROS package
rosmake = ros+make : makes (compiles) a ROS package (if you’re not using a catkin workspace)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值