ROS为Robot Operating System(机器人操作系统)的简写,是一个面向机器人的开源元操作系统(open-source,meta-operating system)。它能够提供相似传统操作系统的诸多功能,如硬件抽象、底层设备控制、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,用于获得、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。ROS的运行架构是一种运用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构,它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据储存。 ROS起源于2007年前后斯坦福大学人工智能实验室的STAIR(Stanford Artificial Intelligence Robot)项目与Willow Garage公司的个人机器人项目(Personal Robotics project)之间的合作。在2009年初推出了ROS0.4,现在所用系统的框架在这个版本中已初具雏形。经过近一年的测验后,于2010年初推出了ROS1.0版,并在当年三月份推出了正式发行版本:ROS Box Turtle,到现在(2016年5月)已经发行了10个版本,最新版本是ROS Kinetic Kame。比较有趣的是,ROS各版本均以龟作为发行代号,至今已规划出10种造型奇特的“ROS龟”。 特点 ROS的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程(即“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS也支持一种相似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。 ROS在某些程度上和其他常见的机器人架构有些相似之处,如:Player、Orocos、CARMEN、Orca和Microsoft Robotics Studio。对于简单的无机械手的移动平台来说,Player是非常不错的选择。ROS则不一样,它被规划为适用于有机械臂和运动传感器的移动平台(倾角激光、云台、机械臂传感器)。与Player相比,ROS更有利于分布式计算环境。当然,Player 提供了较多的硬件驱动程序,ROS则在高层架构上提供了更多的算法使用(如集成OpenCV的视觉算法)。 ROS的主要特点可以归纳为以下几条: (1)点对点规划 (2)不依赖编程语言 ROS支持多种现代高级编程语言,C++、Python和Lisp语言已经在ROS中实现编译,并得到使用,Octave和Java的测验库也已经实现。为了支持多语言编程,ROS采用了一种语言中立的接口定义语言(language-neutral interface definition language,IDL )来实现各模块之间的消息传送。 ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译运用的CMake工具使它很容易的就实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的使用程序为ROS显示库的功能,这就允许了对简单的代码超越原型进行移植和重新运用。作为一种新加入的有优势,单元测验当代码在库中分散后也变得非常的容易,一个单独的测验程序可以测验库中很多的特点。 ROS不修改用户的主函数,所以代码可以被其他的机器人软件运用。其优点是ROS很容易和其他的机器人软件平台集成。例如,在计算机视觉方面,ROS已经与OpenCV实现集成。在驱动、导航和模拟器方面,ROS已经与Player系统实现集成。在规划算法方面,ROS也已与OpenAVE系统实现集成。 (4)便于测验 为机器人开发软件比其他软件开发更具挑战性,主要是因为调试准备时间长,且调试过程复杂。况且,因为硬件维修、经费有限等原因,不一定随时有机器人可供运用。ROS提供两种策略来搞定上述问题。 1.精心规划的ROS系统框架将底层硬件控制模块和顶层数据处理与决策模块分离,从而可以运用模拟器替代底层硬件模块,独立测验顶层部分,提升测验效率。 2.ROS另外提供了一种简单的方式可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。通过这种方式,每次运行机器人可以获得更多的测验机会。例如,可以记录传感器的数据,并通过多次回放测验不一样的数据处理算法 (5)开源 ROS遵从BSD协议,这给了运用者很大的自由,使开发者可以清楚的查看、自由的运用源代码,如果有需要,可以根据不一样的系统及硬件环境对源代码进行修改,或者进行二次开发。 (6)强大的库及社区: ROS提供了广泛的库文件实现以机动性、操作控制、感知为主的机器人功能。同时由于其开源特点,ROS的支持与发展依托着一个强大的社区。其官方网站尤其关心兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。 小结 随着技术的发展及人们需要的提升,机器人集成了越来越多的功能、传感器,对用户来说这越来越方便,但对开发者来说恰恰相反,功能的增加带来开发与集成难度快速上升,机器人操作系统的出现有效缓解了这种问题。从计算机和智能手机的发展过程来看,合适与成熟的操作系统是智能机器人行业大规模发展和在人们的生活中普及的必要条件。可以预见,未来几年将会出现众多机器人操作系统,在经过充分的发展竞争后将会有为数不多的几个操作系统会发展壮大并占据绝大部分市场,就像曾经的计算机操作系统和现在的手机操作系统。 |