针对想学SLAM的提问,我觉得我还是有一定的发言权。
作为一个刚入坑SLAM一年多的初学者,首先想说的就是这个研究方向比较广,大方向按搭载传感器分为激光SLAM和视觉SLAM两种,激光SLAM搭载激光雷达,视觉SLAM搭载单目、双目、RGBD相机三大类。同时,SLAM随着工业界技术需求不断落地更新,出现了多源信息融合技术的各种定位导航的融合。
其次,对于自己在学习过程中的经验教训也给大家分享一下。在实验室学了这么久,从最初报名深蓝学院高翔博士的视觉SLAM基础课开始,我正式踏足SLAM的学习之路,跟随课程的学习一步一步地推导公式,比如相机的运动求解R、t,图像中特征的提取,扩展卡尔曼滤波理论及集束调整BA等一系列公式,确实感觉到了SLAM理论的强大,在这过程中为我后续学习SLAM打下了坚实的数学基础。此外,高博在课程中也是手把手教学员调试代码,把开源算法框架ORB_SLAM2解析得很清楚,最重要得一点就是书上得代码有着大佬设置得小心机,不得不说大佬为了我们真是用心良苦。在每章代码里设置一些bug来检验学员是否真得学明白了如何调用系统所用得这些函数库和参数调节的正确使用方法,当然,视频课一定要配合SLAM十四讲一起享用,效果极佳。最后,我也实现了SLAM的基本功能,建了一个桌面办公环境的地图,也算是努力过后的一点收获了。
桌面稠密点云建图
在我从课程结束成为并顺利拿到优秀学员证书的那一刻,我怀着无比喜悦的心情开始了下一阶段的学习,由于前面学习的都是纯视觉的SLAM,目前纯依靠相机来完成整个SLAM还不太稳定,因此,不管是为了学术科研还是从事相关工作,我紧接开始学习视觉与惯导融合的相关知识,成功实现了ORB_SLAM3、VINS、及PL_SLAM等的一些复现工作。讲到这里,不得不提的是,用实际的传感器比用数据集运行这些开源算法系统难度是显而易见的,因此,对于刚入门的小伙伴来说,还是先从数据集去了解,有一定基础之后,无论是否用ROS还是不用ROS机器人操作系统,再去考虑用实际的传感器去跑,不然真的欲哭无泪直接劝退。目前毕业课题是视觉惯导融合定位方面,个人C++基础一般,学得比较慢一些,但我相信星光不负有心人,坚持到底,时间会给出答案。
PL_VIO轨迹
针对SLAM就业,目前我也在调研,借鉴网上一些成功拿到秋招SLAM相关offer的大佬的经验,面试基本都是问一些算法题、C++、项目和论文。
算法题:一般刷个200+道就差不多,时间宽裕的话可以多刷。
C++:主要问的就是函数相关,比如虚函数的作用,多线程锁智能指针,const,static关键字的作用等。
SLAM知识:基本上都是十四讲上的东西,比如对极几何、李代数、四元数作用。以及位姿估计模型求解计算。
项目:这一块的话就因人而异了,比如我这种和视觉惯导相关的,就会问一些关于相机在线标定,传感器延时估计和时间戳对齐相关的东西,具体还是看自己接触的项目。
最后想跟大家说的就是,无论是本科还是硕士,既然走上了SLAM之路,就意味着在未来两三年会比其他研究方向的同学和朋友们过得更煎熬一些,但跑通一个又一个SLAM的过程也就意味着你在一步一步地成长,祝福每一个即将成为大佬的你们拥有光明的前途。
彼方尚有荣光在,少年不惧岁月长!