[ROS学习]ROS服务浅析及简单实现(C++)

前言

记录这两天的学习情况,以前只是按照教程盲目的走了一遍,很多概念都不太清晰。将这段时间对ROS的服务粗浅理解记录下来。

文章内容只是自己对于该部分内容的暂时性理解,如有错误还请指正

1. ROS下的服务(service)是什么?

总结来说,service就是ROS提供的一种节点间的通信方式。这种通信方式和客户端服务端的通信机理类似。如下图所示。
通行方式图

图中client提出服务请求,server响应请求。从这个模式可以看到几个明显的特点:
(a)这中通信方式是点对点的,他区别与topic的通信。当然一个服务器可以为多个客户端提供服务。
(b)在server和client之间的消息(srv)是需要定义的,server需要知道我要得服务数据是什么,应答给client什么,对client也一样。

2. 编写简单的Server(C++)

2.1 建立工作空间

下面会从建立工作空间开始,到软件包,到具体的可执行文件,确保可以有最终的效果。

step1: 建立工作空间

mkdir -p haley_ws/src
cd haley_ws/src/
catkin_init_workspace 

step2: 创建软件包 包名为“haley_service”

catkin_create_pkg haley_service roscpp std_msgs

2.2 编写自定义srv消息

step3: 创建所需的自定义服务消息(srv),这里我们定义一个求和的srv,在sum.srv中写入消息的格式。

mkdir srv
cd srv
touch sum.srv

sum.srv的内容如下,这里的上半部分是请求数据格式,下半部分是应答的数据格式。中间必须用三个短线隔开。

int32 A
int32 B

---

int32 SUM

好了进行到这里总结一下,我们做了什么,这些事情的目的是啥。
(a)建立了完整的工作空间和软件包
(b)定义了之后要使用到的service消息格式
做完了这些我们的目录从工作空间开始大概是这样的
工作空间目录
现在来查看一下我们的srv消息吧
(a)编译工作空间
(b)查看srv格式

catkin_make
source ./devel/setup.bash 
rossrv show haley_service/sum 

结果
在这里插入图片描述
至此我们上面的工作还是没有什么问题的。

2.3 编写server

在haley_ser

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Haley__xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值