4.6.1 多车编队案例以及案例分析
1.案例需求
需求:编写程序实现机器人编队功能。编队由多台机器人组成,包含一辆头车和多辆从车,调用者可以预设编队队形,并且可以给车队指定目标点。车队在接收到目标点后,会按照预设的队形自主导航至该目标点,导航过程中还可以实现动态避障。
2.案例分析
上述需求实现,可以按照如下步骤分解:
- 先让编队中所有的车辆都可以实现自主导航;
- 调用者下发目标点时由头车接收,实现头车自主导航至目标点;
- 再根据编队中不同从车相对于头车的相对位姿,分别为不同的从车计算目标点并发布。
这是一种相对简单直观的实现思路,是需要自实现程序,将可以自主导航的机器人动态关联到一起。
3.流程简介
主要步骤如下:
- 搭建多车的仿真环境;
- 实现不同车辆能够在同一地图中定位的功能;
- 实现不同车辆的自主导航功能;
- 实现多车编队的逻辑并执行。
上述部分步骤,可以基于部分已有的功能包进行实现。
4.准备工作
终端下进入工作空间的src目录,调用如下命令创建一个C++功能包。
ros2 pkg create mycar_multi --build-type ament_cmake --dependencies rclcpp std_msgs tf2 tf2_ros geometry_msgs
该功能包主要用于实现编队逻辑。