Chinaunix首页 | 论坛 | 博客
  • 博客访问: 307274
  • 博文数量: 80
  • 博客积分: 773
  • 博客等级: 军士长
  • 技术积分: 799
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-24 23:52
个人简介

victory for prepared

文章分类

全部博文(80)

文章存档

2024年(2)

2023年(1)

2022年(2)

2021年(1)

2018年(8)

2017年(3)

2016年(20)

2015年(12)

2013年(5)

2012年(25)

2011年(1)

我的朋友

分类: LINUX

2016-01-29 23:38:07

在学习ROS的过程中, 曾听到过ROS的特点之一是分布式的操作系统. 当时因为没有相应的需求, 一直似是而非的记忆着.最近由于项目的需求, 需要在移动端和控制端分别进行ROS的进程. 于是就想到了分布式应该就是在这种场景下使用的.
实验使用的是turtlebot作为动作平台, 远程电脑通过网络对turtlebot进行监控以及操作.
之前根据wiki中的教程, roscore以及各种节点都是运行在turtlebot上的计算机上的. 我们称这个计算机为甲.
远程遥控的这个计算机我们称之为乙.

wiki中的例程是现在甲上启动minimal.launch文件, 因为所有的launch会先检查系统中是否运行roscore, 若没有则启动, 所以roscore会运行在甲上.
之后我们运行slam navigation demo, 这个在乙上进行. 需要配置ROS_MASTER_URI参数, 这个参数告诉节点Master在网络中的位置. 一个ros系统中只能存在一个Master. 然后我们就可以看到 rviz节点是运行在乙上的.

之后先进行一点小小的改动.
1, 先在计算机乙上运行roscore. 需要修改甲以及乙上的ROS_MASTER_URI参数.
2, 在甲计算机上bringup minimal.launch文件, 之后在乙上运行rviz. 结果是可以正常运行.
3, rqt_graph查看节点关系图, 这个图并不能反应出哪台机器上运行了哪些节点.
4, 此时在乙上运行turtlebot上的激光传感器node, 会出错, 错误为无法找到设备. 可以理解为该node是跟计算机的驱动相关的, 无法在网络中进行通信.
根据以上实验可以知道, 不同的节点由于依赖的函数和接口不同, 可以使用的范围也是不一样的. 如果节点是在网络层之上的, 那么在哪台计算机上并不重要了. 如果是在网络之下的, 会依赖于计算机硬件.


阅读(1415) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~