SLAM在机器人中的应用

SLAM在机器人中的应用​

伴随着人工智能、机器人、无人驾驶等技术的蓬勃发展,越来越多的相关智能产品出现在了我们的日常生活中,作为底层技术基石之一的SLAM也逐渐被大家所熟知。下面通过“机器人对于人类的意义”、“机器人为什么需要SLAM技术”和“搭载SLAM算法的机器人有哪些用途”这样三个问题,来探讨SLAM在机器人中的应用。

温馨提示

本篇文章已经收录在我最新出版的书籍《机器人SLAM导航核心技术与实战》,感兴趣的读者可以购买纸质书籍来进行更加深入和系统性的学习,购买链接如下:

一、机器人对于人类的意义

从某种意义上说,人类的躯体延展了人类的智能。互联网技术和人工智能技术则是对人类智能的又一次延展,而机器人又对人工智能技术进行了延展,如图1所示。这种延展性,是机器人对于人类的重要意义。

 

1  人类躯体和智能的不断延展

人类学会使用工具,可以看成是人类躯体的第一次延展。试想一下在不会使用工具的远古时代,人类祖先只能靠采摘树上的水果维持生计,就连那些美味的坚果由于无法被牙齿咬开而十分遗憾地远离了人类的食谱。当人类学会了使用简单的工具(比如石斧、长矛、弓箭等),就可以用这些工具劈开坚硬的食物外壳、捕杀野兽以及保卫家园,这极大促进了人类的进步。再到后来学会制造和使用青铜器、铁器、汽车、轮船、飞机等一系列更先进的工具,这大大突破了人类躯体自身所能触及大自然的极限。

机器人的出现,可以看成是人类躯体的第二次延展。机器人相比于以往的单纯工具显然具有更高的自由度,能解决更复杂的问题。通常可以将人类的社会活动归结为人适应自然环境并改造自然环境的过程,站在技术的角度讲就是人的社会活动是人与自然环境时时刻刻发生的交互行为的总和。机器人作为人类与自然环境发生交互行为的重要工具,机器人的行为当然也就要围绕与自然环境的交互而展开。机器人通过搭载的传感器对环境进行感知,即传感器是机器人系统的输入端;机器人通过搭载的执行机构与环境进行交互,即执行机构是机器人系统的输出端;决策作为机器人的中枢系统连接输入端和输出端,决策由低智能的认知层和高智能的逻辑推理层构成,常见的人脸识别、语音识别、机器人定位、机器人避障等都属于低智能的认知层,而复杂的逻辑推理目前在机器人中还比较难实现。

而互联网技术的普及是对人类智能的又一次延展,我们可以借助互联网巨大的信息存储以及检索能力来管理我们的知识(以前靠人脑维护这些知识则需要消耗掉我们很大一部分的心智),同时互联网提供的便捷交流渠道加速了人类认识并改造自然的进程。伴随着互联网技术而兴起的人工智能技术则是对人类智能的进一步延展,如果将传统互联网技术看成是信息存储、检索和传播的载体,那么人工智能技术则可以看成是对载体上的信息进行挖掘并应用新信息的一种工具。简单点说就是传统互联网技术本身并不生产信息而只是起到信息传播的作用,信息仍然由使用它的人产生;而人工智能技术则可以从人产生的信息中生成新信息,即机器能发掘出人不知道的一些知识经验。

如果人工智能技术仅仅停留在虚拟的网络和数据之中,那么其挖掘并利用新知识的能力很难扩展开来。可以说机器人是人工智能技术应用能力的有效延展,特别是能自主移动的机器人极大地扩展了人工智能技术的应用范围,而基于SLAM的自主导航技术正是当下实现机器人自主移动的热门研究领域。

二、机器人为什么需要SLAM技术

虽然我们还没有彻底搞清楚人类智能的本质以及生命存在的意义这个终极哲学问题,但就目前取得的进展而言,人工智能技术和机器人无疑极大地增加了人与自然环境交互的可能性。让机器人成为人的第二躯体,能极大地延展人与自然环境交互的范围和速度。当从量变发展为质变时,就有可能让人类摆脱自身躯体的局限而取得跨越式的发展。而这样的机器人应该具备高度的自主性,让机器人实现完全自主化也就成了人类一直以来的梦想。所谓完全自主化,就是在没有外界指令的干预下,机器人能通过传感器和执行机构与环境自动发生交互,并完成特定的任务。比如,自主与人类发生语言和情感交流,自主识别、抓取和操控物体,自主移动等。完成这些特定任务的每一种底层技术都可以认为是机器人时代的一种基础设施,比如由语音识别、语音合成、自然语言理解等技术组成的语音交互基础设施,由目标识别、运动规划、行为决策等技术组成的物体抓取基础设施,由建图、定位、路径规划等组成的自主移动基础设施等。

  • 自主移动 ---> SLAM导航
  • 自主抓取
  • 自主交互
  •  ……

