机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信

1、环境 PC系统:Ubuntu16.04+ROS kinect
树莓派系统:Ubuntu16.04+ROS kinect
前提:PC和树莓派在同一局域网下;也就是都连同一个WIFI(路由器生成的那种,或者手机热点,校园网不行),或者PC连了WIFI、用根网线把树莓派和PC连起来也可以。
注:PC连接的网络要设置为共享模式,即编辑连接,在IPV4设置里把方法(Method)改为与其他计算机共享网络(Shared to other computers)。
机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信
文章图片

2、目的、作用 ssh通信:目的是通过电脑端访问树莓派,实现两者之间的文件互传、远程其他操作。
为了方便,在一台电脑可以操作两个终端。
多机分布式通信:当机器人运行后,在PC上控制、监控机器人。
为了分担树莓派的工作压力,而且ROS机器人控制,建图、导航反映在远端PC也更为人性化。
3、SSH通信 ssh程序分为有客户端程序openssh-client和服务端程序openssh-server。3.
3.1 为两台电脑安装ssh服务(树莓派可操作情况):

$ sudo apt-get install openssh-server

查看开启之:
$ sudo ps -e |grep ssh

如下则已经开启:
机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信
文章图片

如果没开启,则:
$ sudo service ssh start

3.2 修改配置文件
输入命令
$ sudo gedit /etc/ssh/sshd_config

把配置文件中的"PermitRootLogin without-password"加一个"#"号注释掉,再增加一句"PermitRootLogin yes",保存文件,是为了允许root用户登录。
3.3 查看IP
点击右上角的网络图标,看到最下面的连接信息(Connection Information)或者终端输入:ifconfig 查看当前IP,同样方法查看树莓派IP(树莓派可操作),如若树莓派没东西操作,就在电脑端执行以下操作:
(1)通过电脑端ip地址寻找网线另一端raspberry pi的ip地址,用到nmap软件。
打开terminal,输入如下命令:
$ sudo apt-get install nmap

(2)安装完成后根据你之前获得的电脑端ip地址,以192.168.1.100为例,终端输入如下命令进行搜索;
$nmap 192.168.1.0/24

一般第二个IP地址即为raspberry pi的ip地址:
第二个IP192.168.1.101就是树莓派的
机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信
文章图片

3.4 PC终端输入:
$ ssh pibot@192.168.1.101

上面的pibot是树莓派名,@后面就是树莓派的IP地址。
OK
4、分布式多机通信 树莓派为主机;PC为从机;
4.1 修改hosts文件
PC端:
sudo gedit /etc/hosts

加两行:
机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信
文章图片

树莓派端一样。
4.2 ping一下
机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信
文章图片

4.3 设置ROS-MASTER-URI
编辑.bashrc文件
gedit .bashrc

PC端和树莓派都加1行:
export ROS_MASTER_URI='http://192.168.1.101:11311'

保存退出。source一下
source .bashrc

4.4 测试
树莓派运行rosmaster(在PC上SSH操作即可)
roscore

PC运行小乌龟节点
rosrun turtlesim turtlesim_node

PC另一个终端运行键盘控制节点:
rosrun turtlesim turtlesim_teleop_key

PC端实现了监控与控制
【机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信】机器人|ROS—基于树莓派的ROS机器人ssh通信,以及多机分布式通信
文章图片

    推荐阅读