硕士研究生阶段如何学习slam机器人?

小白学视觉

共 5877字,需浏览 12分钟

 ·

2022-05-20 14:01

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

重磅干货,第一时间送达

本文仅作为学术分享,如果有侵权,会删文处理

 

硕士研究生阶段如何学习slam机器人?


作者:矮脚兽
https://www.zhihu.com/question/396119527/answer/1256819922
实验室的师兄刚毕业,都找的是slam方向的工作,自己也正在往这个方向努力.所以在这里总结以下学习经验吧.
个人认为看视频的效率较低,更倾向于看书,以下的推荐的英文书籍大都可以在Library Genesis(需富强上网)上找到,都是个人已经看完或者正在看的书,相信会对你有所帮助.

1. 基础篇

1.1 C++

C++是slam所有知识的基础,它的作用和地位怎么强调都不为过,在学习其他所有知识之前一定要先过这一关.否则你的接下来的路会很难走.
在这里推荐两本书:C++ Prime PlusEffective C++,特别是第一本,它将陪伴你整个slam的学习生涯.我当时大概花了两个月左右每天练习上面的例子,后面发现C/C++的使用贯穿了所有学习环节,所以每次遇到不会的都会重新来读这两本书.
C++四大组成部分,每一个都要懂其用法,至少做到遇到问题时能快速定位到书里相应的部分:
  • 以C语言为载体的面向过程的编程(Procedure Oriented Programming)
  • 面向对象的编程(Object-Oriented Programming):类,多态,继承,虚函数
  • 为了解决代码重用问题而出现的泛型编程(Generic Programming)以及对应的标准模板库(STL)

1.2 OpenCV

有了C++的基础,你就可以来学习一些图像处理的内容了.图像处理很多算法原理上会比较难以理解,不过没关系,我们有强大的图像处理的函数库可以调用,那就是OpenCV.
学习OpenCV最最推荐的教材是官方的Tutorial.最开始看完Introduction to OpenCVThe Core Functionality(core modeule)这两个就行,剩余的可以以后用到再回来查找.
如果你英文水平不够好的话,可以看看《OpenCV3编程入门》.个人更加推荐看英文的入门文档,毕竟翻译过程会有信息丢失,不利于理解学习.

1.3 Linux & ROS

Linux是slam常用的搭载环境,它其实有很多的发行商,但是只推荐使用Ubuntu,原因很简单,只有机器人操作系统ROS是基于它开发的.
关于Linux的学习,推荐两本书《鸟哥的Linux私房菜》The Linux Command Line.前者是基于CentOS写的,但是这并不影响使用,后者是基于Ubuntu写的,但是是英文书,
自己学着安装Ubuntu的双系统(虚拟机和Windows直接安装都不推荐,会出各种意想不到的Bug).然后拿着The Linux Command Line,将里面常见的命令自己敲一遍看看效果.
个人认为比较重要的几个点:
  • 终端的使用
  • Linux文件目录结构
  • 怎么安装软件
  • 怎么新建和删除文件/文件夹
  • 文件打包及解压
至于ROS的学习,目前只推荐官方的Wiki文档.

1.4 机器人学数学基础

这里涉及到了三维旋转矩阵,四元数,李群李代数的知识.由于在学校选了相应的课(听老师说现在全国只有北航开设了相关课程?),所以在课外没怎么学习.不过最近倒是在Github上发现了一个很好的项目,主要是讲三维旋转和四元数的,可以去下载下来看.
我自己也有开了相关的专栏,感兴趣的可以去看看(随缘佛性更新):

机器人学数学基础专栏地址:

https://zhuanlan.zhihu.com/c_1244623606790995968

2. 实践篇

2.1《视觉slam十四讲》

之所以把这本书放在第二部分讲,主要有三个原因:
  1. 这本书提供了大量的源码,具有很强的实践意义.
  2. 如果你没有上面的基础知识作为支撑,看这本书可能会有些吃力
  3. 从找工作的角度讲,个人认为基础知识的意义大于slam知识本身
