11.11大促主会场
新人页面
精选商品
首月0月租体验,领12个月京东PLUS
自营热卖

10.创建ROS消息(msg)和ROS服务(srv)

凡夫俗子 1年前   阅读数 102 0

10.1消息(msg)和服务(srv)介绍

消息(msg)是一个描述ros中所使用消息类型的简单文本,它会被用来生成不同语言的源代码

服务(srv)包含两部分:请求和相应。

 

msg里面就是写着 每行生命一个数据类型和变量

可使用数据类型:

  • int8,int16,int32,int64(plus uint*)
  • float32 ,float64
  • string
  • time,duration
  • other msg files
  • variable-length array[] and fixed-length array[C]
  • Header      (这是包包含时间戳和坐标系信息,通常在msg第一行能看到Header header)

 

srv有请求和相应两部分,由‘---’分隔,例如:

 

10.2使用msg

尝试创建一个.msg

首先进入beginner~程序包

cd ~/catkin_ws/src/beginner_tutorials

创建目录msg

mkdir msg

在msg目录下生成一个Num.msg文件,并在里面写上数据类型和变量(int64 num),我们可以使用echo(echo “新内容” > [文件名]是覆盖原有内容,echo “新内容” >> [文件名]是在旧内容基础上追加新内容)

echo "int64 num" > msg/Num.msg

然后,要确保msg文件能转化成c++,Python等其他语言的源代码(就是说我msg中的那些变量能在其他语言中被使用)

①需要查看package.xml中是否包含下面两句,没有的添加上(反正我这边是没有添加的)

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

注意,在构建时我们只需要"message_generation",在运行时只需要"message_runtime"

②然后打开CmakeLists.txt

rosed beginner_tutorials CMakeLists.txt

③找到find_package,将message_generation添加上,这里的操作是让catkin工作区间增加对message_generation的依赖。


④同样,需要确保设置了运行依赖

⑤添加msg文件。找到如下模块(之前是被注释掉的),修该成这样

⑥然后要确保Cmake(catkin_make)知道去重新配置我们的project(因为这个例子是依赖std_msgs,不要添加roscpp,rospy)

10.3使用rosmsg

样例:rosmsg show [package]/[消息名]

rosmsg show beginner_tutorials/Num

这命令是获取本beginner~程序包中消息的数据类型和变量

会得到 int64 num

也可以是

rosmsg show Num

这种直接通过消息名会返回

 

10.4使用srv

创建一个srv

roscd beginner_tutorials
mkdir srv

这里不再像msg自己写.msg文件,而是通过roscp从其他程序中复制一份

roscp用法:roscp [package_name] [file_to_copy_path] [copy_path]

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

同样确保srv文件被转化成C++,python或其他语言的源代码

①需要查看package.xml中是否包含下面两句,没有的添加上(msg步骤中已经修改,这里不用修改)

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

注意,在构建时我们只需要"message_generation",在运行时只需要"message_runtime"

②然后打开CmakeLists.txt

rosed beginner_tutorials CMakeLists.txt

③找到find_package,将message_generation添加上,这里的操作是让catkin工作区间增加对message_generation的依赖。(srv也是依赖message_generation,msg步骤中已经添加,所以这里不需要修改)


④同样,需要确保设置了运行依赖(msg步骤中已经修改,这里不需要修改)

⑤增加srv文件部分

⑥然后要确保Cmake(catkin_make)知道去重新配置我们的project(因为这个例子是依赖std_msgs,不要添加roscpp,rospy)(和msg一样,不需要修改)

10.5使用rossrv

rossrv show用法:rossrv show <service type>

例子:

rossrv show beginner_tutorials/AddTwoInts

会看到:

同样可以

rossrv show AddTwoInts

10.6获得帮助

比如:

rosmsg -h

 

rosmsg show -h

 

 


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: