ROS学习--(十一)创建ROS的信息和服务

创建信息(.msg)
1.msg文件就是用来描述ROS中所使用消息类型的简单文本,会被用来生成不同语言的源代码
2.srv文件描述一项服务,包括两部分:请求和响应
3.msg文件放在package的msg目录下,srv放在srv目录下
4.msg文件其实就是一简单的文本文件,每一行声明一个数据类型和变量名。数据类型如下
int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
ROS中还有一个特别的数据类型,Header,包含时间戳和坐标系信息。我们经常可以见到msg文件第一行是Header header
5.srv文件就像msg文件,但包含两部分,请求和响应。这两部分用—分开

int64 A
int64 B ---
int64 Sum

意思是发出请求A和B,然后响应(回应)两个的和sum
6.下面我们创建一个msg文件

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

第一二条都见过了。第三个指令中意思是把echo后面引号的内容“int64 num”写到msg文件夹中的Num.msg文件中。
然后打开package.xml,将下面两行复制进去

<build_depend>message_generationbuild_depend>
<run_depend>message_runtimerun_depend>

打开CMakeLists.txt,找到find_package,看看有没有把message_generation添加进去,没有则添加进去。

 CATKIN_DEPENDS message_runtime

将这句话添加到catkin_package中,添加依赖

add_message_files( FILES Num.msg )

找到add_message_files,去掉注释,改成上面。意思是把Num.msg添加进信息文件

创建服务(.srv)

$ roscd beginner_tutorials
$ mkdir srv

对于这个新的文件,我们可以直接从其他文件copy过来。使用roscp命令
格式$ roscp [package_name] [file_to_copy_path] [copy_path]
将[package_name]从[file_to_copy_path]copy到[copy_path]

$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

打开CMakeList.txt,找到add_service_files,将注释去掉,改为

add_service_files( FILES AddTwoInts.srv )

然后catkin_make一下就好了。

$ cd ~/catkin_ws
$ catkin_make
$ cd -

你可能感兴趣的:(ROS)