1、简介
类似msg文件, srv文件是用来描述服务( service数据类型的, service通信的数据格式定义在
*.srv中。 它声明了一个服务, 包括请求(request)和响应( reply) 两部分。 其格式声明如下:
举例: msgs_demo/srv/DetectHuman.srv
bool start_detect
---
my_pkg/HumanPose[] pose_data
msgs_demo/msg/HumanPose.msg
std_msgs/Header header
string uuid
int32 number_of_joints
my_pkg/JointPose[]joint_data
srv文件格式很固定, 第一行是请求的格式, 中间用---隔开, 第三行是应答的格式。
srv可以嵌套msg在其中, 但它不能嵌套srv
2、操作命令
3、修改部分文件
义完了msg、 srv文件, 还有重要的一个步骤就是修改package.xml和修改CMakeList.txt。 这
些文件需要添加一些必要的依赖等, 例如:
<build_depend>** message_generation **</build_depend>
<run_depend>** message_runtime **</run_depend>
上述文本中“**”所引就是新添加的依赖。 又例如:
find_package(...roscpp rospy std_msgs ** message_generation **)
catkin_package(
...
CATJIN_DEPENDS ** message_runtime ** ...
...)
add_message_file(
FILES
** DetectHuman.srv **
** HumanPose.msg **
** JointPos.msg **)
** generate_messages(DEPENDENCIES std_msgs) **
添加的这些内容指定了srv或者msg在编译或者运行中需要的依赖。无论我们自定义了srv,还是msg,
修改上述部分添加依赖都是必不可少的一步 。