zoukankan      html  css  js  c++  java
  • ROS 多台计算机联网控制机器人

    0. 时间同步

    sudo apt-get install chrony
    

    1. ubuntu自带的有openssh-client

    可以通过如下指令

    ssh username@host
    

    来连接同一局域网内的计算机

    可是要想通过ssh被连接,ubuntu系统需要有openssh-server,可以通过

    ps -e | grep ssh
    

     来查看,如果没有显示sshd,说明openssh-server还没有安装。

    2. 安装openssh-server

    sudo apt-get install openssh-server
    
    来安装openssh-server,如果顺利的话会安装成功,如果遇到
    sudo apt-get install openssh-server
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
    因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
    包尚未被创建或是它们已被从新到(Incoming)目录移出。
    下列信息可能会对解决问题有所帮助:
    
    下列软件包有未满足的依赖关系:
     openssh-server : 依赖: openssh-client (= 1:6.6p1-2ubuntu1)
    E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
    

    这是因为,openssh-server是依赖于openssh-client的,那ubuntu不是自带了openssh-client吗?原因是自带的openssh-clien与所要安装的openssh-server所依赖的版本不同,这里所依赖的版本是

    1:6.6p1-2ubuntu1

    所以要安装对应版本的openssh-clien,来覆盖掉ubuntu自带的

    sudo apt-get install openssh-client=1:6.6p1-2ubuntu1
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    建议安装的软件包:
      libpam-ssh keychain monkeysphere
    下列软件包将被【降级】:
      openssh-client
    升级了 0 个软件包,新安装了 0 个软件包,降级了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
    需要下载 566 kB 的软件包。
    解压缩后会消耗掉 0 B 的额外空间。
    您希望继续执行吗? [Y/n] y
    获取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main openssh-client amd64 1:6.6p1-2ubuntu1 [566 kB]
    下载 566 kB,耗时 2秒 (212 kB/s)        
    dpkg:警告:downgrading openssh-client from 1:6.6p1-2ubuntu2 to 1:6.6p1-2ubuntu1
    (正在读取数据库 ... 系统当前共安装有 200015 个文件和目录。)
    Preparing to unpack .../openssh-client_1%3a6.6p1-2ubuntu1_amd64.deb ...
    Unpacking openssh-client (1:6.6p1-2ubuntu1) over (1:6.6p1-2ubuntu2) ...
    Processing triggers for man-db (2.6.7.1-1) ...
    正在设置 openssh-client (1:6.6p1-2ubuntu1) ...
    

     可以看到,提示了系统中openssh-client被降级,这样再安装openssh-server就可以成功了!

    3. 配置

    可以通过

    hostname
    
    命令来查看主机名 
    如果你想将机器人上的电脑作为主机(运行roscore),假设器主机名为hostname_robot,台式机主机名为hostname_desktop
    则在机器人电脑上修改bashrc文件:
    sudo gedit .bashrc
    

     在文件最后添加

    export ROS_HOSTNAME=hostname_robot.local
    

     然后在台式机电脑上修改bashrc文件,添加如下代码:

    export ROS_HOSTNAME=hostname_desktop.local
    export ROS_MASTER_URI=http://hostname_robot.local:11311
    

     PS: 上述代码不能有空格

    4. 登录

    在台式机上登录到机器人电脑上:

    ssh username@hostname.local
    

     OK!

    5. 客户端显示图形界面

    ssh连接成功后,如果想要显示图形界面,需要做一些配置。步骤如下:

    5.1 服务器端的ssh必须运行转发X界面,在ssh服务器中:

    sudo gedit /etc/ssh/sshd_config 

          其中有一行X11Forwarding yes,确保这个是yes(注意这个配置文件中的#是注释,确保X11Forwarding前面没有#注释),

          然后重启ssh服务

    cd /etc/init.d
    ./ssh restart

    5.2 客户端配置,在/etc/ssh/ssh_config配置文件中,找到ForwardAgent yes,ForwardX11 yes,ForwardX11Trusted yes这3个确保是yes(注意这个配置文件中的#是注释,确保你修改的行没有被注释掉)

    5.3 配置完成后,进入终端,现在假设我们的ubuntu客户端的ip是192.168.0.19,而ssh服务器的ip是192.168.0.222。下面是执行步骤,注意别弄错了:

    首先终端未连接ssh之前,执行xhost +192.168.0.222 这个步骤是允许ssh服务器的X界面连接过来然后执行ssh -X root@192.168.0.222 注意-X这个是大写的X,这个步骤是连接到ssh服务器,接着会要输入密码

    这个时候终端已经连接到ssh服务器了,然后执行export DISPLAY=192.168.0.19:0.0这个步骤是把ssh服务器的X显示重新定位到192.168.0.19的0.0显示器中,也就是我们的客户端

    然后做个测试,执行xclock,等待。。。如果这个时候在你的ubuntu界面中出现了一个时钟界面,那么恭喜你成功了。



  • 相关阅读:
    第十四周学习报告
    20135206、20135236第四次试验报告
    20135206、20135236第三次试验报告
    第十三周学习报告
    20135206、20135236第二次实验报告
    第十一周学习报告
    20135206于佳心【家庭作业汇总】
    20135236、20135206第一次试验报告
    luogu题解 CF767C 【Garland】
    第七届Code+程序设计全国挑战赛 normal T1 最小路径串
  • 原文地址:https://www.cnblogs.com/lvchaoshun/p/6224891.html
Copyright © 2011-2022 走看看