ROS分布式多机通信(主从网络的设置)

在构建机器人的过程中,为了方便调试和后期扩展,采用“PC+英伟达Jetson Nano”分布式的方式来处理数据。

PC作为主机,跑网络,进行处理数据等主要工作;安装在机器人上的英伟达Jetson Nano作为从机,主要用来采集各种传感器采集来的环境数据。据我了解,有些SLAM套件为了实现脱机工作(不使用PC),会采用相反的设置:机器人上面的额处理器作为主机,PC作为从机主要完成远端检测的功能。因为以后需要在设备上跑网络,方便后期扩展,决定采用PC作为主机的形式。这里的主机就是ROS中要运行Master节点的处理器。

一、主从机网络通信

1、首先PC和Jetson Nano要连接到同一个wifi网络上,并分别设置固定IP。

使用ifconfig命令查看本机的局域网IP地址

以我自己的设备为例:

我PC的计算机名为chaoxing,192.168.1.150

nano计算机名为robot,192.168.1.147

2、然后打开hosts文件,在hosts文件中,加入彼此的IP地址和对应的计算机名。

sudo gedit /etc/hosts

修改完成后,使用ping命令来测试一下是否连通

3、在系统中只能有一个Master,需要让从机知道Master的位置

在从机中需要对环境变量进行配置:

sudo gedit ~/.bashrc

在最后添加

export ROS_HOSTNAME=192.168.1.147

export ROS_MASTER_URI=http://192.168.1.150:11311

注意:只修改从机的,主机不用修改!!!

4、测试

在主机中运行

roscore

rosrun turtlesim turtlesim_node

在从机中运行

rosrun turtlesim turtle_teleop_key

用从机的键盘可以实现对主机中小乌龟的控制,则多机通信配置正确。

你可能感兴趣的:(ROS,多机通信)