目前学什么专业的人在搞SLAM?各有什么优势?

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

重磅干货,第一时间送达

原提问:

目前学什么专业的人在搞SLAM?如需要哪些专业知识,或者找什么专业的人合作?

7c032d8d78fc1e39a8fcf2430272b4e1.png

李雅不诺夫

一些比较牛掰的论文后面都有作者简介的,他们大都是计算机/电子信息专业出身;其实到现在觉得搞SLAM最需要的是数学和编程。

本科机械专业,跨专业跨了几条街转到SLAM里头,目前直博第一年,科研弱鸡一枚,还没什么成果,正在论文→程序→教材无限循环中,想在这儿吐槽一下最近的感受。同时也希望能能够被各路大佬吐槽,批评指正。

本科学过的各种三维建模和机械制图和设计什么的已经彻底用不上了,机械专业也没有太多关于编程的课程,好在自己参加过机器人比赛,写过一点点STM32的程序,至少现在上手编程的时候没那么痛苦。刚刚入学的时候白白浪费了一个学期,硕士阶段的课多到爆炸而且水的一批,根本就没有和自己研究方向相关的课程(除了数学课)。我们组每一届的人的研究方向都不一样,好在网上有不少资源。

编程方面:一开始进课题组的时候,看到有两台turtlebot2,就决定了做移动机器人方向,而且SLAM在移动机器人已经得到很重要的应用。有个硬件平台,更加容易上手。于是从零开始学ubuntu和ROS,在这儿强行安利中科院在慕课网上的ROS教程,跟着做一遍至少能懂得基本的操作了。roslaunch和rosrun别人的程序发现能运行,挺dei啊。可是当自己写起来发现啥都不会,就比如launch文件和.cpp文件之间的变量是怎么关联的,编译不过常常不是因为C++语法的问题而是因为CmakeLists.txt文件,等等。

总之对编程方面的感受就是:现在的ROS教程无非就是给package教你怎么敲命令行,看别人的程序不代表一定真的理解了,一定要亲自动手自己写程序实现一些功能。很多细节和工程技巧是书本上不会写的,需要自己各种百度谷歌慢慢解决,熟能生巧。

去年年底开始看《十四讲》,花一个多月过了一遍。秉承实践出真知的学习方式,从这学期开始用了将近两个月在ROS里写了一个前端,借鉴了第九章 的project,并在rviz里进行可视化,实现了点云的实时显示和里程计信息的可视化。只有一个前端,一点都不鲁棒,很飘。现在确实有了很多很好的开源代码,比如ORB-SLAM,VINS,运行过ORB-SLAM,真的稳得一批。但我觉得自己还是应该尝试着写一个,要不然搬运别人的代码也会有点无从下手,而且总有一天需要自己动手写一个工程。

相关的知识学习方面,除了《十四讲》,还买了《概率机器人》、《机器人学中的状态估计》、《Factor Graphs for Robot Perception》等等,我觉得把那些书都过一遍不现实,都是当工具书来看的。记得导师说过“读PhD不只是学习”;也在看最近两年的论文,还有一些经典的文章和review,不只是SLAM,还有导航和路径规划、人机交互、机器学习在机器人上的应用等等。现在觉得学习和科研就像控制系统有反馈环节,也像SLAM系统有回环检测,需要不停地返回来从教材和论文里寻找答案。我的课题是移动机器人,SLAM是其中一个重要的部分。

目前个人认为,单纯的SLAM,个人在前端(视觉里程计或者tracking thread)方面没找到可以灌水的坑,想基于一些比较稳定的前端进行进一步的研究,比如后端、回环,或者建图之后怎么进行导航、规划;怎么让机器人自动探索环境自主建图;移动机器人上如果装有机械手怎么配合SLAM进行抓取;因子图、强化学习和凸优化等等数学工具能解决什么样的问题...还有好多。但我想还是需要看一些文章再开干。

最后真的机器感激,在SLAM的科普和教学方面,无偿写博客,无私开源的大佬们,还有泡泡机器人公众号(编者注:还有计算机视觉life 公众号哦),等等

计算机视觉life

可以说各个专业都有吧,当然大部分是理工科的。我们从零开始学习slam知识星球里做过大家的背景调查:

我选择了几个放出来,大家先看图

d1b2359357e1a789253b1866586ea434.pngc6a0377aff09010cb9d6cef336ede50f.pngd66fe5b3d8a5d4ae6ef6e111bbf2a9c1.pngaaae5ad4355174b7cf2ba83246c5b5af.png

因为我们也有一个实名交流群。所以对成员背景比较了解,机械,自动化,通信,计算机的最多,也有其他偏门专业(比如核物理,土木,化学)跨行学的,所以学习slam底线差不多就是理工科专业,有一定c/c++语言编程基础,学过基本的大学数学,计算机知识就可以。

至于优势,

数学专业优势在于理论推导,因为slam李群李代数,优化部分还是需要一点数学基础,当然现在很多库都写好了,只是应用不需要深究。

计算机软件专业优势在于编程能力强,slam是应用科学,好的编程能力能够快速读懂,编写代码。

机械自动化专业优势在涉及到机器人相关硬件时有较好的动手能力,快速解决硬件问题。

当然这些优势并不是绝对的,我认识偏门专业自学slam还学的很透的大佬。

下载1:OpenCV-Contrib扩展模块中文版教程

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

下载2:Python视觉实战项目52讲

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

下载3:OpenCV实战项目20讲

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

交流群

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

47e7b0edb686efea2315234a4c19bed1.png

87c4427160851d473a5cbf4d0a2309e8.png