学习两年多感觉SLAM太难了,大家对此有什么想法?

作者 | 无疆WGH  编辑 | 汽车人

原文链接:https://www.zhihu.com/question/388453391/answer/2128109058

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【SLAM】技术交流群

后台回复【SLAM综述】获取视觉SLAM、激光SLAM、RGBD-SLAM等多篇综述!

分享一下本人经历:普通985硕,专业本身与SLAM/机器人不沾边,只会基本的coding,高数/线代/矩阵论只上过课,SLAM零基础,研究生期间只简单用过ORB-SLAM2(改接口)。

2020年9月入职某机器人公司开始从事SLAM导航工作,现在能够对几个主流激光SLAM方案相对得心应手地改进落地,正在利用周末时间coding自己的SLAM框架+复现paper,近期在我司满一年的应届生定岗定级评比中位列Top15%(获得同届最高职级),看ICRA/IROS paper基本无压力,能够follow别人的工作。

这个回答算是个人一年来的经验分享,希望能给大家一些参考~

题主觉得SLAM太难了,其实我也有过同感,一次是在学校跑开源SLAM尝试阅读代码的时候,另一次是工作期间基于若干开源方案进行二次开发的时候。现在看来,第一次觉得难是理论功底不足+代码能力差,第二次是工程trick 理解不足+代码能力差(不熟悉C++设计模式)。

SLAM说难也不难,个人愚见对于初阶工程师来说,归根结底就三个方面~

591b850e940b1b07228d3466614364e0.png

以下开始分享我的亲身经历:

我研三上才第一次接触到《十四讲》,没错,是才知道这本书的存在,才知道有SLAM这个词汇。

然后在隔壁课题组同学的帮助下跑通了ORB-SLAM,跑的还是官方的包。

同学期,因为毕设的一个环节是双目SLAM,花大把时间读《十四讲》+跑代码建立了对SLAM的基本认知。

春节后爆发疫情,在家无聊用C++写了一些视觉的小工程,代码量1W行,打通了C++基本功。

20年5月份入职,9月底开始从事SLAM相关的岗位。看了两个月VINS-Fusion,似懂非懂,工作上没有产出(惭愧)。

20年年底上手某厂的某开源激光SLAM框架,从跟着前辈同事跑bag包、配置launch文件做起。

这个框架非常难读(对当时的我来说),不懂C++新特性 + 无读SLAM代码经验 + 没有架构思维,让我完全不知道代码在干嘛。硬着头皮死磕,开始逐渐明白了一些小模块的代码为什么这么写,比如多激光雷达数据预处理。再后来能够在小车上实时跑算法了,可以试着调整一些参数看看效果如何改变。【此时此刻,才有资格称自己为小白】

质变发生在2021年的前三个月,凭借着死磕精神硬是把庞大的代码工程吃下来了(这个工程总共6W+行代码,远远大于其它激光SLAM框架,白天做工作,晚上看代码+做笔记),期间前辈离职个人被顶到一线,直面算法落地的责任,但恰恰是这种直面,让我对代码的理解飞速加深

紧接着团队开发的算法正式落地项目应用,我开始每天泡在应用场景里,因为算法刚落地一定会有各种水土不服,作为工程师,根据持续暴露的各种问题优化代码解决问题,是本分

等这个落地跟进过程大体结束,已是21年的5月底。这时的我,有种酣畅淋漓的感觉!

落地效果比较稳定后,逐渐有时间做一些global的复盘和总结,SLAM这个事开始在我脑海中逐渐变成一个清爽、条理、具体的存在,赏心悦目。

然后开始去看其它的方案,沿着 LOAM/A-LOAM/LeGO-LOAM/Lio-Sam 一路往前走,期间同步系统性地review了 2020/2021年的 IROS和ICRA ,我发现自己无论是看代码还是review paper,速度已经非常快了(大神太多,这里只是跟之前的自己比)。

在看代码的时候看到一些不明意图的细节,开始能够很快意识到、或者是根据该模块的功能反向推测到,作者为什么这样写。

在 review 别人paper的时候,看到一些不错的想法,会想到怎样把它嵌入到自己的系统中,解决自己遇到的工程问题,开始在组会上提出一些新的想法和同事们讨论。会有冲动用个人时间去复现未开源代码的paper,并且现在也正在做。

一通百通!

半年时间,SLAM世界对我好像瞬间通透了!工作上的成就感也让自己自信起来。

为什么我认为【理论功底+coding能力+工程trick】构成了初阶工程师的能力栈?大抵也是我对个人经历的总结。质变的那3个月和落地跟进的2个月,理论功底的补齐一直没有断过,高数/线代/矩阵论课本是手边书,《概率机器人》解决对滤波算法体系的理解,看paper/博客/知乎做总结家常便饭;coding能力方面,C++PrimePlus是手边书,C++11/14官网网站是我最经常访问的网站之一,我一直都喜欢总结,享受把难以说清楚的问题用清晰的图表或脑图表达出来的快感,对复杂架构下多线程间交互逻辑的梳理使我非常得意;工程trick方面有两点,研读优秀开源框架本身就学到了很多trick,落地的过程中又遇到了新的问题,逼着你不仅要自己想还要多和大家请教交流,创造或挪用一些新的trick来解决问题。

最后,放出能力栈的完全版,即兴总结,定有疏漏,仅供入门者参考,大神跳过。6b4ee07a5a0436b6390e06c524a9ad65.png

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,如果您希望分享到自动驾驶之心平台,欢迎联系我们!

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码免费学习)

bac5da8e9e4e6ab4891e91cdacaa4a3f.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

c0084a77ede6e518d291a96d705d4589.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、Occupancy、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

e68fe4a7187b371cb6330a603c88dc7a.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值