一、msg和srv介绍
msg: msg文件使用简单的文本格式声明一个ROS message的各个域。仅需要创建一个msg文件,就可以使用它来生成不同语言的message定义代码。
srv:srv文件则声明了一个服务,包括request(请求)和response(响应)。
msg文件和srv文件分别存储在包的msg目录和srv目录下。
1、msg文件
msgs是简单的txt文件,每行定义一个信息域,每行的格式为:
信息域的名称 信息域的类型
信息域的类型有以下几种:
int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
这里是一个示例,此例使用了一个Header类型,一个原始字符串类型,还有两个其他预定义好的其他类型:
Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist
2、srv文件
srv文件和msg文件类似,唯一不同的是它包含两个部分——request和response。两部分用---
分隔:
int64 A
int64 B
---
int64 Sum
上面的示例中,A和B是request,Sum是response。
二、使用msg
1、创建一个msg
让我们在前面创建的包beginner_tutorials
中使用msg文件定义一个msg,如果此包已被删除的话,请参考本系列的第一篇文章重新创建这个包。
首先进入包目录:
roscd beginner_tutorials
创建一个msg目录:
mkdir msg
然后使用以下方式创建Num.msg
文件(你也可以自行创建,使用编辑器编辑后保存):
echo "int64 num" > msg/Num.msg
上面创建的文件仅包含一行,当然你也可以向其中添加更多的信息域,每个一行,例如:
string first_name
string last_name
uint8 age
uint32 score
创建好之后,