认识移动机器人
本篇内容将帮助大家认识移动机器人与其开发中的重要框架——机器人操作系统。
首先我们先介绍一种在我们身边最为常见的移动机器人——扫地机器人。
扫地机器人作为目前出货量最大的一种移动机器人类型,已成为一种比较常见的家用电器,相信大家在生活当中也一定见到过。
目前中高端的扫地机器人已经装备了激光雷达、相机、超声波、红外等多种传感器,集成SLAM、路径规划、多传感器融合等众多算法,确保在家庭复杂的环境中依然可以高效的完成扫地、拖地等功能。
这样一个小小的扫地机器人,就是一个典型的移动机器人系统,我们将从这里展开,正式开始移动机器人原理与应用的学习。
1.1.1 移动机器人发展现状
机器人诞生之后,首先在工业领域得到了广泛的应用,随着大范围移动的需求,移动机器人这一分支也逐渐产生。时至今日,移动机器人已经在众多领域得以应用,我们先通过两个场景案例来直观感受下目前移动机器人的发展现状。
工业移动机器人,也就是我们常说的AGV和AMR(AGV:Automated Guided Vehicle,自动导引运输车 ;AMR:Autonomous Moblile Robot,自主移动机器人),是目前移动机器人应用非常广泛的一个方向,可能在我们的生活当中并不常见,但却和每一个人都息息相关,比如电商会利用AMR构建智能化仓库;在快递公司的仓库中,包裹也是被类似的机器人快速分拣到去往不同目的地的传送带上;还比如一些生产电子产品的工厂,也可以利用类似的移动机器人,替代原本需要很多人才能完成的物料搬运工作。
如果大家觉得工业场景距离我们生活稍远,那么接下来我们就再举一个离我们生活很近的场景——自动驾驶。
自动驾驶汽车也是一种典型的移动机器人系统,为了保证绝对安全的驾驶过程,汽车上装配了非常多的传感器,以及极为复杂的控制算法。
以上,我们就先通过这两个场景案例来初步认识一下移动机器人。
移动机器人的概念
移动机器人的概念非常广泛,自动驾驶汽车、无人机、水下机器人等各种位置可变的机器人都可以算作是“移动机器人”,在这里我们先划分一下界限,本书所讲的“移动机器人”概念,主要指地面上的移动机器人。
移动机器人:是一个集环境感知、动态决策与规划、行为控制与执行等多功能于一体的综合系统。
热点研究领域:环境感知与建模、定位与导航、环境理解、多机器人协同、人机交互等。
移动机器人的发展趋势
发展趋势>
视觉SLAM,实现多传感器融合;,深度学习,加强机器人对环境的理解;,多机协作,机器人规模化集群作业;,数字孪生,针对智能制造的全生命跟踪;,人机共存,提高生活便捷性,释放劳动力;,…,移动机器人市场发展情况
接下来我们通过工业移动机器人近几年的销量来看一下应用市场的增长情况。
图1-4 2018-2020全球工业移动机器人市场规模情况(左),图1-5 2018-2020全球工业移动机器人市场分产品销售情况(右),如图1-4所示,2018-2020年,全球工业移动机器人销售数量和金额逐年增长;从平均销售收入来看,2018-2020年呈现逐年递减的态势,这说明随着市场和技术日益完善,产品单价在逐渐下降。
如图1-5所示,从销售的机器人产品结构来看,主要是由AGV和AMR组成,AGV是自动引导车,AMR是自主移动机器人,具备更高的智能化水平;从占比变化趋势来看,AMR销售规模增长较快。随着机器人智能化算法的成熟与商业落地,AMR还有进一步的增长空间。对制造业柔性的需求、加快产品上市周期、降低成本以及对提高安全性等需求因素,将驱动AMR市场保持高速增长,全球移动机器人中对AMR的需求、收入和销售额预计很快也会超过AGV。
不过,对于越来越复杂的机器人系统,已经不是一个人或者一个团队可以独立完成的了,如何高效开发机器人,是技术层面上非常重要的一个问题,针对这个问题,2007年一群斯坦福大学的有志青年尝试给出一个答案,那就是机器人操作系统。
1.1.2 机器人操作系统发展与现状
移动机器人操作系统(ROS)
机器人操作系统,Robot Operating System ,简称ROS,历经十几年的发展,已经成为机器人开发中的普遍标准,那么这样一个软件系统,是如何诞生与发展的呢,接下来我们一起来学习机器人操作系统的发展与现状。
2007年,一群在斯坦福大学求学的年轻人,诞生了这样一个想法,我们有没有可能做一款个人服务机器人,帮助我们完成洗衣做饭收拾家务等一切我们不想做的事情,甚至还可以在我们无聊的时候,陪我们聊天玩耍。最后,他们真的做出来了。
当时,他们深知做出这样一款机器人并不容易,机械、电路、软件等都要涉及,而且横跨很多个专业,他们自己肯定是做不到的,此时他们诞生了这样一个想法:既然自己做不到,那为什么不联合所有人一起干呢?如果我们设计一套标准的机器人平台和其中的软件,那岂不是可以让所有人都在这样一个平台上做应用开发了么,因为应用软件都基于统一的平台,所以我们都有机会共享其他人开发的应用。
说干就干,初期的机器人原型是用实验室可以找到的木头和一些零部件组成的,后期有了充足的资金,才得以实现如图1-7中这款外观精致、性能强悍的机器人——PR2,Personal Robot 2代。
PR2这款机器人中的软件框架就是我们现在看到ROS的原型,所以ROS因这款个人服务机器人而生,很快也从中独立出来,成为了一款用于更多机器人的软件系统。
如图1-8所示,这是ROS发展历程中一些重要的时间点。
图1-8 ROS发展历程,从这条ROS发展的时间轴中,我们不仅可以了解到ROS的发展过程,更重要的是熟悉ROS诞生的原因,以及对之后发展的影响。目前ROS已经在众多机器人中广泛应用,无论是我们平时开发所使用的机器人,还是实际场景中真正运行的机器人。
时至今日,ROS已经广泛用于各种机器人的开发,无论是机械臂、移动机器人、水下机器人,还是人形机器人、复合机器人,统统都可以看到ROS的身影,可以说ROS已经成为机器人领域的普遍标准,如果我们想要开发一款机器人,也可以参考链接http://robots.ros.org中所列出的所有型号,大部分机器人在ROS中的软件都是开源的,这些都可以作为我们开发过程中的重要参考。
历经了十几年的发展,接下来我们来看下ROS社区活跃度的情况。
ROS全球社区有几个重要网站>
第一个是answers.ros.org,这是一个ROS问答网站,大家可以在这个网站上提出任何关于ROS的问题,全球很多开发者都很乐意回答我们的问题;第二个是wiki.ros.org,这是ROS的维基百科,记录了ROS教程和各种功能包的使用;第三个是discourse.ros.org,这是ROS论坛,关于ROS开发的新鲜事都可以在这里发表和查看,比如ROS的活动、新功能包的发布等等,以上就是我们常用到的三个网站。
另外两个网站,index.ros.org是ROS各种资源的一个索引网站,packages.ros.org是ROS功能包存储的数据库,大家有兴趣也可以看一下。
这几个网站的使用情况基本就可以代表ROS社区的活跃度了。
图 ROS社区活跃情况,
图 ROS功能包下载次数统计地域排名,总而言之,通过这些数据,我们可以看到ROS发展迅猛,正在助推机器人革命这一波大浪潮,大家每一个人在其中都大有可为。
ROS2
有人之前可能用过ROS或者听说过ROS2,在这里我们也简单介绍下ROS2,基于之前我们所提到的ROS诞生的原因,ROS2也应运而生,ROS2在2014年提出,2015年开始迭代,2017年推出第一个正式版,此后也在积极的推进。
与ROS1不同的是,ROS2诞生的目的就是为了让更多机器人使用,所以在设计上更加符合技术的发展方向,也运用了很多最近的技术框架。从设计目标上来讲,ROS2会着重支持以下5个方面>
比如支持多机器人协同控制,这在ROS1中是没有成熟的控制方法的;铲除原型与产品之间的鸿沟,也就是提高ROS自身的稳定性,让ROS可以直接用于产品;支持微控制器,不论是笔记本电脑还是嵌入式系统,都可以使用ROS;支持实时控制,在某些对实时性要求比较高的底层控制方面,增加了更多保障机制;跨平台支持,Linux、windows、MacOS都可以使用。这五点都是在目前的ROS1当中存在缺陷的地方。
但是ROS2目前还处于快速迭代当中,很多功能还不稳定,资料也比较匮乏,所以本系列内容依然以ROS1为主,只要大家熟悉ROS1之后,未来过渡到ROS2也会非常平滑,其中涉及到的众多概念和编程方法都是类似的。
无论如何,ROS都是一个偏向“工具”性质的机器人软件框架,实践是至关重要的,希望大家可以跟随我们的书本内容,加强实际操作的锻炼,这样才能掌握这个重要的开发工具。