当前位置: 华文星空 > 汽车

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

2020-05-20汽车

实验室的师兄刚毕业,都找的是slam方向的工作,自己也正在往这个方向努力.所以在这里总结以下学习经验吧.

个人认为看视频的效率较低,更倾向于看书,以下的推荐的 英文书籍 大都可以在Library Genesis(需富强上网)上找到, 都是个人已经看完或者正在看的书 ,相信会对你有所帮助.

1. 基础篇

1.1 C++

C++是slam所有知识的基础 ,它的作用和地位怎么强调都不为过,在学习其他所有知识之前一定要先过这一关.否则你的接下来的路会很难走.

在这里推荐两本书: C++ Prime Plus Effective C++ ,特别是第一本,它将陪伴你整个slam的学习生涯.我当时大概花了两个月左右每天练习上面的例子,后面发现C/C++的使用贯穿了所有学习环节,所以每次遇到不会的都会重新来读这两本书.

C++四大组成部分,每一个都要懂其用法,至少做到遇到问题时能快速定位到书里相应的部分:

  • 以C语言为载体的 面向过程的编程(Procedure Oriented Programming)
  • 面向对象的编程(Object-Oriented Programming) :类,多态,继承,虚函数
  • 为了解决代码重用问题而出现的 泛型编程(Generic Programming) 以及对应的 标准模板库(STL)
  • 1.2 OpenCV

    有了C++的基础,你就可以来学习一些图像处理的内容了 .图像处理很多算法原理上会比较难以理解,不过没关系,我们有强大的图像处理的函数库可以调用,那就是OpenCV.

    学习OpenCV最最推荐的教材是官方的Tutorial.最开始看完 Introduction to OpenCV The 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上发现了一个很好的项目,主要是讲三维旋转和四元数的,可以去下载下来看.

    我自己也有开了相关的专栏,感兴趣的可以去看看(随缘佛性更新):

    2. 实践篇

    2.1【视觉slam十四讲】

    之所以把这本书放在第二部分讲,主要有三个原因:

    1. 这本书提供了大量的源码,具有很强的实践意义.
    2. 如果你没有上面的基础知识作为支撑,看这本书可能会有些吃力
    3. 从找工作的角度讲,个人认为 基础知识的意义大于slam知识本身

    关于这本书,其他回答说的很多了,不再赘述.值得强调的是, 里面的程序最好自己写一遍,修改修改部分代码看看会出来什么样的效果 .

    2.2 相机 & 激光雷达

    在学习好理论知识后,家庭条件允许的话,,可以自己设计组装一个机器人来玩玩.上淘宝购买相应的零部件.把它们架设到能移动的机器人上,自己编程实现建图啥的.

    2.3 TurtleBot

    TurtleBot是一款搭载ROS的移动机器人,上面自带了激光雷达或者双目视觉系统.

    TurtleBot

    学校开设了移动机器人的课程,去年(2019)刚刚购买了一批TurtleBot2,所以很有幸使用了一段时间.原本还想着自己买一台玩玩,但是看了一下淘宝将近6000元的价格,只能说一句"打扰了,再见!".

    你可以打听打听学校有没有实验室有这个玩意儿,如果有的话可以去蹭一蹭,这将会对你的实践能力的提升有很大的帮助.

    3. 进阶篇

    基础有了,实践有了,接下来就是理论水平的提高了.

    主要从两个方向努力,一个是看相关论文,还有一个是看两本书:

    【概率机器人】 对应的英文书名叫 Probabilistic Robotics ,还有一个多视觉几何的书籍 Multiple View Geometry in computer vision

    这两本书不知道各位大佬感觉如何,我最近正在啃,觉得还是比较吃力的.近期准备把这两本书看完然后去看【视觉slam十四讲】后面罗列的一些论文.

    4. 就业篇

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

    不过,既然选择了这条路就勇敢向前走吧,一起加油!

    最后,求点赞,求关注,求收藏,你的支持是我更新的最大动力!