刚拿到这本书,准备入坑SLAM,这里算是给自己学习过程做个记录笔记方便以后回看,有写的不对的地方请各位大佬批评指正。
以我自己的学习习惯,拿到一本书最先会看它的纲领性的东西,一般是前后封面关键性描述、序言、前言、专家评语等。下面就依次对这些做一个记录,如有侵权请联系我删除。
相比传统的理论书籍,本书更加侧重于形而下的实践部分。书中详细介绍了一些典型的激光与视觉SLAM的实现,并进行了源代码解读。除此之外,书中还介绍了如何在已有地图上进行导航规划。本书内容详细、充实,可以作为SLAM领域研发人员、学生的良好参考材料。
——高翔,博士,智行者科技定位与地图组总监
随着自动驾驶、机器人、AR和VR技术的发展,SLAM变得越来越重要。SLAM是一项软硬件结合,涉及多个学科理论并注重实践的技术。本书从多个维度,利用大量图片和表格,由浅入深地讲述了机器人SLAM导航的核心技术,并且给出了大量的实操例子。本书无论对于初学者还是业内人士都是一本相当有价值的好书。
——侯晓辉,亮风台首席架构师
这是一本涵盖从机器人自主导航相关硬件到机器人操作系统、从SLAM基本原理到经典SLAM开源框架实现的百科全书式著作,汇集了当前机器人SLAM导航所需要的基础理论,并结合硬件(如惯性器件、视觉传感器等)对SLAM导航的工程实践进行了全面和深入的论述,是一本内容丰富、知识全面、受众广泛的大部头作品,推荐阅读。
——吴中红,海军工程大学讲师,《ROS机器人开发:实用案例分析》(原书第1版与第2版)译者
移动机器人的技术知识架构十分零散,而且各领域方法日新月异,常人要想系统地学习,或从中甄选出一套实用可靠的算法来构建真正的机器人十分困难。本书就像一门优秀的移动机器人技术101课程,作者凭借多年优秀的实操和创业经验,从多领域的知识中抽丝剥茧,为读者整理出核心且必要的编程、环境及算法知识的同时,与时俱进地介绍了计算机视觉、概率论、强化学习等前沿科技成果在SLAM中的应用。不得不说,本书适合每一位该领域的从业者或研究生放在手边作为实用快捷的参考书。
——王斯煜,香港大学机器人专业博士生
互联网和人工智能技术可以看成是对人类大脑的进一步延展,而机器人技术则可以看成是对人类躯体的进一步延展。如果人工智能技术仅仅停留在虚拟的网络和数据之中,那么其挖掘并利用新知识的能力将很难扩展开来。可以说,机器人是人工智能技术应用能力的有效延展,而能自主移动的机器人更是极大地拓展了人工智能技术的应用范围。SLAM导航技术正是当下实现机器人自主移动的热门研究领域,也是本书内容的核心所在。
帮助机器人实现完全自主化的每一种底层技术无疑将成为“机器人时代”的基础设施,其中的自主移动技术在当下备受瞩目,其实质就是解决从地点A到地点B的问题。这个问题看似简单,实则非常复杂。当向机器人下达移动到地点B的命令后,机器人不免会问出三个颇具哲学性的问题,即“我在哪”“我将到何处去”和“我该如何去”。经过近几十年来的研究,业界形成了一套有效解决机器人自主移动的方案,即SLAM导航方案。
目前以SLAM导航技术为支撑的自主移动应用已经十分广泛,涵盖航天、军事、特种作业、工业生产、智慧交通、消费娱乐等众多领域。典型应用包括火星探测车、军事机器人、特种作业机器人、农业领域机器人、自动驾驶汽车、终端物流配送机器人、机器人智慧养老、机器人餐厅、家庭服务机器人等。
虽然SLAM导航技术在许多方面取得了突破,但其仍处于发展阶段且尚未真正落地。这就需要有更多的人参与到这个庞大且深奥的项目中来,以加快技术突破和产品落地的速度。而机器人是多专业知识交叉的学科,通常涉及传感器、驱动程序、多机通信、机械结构、算法等众多领域。这就导致各个领域的研究、开发人员都在自己熟悉的领域内“闭门造车”,缺乏领域之间的必要交流与实践。软件层面的开发者由于缺乏对机器人传感器、机器人主机和机器人底盘的系统性认识,因此往往会在涉及软硬件深度优化方面的问题时束手无策。而硬件层面的开发者由于缺乏软件方面的必备基础,因此经常会在理解软件层需求时出现偏差。由于缺乏相关的数学理论体系,因此ROS及硬件相关领域的开发人员大多只能充当“调参侠”,很难对SLAM导航方面的算法提出实质性的改善建议。缺乏工程思维和实践经验,SLAM算法或导航算法方面的研究人员则很难将研究成果真正落地。
可以说,机器人SLAM导航是一个软硬件相结合、理论加实战的浩大工程性问题。而目前各领域之间还存在很大的交流屏障,这无疑成了机器人SLAM导航技术突破与落地的突出痛点。我由此萌生了写一本兼具理论性和实践性的系统化图书的想法,希望通过这样一本书将机器人SLAM导航中的软件技术、硬件技术、数学理论、工程落地等一系列问题打通。
历经两年多的艰苦创作,这本书终于要完稿了。最开始写这本书的时候,想法其实比较简单。当时自以为对机器人SLAM导航技术很了解,因而有着强烈的欲望想将自己所理解的知识和经验分享给更多有需要的人,为机器人SLAM导航技术的普及与产品落地贡献一份力量。但随着写作的逐步深入,我发现以前的很多理解存在不少偏差和局限,所以这倒逼着自己不断去学习更深层的知识,不断进行自我认知革新。直到写完最后一章回头望时,我发现自己已经超越从前的自己很多很多了。希望大家也能以这样的心态去学习本书,不断进行自我革新,等你学完整本书再回首时一定能发现一个全新的自己。
本书的第一大亮点是对SLAM理论体系做了深入浅出的分析。本书先对SLAM理论做了总结性讨论,这作为SLAM讨论的开篇章节有利于读者快速理清学习思路;而更深层的SLAM理论知识则放在后续具体SLAM系统中详细展开讨论,结合实例进行讲解,这样的好处是能大大降低深奥理论知识的理解难度。
本书的第二大亮点是将SLAM与导航两大研究领域有机地串接起来。目前很多资料只侧重于讨论SLAM问题,而很少谈及导航问题。其实对自主移动机器人来说,SLAM技术只相当于给机器人提供了一条腿,而另一条腿则是导航技术。由于本书前几章对机器人硬件、系统、SLAM理论及具体算法实现做了大量铺垫,这就为SLAM与导航相结合内容的讨论提供了土壤。
本书的第三大亮点是对机器学习所涉及的理论基础进行了全面介绍,特别是对与SLAM前沿方向密切相关的深度学习及与自主导航前沿方向密切相关的强化学习进行了深入对比分析。深度学习和强化学习理论知识的讲解为本书学习者后续的持续研究提供了广阔的想象空间,为机器人实现强人工智能提供了技术路线的参考。
本书适合的读者范围极为广泛,主要包括:
本书分为四篇,共13章。
编程基础篇(第1~3章)。本篇带领大家了解ROS的核心概念、大型C++工程的代码组织方式以及图像处理方面的基础知识,为后续学习打好必要的编程基础。
硬件基础篇(第4~6章)。本篇通过对机器人传感器、机器人主机和机器人底盘的讨论,让缺少硬件基础的开发者对机器人的硬件有一个系统的认识并更好地理解软件与硬件之间的协同关系。机器人传感器相当于机器人的眼耳口鼻,机器人主机相当于机器人的大脑,而机器人底盘则相当于集成传感器和主机的躯干。
SLAM篇(第7~10章)。本篇首先总结式地介绍整个SLAM的理论知识体系,接着以各个具体的SLAM系统实现为例进一步介绍SLAM算法的代码框架及核心算法的实现细节。
自主导航篇(第11~13章)。本篇首先给出整个自主导航的理论体系知识的总结,接着以各个具体的自主导航系统实现为例进一步介绍自主导航算法的代码框架以及核心算法的细节实现,最后以一个真实机器人为例介绍应用SLAM导航技术进行开发的完整流程。学完本书的全部内容后,相信大家能够继续进行SLAM导航技术的独立研究和开发。
由于本人水平有限,因此书中难免会出现一些错误或者表述不严谨的地方,恳请读者朋友批评指正,你可以发邮件到我的邮箱([email protected])或者添加我的个人微信号(xiaohugege277)来与我联系。另外,我还为本书制作了配套的课件文档和教学视频,大家可以关注我的知乎账号(@小虎哥哥爱学习)获取最新课件文档,或者关注我的bilibili账号(@小虎哥哥爱学习)获取最新教学视频。大家还可以前往GitHub仓库(https://github.com/xiihoo/Books_Robot_SLAM_Navigation)下载本书相关实验代码以及课后习题答案。同时大家也可以加入QQ技术交流群(728661815)参与本书的话题讨论,或者前往网站(http://www.xiihoo.com)获取机器人SLAM导航方面的更多相关资料。
感谢机械工业出版社华章公司的高婧雅编辑在写作方面给予我的细心指导;感谢清华大学的高翔博士为本书作序;感谢亮风台首席架构师侯晓辉、海军工程大学吴中红老师、香港大学博士生王斯煜对本书进行审阅并给予高度评价;感谢广大网友在本书写作过程中提供的众多宝贵建议;感谢在本书写作过程中给予我极大鼓励与关怀的亲朋好友。
最后,希望这本书能陪伴大家走过一段难忘的学习之旅,并收获一份珍贵的成长经历。星辰大海,如你所见,如你所愿。
通过专家大佬们的评语,以及作者本人对全书内容的总结,我自己梳理了一个大致的知识结构,如下图所示。
以我自己的基础情况来看,我觉得先从SLAM篇中第7章SLAM中的数学基础开始看比较适合,然后照着第8、9、10章把开源的SLAM代码先一个个跑一遍。然后回头去补习编程基础篇和硬件基础篇的内容,这样就可以再回头重新把第8、9、10章中开源的SLAM代码在实际机器人上用真实传感器数据跑一遍。最后开始搞自主导航篇的内容,争取最终自己能搭一台能自主导航避障的机器人小车。加油,我能行!!!
接下来就是按照这个学习计划逐步去落实,一边徒手推导公式,一边光脚敲代码。万事大吉,开搞!!!
[1] 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.