ros通信架构--srv

本文是根据慕客网上的机器人操作系统入门课程
https://www.icourse163.org/learn/ISCAS-1002580008?tid=1002759011#
所记录的学习过程,大部分内容是对应教材里面的内容,如有侵权行为,联系本人删除文章。

  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_j oints
my_pkg/JointPose[] j oint_data

msgs_demo/msg/JointPose.msg

string j oint_name
geometry_msgs/Pose pose
floar32 confidence

以 DetectHUman. srv 文件为例 ,该服务例子取自OpenNI的人体检测ROS软包。 它是用来查询当前深度摄像头中 的人体姿态和关节数的。 srv文件格式很固定,第 一行是请求的格式 中间用 —隔开,第三行是应 答的格式。 在本例中 ,请求为否开始检测, 应答为一个数组,数组的每个元素为 某个人的姿态(HumanPose)。 而对于人的姿态,其实是一个msg,所以srv可以嵌套msg在其中,但它不能嵌套srv。

  1. 操作指令

在这里插入图片描述
3. 修改部分文件
定义完了 msg、 srv文件, 还有重要的一个步骤就是修改package.xml和修改CMakeList.txt。 这些文件需要添加一些必要的依赖 等,修改packag.xml如下:

<build_depend>** message_generation **</build_depend>
<run_depend>** message_runtime **</run_depend>

上述文本中“**”所引 就是新添加的依赖 。 修改CMakeList.txt如下:

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,修改上述部分添加依赖都是必不可少的一步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值