由于我们生活在一个三维空间环境中,在环境空间中移动是机器人与环境发生交互最基本的形式之一,因此自主移动也被誉为机器人自主化的“圣杯”。换句话说,要实现机器人的完全自主化,就必须先实现机器人的自主移动。试想一下如果人类拥有一个非常聪明的脑瓜子但却被限制在固定的地方不能移动,那么人与人之间的交流将很大程度地被阻断,人类的分工协作、社会生产、认识并改造自然的能力也将不复存在。既然自由移动对于人类这么重要,那么作为人类第二躯体的机器人,其自主移动的重要性也就不言而喻了。

1.什么是自主移动

自主移动实质上就是解决从地点A到地点B的问题,这个问题看似简单,实则非常复杂。当向机器人下达移动到地点B的命令后,机器人不免会问出3个颇具哲学性的问题,即“我在哪”、“我将到何处去”和“我该如何去”如图2所示。

 

2  自主导航的本质

经过近几十年来的研究,形成了一套有效解决机器人自主移动的方案,即SLAM导航方案。SLAM导航方案由建图(mapping)、定位(localization)和路径规划(path planning3大基本问题组成,这3大问题互相重叠和嵌套又组成新的问题,也就是SLAM问题、导航问题、探索问题等如图3所示

 

3  SLAM导航方案

2.什么是SLAM

SLAM用于解决定位和建图两个问题,也就是常说的同时定位与建图。要搞清楚SLAM是怎么来的,就要先了解单独的定位和建图这两个子问题。

对于单独的定位问题来说,是在已知全局地图的条件下,通过机器人传感器测量环境,利用测量信息与地图之间存在的关系求解机器人在地图中的位姿。定位问题的关键点是必须事先给定环境地图,比如分拣仓库中货架上粘贴的二维码路标,就是人为提供给机器人的环境地图路标信息,机器人只需要识别二维码并进行简单推算就能求解出当前所处的位姿,如图4所示

4  基于已知全局地图的定位问题

而对于单独的建图问题来说,是在已知机器人全局位姿的条件下,通过机器人传感器测量环境,利用测量地图路标时刻的机器人位姿和测量距离与方位信息,很容易求解出观测到的地图路标点坐标值。建图问题的关键点是必须事先给定机器人观测时刻的全局位姿,比如装载了GPS定位的街景绘制汽车,汽车GPS提供全局定位信息,测量设备基于GPS定位信息完成对街道建筑物的测绘,如图5所示

 

5  基于已知全局位姿的建图问题

很显然,这种建立在环境先验基础之上的定位和建图具有很大的局限性。将机器人放置到未知环境(比如火星探测车、地下岩洞作业等场景),前面这种上帝视角般的先验信息将不再存在,机器人将陷入一种进退两难的局面,即所谓的“先有鸡还是先有蛋”的问题。

 

6  未知环境是先建图还是先定位

如果没有全局地图信息,机器人位姿将无法求解;没有机器人位姿,地图又将如何求解呢?于是将机器人位姿量与地图路标点作为统一的估计量进行整体状态估计,这是SLAM问题研究的起源。简单点理解的话,SLAM的建图与定位过程如图7所示。

 

7  SLAM的建图与定位过程

当机器人来到一个完全陌生的环境之中,机器人通过传感器(比如激光雷达)对该位置上能观测到的环境物体进行扫描,这样就获得了一个很小的局部初始地图。接着机器人就可以在移动的过程中利用这个局部初始地图进行定位,这样就能获得下一个时刻机器人的位置。当然在移动的过程中,机器人会扫描到环境中新的物体。这样往复,机器人就可以不断利用以往的地图进行定位,同时在定位的基础上对以往地图进行更新。当然,SLAM算法的实际实现过程要比这个复杂得多,涉及到概率论、状态估计、优化理论、感知融合等,这里就不具体展开了。

3.什么是SLAM导航

其实机器人的自主导航,就是在回答“我在哪”、“我将到何处去”和“我该如何去”这样三个问题。仅仅依靠SLAM技术所提供的建图和定位功能还无法实现机器人的自主移动,还需要将SLAM与导航算法以及人工规则等相结合,这种结合也就是所谓的SLAM导航。SLAM一方面为导航算法中的路径规划提供机器人定位信息,另一方面为导航算法提供可动态更新的全局地图。而导航算法主要解决序贯决策问题,包括障碍物度量、路径规划、运动控制等研究课题。

 

8  SLAM导航

由于SLAM和导航是两个相对独立的系统,通常SLAM在导航应用中有两种模式。第一种模式,SLAM先运行建图模式构建好环境地图后将地图保存,接着载入已保存的全局地图并启动SLAM重定位模式提供定位信息。第二种模式,SLAM直接运行在线建图模式,建图过程中直接提供地图和定位信息。后一种模式下的SLAM导航也称为环境探索,利用已有地图进行导航,然后导航控制机器人移动的过程又反过来更新了地图。

三、搭载SLAM算法的机器人有哪些用途

目前以SLAM导航技术为支撑的自主移动应用领域已经十分广泛了,涵盖航天、军事、特种作业、工业生产、智慧交通、消费娱乐等众多领域。航天领域的典型应用要属火星探测车,在遥远的星球上自主移动无疑是一项必备的技能。军事上借助自主移动的坦克、机器人士兵、飞机等,可以打一场无人化战争。在特种作业场合的自主移动机器人将发挥无可替代的作用,比如管道清洗、矿井作业、抢险救援、排爆、安防巡检、深海勘探等。农业上的应用,比如自主栽培、自主除草、自主施肥、自主采摘等。还有自动驾驶汽车、机器人终端物流配送、全自动化工厂、机器人智慧养老、机器人餐厅、家庭服务机器人等。总之,就是用机器人去替代人类各种体力活的场合都用得到SLAM。下面结合更详细的案例,来说明这些用途的广泛性。

 

9  SLAM在机器人中的应用

1.导览机器人

如果一台平板电脑被赋予了自动行走的能力,将具备巨大的应用潜力。这里将要介绍的机器人讲解员、迎宾机器人、引导机器人等案例就是其中的一些典型应用,这些机器人通过SLAM技术实现自主移动,并通过搭载的可触摸平板电脑终端以及语音交互技术与用户进行交互。

像博物馆、展览馆、陈列室这类以讲解游览为主的应用场景,机器人讲解员能很好地替代人类讲解员高度机械重复的工作。在博物馆的入口,游客可以挑选一台空闲的机器人讲解员,然后从机器人屏幕推荐的游览路线中选择出一条感兴趣的路线,接着就可以在机器人的带领下游览路线中的各个展台并听取机器人在对应展台的讲解。

 

10  机器人讲解员

当然在机器人讲解员的基础上添加专门的知识库以及语音交互技术的支持,这样的机器人就可以充当迎宾机器人。机场问询服务、医院导诊、银行大堂接待、公司前台等应用场景,迎宾机器人都可以充当一名辛勤的工作人员耐心提供咨询服务以及相应引导。

 

11  迎宾机器人

如果将地图以及货架商品等信息录入机器人,那么机器人就可以提供更加详细以及贴切的查询指引服务。比如在大型商超,顾客可以通过机器人的指引从成千上万件商品中找到需要商品的摆放位置。如果是在图书馆的话,可以用类似的方法找到想要查阅书籍的摆放位置。引导机器人除了可以为顾客提供查询引导服务外,还可以充当自主移动的购物车,并且是一块具有移动属性的天然广告牌。

 

12  引导机器人

2.安防机器人

对于变电站、计算机机房、厂房等环境严酷恶劣的场景,日常的设备巡检就可以交由机器人来完成,工作人员只需在远程进行分析判断即可。利用SLAM自主移动技术、高清摄像头、机械手臂、无线通信等,就可以搭建起一台巡检机器人。

 

13  巡检机器人

上面提到的巡检机器人都是与机器设备打交道,而下面这种安保机器人则主要是与人打交道。在巡检机器人的基础上,增加以人工智能技术为依托的各种物体识别、行为识别、舆情监测等算法,就可以让机器人在机场、游乐园、大型活动现场等场景提供日常安保服务。安保机器人上搭载的各种传感器(红外夜视、气体传感器、火焰传感器、金属探测器等)以及人工智能算法,可以对各种违禁品(比如打火机、酒精、管制刀具等)、可疑包裹、异常行为等进行识别并预警。

 

14  安保机器人

由于近年来疫情在全世界的大流行,防疫机器人也越来越受重视。体温检测、戴口罩识别、紫外线消杀、雾化消毒、空气净化等防疫工作,也越来越多的由防疫机器人来分担完成。

其实将安保机器人稍加改装,摇身一变就成了一台防疫机器人。

 

15  防疫机器人

3.清扫机器人

相信大家一定已经对家用扫地机器人不陌生了,最早的扫地机器人仅依靠红外线传感器和碰撞传感器进行乱撞式的导航,也就是走到哪撞到哪,撞到障碍物后就换一个方向继续前进。这种早期的扫地机器人显然非常不智能且工作效率极低,后来的一种改进方案是扫地机器人主动向天花板投射散色的红外线,如果扫地机器人能收到反射回来的红外光就说明扫地机器人钻进了桌子或椅子底下,这种方式能在一定程度上保证扫地机器人不被陷入导航困境,但是还是显得比较“智障”。那么要如何让扫地机器人显得不那么“智障”呢?目前主流的扫地机器人基本都采用SLAM技术进行导航,主要是激光SLAM方案和视觉SLAM方案。激光雷达一般采用低成本的单线激光雷达,视觉传感器则包括单目、双目和RGB-D相机。目前搭载单线激光雷达的激光SLAM导航基本是扫地机器人的标配,一些稍微高端点的扫地机器人还会在搭载单线激光雷达的基础上搭载额外的双目或RGB-D相机之类的进行更智能的避障辅助。

 

16  家用扫地机器人

随着SLAM以及无人驾驶技术的逐步成熟,扫地机器人也越来越多的应用于环卫、公共场所、大型空间的清扫。环卫清扫机器人典型应用场景包括机场、火车站、大型商超、工地厂房、游乐园、公园等,传统的环卫车需要人来驾驶,而在传统环卫车上加装激光雷达以及SLAM导航算法就能变成一台无人驾驶环卫车,这样能大大节省人力提高效率。

 

17  无人驾驶环卫车

4.配送机器人

上面提到的几种机器人大都是提供某种服务或者完成某种作业任务,这里将介绍自动运载货物的机器人应用。用SLAM导航技术给机器人赋能后,机器人或无人车便能完成货物的运输和投递任务。比较常见的应用包括送餐机器人、送快递机器人、酒店配送机器人等。

 

18  送餐机器人、送快递机器人、酒店配送机器人

其实,除了送餐、送快递、送酒店物品外,具备自主导航能力的机器人还可以配送很多其他东西。比如在智能泊车停车场,泊车机器人可以将汽车自动运送到指定车位。在港口,货运机器人可以将轮船上卸载的集装箱运送到码头对应的存放区域。在工厂,AGV自主导航小车可以在各个产线之间帮忙运送各种生产原料以及成品。在养殖场,自主导航机器人可以完成饲料投喂以及农副产品收捡。

19  智能泊车机器人

 

20  港口集装箱货运机器人

 

21  工厂AGV自主导航小车

 

22  养殖场自动投喂机器人

当然生活中需要配送货物的场景绝不仅以上列举的这些,也就是说具备SLAM导航能力的配送机器人具有非常广阔的应用范围。

5.家庭服务机器人

所谓家庭服务机器人,简单点理解就是“机器人保姆”。端茶递水、扫地做饭、照看小孩、陪伴老人等,可以说服务机器人是机器人发展的终极目标之一。

23  家庭服务机器人

当然这些功能非常炫酷的家庭服务机器人目前还比较少见,而更多是以智能玩具的角色出现。比如智能逗猫机器人、游戏对战机器人、教育陪伴机器人等。

24  智能逗猫机器人

 

25  大疆第一人称游戏对战机器人

 

26  教育陪伴机器人

6.农业机器人

虽然人类已经踏进了工业化的时代,但农业依然还没有实现完全自动化。机器人(特别是搭载SLAM导航技术的自主移动机器人)在农业领域的应用,有望实现农业生产的完全自动化。比如农业采摘机器人、农药喷洒机器人、自动割草机器人等。

 

27  农业采摘机器人

 

28  农药喷洒机器人

29  自动割草机器人

7.无人驾驶

有很多非技术的朋友会认为无人驾驶汽车只需要依靠事先人为制作的高精地图(比如谷歌地图、高德地图、百度地图等),然后利用GPSIMU进行惯性导航,同时利用激光雷达、毫米波雷达、超声波雷达等进行避障就能实现无人驾驶了。其实仔细研究,显然没有这么简单。

如果无人驾驶汽车完全行驶在道路场景完全不变化的封闭理想环境下,也就是道路两旁的花草树木永远保持原样、马路永远不发生维修和扩建、马路两旁的建筑物永远保持原样不随时间更迭、马路上最好没有其他车辆。这样只需要给无人驾驶汽车导入事先人为制作好的高精地图,基于这个不变的高精地图无人驾驶汽车就可以实现高精度定位,并基于这个高精度定位以及避障传感器实现自主导航与避障。

但是上面这种理想的一成不变的道路场景在实际生活中是不存在的,只有在游戏世界中能保证。前几年国内一些巨头宣传自己的无人驾驶汽车能在实际道路上行驶,其实都是选在场景单一不确定性极小的封闭高速公路中测试的。这些公司其实也知道,以目前的技术水平无人驾驶汽车大概还只能在封闭理想环境下运行,以规避道路上的各种不确定性。但不管怎么说,无人驾驶是未来的趋势,这种趋势将势不可挡。

所以简单点说,就是因为无人驾驶汽车所工作的道路场景具有极大的不确定性,所以无人驾驶汽车离不开SLAM技术。因为SLAM解决了“先有鸡还是先有蛋”的问题,即可以应对多变复杂的路况,并实时更新环境地图和实时定位。其实SLAM是一种解决问题的思想,并不仅仅指代某种算法。SLAM的全称是同时定位与建图,也就是解决未知多变环境内的定位与环境建模问题。SLAM的具体实现非常之多,经典的激光SLAM、视觉SLAM、多传感器融合SLAM、以及各种AI技术与SLAM相结合的方案,可以说SLAM是一个非常开放的研究话题。

值得庆幸的是,目前在一些环境相对稳定的场景内无人驾驶已经得到了广泛的应用,比如校园通勤无人驾驶巴士、景区无人驾驶观光车、无人货运卡车、无人驾驶公交车等。

 

30  校园通勤无人驾驶巴士

 

31  景区无人驾驶观光车

32  无人货运卡车

 

33  无人驾驶公交车

8.特种作业机器人

曾经有这样一种说法,人类对地球海洋的了解可能比外太空还要少,足以见得对地球海洋的探索将具有极大的意义。由于深海是一个极具未知性、生存环境异常恶劣、人类通信技术很难讫及的地方,因此海底探索基本上要依赖水下机器人。水下机器人的自主导航与陆地机器人的自主导航既有许多相似性也有很多不同,比如SLAM导航技术在水下机器人中就不是基于激光雷达或视觉了,水下探测传感器主要依靠超声波传感器(也就是常说的声呐)。

34  水下机器人

当前还有其他许多在特殊场合应用的机器人,这里统称为特种作业机器人。比如城市下水道检修机器人、核废物清理机器人、消防机器人、岩洞勘测机器人、垃圾回收机器人等。

35  城市下水道检修机器人

 

36  福岛核电站核废物清理机器人

37  消防机器人

38  岩洞勘测机器人

 

39  垃圾回收机器人

9.军工机器人

很多先进的科技成果都是源于军工科技并且最早也是应用于军工,机器人其实也不例外。根据相关资料,很多年前美国发射的火星探测车上就已经应用了SLAM技术进行自主导航和环境探索。在遥远的外太空星球上,探测车在陌生环境的作业任务基本离不开SLAM技术。另外,还包括军事补给运输机器人、机器人士兵等。

40  火星探测车

 

41  军事补给运输机器人

 

42  机器人士兵

10.其他

上面列举了大量SLAM在机器人中的应用案例,其实SLAM技术还在其他很多方面有广泛的应用,比如三维建模、国土测绘、AR/VR等。

对于一个房产经纪人,可以利用手持的SLAM建图特别快速扫描现场的房屋以得到三维户型信息,这样就可以快速将信息录入系统。房屋的三维户型信息不仅对房产经纪人有用,对装修公司、住户都有非常大的用处。

43  手持SLAM建图仪

虽然借助于遥感卫星能对大致的地形地貌进行测绘,但更精细的测绘还是要借助于无人机之类的近距离测绘。通常会在无人机上搭载超远距离多线激光雷达进行SLAM建图,以完成对农田、湖泊、山丘等的精细测绘。

44  测绘无人机

当然AR/VR就更少不了SLAM技术的支持了,可以说SLAM技术已经在慢慢渗透到生活的方方面面。

 

45  SLAM技术在AR/VR中的应用

参考文献

[1] 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.

 

 

 

前言
编程基础篇
第1章 ROS入门必备知识
1.1 ROS简介 2
1.1.1 ROS的性能特色 2
1.1.2 ROS的发行版本 3
1.1.3 ROS的学习方法 3
1.2 ROS开发环境的搭建 3
1.2.1 ROS的安装 4
1.2.2 ROS文件的组织方式 4
1.2.3 ROS网络通信配置 5
1.2.4 集成开发工具 5
1.3 ROS系统架构 5
1.3.1 从计算图视角理解ROS架构 6
1.3.2 从文件系统视角理解ROS架构 7
1.3.3 从开源社区视角理解ROS架构 8
1.4 ROS调试工具 8
1.4.1 命令行工具 9
1.4.2 可视化工具 9
1.5 ROS节点通信 10
1.5.1 话题通信方式 12
1.5.2 服务通信方式 15
1.5.3 动作通信方式 19
1.6 ROS的其他重要概念 25
1.7 ROS 2.0展望 28
1.8 本章小结 28
第2章 C++编程范式
2.1 C++工程的组织结构 29
2.1.1 C++工程的一般组织结构 29
2.1.2 C++工程在机器人中的组织结构 29
2.2 C++代码的编译方法 30
2.2.1 使用g++编译代码 31
2.2.2 使用make编译代码 32
2.2.3 使用CMake编译代码 32
2.3 C++编程风格指南 33
2.4 本章小结 34
第3章 OpenCV图像处理
3.1 认识图像数据 35
3.1.1 获取图像数据 35
3.1.2 访问图像数据 36
3.2 图像滤波 37
3.2.1 线性滤波 37
3.2.2 非线性滤波 38
3.2.3 形态学滤波 39
3.3 图像变换 40
3.3.1 射影变换 40
3.3.2 霍夫变换 42
3.3.3 边缘检测 42
3.3.4 直方图均衡 43
3.4 图像特征点提取 44
3.4.1 SIFT特征点 44
3.4.2 SURF特征点 50
3.4.3 ORB特征点 52
3.5 本章小结 54
硬件基础篇
第4章 机器人传感器
4.1 惯性测量单元 56
4.1.1 工作原理 56
4.1.2 原始数据采集 60
4.1.3 参数标定 65
4.1.4 数据滤波 73
4.1.5 姿态融合 75
4.2 激光雷达 91
4.2.1 工作原理 92
4.2.2 性能参数 94
4.2.3 数据处理 96
4.3 相机 100
4.3.1 单目相机 101
4.3.2 双目相机 107
4.3.3 RGB-D相机 109
4.4 带编码器的减速电机 111
4.4.1 电机 111
4.4.2 电机驱动电路 112
4.4.3 电机控制主板 113
4.4.4 轮式里程计 117
4.5 本章小结 118
第5章 机器人主机
5.1 X86与ARM主机对比 119
5.2 ARM主机树莓派3B+ 120
5.2.1 安装Ubuntu MATE 18.04 120
5.2.2 安装ROS melodic 122
5.2.3 装机软件与系统设置 122
5.3 ARM主机RK3399 127
5.4 ARM主机Jetson-tx2 128
5.5 分布式架构主机 129
5.5.1 ROS网络通信 130
5.5.2 机器人程序的远程开发 130
5.6 本章小结 131
第6章 机器人底盘
6.1 底盘运动学模型 132
6.1.1 两轮差速模型 132
6.1.2 四轮差速模型 136
6.1.3 阿克曼模型 140
6.1.4 全向模型 144
6.1.5 其他模型 148
6.2 底盘性能指标 148
6.2.1 载重能力 148
6.2.2 动力性能 148
6.2.3 控制精度 150
6.2.4 里程计精度 150
6.3 典型机器人底盘搭建 151
6.3.1 底盘运动学模型选择 152
6.3.2 传感器选择 152
6.3.3 主机选择 153
6.4 本章小结 155
SLAM篇
第7章 SLAM中的数学基础
7.1 SLAM发展简史 158
7.1.1 数据关联、收敛和一致性 160
7.1.2 SLAM的基本理论 161
7.2 SLAM中的概率理论 163
7.2.1 状态估计问题 164
7.2.2 概率运动模型 166
7.2.3 概率观测模型 171
7.2.4 概率图模型 173
7.3 估计理论 182
7.3.1 估计量的性质 182
7.3.2 估计量的构建 183
7.3.3 各估计量对比 190
7.4 基于贝叶斯网络的状态估计 193
7.4.1 贝叶斯估计 194
7.4.2 参数化实现 196
7.4.3 非参数化实现 202
7.5 基于因子图的状态估计 206
7.5.1 非线性最小二乘估计 206
7.5.2 直接求解方法 206
7.5.3 优化方法 208
7.5.4 各优化方法对比 218
7.5.5 常用优化工具 219
7.6 典型SLAM算法 221
7.7 本章小结 221
第8章 激光SLAM系统
8.1 Gmapping算法 223
8.1.1 原理分析 223
8.1.2 源码解读 228
8.1.3 安装与运行 233
8.2 Cartographer算法 240
8.2.1 原理分析 240
8.2.2 源码解读 247
8.2.3 安装与运行 258
8.3 LOAM算法 266
8.3.1 原理分析 266
8.3.2 源码解读 267
8.3.3 安装与运行 270
8.4 本章小结 270
第9章 视觉SLAM系统
9.1 ORB-SLAM2算法 274
9.1.1 原理分析 274
9.1.2 源码解读 310
9.1.3 安装与运行 319
9.1.4 拓展 327
9.2 LSD-SLAM算法 329
9.2.1 原理分析 329
9.2.2 源码解读 334
9.2.3 安装与运行 337
9.3 SVO算法 338
9.3.1 原理分析 338
9.3.2 源码解读 341
9.4 本章小结 341
第10章 其他SLAM系统
10.1 RTABMAP算法 344
10.1.1 原理分析 344
10.1.2 源码解读 351
10.1.3 安装与运行 357
10.2 VINS算法 362
10.2.1 原理分析 364
10.2.2 源码解读 373
10.2.3 安装与运行 376
10.3 机器学习与SLAM 379
10.3.1 机器学习 379
10.3.2 CNN-SLAM算法 411
10.3.3 DeepVO算法 413
10.4 本章小结 414
自主导航篇
第11章 自主导航中的数学基础
11.1 自主导航 418
11.2 环境感知 420
11.2.1 实时定位 420
11.2.2 环境建模 421
11.2.3 语义理解 422
11.3 路径规划 422
11.3.1 常见的路径规划算法 423
11.3.2 带约束的路径规划算法 430
11.3.3 覆盖的路径规划算法 434
11.4 运动控制 435
11.4.1 基于PID的运动控制 437
11.4.2 基于MPC的运动控制 438
11.4.3 基于强化学习的运动控制 441
11.5 强化学习与自主导航 442
11.5.1 强化学习 443
11.5.2 基于强化学习的自主导航 465
11.6 本章小结 467
第12章 典型自主导航系统
12.1 ros-navigation导航系统 470
12.1.1 原理分析 470
12.1.2 源码解读 475
12.1.3 安装与运行 479
12.1.4 路径规划改进 492
12.1.5 环境探索 496
12.2 riskrrt导航系统 498
12.3 autoware导航系统 499
12.4 导航系统面临的一些挑战 500
12.5 本章小结 500
第13章 机器人SLAM导航综合实战
13.1 运行机器人上的传感器 502
13.1.1 运行底盘的ROS驱动 503
13.1.2 运行激光雷达的ROS驱动 503
13.1.3 运行IMU的ROS驱动 504
13.1.4 运行相机的ROS驱动 504
13.1.5 运行底盘的urdf模型 505
13.1.6 传感器一键启动 506
13.2 运行SLAM建图功能 506
13.2.1 运行激光SLAM建图功能 507
13.2.2 运行视觉SLAM建图功能 508
13.2.3 运行激光与视觉联合建图功能 508
13.3 运行自主导航 509
13.4 基于自主导航的应用 510
13.5 本章小结 511
附录A Linux与SLAM性能优化的探讨
附录B 习题
posted @ 2022-03-19 00:08  小虎哥哥爱学习  阅读(1348)  评论(0编辑  收藏  举报