3.8.1 话题通信案例分析

1.案例需求

需求:启动两个turtlesim_node节点,节点2中的乌龟自动调头180°,我们可以通过键盘控制节点1中的乌龟运动,但是不能控制节点2的乌龟,需要自实现功能:可以根据乌龟1的速度生成并发布控制乌龟2运动的速度指令,最终两只乌龟做镜像运动。

2.案例分析

在上述案例中,主要需要关注的问题有三个:

  1. 如何创建两个turtlesim_node节点,且需要具有不同的节点名称、话题名称。
  2. 如何控制乌龟掉头?
  3. 核心实现是如何订阅乌龟1的速度并生成发布控制乌龟2运动的速度指令的?

思路:

  1. 问题1我们可以通过为turtlesim_node设置namespace解决;
  2. 问题2可以通过调用turtlesim_node内置的action功能来实现乌龟航向的设置;
  3. 问题3是整个案例的核心,需要编码实现,需要订阅乌龟1的位姿相关话题来获取乌龟1的速度,并且按照“镜像运动”的需求生成乌龟2的速度指令,并且该节点需要在掉头完毕后启动。
  4. 最后,整个案例涉及到多个节点,我们可以通过launch文件集成这些节点。

3.流程简介

主要步骤如下:

  1. 编写速度订阅与发布实现;
  2. 编写launch文件集成多个节点;
  3. 编辑配置文件;
  4. 编译;
  5. 执行。

results matching ""

    No results matching ""