ROS(6)消息和服务具体实现
http://wiki.ros.org/cn/ROS/Tutorials/CreatingMsgAndSrv
消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。
服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应。
msg文件存放在package的msg目录下,srv文件则存放在srv目录下。
msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:
int8,int16, int32, int64 (plus uint*)
float32,float64
string
time,duration
othermsg files
variable-lengtharray[] and fixed-length array[C]
srv文件分为请求和响应两部分,由'---'分隔。
A.Msg文件创建与使用
1.编辑.msg后缀
2.Package.xml文件中需包含两句
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
3.Cmakelists中find_package增加对message_generation&&message_runtime
的依赖
4.Cmakelists中add_message_files(
FILES
XXX.msg
)
手动添加.msg文件后, 确保添加了如下代码:generate_messages();
5.msg文件的使用
下面通过rosmsg show命令,检查ROS是否能够识消息。
使用方法:
$rosmsg show [message type]
Messagetype 包括:pkg名/msg名
B.Srv文件创建与使用
编辑.srv文件
2.3步同上
4.用你自己的srv文件名替换掉那些Service*.srv文件:
add_service_files(
FILES
xxx.srv
)
使用 rossrv
以上就是创建一个服务所需的所有步骤。下面通过rosmsg show命令,检查ROS是否能够识该服务。
使用方法:
$rossrv show <service type>
***msg和srv都需要的步骤
接下来,在CMakeLists.txt中找到如下部分:
#generate_messages(
# DEPENDENCIES
## std_msgs # Or other packages containing msgs
#)
去掉注释并附加上所有你消息文件所依赖的那些含有.msg文件的package,
如generate_messages(
DEPENDENCIES
std_msgs
)