在上一篇文章中我们已经搭建好了两台计算机间通信的条件,但是每次都需要在新的终端里输入一长串export ROS_MASTER_URI之类的。实际弄起来的时候也不方便,因此在本文中,我们更进一步,简化两台计算机通信的操作。并通过两个例子,让你感受感受ROS这种分布式架构和网络通信的强大,使得你的两台计算机就像一台计算机一样处理程序。通过网络通信,所有的节点你可以运行在任意一台电脑上。

一、修改.bashrc文件

修改这个文件的目的是为了配置ROS的环境变量,ROS必须知道有哪些机器在运行,因此的知道每一台机器的名字,这可以通过设置ROS_HOSTNAME环境变量为每一台机器本身的主机名来完成。另外,必须给ROS提供master节点的URI,在上一章中我们也看到了,各个节点都是通过这个URI指向master,也就是指向运行roscore的那个节点。

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

gedit ~/.bashrc

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

export ROS_HOSTNAME=desktop_hostname
export ROS_MASTER_URI=http://laptop_hostname:11311

在笔记本那边,最后添加:

export ROS_HOSTNAME=laptop_hostname
export ROS_MASTER_URI=http://laptop_hostname:11311

注意:我们这里的添加方式里面ROS_MASTER_URI都是指向的笔记本的主机名,说明是在笔记本上运行roscore.



二、开始测试网络通信了 -- enjoy time!

下面我们来一个简单的遥控程序,笔记本上发出控制指令遥控台式机上的一个小渔龟:

1.首先在我们的笔记本上,也就是移动机器人那一端开启roscore

2.然后在台式机上启动小渔龟的仿真节点:

rosrun turtlesim turtlesim_node

3.然后在笔记本上新开一个终端,遥控小渔龟:

rosrun turtlesim draw_square

这时候你就可以看到台式机上的小渔龟正在走正方形了。

当然我们也可以试试《Ros by Example 1》的move_base例程,在台式机上用rviz进行观察:

在笔记本上:

运行 roscore

然后新开一个终端输入:

roslaunch rbx1_bringup fake_turtlebot.launch

在笔记本上再新开一个终端输入:

roslaunch rbx1_nav fake_move_base_blank_map.launch

在台式机上运行Rviz:

rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz

然后在笔记本一端进行move_base控制:

rosrun rbx1_nav move_base_square.py

你将看到台式机上的RVIZ正在监控:





      总结:至此,ROS的networking系列完成了,通过network,使得两台计算机运行着不同的ROS节点,两个计算机相当于一个计算机了。通常在使用过程中,把RViz这种特耗CPU的东西放到了台式机上,减轻了机载计算机的负担。LZ在自己的实验室项目中是在台式机上运行rviz,指定移动机器人的移动目标点,机载笔记本上运行着定位和路径规划的主要算法。

文章为原创,

请注重博主劳动成果,

错误请指出,转载请注明。

--白巧克力

reference:

1.ROS NETWORKING : a good tutorial

ROS 教程之 network:多台计算机之间网络通信(2)的更多相关文章

  1. 基于WSAAsyncSelect模型的两台计算机之间的通信

    任务目标 编写Win32程序模拟实现基于WSAAsyncSelect模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递.客户端向服务器端发送"请输出从1到1000内所有 ...

  2. 多台计算机之间的ssh无密钥登录

    在很多分布式系统中,我们最常遇到的一个问题是,需要在服务器集群上保证多台机器之间的SSH无密钥登录.以Hadoop为例,为了方便,我们需要在master和slaves之间配置密钥登录,这样我们启动Ha ...

  3. 集群中配置多台计算机之间ssh无密码登录的一种简便方法

    当我们在配置多台计算,使之可以相互使用无密码登录-ssh,之前都是一台一台的配置,现在一台A上添加B,然后在另一台B上再次添加A,这样使得 authorized_keys中的内容相同,但时并不是完全相 ...

  4. ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin

    在做机器人导航的时候,肯定见到过global_costmap和local_costmap.global_costmap是为了全局路径规划服务的,如从这个房间到那个房间该怎么走.local_costma ...

  5. ROS 教程之 vision : 用各种摄像头获取图像

    可能有很多人想在ROS下学习视觉,先用摄像头获取图像,再用opencv做相应算法处理,可是ROS下图像的采集可不像平常的read一下那么简单,需要借助外部package的使用.而摄像头即可以用笔记本自 ...

  6. Chrome教程之NetWork面板分析网络请求

    官方文档:https://developers.google.com/web/tools/chrome-devtools/network/ 最近打算写一写Chrome教程文档,不知道大家最感兴趣的是什 ...

  7. Fiddldr 教程之:HTTP协议详解(转)

    原文地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html HTTP协议详解 当今web程序的开发技术真是百家争鸣,ASP ...

  8. DNS域欺骗攻击详细教程之Linux篇

    .DNS域欺骗攻击原理 DNS欺骗即域名信息欺骗是最常见的DNS安全问题.当一 个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了.DNS欺骗会使那些易受攻 ...

  9. Wireshark数据抓包教程之Wireshark的基础知识

    Wireshark数据抓包教程之Wireshark的基础知识 Wireshark的基础知识 在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及.Wireshark作为国 ...

随机推荐

  1. fcntl 函数与文件锁

    一.fcntl函数 功能:操纵文件描述符,改变已打开的文件的属性 int fcntl(int fd, int cmd, ... /* arg */ ); cmd的取值可以如下: 复制文件描述符 F_D ...

  2. Linux前台、后台、挂起、退出、查看命令汇总

    command &  直接在后台执行程序 ctrl+c 退出前台的命令,不再运行 ctrl+z挂起前台命令暂停运行,回到shell命令行环境中 bg    将刚挂起的命令放到后台执行 bg % ...

  3. .Net程序猿玩转Android开发---(11)页面跳转

    在不论什么程序开发中,都会遇到页面之间跳转的情况,Android开发也不例外.这一节,我们来认识下Android项目中如何进行页面跳转.页面跳转分为有參数和无參数页面跳转,已经接受还有一个页面的返回值 ...

  4. (Apache)ab 压力测试 简单使用

    该工具在Apache安装目录的bin目录里面.所以想要这个使用这个工具,只需要下载Apache即可.在Window环境下,推荐使用 PhpStudy 工具的集成环境.就可以轻松拥有Apache.ab压 ...

  5. python中if __name__ == '__main__'的说明

    这个表示执行的是此代码所在的文件. 如果这个文件是作为模块被其他文件调用,不会执行这里面的代码. 只有执行这个文件时, if 里面的语句才会被执行. 这个功能经常可以用于进行测试. python中,当 ...

  6. 理解HTTP幂等性,分布式事物

    理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式.无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API.为什么 ...

  7. HTTP请求中的Keep-Alive模式详解

    Keep-Alive模式 我们都知道HTTP是基于TCP的,每一个HTTP请求都需要进行三步握手.如果一个页面对某一个域名有多个请求,就会进行频繁的建立连接和断开连接.所以HTTP 1.0中出现了Co ...

  8. angular学习笔记(四)- input元素的ng-model属性

    input元素的ng-model属性: 用于将input的值和变量的值进行双向绑定 <!DOCTYPE html> <html ng-app> <head> < ...

  9. ny168 房间安排

    房间安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中 ...

  10. PHP5.4新特性之上传进度支持Upload progress

    在PHP5.4版本当中给我们提供了好用的特性,上传进度的支持,我们可以配合Ajax动态获取SESSION当中的上传进度: 在使用这一特性之前,需要现在php.ini文件当中进行相应的设置:   1 2 ...