两机ssh通讯:(https://blog.csdn.net/netwalk/article/details/12952051)
1.ifconfig查看ip ,hostname查看主机名
4.安装ssh服务端sudo apt-get install openssh-server
5.通过ssh username@ip 可直接登陆,
6.登陆出现警告且需要输入yes,可在etc/ssh/ssh_config文件中,将StrictHostKeyChecking ask去掉注释并改为no
ROS多机通讯:(https://blog.csdn.net/heyijia0327/article/details/42080641)
1.修改相同局域网下两机的/etc/hosts文件,添加对方的ip和hostname 如171.122.122.145 ideapad.
修改后重启网络
sudo /etc/init.d/networking restart
ping hostname 查看通讯是否正常
2.如果master只是运行在主机上,那么对于主机的的.bashrc上面应该设置为:
export ROS_HOSTNAME=主机的hostname
export ROS_MASTER_URI=主机的IP:11311(也就是说11311是固定的)
那么对于从机的.bashrc上面应该设置为:
export ROS_HOSTNAME=从机的hostname
export ROS_MASTER_URI=主机的IP:11311
两机运行着不同的ROS节点,两机相当于一个计算机了,即使不用ssh登陆,从机运行的节点和主机运行的节点也属于同一个节点管理器。
3.上述情况下ROS Master已经指向了另一台主机,所以本地的roscore启动无效。在另一台主机的roscore未启动之前,从机的ROS是无法正常运行的。
所以,视自己的需求而定,可以将export ROS_MASTER_URI=http://hostname:11311写入~/.bashrc,操作相对方便;也可以直接在终端运行,这样从机即可以与主机通信,又可以运行自己的roscore。
export ROS_MASTER_URI=http://$ip:11311 export设置环境变量 ip是要执行roscore的主机ip,11311是roscore的默认端口号