关于这本书,其他回答说的很多了,不再赘述.值得强调的是,里面的程序最好自己写一遍,修改修改部分代码看看会出来什么样的效果.

2.2 相机 & 激光雷达

在学习好理论知识后,家庭条件允许的话,,可以自己设计组装一个机器人来玩玩.上淘宝购买相应的零部件.把它们架设到能移动的机器人上,自己编程实现建图啥的.
零部件网购地址:
1、https://item.taobao.com/item.htm?spm=a230r.1.14.30.57113f68i6DW3D&id=579103092794&ns=1&abbucket=4#detail
2、https://item.taobao.com/item.htm?spm=a1z0k.7386009.0.d4919233.3dca5014N5GgWp&id=574115048099&_u=t2dmg8j26111
2.3 TurtleBot
TurtleBot是一款搭载ROS的移动机器人,上面自带了激光雷达或者双目视觉系统.

TurtleBot
学校开设了移动机器人的课程,去年(2019)刚刚购买了一批TurtleBot2,所以很有幸使用了一段时间.原本还想着自己买一台玩玩,但是看了一下淘宝将近6000元的价格,只能说一句"打扰了,再见!".
你可以打听打听学校有没有实验室有这个玩意儿,如果有的话可以去蹭一蹭,这将会对你的实践能力的提升有很大的帮助.

3. 进阶篇

基础有了,实践有了,接下来就是理论水平的提高了.
主要从两个方向努力,一个是看相关论文,还有一个是看两本书:
《概率机器人》对应的英文书名叫Probabilistic Robotics,还有一个多视觉几何的书籍Multiple View Geometry in computer vision
这两本书不知道各位大佬感觉如何,我最近正在啃,觉得还是比较吃力的.近期准备把这两本书看完然后去看《视觉slam十四讲》后面罗列的一些论文.

4. 就业篇

这个是上面答主都都忽略的一点,这个可能要泼一些冷水了.前两年随着百度宣布搞无人车,带动了一大批的slam就业岗位,但是现在风口渐渐平息,最近在媒体上也少有看到相应的报道.虽然slam现在看起来还是一个比较火的方向.但是很多单位已经开始减少招收的人数.至于工资,年薪大概在25w左右,还算是可以的.
不过,既然选择了这条路就勇敢向前走吧,一起加油!

作者:郑纯然
https://www.zhihu.com/question/396119527/answer/1235876702
  • 首先是代码环境问题:标配Ubuntu+ROS,因为绝大部分源码是C++,所以CMake的基本模板要会用

浙江大学视觉slam公开课-从视频标定到SLAM视频地址:

https://www.bilibili.com/video/BV1ax411R7Hd
  • 必看入门书籍:视觉SLAM十四讲  稍微进阶:机器人学的状态估计,多视图几何
       视频地址:https://www.bilibili.com/video/BV1YW411P7AU
  • SLAM相关非常易懂快速上手的课程:
1.这位浙大教授讲得非常非常清晰,虽然不如高博视觉SLAM的课有配套习题和课件那样系统,但可能谭平教授更会去用学生能理解的方式阐述SLAM的概念,表达也更清晰一些
视频地址:
https://www.bilibili.com/video/BV1ax411R7Hd
2. 经典的高博的视觉SLAM
视频地址:
https://www.bilibili.com/video/BV16t411g7FR?from=search&seid=14811571160409762901
3. 曾书格老师的激光SLAM或者某象的无人驾驶
视频地址:
https://www.bilibili.com/video/BV11a4y1v79G
4. 波恩大学《传感器及状态估计》SLAM,这是2020年最新的课程
视频地址:https://www.bilibili.com/video/BV1aK4y1k7FQ
5. Coursera 自动驾驶教程,主要是讲相机模型,多视几何方面的内容,对3D视觉标定方面非常有帮助
视频地址:
https://www.bilibili.com/video/BV1PE411D72p?p=2
6. 宾大的vslam,我没听过,但据说听完收获很大
视频地址:
https://www.bilibili.com/video/BV1Y4411m7aG?from=search&seid=18344384925427038262
  • SLAM方面的论文
