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
注意:本文归作者所有,未经作者允许,不得转载