ROS 教程之 network:多台计算机之间网络通信(2)
来源:互联网 发布:python 脚本 编辑:程序博客网 时间:2024/06/05 15:28
在上一篇文章中我们已经搭建好了两台计算机间通信的条件,但是每次都需要在新的终端里输入一长串export ROS_MASTER_URI之类的。实际弄起来的时候也不方便,因此在本文中,我们更进一步,简化两台计算机通信的操作。并通过两个例子,让你感受感受ROS这种分布式架构和网络通信的强大,使得你的两台计算机就像一台计算机一样处理程序。通过网络通信,所有的节点你可以运行在任意一台电脑上。
一、修改.bashrc文件
修改这个文件的目的是为了配置ROS的环境变量,ROS必须知道有哪些机器在运行,因此的知道每一台机器的名字,这可以通过设置ROS_HOSTNAME环境变量为每一台机器本身的主机名来完成。另外,必须给ROS提供master节点的URI,在上一章中我们也看到了,各个节点都是通过这个URI指向master,也就是指向运行roscore的那个节点。
在两台电脑上都使用下面的命令来编辑.bashrc文件:
gedit ~/.bashrc在台式机这边在bashrc文件的最后添加:
export ROS_HOSTNAME=desktop_hostnameexport ROS_MASTER_URI=http://laptop_hostname:11311在笔记本那边,最后添加:
export ROS_HOSTNAME=laptop_hostnameexport 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)
- ROS 教程之 network:多台计算机之间网络通信(1)
- ROS多台计算机之间网络通信
- ROS教程 - 多台计算机 网络 设置
- ROS学习笔记(十一):两台计算机之间的网络通信
- ROS 多台电脑之间进行通信
- 【ROS】计算机、机器人之间的网络通信配置
- ros多机之间通信
- 设置2台计算机通信
- 练习:模拟实现两台计算机之间的通信
- java socket 进行两台计算机之间的通信
- 网络同步两台计算机之间的键盘消息
- ROS学习(2):多机通信的网络配置
- ROS多机通信/在多台机器上使用ROS系统/多台电脑使用同一个主节点ROS master/ROS多机ssh通信
- 不同ROS版本之间通信
- 网络[通信] network判断
- ros_network两台计算机通信
- Synergy 多台计算机之间共享键盘和鼠标
- Interfaces in C# (For Beginners) Chetan Kudalkar, 10 May 2007
- 第十七周项目三胖子伤不起
- ViewPager + Fragment实现滑动标签页
- 第十七周项目2-三个数排序(指针法 、引用法)
- C# 开发中WebBrowser控件调整IE兼容性的方法
- ROS 教程之 network:多台计算机之间网络通信(2)
- tilemill 使用略解
- Eclipse代码无法正常编译
- 关于php的函数count()的特性
- keytool+tomcat配置https双向证书认证
- 机器学习的可行性
- Ubuntu 14.04 升级到Gnome3.12z的折腾之旅(警示后来者)+推荐Extensions.-------(二)
- IOS 6 自动布局 入门-1
- char_traits struct 初步学习