學習SLAM需要哪些預備知識?
本科自動化,深感知識量差距很大,無論是從編程還是數學。
首先搬出寶典:Multiple View Geometry in Computer Vision。這本書基本涵蓋了Vision-based SLAM這個領域的全部理論基礎!讀多少遍都不算多!另外建議配合Berkeley的課件學習。(更新:這本書書後附錄也可以一併讀完,包括附帶bundle adjustment最基本的levenberg marquardt方法,newton方法等)
只要是SLAM問題就要涉及optimization,就要用到各種least square演算法。所以另一個基礎理論是Sparse Matrix,這是大型稀疏矩陣處理的一般辦法。可以參考Dr. Tim Davis的課件:Tim Davis ,他的主頁里有全部的課程視頻和Project。針對SLAM問題,最常用的least square演算法是Sparse Levenberg Marquardt algorithm,這裡有一份開源的代碼以及具體實現的paper:Sparse Non-Linear Least Squares in C/C++
然後是框架級的工具。最常用的機器人框架是ROSROS.org | Powering the world"s robots,可以使用在Windows,Linux和MacOS等操作系統上,裡面包含一整套常用的機器人理論的演算法和工具的實現。另一個開源工具集是OpenSLAM OpenSLAM.org,其中的g2o是目前最流行的graph optimization的實現工具。另外OpenCV也是視覺相關必備的基礎工具,Multiple View教材中的常用演算法在OpenCV中都有常用的實現。(更新:OpenCV的文檔Camera Calibration and 3D Reconstruction 中,包含SLAM相關的基礎理論公式以及C/C++/Python實現的API)
另外多說一句題外話,因為Optimization和圖片的feature extraction是SLAM里最核心的兩個問題,而這兩個問題都是運算量極大的。好的SLAM框架要兼顧速度和精確度。目前大部分Vision或者RGBD的SLAM框架都是用C++來時實現完成的以確保運算速度。雖然我個人很欣賞Python,並且Python3也支持SciPy,OpenCV,ROS等重要工具,不過依然有大量的諸如g2o等基礎性庫在python下無法使用,而且如果要借鑒其他人的代碼,最方便的還是在C++中實現。所以如果提問者有志於在這個領域做深入研究,夯實的C++基礎是必不可少的。Introduction to Algorithms,以及 @vczh 推薦的C++ Primer等,都是在實際工作前要自己做好的功課。
下面說一些硬體和實驗上的知識儲備。首先Vision-based SLAM常用攝像機標定(Camera Calibration)的世界通用簡單方法,是張正友博士(Dr. Zhengyou Zhang,主頁Zhengyou Zhang"s Home Page)的方法(張正友博士是本領域裡少數的具有極其巨大影響力和貢獻的華人學者,已成腦殘粉嚶嚶嚶)。具體方法和實現,我在這裡推薦兩個,一個是Caltech工具箱:Camera Calibration Toolbox for Matlab ,以及相關paper:Camera Calibration Toolbox for Matlab。該方法的另一個實現,是Matlab最新版本內置的Camera Calibration的application,自動導入標定圖片並把得到的結果輸出給Matlab,更加自動化,更加便捷準確。更多的Camera Model理論知識請參考Multiple View Geometry。
至於RGB-D Camera,最常用的採集設備有兩種,一種是Microsoft Kinect,一個生態環境完備的RGBD Camera,可以直接用Visual Studio可Kinect SDK直接開發,也有大量開發好的程序以供借鑒參考,也可以用OpenNI和ROS採集處理,我就不多介紹了,畢竟微軟是對程序員最友好的公司沒有之一(微軟大法好)。另一個是Google的Project Tango,Google對於這個自家的神器還是很低調的,可以看看宣傳片ATAP Project Tango ,絕對酷炫——可惜我們lab剛剛買的那一台,我還沒有用過,所以對具體開發不太了解。
另外有幾個網上成熟的數據集和測試方法,一個是Malaga Dataset,一個西班牙的團隊採集的Malaga城市數據:The Málaga Stereo and Laser Urban Data Set,覆蓋了城市中汽車駕駛的各種情況(停車,加速,減速,行人,建築,綠化帶等),裡面提供了雙攝像頭,Laser,IMU等數據以及GPS的ground truth trajectory。不過該版本因為是在市中心,所以GPS的ground truth並不可靠。另一個是慕尼黑工業大學Computer Vision Lab的RGB-D
dataset https://vision.in.tum.de/data/datasets/rgbd-dataset,裡面提供了大量的室內的RGBD數據集,以及非常方便好用的benchmark tools。第三個是KITTI Dataset:The KITTI Vision Benchmark Suite,也是認可度很廣泛的汽車駕駛數據集。
原答案鏈接:去美國讀CS博士,方向是機器人導航,視覺方面,推薦一下相關編程方面準備?還有相關演算法需要學習哪些? - 立黨的回答
光收藏不點贊,bs你們(手動斜眼
還是說視覺slam吧。
先說視覺這塊,首先射影幾何的一些內容相機模型,單視幾何,雙視幾何和多視幾何。這些內容可以在Multiple View Geometry in Computer Vision這本書中找到。英文版的,另外中科院的吳福朝編著的「計算機視覺中的數學方法」也很好,涵蓋了上述了MVG in CV book中的大部分內容,強烈安利。
然後是一些視覺特徵,這方面就是一些特徵,描述子,匹配相關等。見SIFT,ORB、BRISK、SURF等文章。
數學方面首先是三維空間的剛體運動,參考《機器人學(第2版)》 蔡自興【摘要 書評 試讀】圖書。
關於優化,SLAM中的優化方法十分基本,參考高斯牛頓,LM,結合稀疏線性代數。其實用的時候會使用一種g2o的圖優化庫或者ceres。參考文章 g2o: A General Framework for Graph Optimization
http://ais.informatik.uni-freiburg.de/publications/papers/kuemmerle11icra.pdf
最難的應該算是李群和李代數,這方面可以參考book [state estimation for Robotics](http://asrl.utias.utoronto.ca/~tdb/bib/barfoot_ser15.pdf)。當然不想看書的話可以參考博客李代數 - 標籤 - 半閑居士 - 博客園。
為了看論文的時候能夠比較流暢,還應該具備一些概率論的知識,這裡推薦book[Probabilistic Robotics](http://www.probabilistic-robotics.org/) [pdf](https://docs.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf)
話說高翔博士近期完成一本SLAM的入門book,有理論有實踐,寫的不錯,推薦。他包含了上述在視覺slam需要的所有基礎知識,真是造福大眾啊。詳細研讀此書,以後讀各種論文就不會顯得那麼吃力了吧。最後列舉一些玩slam的一些必備工具和相關資源。
tools
1. ubuntu, cmake, bash, vim, qt(optional).
2. OpenCV install, read the opencv reference manual and tutorial
3. ros, [install](ROS/Installation - ROS Wiki), [tutorial}(ROS/Tutorials - ROS Wiki).
4. python. 可以使用pycharm,作為IDE.
為什麼使用ubuntu?因為大家的代碼,全是用linux,而且很多使用ros的,ros一定是要Linux的,同時還要cmake。Ubuntu是比較適合初學Linux的人,非常好用。
somethind about Calibration
1. [opencv camera Calibration](http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)
2. [matlab camera Calibration toolbox](Camera Calibration Toolbox for Matlab)
3. [svo camera Calibration](uzh-rpg/rpg_svo)
4. [ros wiki camera Calibration](camera_calibration - ROS Wiki)
為什麼要標定相機呢,因為slam的模型中假設 相機的內參數是已知的,因此有了這個內參數我們才能正確的初始化slam系統。
slam open sources
1. [svo](uzh-rpg/rpg_svo)
2. [orb slam](raulmur/ORB_SLAM2)
3. [ar_tracker_alvar githun page](sniekum/ar_track_alvar) [ros page](ar_track_alvar - ROS Wiki)
4. [ros ptam](ethzasl_ptam - ROS Wiki),原始代碼不支持ros, 這裡給出ros版本的代碼. 原始[代碼](Oxford-PTAM/PTAM-GPL)[網站](Parallel Tracking and Mapping for Small AR Workspaces (PTAM))
5. DSO JakobEngel/dso
ros books
1. Learning ROS for Robotics Programming
2. 機器人操作系統(ROS)淺析
3. ros by example http://www.lulu.com/shop/http://www.lulu.com/shop/r-patrick-goebel/ros-by-example-indigo-volume-1/ebook/product-23032353.html
some blogs about ros
1. 古月居 - 怕什麼真理無窮,進一寸有一寸的歡喜
SLAM基礎學習
1. [Multiple View Geometry in Computer Vision](Multiple View Geometry in Computer Vision)。
2. Sparse Matrix [Sparse Non-Linear Least Squares in C/C++](Sparse Non-Linear Least Squares in C/C++)
3. [openSLAM](https://www.openslam.org/)
4. dataset [tum](RGB-D SLAM Dataset and Benchmark)
5. [PCL](PointCloudLibrary/pcl)
6. [opencv](OpenCV | OpenCV)
推薦閱讀的書
1. [Multiple View Geometry in Computer Vision](Multiple View Geometry in Computer Vision)
2. [Probabilistic Robotics](http://www.probabilistic-robotics.org/) [pdf](https://docs.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf)
3. [state estimation for Robotics](http://asrl.utias.utoronto.ca/~tdb/bib/barfoot_ser15.pdf)
4. [Quaternion kinematics for the error-state KF](http://www.iri.upc.edu/people/jsola/JoanSola/objectes/notes/kinematics.pdf)
5. 凸優化,https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf
6. 線性系統理論,Chi-Tsong Chen: 9780199959570: Amazon.com: Books
7. An Invitation to 3-D Vision,https://www.eecis.udel.edu/~cer/arv/readings/old_mkss.pdf
8. Rigid Body Dynamics,http://authors.library.caltech.edu/25023/1/Housner-HudsonDyn80.pdf。
paper about vision slam
- Georg Klein and David Murray, "Parallel Tracking and Mapping for Small AR Workspaces", In Proc. International Symposium on Mixed and Augmented Reality (ISMAR"07, Nara).
- D. Scaramuzza, F. Fraundorfer, "Visual Odometry: Part I - The First 30 Years and Fundamentals IEEE Robotics and Automation Magazine", Volume 18, issue 4, 2011.
- F. Fraundorfer and D. Scaramuzza, "Visual Odometry : Part II: Matching, Robustness, Optimization, and Applications," in IEEE Robotics Automation Magazine, vol. 19, no. 2, pp. 78-90, June 2012.
doi: 10.1109/MRA.2012.2182810
- A Kalman Filter-Based Algorithm for IMU-Camera Calibration Observability Analysis and Performance Evaluation
- SVO- Fast Semi-Direct Monocular Visual Odometry
- [eth zasl sensor](ethzasl_sensor_fusion - ROS Wiki),
- Stephan Weiss. Vision Based Navigation for Micro Helicopters PhD Thesis, 2012 pdf
- Stephan Weiss, Markus W. Achtelik, Margarita Chli and Roland Siegwart. Versatile Distributed Pose Estimation and Sensor Self-Calibration for Autonomous MAVs. in IEEE International Conference on Robotics and Automation (ICRA), 2012. pdf
- Stephan Weiss, Davide Scaramuzza and Roland Siegwart, Monocular-SLAM–based navigation for autonomous micro helicopters in GPS-denied environments, Journal of Field Robotics (JFR), Vol. 28, No. 6, 2011, 854-874. pdf
- Stephan Weiss and Roland Siegwart. Real-Time Metric State Estimation for Modular Vision-Inertial Systems. in IEEE International Conference on Robotics and Automation (ICRA), 2011. pdf
- Simon Lynen, Markus Achtelik, Stephan Weiss, Margarita Chli and Roland Siegwart, A Robust and Modular Multi-Sensor Fusion Approach Applied to MAV Navigation. in Proc. of the IEEE/RSJ Conference on - - Intelligent Robots and Systems (IROS), 2013. pdf
- [orb slam]
- Raúl Mur-Artal, J. M. M. Montiel and Juan D. Tardós. ORB-SLAM: A Versatile and Accurate Monocular SLAM System. IEEE Transactions on Robotics, vol. 31, no. 5, pp. 1147-1163, 2015. (2015 IEEE Transactions on Robotics Best Paper Award). PDF.
- Dorian Gálvez-López and Juan D. Tardós. Bags of Binary Words for Fast Place Recognition in Image Sequences. IEEE Transactions on Robotics, vol. 28, no. 5, pp. 1188-1197, 2012.
SLAM涵蓋的東西比較多,分為前端和後端兩大塊。前端主要是研究相鄰幀的拼接,又叫配准。根據感測器不一樣,有激光點雲、圖像、RGB-D拼接幾種,其中圖像配准中又分基於稀疏特徵(Sparse)的和稠密(Dense)的兩種。後端主要是研究地圖拼接(前端)中累積誤差的校正,主流就兩種,基於概率學理論的貝葉斯濾波器(EKF,PF)以及基於優化的方法。EKF已經用得很少了,PF也就在2D地圖SLAM(Gmapping)中用得多,大多還是用優化的方法在做。
你自己已經說了這塊需要的知識,一個是數學,一個是編程。所以入門的話,也從這兩塊開始弄。一、數學方面
數學的話,建議樓上說過的Thrun的《probabilistic robotics》,其實不需要全部看完,了解下概率學是如何解決機器人中的問題的,關鍵學習貝葉斯濾波,也是就是貝葉斯公式在各個問題(定位,SLAM)中的應用。另外,優化的話,建議先把最小二乘優化中給弄透徹,數學推導要會,因為很多問題,最後都是歸結到最小二乘優化,然後就是梯度下降、求Jacobian之類的。
二、編程方面
理論的東西是比較無聊的,必須得實戰。建議入門先寫一發最小二乘優化,可以就做一個簡單的直線擬合,不要用Matlab中的優化工具,了解數學推導最後是怎麼寫到代碼裡面的。然後,一定要玩好Matlab優化工具包,做實驗最方便了。
有了一些基礎之後,可以嘗試玩一些現有的SLAM包,推薦兩個地方,一個是www.openslam.org,裡面有各種SLAM包,主流的SLAM演算法,在這一般都有源碼。另外一個就是ROS了,裡面有很多現成的SLAM包,像Gmapping,RGB-D SLAM,上手非常快,甚至你沒有任何設備,你也可以利用ROS中的模擬環境(如Gazebo)跑。建議先試試Gmapping,百度上有很多中文教程,一開始跑這些package還是很漲成就感的,可以提高你的興趣。
如果你是做視覺或者RGB-D,那麼OpenCV和PCL是必不可少的工具。早點上手肯定沒得錯。
三、進階
大體入門之後,你就需要根據你實驗室研究的項目來學習了,看是用激光、相機、還是Kinect來做了,不同感測器的前端演算法還是有些差距的。激光的話一般是ICP,相對簡單。視覺的東西還是比較多的,樓上推薦《Multiview Geometry in Computer Vision》確實很重要,不過,我覺得這同時你還應該了解特徵提取、特徵描述子、特徵匹配這些東西。如果你們實驗室做的Dense registration,那你還得學李代數那些東西(高大上啊,神馬李群看好多天都看不懂啊!!!)。其實,很多演算法都有開源包,你可以去ROS、一些大神博客、牛逼實驗室主頁中多逛逛。
四、學渣只能幫你到這了,再後面就不會了,再往後就得找真大神了。
@魯靈犀答主主要說的是基於視覺的bundleadjustment的方法,我倒是覺得如果是入門的話,首推《probabilistic robotics》.私以為這是一本所有做自主移動機器人的都應該好好讀的書。作者從運動模型到感知模型,逐步建立了slam的慮波器方法,包括externed kalmen filter 和particle filter.當然在十一章作者也介紹了圖優化的理論。當然啦,急於優化理論做視覺slam,sfm,&
放張圖片搞個笑。
ps我也做視覺slam。
慮波器方法是最早用來做slam的方法,它講slam理解成一種估計問題。有系統的理論,適合入門打基礎。現在比較就行的是優化方法,做視覺的話,還分為rgbd,stereo,monocular等方案。
推薦 幾篇文章:
SimultaneousLocalisationandMapping(SLAM):Part 1
SimultaneousLocalisationandMapping(SLAM):Part 2
這兩篇文章主要介紹,slam問題的模型,以及濾波器方法,適合入門
做visual slam的話,推薦visual odometry part 1和part 2
visual odometry 和 visual slam基本是同質的問題,只不過關注的點各有側重,odometry注重的是當前實時性,slam 注重的是全局的優化。這兩篇文章歸納了做odometry(slam)的三種主流的feature-based演算法:
1.2D-to-2D correspondences
2.3D-to-3D correspondences
3.2D-to-3D correspondences
其中3最流行,包括07年的ptam,最近的orbslam等。
另外,去年到今年,基於appearance-based的方法也出現了很多令人印象深刻的作品,如Dtam,svo,lsdslam等感覺大家的回答都很好,但是作為一個從新手到微新手過來的人,覺得大家回答上來就是 Multiple View Geometry in Computer Vision 然後優化,然後。。。。,如果新手這樣做的話光啃那本書就是3個月+。
我建議首先了解SLAM主要採用什麼做的,歷史上一些版本是如何做出來的,因為這個系統是一個比較龐雜的系統,也表明,最開始這個系統的並不是如此,只是隨著時間的推移,讓這個系統複雜起來。
粗略的了解了SLAM系統的概況之後,進一步研究所需要的東西,只有知道所需要的東西,才能知道自己差在什麼地方。比如:目前SLAM基本分支有 激光、單目、雙目和RGBD 四種,建議根據自身條件主要學習一種就可以。
然後就會發現,SLAM獲取數據採用濾波的方法,有卡爾慢濾波、EKF、UKF、EIF、PF、RBPF、FASTSAM等,然後就發現自己應該學什麼濾波了,為進一步研究,又發現,有的SLAM用圖優化,如ORB-SLAM 所以需要了解g2o ,g2o 主要是什麼,通過代碼發現 裡頭有非線性最小二乘法:牛頓高斯、LM,自己推到一遍,然後就學吧。然後就發現,在使用單目的時候有很多東西都是獲取不到,怎麼辦呢?這個時候看SLAM代碼和論文,發現需要學習PNP,逆深度,三角重建,之後就能通過攝像頭畫出自己的軌跡和重建了,之後發現自己的軌跡怎麼不對呢,精度不夠,然後就要BA出馬了。這些搞懂了,突然發現SLAM會了一半了,圖有了,就該優化了,如何優化?? 通過論文就會發現,閉環檢測!!!是個好方法,通過學習閉環檢測,就可以將詞袋模型,全局優化方法進行學習,然後發現最致命的問題,尺度統一不了,怎麼辦!!Sim(3) 演算法來了,可以解決一部分尺度問題。最後你的SLAM就差不多了。
這些學習完事之後,你會發現,你會了基本的優化方法、濾波方法、圖像處理方法、矩陣更加熟悉,知道了什麼是李群李代數在計算幾何中的使用。
最後推薦
一篇論文:Local Accuracy and Global Consistency for Efficient Visual SLAM 作者 Hauke Strasdat 帝國理工大學 非常的棒
書:《Multiple View Geometry in Computer Vision》
基礎書:《線性代數應該這樣學》
數據集:Tum MRP Kitti ICDL-NUIM
我整理了SLAM學習過程中的開發資源發布在github上,歡迎大家star和fork :https://github.com/GeekLiB/Lee-SLAM-source
不建議直接看理論,先跑一個domo再說。
直接研究下主流開源SLAM方案,上手就快了。
視覺稀疏法:ORB-SLAM 、PTAM、MonoSLAM
半稠密法:LSD-SLAM、DSO、SVO
稠密法:DTAM、Elastic Fusion、Kintinous、DVO、RGBD-SLAM-V2、RTAB-MAP、MLM等
激光:Hector SLAM、Gmapping、tinySLAM
後端優化:g2o、ceres、GTSAM
數據:RGB-D SLAM Dataset and
Benchmark、KITTI Vision Benchmark Suite、The EuRoC MAV Dataset等。
個人看法:實踐出真知,動動手,come on
可以參考下orbslam的源代碼,完善了比較經典的key frame based slam(ptam)。完善是指帶有loop closure,relocalization和半自動的初始化,其本質還是和ptam沒什麼區別,但已經是開源里效果最好的演算法了。可以論文看他引用的一些文獻,最基礎的知識和理論都在mvg里能找到,但使用的技巧和方法大部分都已經超出mvg的內容了(參考他的引用)。
入門的話還是自己對著代碼看一遍熟悉pipeline,再去看具體模塊的實現和原理,比如g2o,dbow2和orb/sift descriptor就目前主流的slam實現而言,題主你把multiview geometry in computer vision這本書的前兩大部分(單目和雙目)仔細讀一遍,基本上slam 90%的基礎就有了,另外還需要一點角點提取的知識,主要是fast.
最近在看《Multiview Geometry in Computer Vision》。嗯,其實去年做畢設開始接觸到這本書的,目前重心轉到SLAM上來,又重新拿起來看。只推薦一本書,關於線性代數的,中文名《線性代數應該這樣學》,英文名《Linear Algebra Done Right》,看了一遍中文的,翻譯不錯,感覺收益很大,因為看完之後再來看MGCV感覺輕鬆很多。
可以從高翔博士寫得那本 視覺SLAM十四講從理論到實踐,學起來
樓上提到的CV bible是非常經典的textbook,涵蓋了大量SLAM所需的模型。不過要讀懂還需要紮實的基礎。作為基礎知識,我更推薦先學習differential equations, linear analysis, lie-algebra lie-group, optimizations, probability models和部分image process相關內容
為了便於SLAM研究者交流學習,並且及時了解行業發展,深藍學院參與創建了「SLAM技術交流」微信群。群內邀請學術界、企業界重量級嘉賓入群:
(1)香港科技大學沈邵劼老師;
(2)《視覺SLAM十四講》書籍主編高翔博士;
(3)浙江大學CADCG國家重點實驗室博士生導師章國鋒;
(4)清華大學猛師智能車團隊負責人張新鈺老師;
(5)格林深瞳CTO鄧亞峰博士;
(6)圖森未來首席科學家王乃岩老師;
(7)環宇智行創始人、武漢大學李明老師;
(8)阿里巴巴、百度、華為、商湯科技、四維圖新等知名企業工程師;
(9)卡內基梅隆大學、賓夕法尼亞大學、多倫多大學等國外知名高校博士、碩士生;
(10)清華大學、浙江大學、上海交通大學、北京大學、哈爾濱工業大學、華中科技大學、西北工業大學等高校研究生。
現在【SLAM技術交流1群】人數已滿500人,【SLAM技術交流2群】想要加群的夥伴,請添加學院助教微信(shenlan-college),邀請入群。
1、MVG(single viewtwo view) + state estimation for robotics
2、視覺SLAM十四講(類同火影裡面的兵糧丸)
3、開源系統代碼學習及實現
slam分為前端和後端,如果是做後端,好好看一下state estimation,鏈接https://pan.baidu.com/s/1slwKQoX
前端可以多看看論文,data association,outlier rejection,tracking。
當然《多視幾何》是基礎中的基礎,一些基礎的如F矩陣, H矩陣等的求解要掌握。
推薦泡泡機器人公眾號,講的很好,以及高博出的《視覺SLAM十四講》,膜拜一下高博。
排名第一的說得已經很清楚了,在這裡想推薦一下關於Slam及在機器人領域中的應用的一個免費線上分享。
線上分享|SLAM及在機器人領域中的應用
https://zhuanlan.zhihu.com/p/23659397
我個人是看該領域的一些論文,比如PTAM,DTAM,SLAM這幾篇經典文章,遇到最優化模型,矩陣運算不懂的去Wikipedia上查,微軟research上也有相關的資料學習,並且各個名牌大學網站上都有linear algebra,optimization,analytics的學習資料
想問一下 如何在沒有機器人和任何設備的情況下完成視覺slam的測試或者模擬
前面已經有很多人回答了視覺SLAM相關的內容,因為Geek+機器人研究激光SLAM比較多,就講講激光SLAM相關的預備知識。
一、理論基礎
要學習SLAM,首先要掌握基本原理。這裡推薦一本概率機器人的經典書籍《Probabilistic
robotics》,有中文翻譯版《概率機器人》。這本書英文原版的很貴,網上可以查到電子版。中文版翻譯一般,對於英文不太好的同學可以兩本書一起看。想啃完整本書需要花的時間挺長的,不過也是建議靜下心來好好研究一下,把邏輯搞清楚了才能在實際遇到問題時進行改進,不然就只能跑開源代碼。
近幾年效果比較好的SLAM系統大多需要使用後端優化,這方面需要比較強的數學基礎。不過目前開源的優化庫很多(包括g2o,ceres等),上手學習SLAM的時候不需要學太多後端優化的內容。
二、編程基礎
目前大多開源代碼還是用C或C++寫的,所以這部分的基礎需要掌握,大概到計算機系大一的水平就夠了。書籍的話任何一本C或C++教材都行,《C++Primer》比較全,但頁數有點多;譚浩強版的《C++程序設計》據說不太好懂;另外還有一本《C程序設計語言》。各有好壞,隨便挑一本就行,另外,基礎的數據結構與演算法也需要學習,找任意一本名為《數據結構與演算法》的書就行。
編程學習的重點在於練習。如果想做基礎練習,就用北大POJ基礎版:http://noi.openjudge.cn/,如果想試難一點,可以試試LeetCode,這個反正對之後找工作也有幫助。
三、實踐
1.開源代碼 SLAM相關的開源代碼主要在Open SLAM網站上https://www.openslam.org/,裡面包括了視覺SLAM和激光SLAM的多種SLAM方法,大多還附帶論文。
另外ROS系統http://www.ros.org/目前在機器人領域非常常用,很多研究會在這個社區上公開源代碼,所以這套系統基本是機器人入門必學的系統,所支持的最好的操作系統是Ubuntu,所以也需要順帶學學Ubuntu。
2. 資料庫 目前KITTI資料庫http://www.cvlibs.net/datasets/kitti/是涵蓋量比較全的資料庫,數據採集自汽車平台,包含了物體檢測、車道檢測、SLAM等相關內容。
如果實驗室有資源的話,最好能組一套自己的機器人設備來測試。測試過程中會發現很多細節問題,比如慣導編碼器等航位推算好壞很大程度地影響了SLAM的結果。
最後總結一下,SLAM研究的路比較長,不要因為最近不要火就入坑,第一步好好看看經典的教材總是好的。 附上2張SLAM圖~順便給公司打個廣告
我公司在招賢納士,機器人硬體軟體相關的大神歡迎諮詢~
www.geekplus.com.cn
真想學來上交大機器人研究所一機器人五度空間平台,學習,交流,提高。
受教了。這裡我有兩個疑問
1 基於特徵的和直接配準的,哪個更好呢
2 閉環檢測 用圖優化,有沒有好的論文,我最近看的LUM ELCH,看了兩周了,仍是迷糊。
歡迎各位加入slam(simultaneous localization and mapping)討論群,即時定位與地圖構建,或並發建圖與定位,實現真正全自主移動機器人的關鍵。SLAM-職業交流群 537721515
你只需要進一個群,SLAM研究者群,良心!!!
推薦閱讀:
TAG:機器人 | 導航 | 計算機視覺 | 控制科學與工程 | 同時定位和地圖構建SLAM |