1、多机手柄控制

1.1、多机配置

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

1.1.1、多机通讯设置

查看虚拟机的IP

image-20220302163307743

接下来只需修改从机(Robot端)的.bashrc文件即可,有几个从机配置几个

找到下面一行内容

此处的【IP】使用的是(虚拟机端)的IP。

设置好IP后,最好刷新一下环境变量即可。

1.1.2、多机时间同步

安装

时间查看命令

有网络的情况下,系统均会自动同步网络系统时间,无需设置。如果没有网络,机器人之间的时间不同的时候需要设置时间

自动同步网络时间的命令

测试案例是使用两台机器人。

手动设置时间的命令

1)、服务器端(主机端)配置

打开【ntp.conf】文件

在文件末尾加入

第一行是为了能让192.168.2.xxx网段上的机器能和本机进行时间同步(具体看你的ip是不是192.168.2.xxx,如果不一样的话,改成你实际的格式) 第二行和第三行是为了让本机的硬件时间和本机的ntp服务进行时间同步

改好后,重启ntp服务

服务器端设置完成,下面开始客户端的设置

2)、客户端(从机端)配置

打开【ntp.conf】文件

在文件末尾加入【server】+【IP】

3)、时间同步

在【服务器端】,执行下面的代码查看【服务器端】的ntp服务是否在运行

image-20220302170639782

如果,没有启动,则重启ntp服务。

网络更新(所有设备均需要)

时间同步

如果客户端的ntp也开启了,需要先关闭ntp服务,再执行时间同步。

1.2、使用

以虚拟机是主机,2台机器人是从机为例。

1.2.1、开启机器人

虚拟机端

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

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

更多机器人以此类推。

1.2.2、开启手柄控制

方式一:一个手柄同时控制多个机器人

将手柄接收器链接虚拟机USB口,启动命令

注意:该【launch】文件,默认是三台机器人。

joy_multi.launch

如果是2台机器人将第3台的部分注释掉即可,不注释掉也不会有影响;如果4台及以上,可依照前3台样本增加。

方式二:一个手柄单独控制1台机器人

<PI5 需要打开另一终端进入同一个docker容器内

image-20240408144126098

将手柄接收器链接对应的机器人上,在对应的机器人端,启动命令(以robot1为例)

1.3、手柄控制分析

节点查看

1.3.1、控制多个机器人

1203

由图可以看出一个手柄同时控制多个机器人时,只需要有一个【joy_node】节点,接受手柄信号,针对不同的机器人设置不同的【yahboom_joy】节点用来控制对应的机器人。

1.3.2、控制一个机器人

1204

由图可以看出一个手柄控制一个机器人时,对每个机器人单独设置,单独控制。