李振宇 2017-09-05发布 阅读:1090次 ⋅ ROS  开源  机器人操作系统  机器人软件开发   ⋅

当谈及机器人开发的时候,人们总是很容易想到Android、Linux这些软件系统,他们作为传统的机器人软件开发平台一直就受到从业人员很大的关注。但近年来,有一个机器人软件开发平台异军突起,它像瑞士军刀一样整合了机器人开发所需要的大部分软件模块,在全球范围内引起了极大的关注,它就是ROS。

ROS是Robot Operating System的缩写,一般将它翻译为机器人操作系统。听到操作系统,相信大家总能想起几个典型代表,比如Windows、Linux 、IOS等。但我们这里说的ROS,它其实并不是传统意义上的操作系统,它和以上提到的几个系统有着本质的区别。ROS并不负责计算机具体的进程管理和调度,实际上它只是运行在上述操作系统上的一个针对机器人开发的软件平台,它提供了一系列的开发工具、库和规范,以便对机器人硬件的抽象和控制、各功能模块间的通讯和管理。本质上是一个通信中间件。

他最初是斯坦福大学人工智能实验室一个研究项目,后来则交由Willow Garage公司继续研发。到今天为止,ROS已经走过了十个年头,从最初的Box版到最新的Lunar版,已经累计发布了11个正式版本,而在今年年底还会发布全新架构的ROS 2.0。

ROS一个重要的特点是开源,它所有的代码都是免费公开发布的,在它的背后,有一个强大的开源社区对其进行支持。这极大地促进ROS软件各个层次的改进和更新,使得ROS整体的稳定性、通用性大大增强。

大家都知道,开发一个机器人产品实际上是一件很难的事情。因为一个可靠的机器人产品包含的东西实在是太多了。一般来说,一个机器人包含硬件设备、软件架构和接口几个方面。它涉及到了机械设计、力学分析、电路设计、编程、算法优化等诸多学科的知识,这将是一个庞大的系统工程。很多时候,我们一个单位或者个人是无法承担如此巨大的研发任务的,大家一般都是在自己擅长的领域慢慢耕耘。比如A单位擅长SLAM的研发,B单位则擅长计算机视觉的开发。如何让他们以低成本方式相互结合就成了一个很重要的命题。这也是设计ROS的一个重要目标。

ROS采用了独特的分布式结构,运行时由多个松耦合的进程联系起来,不同进程之间可以进行通信,但他们并不需要知道对方是如何实现的。借用上面的例子来说,就是A单位可以自己编写一个SLAM功能的进程,B单位可以编写一个计算机视觉的进程,然后再通过ROS将他们联系起来构成一个系统,彼此间不需要相互支持。

值得一提的是,ROS也支持多种编程语言,如C++、Python、LISP等,这也就是说不同的进程可以使用不同的编程语言开发。比如A单位习惯用Python做开发,B单位习惯用C++做开发。为了达到功能整合的目标,通过使用ROS,它们就不需要花费大量时间去做移植重构,直接使用它们所习惯的编程语言开发即可。因此ROS的这个特点能够大大提高开发效率。

总的来说,作为一个开源系统,ROS的根本目的在于打造一个能够整合不同研究成果和资源,方便代码复用和算法发布的通用软件平台。这样的特性将很大程度上满足广大开发者的需求。在未来,这种具有开放性、包容性的开源软件平台将会具有强大的竞争力。


评论

您不能发表评论,可能是以下原因
1、登录后才能评论
2、作者关闭了评论