4、多机环绕

4.1、简介

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

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

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

打开【.bashrc】文件

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

4.2、使用

以虚拟机是主机,3台机器人是从机为例;使用前必须有地图。2台从机分别【robot1】、【robot2】,又将【robot1】设定位领航者,【robot2】设定为跟随着。玩该功能时确保场地足够大,以免撞机。且无避障功能。

【该例程不适合树莓派5主板驱动】

4.2.1、开启机器人

虚拟机端

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

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

更多机器人以此类推。

4.2.2、开启多机环绕

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

虚拟机端

启动之后,需要对机器人进行初始化位姿设置,具体设置方法参考【多机导航这一节课】,设置后如下图。

image-20220303122042470

4.2.3、编队控制

打开动态参数调整工具

image-20220303123936059

该工具可对每台机器人单独设置。

参数解析

【lin_Kp】、【lin_Ki】、【lin_Kd】:小车线速度PID调试。

【ang_Kp】、【ang_Ki】、【ang_Kd】:小车角速度PID调试。

参数范围解析
【teams】默认【vertical】此功能下该参数无效
【robot_model】默认【omni】车型:【omni,diff】
【navigate】【False,True】是否以导航模式运行
【Switch】【False,True】功能开关【开始/暂停】
【dist】【0.5,2.0】环绕半径

开启【Switch】功能开关后,机器人自动获取自身位置与领航机器人发射出的位置,当第二次到达最近点时,跟随着机器人自动环绕。如下图所示

image-20220303123854168

4.3、launch文件

tf_roundbroad.launch

4.4、框架分析

节点查看

rosgraph

查看tf树

frames

 

由上图可知【robot1】会发出【point1】坐标系,【robot2】实时监听自身与该坐标系的关系,并使得自身坐标系与该坐标系重合。在【tf_roundbroad.launch】文件中,我们可以看出【robot2】跟随【point1】坐标系。