搭建ROS组网

工具:
台式机(Ubuntu):192.168.2.101
笔记本(虚拟机):192.168.2.106
步骤(此处以在笔记本中运行roscore为准)
1. 将笔记本和台式机连接在同一个网络下,其中台式机的虚拟机网络连接使用桥接模式,据说用NAT模式会出错,不过我没有试过。
2. 在两台电脑上均安装上chrony包,用于保持同步

sudo apt-get install chrony
  1. 使用ping命令来检测两台电脑之间是否正常通信,如果遇到问题的话则试试关闭防火墙
ufw disable
iptables -F
  1. 两台电脑之间能相互ping通之后,先在两台电脑上各自使用
hostname #查看本机的主机名
sudo gedit /etc/hosts
#进入hosts文件后,在文件头加入以下几行(以PC台式机为例)
192.168.2.101   yourhostname
192.168.2.106   laptophostname
#
export ROS_HOSTNAME=yourhostname
export ROS_MASTER_URI=http://192.168.2.106:11311

ROS_MASTER_URI为主节点运行的地址,ROS_HOSTNAME是在组网中发送主题或者订阅主题时的身份标识,一定要是唯一的。
5. 最后在笔记本上运行roscore,在台式机上运行相应的节点。
若一切正常,则两台电脑间的ROS网络就建立起来了,这时如果你想开机就使用这个网络的话,则只需要在两台电脑中使用以下命令

gedit ~/.bashrc
#之后在.bashrc文件中添加该地址
export ROS_HOSTNAME=yourhostname
export ROS_MASTER_URI==http://192.168.2.106:11311

有时候我们想在笔记本上控制台式机节点的运行,这时我们就需要通过ssh来进行相应的操作了。
SSH
1. 在两台电脑上各自安装ssh服务器

sudo apt-get install openssh-server
  1. 使用ps -e |grep ssh来查看ssh服务器是否启动,若能看到sshd的进程启动,则说明ssh服务器启动成功
  2. 在笔记本上使用以下命令来登录台式机
ssh -l loginname 192.168.2.101

此时输入相应的密码,就能登录上台式机上的Ubuntu了。

其实在这里我建议大家是在笔记本上建立双网卡的,由于我们笔记本上拥有一块无线网卡可用于wifi连接,一块有线网卡用于网线连接,这样我们就可以通过设置来使得笔记本通过无线网卡访问外网,通过另一块网卡访问内网,而内网则用于ROS组网的连接。

win7上建立双网卡

外网网关:192.168.1.1

内网网关:192.168.2.1

步骤

1. 在终端输入route print查看默认网络目标(0.0.0.0)的网关是否从外网网关走出。

ROS划分vlan ros组网_ROS划分vlan


若不是则使用route delete 0.0.0.0删除该默认路由路径

之后使用route add -p 0.0.0.0 mask 0.0.0.0(此处根据实际情况设定子网掩码) (外网网关)192.168.1.1

-p参数代表该路径被永久写入,即使重启也仍存在

2. 之后再添加内网网关的永久路由路径,192.168.2.0表示192.168.2.*的ip访问都从该路由路径走过

route add -p 192.168.2.0 mask 255.255.255.0 192.168.2.1

ROS划分vlan ros组网_组网_02


windows上设置双网卡的思想主要是默认网络目标是要从外网网关走出的,并手动添加访问内网的路由路径,由于一台电脑只能有一个默认网关,所以对于内网的网关需要我们手动添加。以上这样设置之后,可能仍会出现只能访问内网或者两个网都无法访问的情况,这时需要进入“更改适配器配置”中右键本地连接,在“属性”中选择(TCP/IPv4)的属性,右键“属性”,点击“高级”,将其中的“接口跃点数”调高,一般超过20即可。

ROS划分vlan ros组网_内网_03


这样windows下的双网卡就设置完成了。你可以通过内网来组建ROS组网,同时用无线网卡访问外网。