ROS下分布式控制的节点配置

转载 2018年04月17日 09:53:28

参考:https://blog.csdn.net/heyijia0327/article/details/42065293

白巧克力亦唯心


一、两台电脑通信前的准备工作:

     1.首先查看两台电脑各自的ip信息和主机名hostname:

      查看ip:在终端中输入下面的命令

[python] view plain copy
  1. ifconfig  
     我实验室台式机上得到结果如下:


台式机是有线连接的,在eth0这一栏里找到你的ip地址,笔记本是通过wifi连接的,在wlan0一栏找到笔记本端的ip地址.

      查看两电脑各自的主机名,在终端中输入:

[python] view plain copy
  1. hostname  

我台式机上的得到的结果如下:


台式机主机名为:hyjlab-virtual-machine,其实主机名hostname就是终端的标题栏上 @后面的那串字符,如上图。

        2.修改/etc文件夹下的hosts文件:

        修改hosts文件的目的是将两电脑的ip和主机名绑定,两台电脑之间通过hostname就能找到对方。没有这一步的时候,你直接去ping 对方主机名时,结果是无法解析对方主机名。

        这里以修改台式机上的hosts文件为例,笔记本上也要相同操作。由于电脑上的 hosts文件是只读文件,直接修改后是保存不了的。因此先用root方式对该文件属性进行修改。

第一种方式(推荐):

        使用常用的gedit 修改,只是在gedit前面加上gksu,如:

[python] view plain copy
  1. gksu gedit /etc/hosts  
这种方式修改大批量很方便。
第二种方式,通过vim:

        在终端里输入:

[python] view plain copy
  1. sudo chmod a+w /etc/hosts  
修改了权限以后,再输入:
[python] view plain copy
  1. vim /etc/hosts  

如果提示没有vim命令,先sudo apt-get install vim 装一下vim

        打开hosts后,你看到hosts文件内开头已经有了两行,我们从第三行开始插入你刚刚查到的两台电脑的ip地址和主机名hostname,形式如下:

[python] view plain copy
  1. your_ip   your_hostname  

中间用tab键隔开,不是空格。LZ的台式机的hostname为:hyjlab-virtual-machine。笔记本为:hyj-F83VF。

如下图所示:


输入完以后,按下退出ESC键,然后按下 “  : ”  ,输入wq! 回车就行了,如下图:


修改完以后,在两台电脑上都输入下列命令重启以下网络:

[python] view plain copy
  1. sudo /etc/init.d/networking restart  


二、实现两台电脑间通信:

        1.在两台电脑上装上chrony包,用于实现同步:

[python] view plain copy
  1. sudo apt-get install chrony  

        2. 在两台电脑上都进行ssh服务器的安装

        关于SSH命令可以参考下Ubuntu环境下SSH的安装及使用,这里只管使用,不细谈SSH本身。

        首先在终端中输入下面的命令,安装SSH服务器,SSH的客服端Ubuntu自带已经安装好了:

[python] view plain copy
  1. sudo apt-get install openssh-server  

安装完以后,确认服务器是否已经启动:

[python] view plain copy
  1. ps -e|grep ssh  
如果只有ssh-agent,那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。        3.正式开始通信

        首先进行基本的ping操作,下面用desktop_hostname代表台式机的主机名,用laptop_hostname代表笔记本上的主机名:

第一步先检查台式机去ping 笔记本,看通信是否正常,输入: 

[python] view plain copy
  1. ssh desktop_hostname  
  2. ping laptop_hostname  
你应该会得到如下的一些东西:


第二步,反过来从笔记本去ping台式机:

[python] view plain copy
  1. ssh laptop_hostname  
  2. ping desktop_hostname

三、修改.bashrc开机启动文件

在两台电脑上都使用下面的命令来编辑.bashrc文件:gedit ~/.bashrc  

在台式机这边在bashrc文件的最后添加:

  1. export ROS_HOSTNAME=desktop_hostname  
  2. export ROS_MASTER_URI=http://laptop_hostname:11311  
在笔记本那边,最后添加:
  1. export ROS_HOSTNAME=laptop_hostname  
  2. export ROS_MASTER_URI=http://laptop_hostname:11311 

在台式机处打开一个terminal,输入ssh robot@robot回车

