2、多机导航

2.1、简介

关于如何配置多机通讯和同步时间的问题,具体参考【多机手柄控制】这一节课;有网络的情况下直接同步网络系统时间,无需设置。

在使用多机手柄控制时,首先需要确保机器人在同一局域网下,配置同一个【ROS_MASTER_URI】;多个机器人控制运动,只可以有一个主机。本节案例设置虚拟机为主机,其他机器人为从机,有几个从机都可以;当然也可以设置某一机器人为主机其他为从机。

根据针对不同车型,只需在【.bashrc】中设置购买的车型即可,X1(普通四驱) X3(麦轮)X3plus(麦轮机械臂) R2(阿克曼差速) 等等,本节以X3为例

打开【.bashrc】文件

查找【ROBOT_TYPE】参数,修改相应的车型

2.2、使用

以虚拟机是主机,3台机器人是从机为例;使用前必须有地图。

1.2.1、开启机器人

虚拟机端

启动命令(robot1端),为方便操作,本节以【mono + laser + yahboomcar】为例。

启动命令(robot2端),为方便操作,本节以【mono + laser + yahboomcar】为例。

更多机器人以此类推。

1.2.2、开启多机导航

手柄控制开启过程参考【多机手柄控制】这一节课。

虚拟机端

image-20220303102707202

打开多机导航后密密麻麻的一团,每个机器人的位姿都不正确,首先要对每个机器人设置初始位姿。

提示:启动如果提示my_map错误

应该把.yaml文件终端内容路径更改正确

1228

1.2.3、设置通讯话题

image-20220303103526172

在工具栏(绿框)右键便弹出一个对话框(红框),如上图所示,在【2D Pose Estimate】处右键,然后选择【Tool Properties】,如下图,弹出一个对话框。

image-20220303103719432

从上往下【2D Pose Estimate】和【2D Nav Goal】与【rviz】工具栏从左往右一一对应。设置红色箭头指向的话题名,这个方法快速便捷。

假如有4台及以上机器人,初始位姿和导航图标似乎不够,怎么办?

这个时候需要打开【navigation_multi.rviz】文件(使用哪个rviz就打开哪一个,以【navigation_multi.rviz】为例),找到下面的内容。这些内容和rviz工具栏的图标一一对应,如果想要增加哪一个图标就复制一个哪一个图标整段【Class】内容,一定不能少东西,并且格式要正确。

1.2.4、设置初始位姿

机器人太多在地图上的信息特别复杂,这种情况下可以将左侧【Displays】显示项列表中机器人后面的对号勾掉,依次对每一个机器人进行位姿设置。设置后效果如下。设置完毕后即可导航。

image-20220303103345297

2.3、launch文件

可以根据自身需求修改,如果4台及其以上机器人,仿照前3台的案例增加相关内容即可。

2.4、框架分析

1225

节点图一大堆,看起来很复杂,其实很有条理性。对于每一个机器人的内部节点几乎都是一样,和单个机器人的导航也是相同的。这里需注意的是地图加载只需要加载一次就可以啦,不需要每一个机器人都去加载。同时我也开启了手柄控制的节点,一个手柄同时控制多个机器人,只需启动一次【joy_node】节点。

1226

tf坐标系也是一大堆,需放大看。全局只有一个【map】,每一个【amcl】分别定位每一个机器人,再往下就和单个机器人导航一样啦。