天天看点

国内外LiDAR SLAM实验室总结☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

知乎上有一个关于视觉的SLAM实验室以及20年前的视觉SLAM开源算法的汇总SLAM 领域国内外优秀实验室汇总,非常详细,但是偏视觉一点,本文主要关注LiDAR SLAM。

这篇文章一开始是非常简短的,单纯的介绍了我认为十分重要、开源且值得花时间去读源码的LIO工作,但是仔细一想,这本身就是一个不符合逻辑的事。已经对LIO有一定了解的人肯定已经知道了这些工作,而对于刚入门的来说,最重要的先建立一个宏观的概念,对国内外所有的工作有一个自己的了解,推公式、看代码是后来的事。

实际上不论是知乎还是CSDN,github,油管,b站还是微信公众号,随着现在信息接触的越来越多,大量冗余的信息也让人的精力无法集中。在本文中,我会把那些必看的工作以及源码着重强调,对于其他,正如上文所说,只是单纯让你有个宏观的了解,如果某部分工作让你找到了灵感或者感兴趣,再去深入了解也不迟。

食用方法

本部分仅是我对新手入门的一个建议。对于以下github的链接,直接点进去先follow一下再说,做到 哦~,这个实验室出名的工作是这个啊就行了。实际上目前最先接触到某个最新的工作进展一般都是github,建议养成每天打开电脑的第一件事就是去刷新一下github的习惯,也可以把github的daily update打开,每天随机看看相关进展。再次强调一遍,这仅是用来增加宏观了解,不要因为一开始什么都不懂但是又什么都想学,最后导致不收敛了。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

此部分为主流LIO实验室以及软件框架

HKU MARS

zhangfu老师的团队涉及到的主要工作有LIO、multi-sensor-fusion、传感器标定。主要工作有fast lio、r3live、多传感器标定等等。他们实验室风格较为鲜明,有自己的特色,很多工作都是基于开发的ikdtree、自适应体素、改进的迭代误差卡尔曼滤波上演化来的。大佬的工作几乎都开源,把SLAM已经卷上天了。推荐fastlio源码,推荐fastlio源码,推荐fastlio源码,事实上fastlio1.0的代码可能对更友好一点,2.0版本在调用ikdtree和ikfom库后虽然显得十分简洁,但是想把这整个工程看懂也就很难了。loam-livox是针对livox系列设计的slam算法,如果有时间的话可以再看看吧,优先级不是很高。如果是做关于标定的工作,他们组的工作也可以关注,并且也推荐在下面链接里面找到lidar_camera_calib读一下源码。另外r2live,r3live,fastlivo是目前为止运行效果T0级别的视觉雷达融合了,新手就啃融合可能还是早了一点,等看完fastlio和vins或者orbslam再来看这个吧。HKU-MARS

HKUST Aerial Robotics

qintong大佬和shenshaojie老师。主要工作:vins、aloam。他们组LIO做的不多,但是aloam也是比较经典的了,推荐aloam源码,推荐aloam源码,推荐aloam源码,aloam的代码很简洁,把loam里面那些迷惑的旋转关系和位姿关于欧拉角的雅克比用eigen和ceres进行了大量的化简,读完这个代码ceres的自动求导也就差不多有个了解了。

HKUST RAM Lab

liu ming老师。主要工作:lio mapping,lins,m-loam,在精力有限的情况下这些代码可以不用看了,看看论文了解其中的思想,知道个所以然就行了。可以留意一下lio mapping源码,lio-mapping是在vins的框架上改成了适配LiDAR的,写的相对来说比较乱,但是可以跟floam一起当做学习ceres手动求导的方法以及SO3上点线残差关于位姿的雅克布推导,可以留意一下lins的论文,fastlio的迭代误差卡尔曼公式跟lins是一样的,但是lins更加直观。

新加坡南洋理工大学

xie lihua老师,wanghan等;主要工作:floam、intensity slam、ssl-loam、vir-slam、viral。这个实验室做的方向比较多,有lidar、uwb、多机和回环等。这个实验室的话主要也是看看论文,了解一下思想。推荐floam源码,推荐floam源码,推荐floam源码,如果想看ceres的手动求导,floam算是最佳选择了吧,写的很友好,适合人类阅读,和lio mapping搭配更佳。

MIT

