Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器人操作系统

ROS,是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统,提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。

来源:维基百科
简介

机器人操作系统(ROS)是机器人中间件(即用于机器人软件开发的软件框架的集合)。虽然ROS不是操作系统,但它提供了为异构计算机集群(heterogeneous computer cluster) 设计的服务,如硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理。基于ROS的进程的运行集合表现在一个图形体系结构( graph architecture)中。尽管机器人控制具有反应性和低延迟的重要性,但ROS本身不是实时操作系统(RTOS),尽管这一点可以通过将ROS与实时代码集成实现。

ROS生态系统中的软件可以分为三组:

  1. 用于构建和分发基于ROS的软件的工具,它们的语言和平台都与ROS无关;
  2. ROS客户端库实现,如roscpp,rospy,和roslisp;
  3. 包含使用一个或多个ROS客户端库的应用程序相关代码的软件包;

独立于语言的工具和主要客户端库(C ++,Python和Lisp)都是根据BSD许可证的条款发布的,因此它们都是开源软件,并且免费用于商业和研究用途。大多数其他软件包都是根据各种开源许可证授权的。这些其他软件包实现了常用的功能和应用,如硬件驱动程序,机器人模型,数据类型,规划,感知,即时定位与地图构建(simultaneous localization and mapping, SLAM),仿真工具和其他算法。

ROS的首要设计目标是在机器人研发领域提高代码复用率。ROS是一种分布式处理框架(又名Nodes)。这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS还支持代码库的联合系统。使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地决定发展和实施工作成为可能。上述所有功能都能由ROS的基础工具实现。

为了实现“共享与协作”这一首要目标,人们制订了ROS架构中的其他支援性目标:

  • “轻便”:ROS是设计得尽可能方便简易。您不必替换主框架与系统,因为ROS编写的代码可以用于其他机器人软件框架中。毫无疑问的,ROS更易于集成与其他机器人软件框架。事实上ROS已完成与OpenRAVE、Orocos和Player的整合。
  • ROS-agnostic库:建议的开发模型是使用clear的函数接口书写ROS-agnostic库。
  • 语言独立性:ROS框架很容易在任何编程语言中执行。我们已经能在Python和C++中顺利运行,同时添加有Lisp,Octave和Java语言库。
  • 测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。
  • 扩展性:ROS适合于大型实时系统与大型的系统开发项目。

ROS目前只能在基于Unix的平台上运行。 ROS的软件主要在Ubuntu和Mac OS X系统上进行测试,尽管ROS社区一直在为Fedora,Gentoo,Arch Linux和其他Linux平台提供支持。另外,虽然可以使用Microsoft Windows的ROS端口,但在这方面目前还没有专门的技术支持。

[描述来源:ROS.org URL:http://wiki.ros.org/ROS/Introduction]

[描述来源:维基百科 URL:https://en.wikipedia.org/wiki/Robot_Operating_System]

发展历史

ROS是基于斯坦福人工智能实验室的STAIR项目开始的,Eric Berger和Keenan Wyrobeik是斯坦福个人机器人计划的创始人。

2008年,他们离开斯坦福大学启动Willow Garage个人机器人计划,随后的开发主要在Willow Garage机器人研究实验室进行,在此期间,二十多个机构的研究人员与Willow Garage工程师在联合开发模式中进行了合作。2009年2月,ROS 0.4 Mango Tango发布;5月,Morgan Quigley等学者联合发表了这段时间的主要研究成果,即ROS系统;8月,官方网站(ROS.org)上线,12月第一份ROS教程发布。随后关于ROS的动态主要在官网上发布。

随后一年,ROS 1.0 发布,并且在工业化产品中得到了广泛应用,如UT Austin的自动驾驶汽车、UPenn的无人机和乐高的头脑风暴。2011年5月其Google I / O上宣布首个纯Java实现ROS,11月,在ROS发行4周年时,视频汇编发布。2012年,ROS团队独立为开源机器人基金会(Open Source Robotics Foundation),4月,DARPA将软件合同授予开源机器人基金会,5月,第一届ROS会议在明尼苏达州圣保罗举行,9月,Rethink Robotics发布了第一款基于ROS的商业机器人。2014年,ROSCon在芝加哥举行,行业参与者首次超过学术界参与者。

在2015年的DARPA机器人挑战赛DRC23个总决赛队伍中,有18支队伍使用ROS,14支队伍使用Gazebo。

第100个存储库是德克萨斯大学奥斯汀分校的rl-texplore-ros-pkg

2011年11月8日:ROS发行4周年,视频汇编发布

目前ROS已经成为了非常流行的系统,几乎在各类机器人产品上都可以找到应用。

主要事件

年份事件相关论文/Reference
2007Andrew Y. Ng等学者的STAIR项目是ROS的基础Quigley, M.; Berger, E.; Ng, A. Y. (2007).STAIR: Hardware and Software Architecture. AAAI.
2009Morgan Quigley等来自多个研究机构的研究人员联合开发了ROSQuigley, M. et al. (2009).ROS: an open-source Robot Operating System.ICRA.

发展分析

瓶颈

ROS的核心功能之一是SLAM,但在ROS中实现SLAM对硬件设备要求很高,因而造成机器人产品的计算资源和存储空间的成本上升;另外,在实现SLAM的过程中还需要对算法进行调整优化,如果有特殊功能(如多房间自主导航)还需要进行额外建模,无法直接用ROS实现。

未来发展方向

ROS仍是目前最好用的框架之一,特别是由于ROS运行时是分散在不同的称为节点(Node)的进程中的,这些节点可以运行在同一或多个处理器上,因此,ROS允许开发者灵活添加各个功能模块而无需整体设计,增加了便利性。其次,ROS包括大量的库,方便搭建原型。并且由于ROS是学界和业界最常使用的软件,容易衡量产品性能。随着目前机器人开发的流行,ROS是机器人开发的首选框架之一。

Contributor: Yuanyuan LI

简介