3.8.1 话题通信案例分析
1.案例需求
需求:启动两个turtlesim_node节点,节点2中的乌龟自动调头180°,我们可以通过键盘控制节点1中的乌龟运动,但是不能控制节点2的乌龟,需要自实现功能:可以根据乌龟1的速度生成并发布控制乌龟2运动的速度指令,最终两只乌龟做镜像运动。
2.案例分析
在上述案例中,主要需要关注的问题有三个:
- 如何创建两个turtlesim_node节点,且需要具有不同的节点名称、话题名称。
- 如何控制乌龟掉头?
- 核心实现是如何订阅乌龟1的速度并生成发布控制乌龟2运动的速度指令的?
思路:
- 问题1我们可以通过为turtlesim_node设置namespace解决;
- 问题2可以通过调用turtlesim_node内置的action功能来实现乌龟航向的设置;
- 问题3是整个案例的核心,需要编码实现,需要订阅乌龟1的位姿相关话题来获取乌龟1的速度,并且按照“镜像运动”的需求生成乌龟2的速度指令,并且该节点需要在掉头完毕后启动。
- 最后,整个案例涉及到多个节点,我们可以通过launch文件集成这些节点。
3.流程简介
主要步骤如下:
- 编写速度订阅与发布实现;
- 编写launch文件集成多个节点;
- 编辑配置文件;
- 编译;
- 执行。