TI xiaoshan大佬。fast lio没出来之前做项目就靠这个大佬了。lego loam、lio sam、lvi-sam、还有一篇用intensity做回环的。推荐lio sam源码,推荐liosam源码,推荐liosam源码,说实话lego-loam的代码跟lio sam几乎没啥区别,但是论文中的思路也是有一定启发意义的。如果可以准确的识别地面并且地面较为平整,那么就是可以把roll、pitch和z单独分离出来让地面点进行约束。那举一反三一下,就想zhangji的那篇判退化的文章一样,如果可以准确识别机器人在当前场景哪些位姿可以约束住,那么就用单独一个传感器约束部分位姿,最简单的松耦合就是最好的方法,效果也不会差,最直观的理解就是在空旷场景下用毫米波雷达对无人机的高度单独约束,RTK仅约束x和y。这种约束规则是预先确定的,如果可以实时在线找到每个传感器对位姿的约束贡献值,那么效果应该会很好吧(仅是猜测)。做视觉雷达融合的lvi-sam还是比较容易上手的,可以留意一下lvi-sam源码。关于多机方面,有个可以留意一下disco slam,至于disco slam和disco的区别,那我就不是很清楚了。

CMU

zhangji loam 现在的loam是根据别人复现过来,原本的loam没有开源了,其实对于纯小白来说,看懂loam已经需要很大功夫,但是我还是推荐loam源码,推荐loam源码,推荐loam源码 。但是不建议死脑筋花过多时间去把loam里面所有的旋转关系和位姿关于欧拉角的雅克比搞的完全明白,我觉得能把这写全部搞懂已经不算是入门了,等后面对整个系统有了整体的认知再回来看吧,但是前端特征提取以及地图维护那里还是需要理解的。还有一个判退化的论文也值得一看。(On Degeneracy of Optimization-based State Estimation Problems)。另外,有一版本非常工程化的loam,可以留意一下,这版代码,faster-lio和LIMO-velocity算是LIO里面用的C++语法特性,最工程化的代码了。暂时没必要对这方面的工作投入太多精力,毕竟之前推荐的必看代码已经够多了,但是还是记住这几个工作的存在吧,入门了之后看看还是能学到一些东西的。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

此部分为值得持续关注的实验室及相关工作,由于精力有限,这部分的代码实在没时间去看了,但是相关论文以及实验室的近年进展还是有一个了解的,因此仅供大家参考。这些工作还是比较重要甚至可能比上面更值得你关注的,如果在阅读某篇论文的时候能找到自己的idea,这个时候能回想起,好像某某实验室做过这个工作,这样能少走很多弯路。

SUBT challenge

这个比赛还是很出名的,一般在这个比赛拿到名次也就证明了自己的实力属于T0了,但是可惜的是这个比赛一般都是比较工程化的,没什么创新,就是是找点子的话这个就没啥用了,但是就作为一种了解来说,还是很酷的。这里是2021SUBT冠军的主页,里面CERBERUS、CSIRO Data61和CoSTAR好像出镜率比较高。costar的LAMP刚刚开源了,其实我对这种工程化的代码还是比较感兴趣的,奈何没时间看了,希望以后有时间可以看看吧。

特拉华大学 RPNG

huangguoquan老师;他们组做理论比较多,很多关于系统能观性的分析的论文,恕我愚钝,我是看不懂,如果没有读博的打算和踏实的数学基础,不建议去深读论文,或者只需要知道他说的是个什么概念就行了,比如一个平面对机器人的状态产生哪些不足的约束等等。主要工作有:open vins、lic-fusion。我们实验室之前在280轴距上的无人机用的realsense d435跑的open vins,代码我没看过,应该还是比较好用的吧。还有一个rvio也可以关注一下,好像也是他们组的一个代表性工作。

德国 bonn大学

主要工作:suma、suma++,如果是做语义lidar slam,这个工作可能可以了解一下,还有参考文献中一篇imls-slam也很经典,实际上,我经常会在一些经典的论文下面去找参考文献,有的时候一找就会找出来十几篇觉得可能有用的,然后就会花很长时间去看,结果可能也只能看个大概,然后就“发散了”。但是我不觉得这是浪费时间,这种浪费时间是有必要的,但是得适当,毕竟时间有限,能力有限,可以选择一些近年来发表的论文去看,并且那种不开源的就看个大概就行了,知道个想法,然后有这个概念,说不定哪天就有灵感然后就基于这种想法有了改进。

ETH

