EDN China > 行业资讯 > 可编程器件 > 开发工具 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

以各种乌龟做造型的ROS,是什么样的机器人开源操作系统?

人机与认知实验室 雷锋网?? 2016年05月31日 ?? 收藏1
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龟”。

入门级发烧友都在问:平衡耳机接口到底好在哪?
单端耳机接口

从2008年至2013年,ROS主要由Willow Garage公司管理维护,但这并不意味着ROS是封闭的系统,相反,它是由众多学校及科研机构联合开发及维护的,这种联合开发模式也为ROS系统生态的构建与壮大带来有力的促进。

2013年,Willow Garage公司被Suitable Technologies公司收购,此前几个月,ROS的开发和维护管理工作被移交给了新成立的开源基金会 Open Source Robotics Foundation。

ROS系统有什么特点?

ROS的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程(即“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。

ROS在某些程度上和其他常见的机器人架构有些相似之处,如:Player、Orocos、CARMEN、Orca和Microsoft Robotics Studio。对于简单的无机械手的移动平台来说,Player是非常不错的选择。ROS则不同,它被设计为适用于有机械臂和运动传感器的移动平台(倾角激光、云台、机械臂传感器)。与Player相比,ROS更有利于分布式计算环境。当然,Player 提供了较多的硬件驱动程序,ROS则在高层架构上提供了更多的算法应用(如集成OpenCV的视觉算法)。

ROS的主要特点可以归纳为以下几条:

(1)点对点设计

入门级发烧友都在问:平衡耳机接口到底好在哪?
单端耳机接口

ROS通过点对点设计以及服务和节点管理器等机制可以分散由于计算机视觉和语音识别等功能带来的实时计算压力,这种设计能适应服务机器人遇到的调战。

(2)不依赖编程语言

ROS支持多种现代高级编程语言,C++、Python和Lisp语言已经在ROS中实现编译,并得到应用,Octave和Java的测试库也已经实现。为了支持多语言编程,ROS采用了一种语言中立的接口定义语言(language-neutral interface definition language,IDL )来实现各模块之间的消息传送。

入门级发烧友都在问:平衡耳机接口到底好在哪?
单端耳机接口

(3)精简与集成

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程序包。

小结

随着技术的发展及人们需求的提高,机器人集成了越来越多的功能、传感器,对用户来说这越来越方便,但对开发者来说恰恰相反,功能的增加带来开发与集成难度迅速上升,机器人操作系统的出现有效缓解了这种问题。

从计算机和智能手机的发展过程来看,合适与成熟的操作系统是智能机器人行业大规模发展和在人们的生活中普及的必要条件。可以预见,未来几年将会出现众多机器人操作系统,在经过充分的发展竞争后将会有为数不多的几个操作系统会发展壮大并占据绝大部分市场,就像曾经的计算机操作系统和现在的手机操作系统。

入门级发烧友都在问:平衡耳机接口到底好在哪?
单端耳机接口

【附】:ROS方面的一些参考资料:

1.《开源机器人操作系统——ROS》(张建伟等编)

2.《机器人操作系统(ROS)浅析》( Jason M. O'Kane著)

3.《Learning ROS for Robotics Programming》(Aaron Martinez等著)

4.《ROS By Example》(Patrick Goebel著)

5. ROS官方wiki


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

机器人? 开源? 通信模块?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