自20世纪七八十年代以来,在计算机技术、传感器技术、电子技术等新技术发展的推动下,机器人技术进入了迅猛发展的黄金时期。
机器人技术正从传统工业制造领域向家庭服务、医疗看护、教育娱乐、救援探索、军事应用等领域迅速扩展。
如今,随着人工智能的发展,机器人又迎来了全新的发展机遇。机器人与人工智能大潮的喷发,必将像互联网一般,再次为人们的生活带来一次全新的革命。
本文将带大家走入智能机器人的世界,一起掀开ROS的神秘面纱,带领大家认识智能机器人的灵魂。
机器人的发展经历了三个重要时期,如图1所示。
电气时代(2000年前):机器人主要应用于工业生产,俗称工业机器人,由示教器操控,帮助工厂释放劳动力,此时的机器人智能程度不高,只能完全按照人类的命令执行动作。在这个时代,人们更加关注电气层面的驱动器、伺服电机、减速机、控制器等设备。
数字时代(2000—2015年):随着计算机和视觉技术的快速发展,机器人的种类不断丰富,涵盖了如AGV、视觉检测等应用。同时,机器人配备的传感器也更为丰富,然而它们仍然缺乏自主思考的能力,智能化水平有限,仅能感知局部环境。这是机器人大时代的前夜。
智能时代(2015年至今):随着人工智能技术的兴盛,机器人成为AI技术的最佳载体,人形机器人、服务机器人、送餐机器人、四足仿生机器狗、自动驾驶汽车等应用井喷式爆发,智能机器人时代正式拉开序幕。
图1 机器人发展的三个重要时期
硬件是智能机器人的坚实载体,软件则赋予智能机器人灵魂。智能机器人的快速发展,对机器人软件开发提出了更高要求。
为了应对这一挑战,并促进智能时代机器人软件的开发与创新,业界亟须开发一款通用的机器人操作系统作为标准平台,机器人操作系统(Robot Operating System,ROS)在2007年应运而生。
ROS发展历程
对于运行越来越复杂的智能机器人系统,已经不是一个人或者一个团队可以独立完成的,如何高效开发机器人,是技术层面上非常重要的一个问题。针对这个问题,斯坦福大学的有志青年们尝试给出一个答案,那就是ROS。
01
ROS的起源
2007年,斯坦福大学的有志青年们萌生了一个想法:能否开发一款个人服务机器人,这款机器人能够协助人们完成洗衣、做饭、整理家务等烦琐的任务,也能在人们感到无聊时,陪伴他们聊天解闷、做游戏。最终,他们将这个想法付诸实践,真的研发出了这样的机器人。
当时,他们深知做出这样一款机器人并不容易,机械、电路、软件等都要涉及,横跨很多专业,光靠他们自己肯定做不到——既然自己做不到,那为什么不联合其他人一起干呢?如果设计一个标准的机器人平台,大家都在这个平台上开发应用,那么应用软件都基于同一平台,应用的分享就很容易实现。这就类似于只要有一部苹果手机,就可以使用任何人开发的苹果手机应用。
初期的机器人原型是由实验室可以找到的木头和一些零部件组成的,后期有了充足的资金,才得以实现一款外观精致、性能强悍的机器人——PR2(Personal Robot 2代)。
在他们的不懈努力下,PR2已经可以完成叠毛巾、熨烫衣服、打台球、剪头发等一系列复杂的任务(见图2)。以叠毛巾为例,这在当时是轰动机器人领域的重要成果,因为这是机器人第一次实现对柔性物体的处理,虽然在100分钟内只处理了5条毛巾,但在学术层面,这个成果推动机器人研究向前走了一大步。
图2 PR2的应用功能示例
在这款机器人中,开发者构建了一套相对通用的机器人软件框架,以便上百人的团队分工协作,这就是ROS的原型。ROS因PR2而生,但很快从中独立出来,成为一个更多开发者使用、更多机器人应用的通用软件系统。
02
ROS的发展
PR2个人服务机器人项目很快被商业公司Willow Garage看中(类似于现在流行的风险投资)。Willow Garage投了一大笔钱给这群年轻人,在资本的助推下,PR2小批量上市。
2010年,随着PR2的发布,其中的软件系统名称正式确定,叫作机器人操作系统(Robot Operating System,ROS)。同年,ROS也肩负着让更多人使用的使命,被正式开源,此后,ROS快速发展,如图3所示。
PR2虽好,但是其成本居高不下,几百万元的价格让绝大部分开发者望而却步。2011年,ROS领域的爆款机器人TurtleBot发布,这款机器人采用扫地机器人的底盘,配合Xbox游戏机中的体感传感器Kinect,可以直接使用笔记本电脑控制,同时,它支持ROS中经典的视觉和导航功能,关键是价格便宜。这款机器人的普及大大推动了ROS的应用。
图3 ROS的发展历程
从2012年开始,使用ROS的人越来越多,ROS社区开始举办每年一届的ROS开发者大会(ROS Conference,ROSCon),来自全球的开发者齐聚一堂,分享自己使用ROS开发的机器人应用,其中不乏亚马逊、英特尔、微软等大公司的身影,参与人数也在逐年增多。
经历前几年野蛮而快速的发展,ROS逐渐稳定迭代,2014年起,ROS跟随Ubuntu操作系统,每两年推出一个长期支持版(Long Time Support,LTS),每个版本支持五年,这标志着ROS的成熟,加快了其普及的步伐。
回顾2007年,ROS的创始团队原本只想做一款个人服务机器人,却意外成就了一款被广泛应用的机器人软件系统。
但由于设计的局限性,ROS的问题也逐渐暴露,为了能够设计一款适用于所有机器人的操作系统,全新的ROS——ROS 2在2017年年底正式发布。
又历经多年迭代,终于在2022年5月底,ROS 2迎来了其首个长期支持版——ROS 2 Humble,这标志着ROS 2技术体系已趋成熟,同时宣告了ROS 2时代的开启。2024年5月,ROS 2的第二个长期支持版本 ROS 2 Jazzy发布,这使ROS 2更加稳定、丰满。
如图4所示,从ROS 2发展的时间轴中,大家可以看到ROS 2的生态正在快速迭代发展。
图4 ROS 2的发展历程
03
ROS的特点
ROS的核心目标是提高机器人的软件复用率。围绕这个核心目标,ROS在自身的设计上也尽量做到了模块化,ROS主要由以下四部分组成。
通信机制:为复杂的机器人系统提供高效、安全的数据分发机制。
开发工具:为不同场景下的机器人仿真、可视化、开发调试提供易用性工具。
应用功能:为多种多样的机器人应用提供接口开放、可二次开发的功能包。
生态系统:联合全球机器人开发者,共同建立活跃而繁荣的开源社区与机器人文化。
“减少重复造轮子”的核心理念促使ROS社区快速发展和繁荣,时至今日,ROS已经广泛用于各种机器人的开发,如图5所示,无论是在机械臂、移动机器人、水下机器人,还是在人形机器人、复合机器人应用中,都可以看到ROS的身影,ROS已经成为机器人领域的普遍标准。
图5 ROS社区中多种多样的应用
正如汽车制造公司不会从头开始生产所有汽车零部件,而是采购来自各专业制造商的轮子、引擎和多媒体系统,智能机器人的开发也一样。ROS社区中有丰富的软件模块和工具,开发者可以将这些模块整合,进一步实现机器人创意和应用。这种方式不仅提高了开发效率,还充分利用了社区的集体力量和丰富经验,使项目更加成熟和可靠。
同时,大量开发者将成果分享回社区,这种开源共建的合作模式使每位开发者都能从他人的经验和创新中受益。通过站在巨人的肩膀上,能加速前行,为智能机器人领域的长远进步贡献力量,积累宝贵经验和深厚积淀。
除此之外,ROS还具备以下特点。
全球化的社区:可以集合全人类的智慧来推进机器人的智能化发展,这些智慧的结晶会以应用案例的形式在社区中沉淀下来。
开源开放的生态:ROS自身及众多应用都是完全开源的,公司可以直接使用ROS开发商业化的机器人产品,缩短了产品的上市时间。
跨平台使用:ROS可以跨平台使用,在Linux、Windows、嵌入式系统中都可以运行。
工业应用支持:ROS 2中新增了很多支持工业应用的新特性和新技术,促使ROS在更多领域中被使用。
ROS 2与ROS 1
在学习ROS 2之前,你也许听说或使用过ROS 1,从名称上看,ROS 2不就是第二代ROS吗,变化能有多大?答案是——非常大!
01
ROS 1的局限性
为什么会有ROS 2?
当然是因为ROS 1有一些问题,具体是什么问题呢?
从ROS发展的历程中,大家似乎可以找到答案。
ROS最早的设计目标是开发一款PR 2家庭服务机器人,如图6所示,这款机器人绝大部分时间独立工作,为了让他具备足够的能力,进行了如下设计。
搭载工作站级别的计算平台和各种先进的通信设备,不用担心算力问题,有足够的实力支持各种复杂的实时运算和应用处理。
由于是单兵作战,绝大部分通信任务在内部完成,因此可以使用有线连接,保证了良好的网络连接,没有数据丢失或者黑客入侵的风险。
虽然最终小批量生产,但是由于成本和售价高昂,只能用于学术研究。
图6 PR 2家庭服务机器人
随着ROS的普及,应用ROS的机器人类型已经发生了天翻地覆的变化,绝大部分机器人不具备PR 2这样的条件,原本针对PR 2设计的软件框架就会出现很多问题,例如:
要在资源有限的嵌入式系统中运行。
要在有干扰的地方保证通信的可靠性。
要做成产品走向市场,甚至用在自动驾驶汽车和航天机器人上。
……
类似的需求导致问题不断涌现,因此,更加适合各种机器人应用的新一代ROS,也就是ROS 2,诞生了。
02
全新的ROS 2
ROS 2肩负变革智能机器人时代的历史使命,在设计之初,就考虑到要满足各种各样机器人应用的需求。
ROS 2重新定义了API函数接口,但使用方法与ROS 1相差不大。此外,ROS 2会用到更多面向对象的实现方法和语言特性,从编程语言的角度来讲,难度确实会提高,不过当大家迈过这道坎后,就会发现编写的程序更具备可读性和可移植性,也更接近真实企业中机器人软件开发的过程。
具体如何编码,请大家少安毋躁,不要搬来一本大部头的编程语言教程,一页一页学习,更好的方式是在项目开发的过程中一边用一边学,本书后续章节也会带领大家一步一步操作。
尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...
时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...
如题 ...
读者评论