会提示输入密码,输入机器人的开机登录密码即可

发现terminal处字体变为robot@robot说明已经登录robot的电脑了。

完成之后如果发现问题,在台式机上无法通过密码登录机器人,查询后需要修改以下文件:

参考:https://blog.csdn.net/qq_33179208/article/details/59108678

http://jingyan.baidu.com/article/e6c8503c724ebae54f1a18cd.html

sudo gedit /etc/ssh/sshd_config文件,

将PermitRootLogin 的值改为yes

将PermitEmptyPasswords为 no

保存关闭,重启server

sudo /etc/init.d/networking restart 


还要主要以下几点:

1、利用roslaunch启动机器人的节点时候,launch文件中不能包含x -term的窗口,否则节点无法运行。

2、rviz需要在台式机的权限下进行,即terminal中显示为A@A,而不是robot@robot 。

ros下分布式的调试和节点

背景是有两台电脑,一个名为A,另一个为B。两台均安装了ubuntu14.04及ROS indigo。目标是通过远程的方式在A上启动B上的节点,并在A上显示B上的运行结果。A是台式机,B是机器人,通过台...
  • qq_33179208
  • qq_33179208
  • 2017-03-01 15:34:35
  • 444

ROS机器人操作系统分布式控制的节点 配置方法

MASTER设置 整个系统只需要一个master,选择一个机器来运行master提供topic寻址、参数服务器等功能。所有的节点必须通过环境变量ROS_MASTER_URI配置为使用同一个master...
  • w383117613
  • w383117613
  • 2015-05-08 16:29:54
  • 3367

ROS 节点通信

"节点(Node)" 是ROS中指代连接到ROS网络的可执行文件的术语。接下来,我们将会创建一个发布器节点("talker"),它将不断的在ROS网络中广播消息。 //发布节点 #include "r...
  • zhubaohua_bupt
  • zhubaohua_bupt
  • 2016-12-24 13:34:23
  • 1374

ROS(一) 写自己的节点

1、创建一个工作空间$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace最后一行效果:在src下创建了一个CM...
  • weewqrer
  • weewqrer
  • 2015-09-04 19:17:17
  • 2051

ros学习笔记--如何看可视化的话题与节点

输入 rosrun rqt_graph rqt_graph 可以打开一个界面观察节点与话题的关系 绿色和蓝色的是节点 红色的是话题...
  • Qin_xian_shen
  • Qin_xian_shen
  • 2017-11-14 11:56:20
  • 390

ROS学习--(六)理解ROS节点和话题

ROS系统包括多个独立的节点,每个节点通过一个发布/订阅的消息范式与其他节点联系 !如下图中,publisher和subscriber都可以是节点(node) (http://img.blog.c...
  • BenjaminYoung29
  • BenjaminYoung29
  • 2015-07-26 22:14:01
  • 2818

问题和解决 ROS节点的不可执行(线程退出)

在本实例中存在两个ROS节点 odometry和sensor 遇到的问题:rosrun运行两个节点时发现没有反应                      改用launch脚本运行,发现如...
  • Y_yeyeye
  • Y_yeyeye
  • 2017-07-10 16:15:16
  • 493

ROS的学习(六)理解ROS的节点(NODE)

经过前面的学习,我们已经知道了如何构建一个ROS的包,这篇博客将介绍ROS中的节点的概念。      在继续之前,请按ctrl+alt+t打开一个终端,在里面输入: sudo apt-get in...
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2013-10-29 20:10:11
  • 24409

ROS学习之cpp节点的启动与关闭

wiki链接:http://wiki.ros.org/roscpp/Overview/Initialization%20and%20Shutdown          一、节点的初始化   ...
  • shiyue0010
  • shiyue0010
  • 2016-07-18 09:06:45
  • 2112

在Clion中调试ROS程序

在ROS WIKI  http://wiki.ros.org/IDEs 中有几种IDE的配置方法,但没有Clion的相关介绍。下面介绍一下Clion的相关配置。 ROS+Clion配置 在终端中打...
  • jing5702
  • jing5702
  • 2017-04-19 14:10:27
  • 2581
收藏助手
不良信息举报
您举报文章:ROS下分布式控制的节点配置
举报原因:
原因补充:

(最多只允许输入30个字)