3.8.3 服务通信案例分析
1.案例需求
需求:在turtlesim_node节点的窗体中在指定位置生成一只新乌龟并可以输出两只乌龟之间的直线距离。
2.案例分析
在上述案例中,需要关注的问题有两个:
- 如何在指定位置生成一只新乌龟?
- 计算两只乌龟的距离应该使用何种通信模式又如何实现?
思路:
- 问题1可以通过调用turtlesim_node内置的名称为/spawn的服务功能来实现新乌龟的创建;
- 问题2可以通过服务通信来实现,客户端发送新生成的乌龟的位姿到服务端,服务端根据该坐标以及原生乌龟的坐标计算距离并响应。当然如果使用服务通信,还需要自定义服务接口。
- 最后,整个案例涉及到多个节点,我们可以通过launch文件集成这些节点。
3.流程简介
主要步骤如下:
- 编写服务接口文件;
- 编写服务端实现;
- 编写客户端实现;
- 编写launch文件;
- 编辑配置文件;
- 编译;
- 执行。