前言
机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作
方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。 因此自ROS诞生以来,
受到了学术界和工业界的欢迎,如今已经广泛应用于机械臂、移动底盘、无人机、无人车等
许多种类的机器人上。
ROS起源与发展
本世纪开始,关于人工智能的研究进入了大发展阶段,包括全方位的具体的AI,例如斯坦福大
学人工智能实验室STAIR(Stanford Artificial Intelligence Robot)项目,该项目组创建了灵活
的、动态的软件系统的原型,用于机器人技术。在2007年,机器人公司Willow Garage和该项
目组合作,他们十分具有前瞻性的,提供了大量资源进一步扩展了这些概念,经过具体的研
究测试实现之后,无数的研究人员将他们的专业性研究贡献到ROS核心概念和其基础软件包,
这期间积累了众多的科学研究成果。ROS软件的开发自始至终采用开放的BSD协议,在
机器人技术研究领域逐渐成为一个被广泛使用的平台。
Willow Garage公司和斯坦福大学人工智能实验室合作以后,在2009年初推出了ROS0.4,这
是一个测试版的ROS,现在所用的系统框架在这个版本中已经具有了初步的雏形。之后的版
本才正式开启了ROS的发展成熟之路。
ROS常用版本
目前使用人数最多的是Kinect和Indigo这两个Long Term Support版本(长期支持版),因为
ROS是基于Linux(Ubuntu)系统的,所以与之兼容性最好的ubuntu版本分别是Ubuntu16.04,
Ubuntu14.04
ROS到底是什么
ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们
提供了通信架构。ROS虽然叫做操作系统,但并非Windows、Mac那样通常意义的操作系
统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个中间件,基于ROS
的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行时环境,在这个环境
上,机器人的感知、决策、控制算法可以更好的组织和运行。
ROS特点
分布式 点对点
ROS采用了分布式的框架,通过点对点的设计让机器人的进程可以分别运行,便于模块
化的修改和定制,提高了系统的容错能力。
多种语言支持
ROS支持多种编程语言。C++、Pyhton和已经在ROS中实现编译,是目前应用最广的
ROS开发语言,Lisp、C#、Java等语言的测试库也已经实现。为了支持多语言编程,
ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送。通俗的理解就
是,ROS的通信格式和用哪种编程语言来写无关,它使用的是自身定义的一套通信接
口。
开源社区
ROS具有一个庞大的社区ROS WIKI(http://wiki.ros.org/ ),这个网站将会始终伴随着你
ROS开发,无论是查阅功能包的参数、搜索问题还是。当前使用ROS开发的软件包已经
达到数千万个,相关的机器人已经多达上千款。此外,ROS遵从BSD协议,对个人和商
业应用及修改完全免费。这也促进了ROS的流行。
ROS前景
ROS的发展逐渐的趋于成熟,近年来也逐步是面对着Ubuntu的更新而更新,这说明ROS已经
初步进入一种稳定的发展状态,每年进行一次更新的频率同时还保留着长期支持的版本,这
使得ROS在稳步的前进发展同时,也有着开拓创新的方向。目前越来越多的机器人、无人机
甚至无人车都开始采用ROS作为开发平台,尽管ROS在实用方面目前还存在一些限制,但前
途非常光明。
2018年ROS2 1.0版将发布,未来ROS2将如何影响机器人领域,我们拭目以待。相信在人工
智能的大发展、人机交互越来越密切、互联网+的大时代,ROS会发挥出越来越重要的作用。
**注:以上大部分内容为笔者摘抄中国大学MOOC———《机器人操作系统入门》讲义所得,
如有侵权,请联系删稿**## 标题 ##