聊聊这两年学习slam啃过的书!

小白学视觉

共 5426字,需浏览 11分钟

 ·

2021-01-30 11:37

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

来源 | 3D视觉工坊

入坑2年多,零七零八买了7、8本书,正好最近研一的新师弟让我来推荐几本,那么,独乐乐不如众乐乐,我就来巴拉巴拉一下我买的这些书吧。
以下测评,仅代表个人观点,与书的作者无关(狗头保命)
1、【C++ Primer Plus】
嗯~这个灰常灰常厚的c++书是我买的第一本书,也是我所有书里除了java最厚的一本(java买了就没看),But,这本巨厚的c++我竟然翻完了!!!当年,年轻的我以为,看完这本书,我就可以横扫slam了,哦,我还是太年轻。
言归正传,这本书我觉得是每一个学C++的人都可先入手的一本基础类书籍,讲的虽然没有特别深,但很全面,比较容易懂。可以在2-3月内大致了解C++的主要构造,而且里面包括了可实现的代码,讲解的也比较详细。有C语言基础的学生和没有C语言基础的同学都建议入手。
【食用指南】这本书很厚,不需要每一节都必看,也不需要每一节都一次性全部看懂。学过C语言的童鞋:可以跳过Ch1~Ch7,直接看函数重载和对象部分。没有学过C语言的童鞋,就得从第一章开始看了,但也不需要很慢,这部分很基础,大概一个多星期就可以看完。重点推荐Ch10~13,这部分是C++的重头戏,可以多看几遍,加深印象,至于Ch14~18章,可以在需要的时候再看。C++只是一个工具,不需要每一个地方你都一清二楚,这本书可以在后续学习中反复查看。总之,建议入手。
【推荐指数】★★★★★
2、【视觉SLAM十四讲(第一版)】
这个是我入手的第二本书,研一上学期就买了。当年年轻的我问师兄:师兄,怎么学习SLAM?师兄说:看完这本书,你就会了。如今,我的师弟问我,师姐,怎么学习SLAM?我也会笑着来一句,看完这本书,你就会了。
当然以上是个段子。不过SLAM十四讲的基础性地位是不可撼动的,第一版讲的很详细,有很多用不到,但是又很难理解的知识点。但是一本很好的书,很适合入门级别,里面的每一章都会有相应的代码,而且网上对于这些代码的解读也很多,通过这本书可以基本了解SLAM的结构。师弟说很多地方看不懂,看了2遍,还是不懂。我想着这可能是很多刚入门的小白的难处,我来大致讲解一下
【食用指南】整个SLAM系统分为前端和后端,对于第一版来说,第九讲之前都介绍的是前端,我觉得是硕士研究生,短时间内没有想要读博的,可以只看1-8章,重点看6-7-8章节,这三章是前端的关键。一二三章是基础,就不多说。第四章开始,就不美好了,李代数是什么玩意?尤其是第一版中还加入了李代数求导和扰动模型,当年的我看的也是一头雾水(可能我的头发就是看这章看没的,请高博还我头发)。其实这部分大家只要学会推到李代数和李群之间的转换关系就可以了,扰动模型什么的,可以留给你的博士师兄们研究,后面的推导用的也不多,可以等需要的时候再详细看。第五章也不用说,没什么难点。第六章又来了,第六章、第七章、第八章感觉都是在讲一个东西,那么在讲什么呢?其实第六章和前五章一样,仍然是一个工具,非线性优化,相当于最小二乘法,这只是一种优化手段和方式,不需要执着于用在哪里,其实在后面的工程中可以发现,只要是用到最小二乘优化算法的地方,都会出现非线性优化。至于第七章第八章,其实就是在求解非线性优化中所用到的初值。前八章看起来也没那么难,是不是?后端部分,等前端掌握了,再看,也不迟,或者说你在看论文的时候,需要补充后端的知识,再来看后端的知识点也可以。
【推荐指数】★★★★★
3、【视觉SLAM十四讲(第二版)】
是的,我前两天又买了第二版,其实第一版我已经看了很多遍了,那么为什么买第二版呢?首先,我觉得我研究SLAM,还是个博士,书架上不摆个2、3本专业书感觉不太好,大多数情况下还是要装个B的。其次,插图好看,翻开书就有4页的彩色插图,感觉很高端的样子,老夫还是有少女心的。第三,当然这肯定不是最重要的地方,老板报销。于是乎,我就开开心心买了第二版。
那么第二版和第一版的区别在于什么呢?整体上分为了三部分:预备知识、数学基础、实践应用。预备知识对应第一版的第一讲,数学基础部分包括了第一版的第二讲至第六讲,其他的全是实践应用。具体来看,第二版增加了代码实验部分,例如3.7节,第一版就是可视化演示,用了一页多就讲完了,第二版分为了两小节,显示运动轨迹和显示相机位姿,用了4页纸详细讲了可视化的代码使用。而且在4.4节增添了评估轨迹误差的代码,第五讲增添了3D视觉的实践代码…从内容上讲,删减了部分内容,比如因子图。总体来看,第一版理论性更强一些,第二版实践性更强一些,如果是新入门的孩子,还是推荐第二版的,更好的通过代码理解理论,避免了理论与代码对不上的情况。
【食用指南】章节结构上和第一版的推荐相同,建议大家多动手,多看代码,不过不要纠结于每一句为什么这样写,前几次看的时候可以先大致了解这一部分的代码讲的是什么,如果给你一个新的代码,类似的代码,你能不能大致看出来是哪部分的代码?
【推荐指数】★★★★★
4、【ROS机器人开发实践】
刚开始看到这本书的时候,我很喜欢这个封面,没仔细看,我以为是两个机器人手拉手,中间放着个东西,我觉得我也是一个手拉手的机器人,买了才知道,哦,我是中间那只狗。这本书是看着网上推荐买的,是一个ROS系统化的书,如果实验室有ROS小车的同学可以买来看看,我觉得博士可以入手一下,比较系统化,但硕士的话,网上有零散的ROS知识,我觉得也足够你们完成毕业设计和小论文了。这本书比较全面,SLAM和机械臂方向都有,还有一些仿真模型的介绍,但书籍的缺点在这上面都体现了:全面但深度不够。所以说如果你只是学习如何使用,我觉得网上的知识足够了,没必要再投资一下。不过还是推荐博士们购买的,比较系统化的介绍了整个构架,可以阅读一波。
【食用指南】如果是SLAM方向的,我觉得8、10、11这几章可以PASS了,都是机械臂,机器学习方向的,第二章和第三章比较基础,详细讲解了节点、消息、话题、服务等,可以仔细阅读一下,4.1节的launch文件是重点,但书中的内容不够深,没有将的很详细,大家可以去ROS官网或CSDN上找找补充资料,掌握好launch的写法,第五章机器人平台搭建和第七章机器视觉,实验室准备配置小车的同学可以看看,主要讲了ROS搭配相机和激光雷达以及标定。后续章节我还是推荐需要再看,不需要就不用看。
【推荐指数】★★★☆
5、【STL源码剖析】
这本书吧,一言难尽。。。这是我在看源码的时候买的,在看代码过程中,我发现C++ primer看完了,怎么代码还是看不懂,感觉看了本假书。头秃,然后我去网上看资料,说是代码中使用了STL写法,要看这本书,于是乎,斥巨资买了(自己的腰包)。我以为,它像C++ Primer一样浅显易懂,然而,我还是太年轻。代码注释较少,是分块化的代码,没有整体可运行的,代码结构我不喜欢,总之,这本书我看不下去。当然,我并不会把这归为书不好,一定是我修炼的等级太低,还没有体会到这书的内涵,我准备再修炼一段时间再学习。但是,这书的好处也有,很多源码中使用了map容器、vector容器以及list容器等,都会在源码中用到,在阅读源码的过程中,我会翻看这些章节,可以有效补充容器相关的知识点。
【食用指南】用到时再按需求详细阅读
【推荐指数】★★
6、【Effective C++】
哦,又是一本语言类的书,是的,看了这么多,我的C++技术并没有得到显著提升,我常安慰自己,我还没开窍,等开窍了,就起飞了。这本书也是我在看代码期间买的,我觉得这本书还是不错的,算是C++ Primer的补充,有些Primer中没有细化的知识点这本书都讲了,而且会进行强调,我觉得可以和Primer一起看,不算很难懂,也不是很容易,属于中等水平。
【食用指南】不需要特地留出大片时间看,可以在日常看代码过程中,每天看几页,后期有需要强化的部分再回过头多看几遍,可细嚼慢咽。
【推荐指数】★★★
7、【计算机视觉中的多视图几何】
这本书我没买,这是我图书馆借的一本,我还借的是第一版,没有在当当上找到它的封面图,就自己拍了一张,略有些破旧,请大家不要介意。这本书网传都很好,很适合SLAM科研人,是我打开方式不对还是我太菜了,这书怎么看的下去嘛!!!知识点太多了,很详细,超级详细,有一种这书是百科全书的感觉,里面有讲射影变换、单视图几何、两视图几何、三视图几何以及N视图几何,这么说吧,只要是图像变换相关的内容,都可以在这书上找到。我之前看论文讲到三焦点张量,网上查了半天,没懂,后来发现这书里讲的很详细,也很容易懂。这书还是不错的。至于为什么没有买第二版,有两个原因,一是书架上放不下了,图书馆可以借,感觉没有买的必要;第二个原因是,第二版书有点贵,我怕老板不报销,当然了,这肯定不是主要原因。总之,我觉得如果想要持续在SLAM领域进行研究的,可以入手一本,有些时候这些小知识点可能会增加对文章的理解。但对于新入门的就不太建议了,有点摸不着头脑的感觉。
【食用指南】可以先阅读目录,对于本书大致有哪些内容有个了解,然后按需使用,论文中遇到需要补充的知识点再进行查阅,不建议从头到尾通读。
【推荐指数】★★
8、【概率机器人】
这本书是新入手的,上周才买的,购买原因有二,一是网上推荐的,我觉得可以买来显摆显摆;二是老板报销,当然了,这肯定不是主要原因。整本书分为了四个部分,基础知识,定位,地图构建,规划与控制。第一部分主要讲了滤波,KF、EKF、UKF、贝叶斯等都讲到了,滤波部分以理论为主,没有代码,但是又基本的算法流程图,整体看来比较偏概率论,看着有点头痛。定位部分主要讲了马尔可夫定位和栅格定位,这部分的图很可爱,有一个小小的机器人,长得有点像小萝卜,依然没有代码支持,看着有点晕。第三部分介绍了SLAM,有EKF-SLAM、GraphSLAM、FastSLAM等,我看了EKF-SLAM部分,有点难懂,当然,这和我概率论没学好有很大关系。最后一部分规划与控制,讲的是马尔可夫决策,具体什么我不懂,感觉很高端的样子,但后期我应该还会仔细阅读的。总的来说,这本书,不适合新手,比较理论,有点难理解,没有代码支撑,比较适合想要提升自己算法水平的同学。
【食用指南】难嚼,得慢慢嚼
【推荐指数】★
9、【机器人学中的状态估计】
这也是我最近新买的一本书,买它的原因和上本书一样---都是为了学习。这本书相比概率机器人来说更偏SLAM一些,总体分为三部分,状态估计机理,三维空间运动机理,应用。也是比较理论化的一本书,没有代码支撑。第一部分主要讲了线性的状态估计和非线性的状态估计,第二部分主要讲了几何学基础知识和李群,第三讲讲了位姿估计,BA等知识点。总体来看,要比概率机器人更好懂一些,两本书都是偏理论的,但状态估计从排版、内容上来说要比概率机器人更容易接受一些。同样,这本书推荐想在算法上有一些提升的同学,如果硕士没有想要以后从事这方面工作的,我觉得可以不用为难自己了,毕竟,理论看着也头疼,而且这本书还没有插图,通篇公式与文字。
【食用指南】偶尔可以拿来为难为难自己
【推荐指数】★☆
【写在最后的话】
由于网络上的信息很多,知识也很全面,很多人开始放弃纸质书,直接从网络上开始入门,我觉得这样会使得你的知识没有层次,不能很完整的搭建你的系统框架,学姐还是建议入手基本基础的书,仔细耐心阅读,建立自己对这个领域的框架理解,然后再通过论文逐点细看。其他一些工具书也可以按需入手,作为对自己知识点盲区的补充。这次的SLAM书籍分享就这些了,如果有其他想要咨询的问题或者想要我测评的书籍,欢迎留言。  
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目31讲
小白学视觉公众号后台回复:Python视觉实战项目31讲即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报