在构建机器人的过程中,为了方便调试和后期扩展,采用“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
用从机的键盘可以实现对主机中小乌龟的控制,则多机通信配置正确。