ETH有一个开源的 MULLS,这个老哥的github天天都star,另一个就是这位。自从follow这两位之后,我也是了解了很多之前不知道的工作,虽然了解的不深,但是正如之前所说的,我有了一个宏观概念,这种概念是需要长时间积累才能得到的。在刚步入实验室的时候,师兄经常会在实验室群里发一些链接,我对此都是很懵的状态,完全不知道这些是什么,但是我总是很好奇师兄为什么知道这个工作,或者说,是怎么发现这个工作的,如果不是师兄,我可能一直都不会知道这个工作。现在我研二下了,也能做到在群里面分享一些我第一手知道的信息了,无他,唯有积累。遇到CSDN、知乎那种精品回答,我就去看这个博主的所有文章里面有没有别的好文章。关注了微信公众号就会去B站找相应的博主,刷到这种slam的视频就点赞,就算是自己不感兴趣的也点进去再退出来,让后台算法多推荐更多相关工作。对于github和油管也是如此,每天早上打开电脑第一件事就算刷新github和油管,前期就不停follow,不断的去扩充自己所能接触到的资源。

南方科技大学

这个学校目前已经有两个开源项目了,这在中国来说,已经算是LIO里面比较靠前的水平了,值得后续关注,第一次知道这个学校是因为camvox这个工作。代码没看,论文的话说实话好像没啥让人眼前一亮的创新点,但是就开源这一点也就足够了,目前来说,绝大多数不敢开源的项目都是对自己的代码不自信。By the way,JPL是实验室的LAMP都开源了。

KIT 卡尔斯鲁厄理工学院

这个学院是我在看完LILIOM这篇文章之后才知道的,目前来说,如果准备发跟livox相关的paper,能比较的和能使用公开数据集的只有fastlio,fasterlio,liliom了吧。liosam最近好像适配livox了,但是也只是一个简单的让livox可以在liosam上跑起来,然后livox mapping也有点老了,没啥对比意义了。

MIT SPARK

MIT SPARK实验室的kimera,语义slam似乎我只知道suam++和kimera了,psf-lo没开源,并且我觉得也不是很语义。另外SPARK实验室的On-Manifold Preintegration for Real-Time Visual-Inertial Odometry在推预积分的时候是个很好的参考材料。另外objectSLAM也是一个开源的语义slam。做语义的还是视觉比较多,另外强烈建议去看一下文章开头的那个链接,就算是做LIO的也可以看一下,扩充一下对当前国内外SLAM最近进展的了解吧。

其他

浙江大学的高飞老师做规划比较多,SLAM用的似乎是自己魔改的vins;浙江大学的章国锋老师偏向于做SLAM,但是我也只是有这么个印象。牛津大学做视觉的比较多,但是之前在油管上看过好像有个 Hilti SLAM Challenge,里面有很多数据集,其中有几个包看起来很有挑战性,可以关注一下,要是参加了这个比赛,拿到了名次也就起飞了。宾夕法尼亚大学的vijay kumur团队、德国慕尼黑工业大学、苏黎世大学也是偏向视觉的或者规划的。kumur有一个开源的msckf_vio,这里面关于以迭代误差卡尔曼滤波作为位姿更新写的比较清晰,相对于fastlio2.0里面IMU predict那里要友好一点。

总结

其实上面的文字不多,工作确实够花一段时间去了解了。对于那些不开源的工作我并没有做太多的介绍,其他的等你看完论文和代码,应该也有自己的主见和研究方向了吧,如果没有不行就多读读论文发散发散吧(doge)。最后,我想建立一个群,目前来说我加了很多群,但是一直没有找到一个学术氛围十分浓厚的群,有时候一个公式或者代码问题困扰很久想找人讨论都找不到,真的很痛苦。建群的目的是想建立一个从代码编译、论文阅读、代码理解、公式推导都可以互助的小社区。希望有大佬可以参与进来,对于大佬来说,这可能就是纯粹的为爱发电了。对于已经入门的,其实在各种提问中也能巩固自己的知识点,甚至会发现,为什么别人问的问题我咋都不会。。。对于新手来说,建议不要遇到什么点问题就去问,有什么问题第一反应不是去提问,而是自己解决,解决不了问师兄师姐,然后去谷歌搜,查文献,这个痛苦的思考过程尤为重要,这个痛苦的思考过程尤为重要,这个痛苦的思考过程尤为重要。All in all, 我只是把我所知道的都以一种近似聊天的方式表达出来了,希望对你们有所帮助,至于群,如果真的有人看到这个博客且看到了这里,等凑够了再考虑吧。Go for it!

继续阅读