ROS中的通信架构与通讯方式
关于PR2
百度百科:
PR2 (Personal Robot 2, 个人机器人2)是威楼加拉吉生产的机器人。它的前身是斯坦福研究生埃里克·伯格和基南·威罗拜克开发的PR1机器人。PR2价格高昂,2011年零售价高达40万美元。PR2现主要用于研究。
PR2有两条手臂,每条手臂七个关节,手臂末端是一个可以张合的钳子。PR2依靠底部的四个轮子移动。在PR2的头部,胸部,肘部,钳子上安装有高分辨率摄像头,激光测距仪,惯性测量单元,触觉传感器等丰富的传感设备。在PR2的底部有两台8核的电脑作为机器人各硬件的控制和通讯中枢。两台电脑安装有Ubuntu和ROS。
依靠强大的ROS平台,PR2已能够独立完成多种复杂的任务。到如今,PR2能够自己开门,找到插头并给自己充电,能打开冰箱取出啤酒,能打简单的台球等等。
由于PR2价格高昂而且能力还达不到商业应用的要求,如今PR2主要用于研究。到2010年底,仅斯坦福,麻省理工学院,卡内基梅隆大学等美国少数大学和一些研究机构拥有PR2。
对于PR2这种众多功能模块集成的机器人怎么实现各个模块之间的通信呢?怎么实现到一些复杂的动作的呢?这就用到强大的ROS系统;ROS产生于PR2,同时ROS使PR2更加强大~
通讯架构
node(节点)
- ROS的进程、独立运行的可执行文件
- pkg里的可执行文件运行的实例
- 不同的节点可以使用不同的编程语言,可以分布在不同的主机上
- 节点在系统中的名称必须是唯一的
例如PR2
这种众多功能模块集成的机器人,每个功能模块都是一个node
,因此ROS
的节点都是一功能来划分的,不同的功能用不同的node
来实现;
启动node
- 启动node
rosrun [node_name]
- 列出当前运行的node信息
rosnode list
- 显示某个node的详细信息
rosnode info [node_name]
- 结束某个node
rosnode kill [node_name]
master(节点管理器)——控制中心
作用:
- 每个node(节点)启动时都要向master注册,即master为节点提供名和注册服务
- 管理node(节点)之间的通信;
- 跟踪结合记录话题、服务通信,辅助节点相互查找、建立连接;
- 提供参数服务器,节点使用此服务器存储和检索运行时的参数;
因此在我们启动ROS程序之前,第一步就是启动master
;
启动master
roslaunch
当我们需要同时启动多个节点,需不需要多次在终端启动node
呢?显然没有必要,ros
给我们提供了roslaunch
命令;
- 启动多个master和多个node
roslaunch