在上一篇文章中我们已经搭建好了两台计算机间通信的条件,但是每次都需要在新的终端里输入一长串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. ROS 教程之 network:多台计算机之间网络通信(1)

    LZ在实验室环境下要实现一台台式主机和移动机器人上的笔记本通信.台式机作为主机,用rviz监控和无线操作移动机器人,笔记本上通过ROS实现移动机器人的自主定位和路径规划等程序.主机上用的虚拟机装的ub ...

  2. 853-两台计算机之间是如何通信的?

    1. 五层协议参考模型 所谓通信协议就是通信双方都必须要遵守的通信规则.如果没有网络通信协议,计算机的数据将无法发送到网络上,更无法到达对方计算机,即使能够到达,对方也未必能读懂.有了通信协议,网络通 ...

  3. 要在某一房间中两台计算机之间,关于局域网、广域网和互联网的组建和因特网的接入,回答下列问题。要在某一房间中两台计算机之间实现网络通信,下列方法不可行的是...

    集市交易中的叫卖声和敲击声是最一种特殊的民俗现象,局域建和接入间中计算机之间实其共同特点为 网广网为什么有人会产生心理困扰() 牙周组织在受到异常的力作用其损伤一直存在,域网因特房但也会有组织修复 ...

  4. ROS实现两台计算机之间的网络通信

    转载: https://blog.csdn.net/banzhuan133/article/details/77825445 1.准备工作 两台装有ROS的笔记本,并知道他们的IP地址和主机名. 主机 ...

  5. python 两台机器之间传递数据_Python:通过套接字在两台计算机之间发送数据

    我正在开发一个脚本,可以在两台不同的计算机之间传输数据,并可以访问互联网.我正在使用 python的socket标准模块.当我在单台计算机上运行客户端和服务器时,它工作正常,但是当它们在不同的计算机上 ...

  6. linux 共享硬盘分区,linux – 如何在多台计算机之间轻松共享本地分区

    推荐文章 SCSI: 小型计算机系统接口(英 语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘.软驱.光驱.打印机.扫描仪等) ...

  7. 支持两台计算机间安全连接的是什么,如何建立两台计算机之间的连接?

    连接两台电脑 很高兴认识你!我是你的数字家庭向导,我将逐步为你带来一些非常有趣的全新数字家庭技术,并向你详细介绍如何把它们安装在家里.我会把我最切身的体会实事求是地与你分享,无论是好是坏,甚至糟糕透顶 ...

  8. 网络上各台计算机语言,人类使用语言来交流,同样,网络上的各台计算机之间也用某种语言交换信息,这样的语言通常指()。...

    相关题目与解析 计算机语言是一种人与计算机之间交换信息的工具. 案例2:计算机网络漫谈所谓计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备用通信 计算机语言是用来解决人和计算机交换信息的. ...

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

    简单的讲就是:就是将几台(例如5)主机的id-rsa.pub 公钥分别加入到authorized_keys文件中,再将拥有了几个(例如5)公钥的authorized_keys文件分别放在三台主机的.s ...

最新文章

  1. JAVA_SE之内部类
  2. .NET FrameWork 4.0 新特性
  3. 深度学习100例-卷积神经网络(CNN)3D医疗影像识别 | 第23天
  4. Java sqlite事务方法,Java SQLiteDatabase.insert方法代码示例
  5. 集成电路883和883b有什么区别
  6. java中io与nio复制文件性能对比
  7. python正则表达式中原生字符r的作用
  8. 微信公众号服务器模式,微信公众平台的两种模式
  9. Python处理Excel文件
  10. #和妹妹一起做毕业设计#从需求到软件发布的流程记录—— 需求、设计篇
  11. 关于url路径的定义方式
  12. Lecture Notes: Macros
  13. android 信鸽 小米推送,小米推送通道集成指南
  14. bing翻译使用-Unity
  15. 【武忠祥高等数学基础课笔记】第一章 函数、极限、连续
  16. NVIDIA TX2---Tegra架构介绍
  17. 升级IOS百度人脸SDK4.0采坑记录
  18. 苹果cms影片集数不更新解决方法
  19. Promise对象的基础入门学习
  20. 前端工程师知识体系结构:

热门文章

  1. 使用学习曲线(Learning curve),判断机器学习模型过拟合、欠拟合,与解决过拟合、欠拟合的问题
  2. tushare调用API获取金融相关数据
  3. tcpdump捕获流量,并切分多个文件保存
  4. python用代码执行另一个python文件
  5. 使用jieba提取文本TF-IDF关键词
  6. shell脚本--批量测试主机连通性ping IP
  7. java并发编程(更新)
  8. java项目命令编译,打包,运行
  9. PhoneGap出现错误,找不到www/index.html页面
  10. Java中static final用法小结