搭建ROS组网
工具:
台式机(Ubuntu):192.168.2.101
笔记本(虚拟机):192.168.2.106
步骤(此处以在笔记本中运行roscore为准)
1. 将笔记本和台式机连接在同一个网络下,其中台式机的虚拟机网络连接使用桥接模式,据说用NAT模式会出错,不过我没有试过。
2. 在两台电脑上均安装上chrony包,用于保持同步
sudo apt-get install chrony
- 使用ping命令来检测两台电脑之间是否正常通信,如果遇到问题的话则试试关闭防火墙
ufw disable
iptables -F
- 两台电脑之间能相互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
- 使用ps -e |grep ssh来查看ssh服务器是否启动,若能看到sshd的进程启动,则说明ssh服务器启动成功
- 在笔记本上使用以下命令来登录台式机
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)的网关是否从外网网关走出。
若不是则使用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
windows上设置双网卡的思想主要是默认网络目标是要从外网网关走出的,并手动添加访问内网的路由路径,由于一台电脑只能有一个默认网关,所以对于内网的网关需要我们手动添加。以上这样设置之后,可能仍会出现只能访问内网或者两个网都无法访问的情况,这时需要进入“更改适配器配置”中右键本地连接,在“属性”中选择(TCP/IPv4)的属性,右键“属性”,点击“高级”,将其中的“接口跃点数”调高,一般超过20即可。
这样windows下的双网卡就设置完成了。你可以通过内网来组建ROS组网,同时用无线网卡访问外网。