论文地址:
https://blog.csdn.net/heyijia0327/article/details/82855443
贺博在这里总结得特别好,有分类,有文章作者名,有下载链接,而且貌似还在维护更新...
因为毕竟学习时间和精力毕竟有限,初学者看起来比较慢,所以我一会儿重点推荐一两篇
  • 如何借助这些资源开展SLAM学习
我接下来只是讲得我自己的学习方法,希望能帮助到你。
1.首先看一遍视觉SLAM十四讲这本书,从三维空间的表示方法,李群李代数的数学原理这些关键的基础概念,到视觉SLAM的前端,后端,回环整个流程的经典算法实现原理。大致过一遍,不需要把每一个公式都推导一遍,比较难的雅各比可以放一放,一些简单的随手就推了,比如针孔相机模型。
2.之后可以撸一遍视觉SLAM十四讲的视频,抱着之前对SLAM的印象,也可以说是带着疑问吧,在高博的耐心讲解中再回顾一下,视频也不会看得很慢(比如因为看不懂看一下停一下),还可能会对以前理解比较粗糙的地方突然领悟...###此处致敬高博,并没有勇气 @Ta
3.这时候可以看一些经典且写得很规范的代码啦,比如ORB-SLAM2!!
辅助可以看一下这篇论文:ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras
4. 可以自己模仿写一个视觉里程计
5. 对于激光SLAM其实我也推荐先看视觉SLAM十四讲,因为SLAM间结构和原理相似,且视觉SLAM有这样好的入门教材没有不看的理由。同时由于相机的观测模型相比激光雷达会更复杂一些,所以互相转换起来会比较快。我之前一个回答,可以借鉴一下~
网址:
https://www.zhihu.com/question/52634751/answer/1233033108
  • 一些其他主要方向
  1. 语义SLAM
网址:
https://zhuanlan.zhihu.com/p/58648284
我觉得高博讲得太好了,流泪ing,几分钟时间让我这个语义小白都懂了是什么,为什么,要怎么做...深度学习提取路标啊,建立物体级别的地图去进行地图复用等等等,文章还举例了几篇论文,都挺好,可以看看~
2. VIO视觉惯性里程计 or VINS视觉惯性导航系统
这边深蓝有出了一套课,讲得蛮好的,主讲是贺博高博崔大神,里面IMU的预积分,以及对应残差雅各比,初始化等讲得蛮详细。最棒的是基于目前非常强的沈老师组的VINS-mono的代码架构讲解的。此处强推一篇论文:VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
前几天本科毕设要求英文文献翻译,我自己翻译了一份重新排了版,传了一份Word版本的,大家自取吧~
链接:https://pan.baidu.com/s/1t_bDIiWOdyxnJYuqGrMSwA
提取码:um34
3. 与深度学习结合,估计位姿,用来做闭环检测(场景的再识别)
4. 水下SLAM
5. 仿生SLAM
6. ......

作者:wjonuee
https://www.zhihu.com/question/396119527/answer/1235688565
1、看书:高翔的《视觉SLAM十四讲》、《概率机器人》、《机器人学中的状态估计》、《计算机视觉中的多视图几何》;
2、学习ROS、OpenCV、Eigen、sophus、Ceres、g2o等开源软件使用;
3、看SLAM开源项目,激光经典的cartography、gMapping、Hector等;视觉的ORB-SLAM、RGBD-SLAM,LSD-SLAM等;
4、关注优秀的SLAM公众号,计算机视觉life、泡泡机器人SLAM等;
附一篇计算机视觉life的一篇推荐给SLAM小白入门的文章:https://mp.weixin.qq.com/s/GYcO7m9oBfJK4h2ZWRq0mw
其中有一张思维脑图不错:
https://weixin.qq.com/cgi-bin/readtemplate?check=false&t=w_indexn73&uin=&stype=10037102&promote=1003799&fr=&

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

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

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

交流群


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


浏览 53
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报