為了方便大家愉快地學習,小覓智能整理了下知乎上 SLAM 領域的活躍問答者 @半閑居士@毛曙源@立黨@bobin@太一吾魚水@極智嘉科技的高質量答案供大家參考喲~

0)SLAM 是什麼?

SLAM 是同步定位與地圖構建 (Simultaneous Localization And Mapping) 的縮寫,最早由 Hugh Durrant-Whyte 和 John J.Leonard 提出。SLAM 主要用於解決移動機器人在未知環境中運行時定位導航與地圖構建的問題。

SLAM 實際上是一個典型的軍轉民用的技術,探測器登陸未知環境的星球進行科研研究時,面對複雜的大規模環境,而無法對其進行實時遙控時,必須通過實現同步定位與地圖創建才能完成導航任務,例如美國「機遇號」、「勇氣號」以及「好奇號」等火星探測器。如果放在當今社會消費級市場來理解的話,掃地機器人沒有 SLAM 技術,就無法實現自主移動。

圖 | 美國「好奇號」火星探測器

1)這個領域的知識是什麼樣的?

整個 SLAM 大概可以分為前端和後端,前端的功能是根據相鄰兩幀圖像(視覺 SLAM )或者兩片點雲(激光 SLAM )的匹配與比對,計算出感測器相鄰時刻的位置和姿態變化,進而對機器人或者無熱車進行定位;根據感測器不一樣,分為激光點雲、圖像、RGB-D 拼接幾種,其中圖像配準中又分基於稀疏特徵 (Sparse) 的和稠密 (Dense) 的兩種。後端則主要是對前端出結果進行優化,利用濾波理論或者優化理論,最終得到最優的位姿估計。

2)確定學習方向

SLAM 是一個包含技術點範圍很廣的應用方向,涉及到計算機視覺,優化方法,3D ….,每項之內又會分成更多的點,如果沒有目標去學習很容易迷失其中,因此確定目標是非常重要的!

圖 | 日常學習 SLAM 狀態

3)SLAM 基礎理論

一、數學方面

  • 建議閱讀 Thrun 的《Probabilistic Robotics》,瞭解下概率學是如何解決機器人中的問題的。
  • 學習貝葉斯濾波以及貝葉斯公式在各個問題 (定位,SLAM) 中的應用。
  • 針對優化的話,建議學透最小二乘優化和數學推導,因為最後很多問題都歸結到最小二乘優化,然後就是梯度下降、求 Jacobian 等。

二、編程方面

優質的 SLAM 框架要兼顧速度和精確度

國外做 SLAM 教學的時候會使用 Matlab 做實驗,Python 語言也很不錯,Python 3 支持SciPy ,OpenCV,ROS 等重要工具,不過依然有大量的諸如 g2o 等基礎性庫在 Python下無法使用。目前大部分 Vision 或者 RGBD 的 SLAM 框架都是用 C++ 來時實現完成的以確保運算速度。如果有志於在這個領域做深入研究,夯實的 C++ 基礎必不可少。 Introduction to Algorithms,以及 C++ Primer 等,都是不錯的書籍。

4)硬體和實驗上的知識儲備

SLAM 開源資源

  • SLAM 相關的開源代碼,裡麪包括了視覺 SLAM 和激光 SLAM 的多種 SLAM 方法,大多還附帶論文
  • ROS 系統,目前在機器人領域非常常用,很多研究會在這個社區上公開源代碼,這套系統基本是機器人入門必學的系統
  • KITTI 資料庫,涵蓋量比較全,數據採集自汽車平臺,包含了物體檢測、車道檢測、SLAM 等相關內容

RGB-D Camera 選擇

目前的主流視覺深度感測器方案主要分結構光,Time-of-Flight 和純雙目三類。雙目跟結構光一樣,都是使用三角測量法根據物體匹配點的視差反算物體距離,只是雙目是用自然光,而結構光是用主動光發射特定圖案的條紋或散斑。ToF 是通過給目標連續發送光脈衝,然後用感測器接收從物體返回的光,通過探測光脈衝的飛行(往返)時間來得到目標物距離。

曾經紅極一時的 Kinect 1,2 代(現已停產)採用的是結構光和 ToF,ToF 和結構光都屬於主動光,容易受可見光和物體表面幹擾,所以更適合室內和短距離的應用場景。

圖 | 「視覺+結構光+慣性導航」融合的雙目方案效果更好

將雙目和結構光的優點結合起來,用雙目的相差計算方法加上紅外的結構光對黑暗和無紋理的情況作輔助,小覓智能採用了「視覺+結構光+慣性導航」融合的雙目結構光深度慣導相機方案,可在無紋理的物體(像是白牆)和全黑情況及室內外條件下使用。

小覓智能龐琳勇:視覺+結構光+慣性導航組合拳為機器人安上雙眼?

zhuanlan.zhihu.com圖標

5)推薦閱讀的書籍

  • [Multiple View Geometry in Computer Vision] 這本書基本涵蓋了 Vision-based SLAM這個領域的全部理論基礎,另外建議配合 Berkeley 的課件學習。(更新:這本書書後附錄也可以一併讀完,包括附帶 bundle adjustment 最基本的 levenberg marquardt 方法,newton 方法等)
  • [Probabilistic Robotics] 瞭解概率學是如何解決機器人中的問題的
  • [State Estimation for Robotics] 這本書能夠幫你很快建立整套關於狀態估計理論的框架,同時在三維運動方面,提供了充分但不那麼困難的學習途徑
  • [視覺 SLAM 十四講] 高翔博士大大深入淺出地將 SLAM 數學模型講解得生動有趣又條理清晰,實在是 SLAM 入門不二之選(引自豆瓣書評)
  • [Quaternion kinematics for the error-state KF]
  • [Convex Optimization 凸優化]
  • [線性系統理論] Chi-Tsong Chen: 9780199959570: Amazon.com: Books7.
  • [An Invitation to 3-D Vision]
  • [Rigid Body Dynamics]

6)推薦的視頻

  • Tim Davis 可以參考他的課件及視頻,講述 Sparse Matrix — 大型稀疏矩陣處理的一般辦法。
  • 激光 SLAM 入門視頻,by Cyrill Stachniss(鏈接:https://pan.baidu.com/s/17U9Fr0u31gIKpQfehnnvEw 密碼: u5au)
  • Google 開源的 Cartographer,目前來看還是非常成熟和完善的激光 SLAM 系統,可以作為重點進行學習
  • 小覓智能聯合深藍學院推出的免費公開課:如何進行 VSLAM 技術選型
  • ROS 入門:ROS 機器人操作系統入門-中國大學 MOOC)

7)SLAM 相關學習文章(持續更新中)

ORB-SLAM 學習筆記?

zhuanlan.zhihu.com圖標VINS 學習筆記?

zhuanlan.zhihu.com圖標

8)歡迎點贊和分享小覓智能 | VINS 學習筆記(持續更新中)8)歡迎點贊和分享

據說知乎有個不成文的規定:只收藏不點贊和分享就是耍流氓!

隨手轉發到微信朋友圈,讓更多的人入坑吧~(不對 ? ,應該是高效學習 SLAM ??)

關注微信公眾號 MYNTAI小覓智能,回復「小覓」,一鍵保存文中提到的完整資料哦? ~

Ps:小覓雙目深度相機原創分享有獎徵集活動還在火熱進行中!最高獎勵 1000 元!

福利!小覓雙目深度相機原創分享有獎徵集!?

zhuanlan.zhihu.com圖標


從零開始的魔法書,從零開始的異世界生活

SLAM是智能機器和增強混合現實的關鍵技術。SLAM可以使用各種各樣的感測器信息:從圖像、多圖像、深度信息、GPS、IMU、乃至車輪齒輪轉了幾圈,都可以作為SLAM的輸入信息來達到目的。

如果SLAM技術加上各式各樣的深度學習+識別技術,可以理解為一個智能機器具備了學習陌生環境、解決自己『在哪兒』,還通過識別解決了『這是什麼』的兩個基本問題。能解決這兩個基本問題的軟體演算法,就像是智能機器的『大腦』一樣,具備了一定程度的學習和反饋的基礎。有了這樣的基礎,我們才能使機器更『聰明』的看懂這個世界,並進一步向我們所期待的反饋方式去開發更高層的功能。

SLAM涵蓋的東西比較多,分為前端和後端兩大塊。前端主要是研究相鄰幀的拼接,又叫配準。根據感測器不一樣,有激光點雲、圖像、RGB-D拼接幾種,其中圖像配準中又分基於稀疏特徵(Sparse)的和稠密(Dense)的兩種。後端主要是研究地圖拼接(前端)中累積誤差的校正,主流就兩種,基於概率學理論的貝葉斯濾波器(EKF,PF)以及基於優化的方法。EKF已經用得很少了,PF也就在2D地SLAM(Gmapping)中用得多,大多還是用優化的方法在做。另學習SLAM演算法建議先掌握好2點:

1、編程方面

理論的東西是比較無聊的,必須得實戰。建議入門先寫一發最小二乘優化,可以就做一個簡單的直線擬合,不要用Matlab中的優化工具,瞭解數學推導最後是怎麼寫到代碼裡面的。然後,一定要玩好Matlab優化工具包,做實驗最方便了。

有了一些基礎之後,可以嘗試玩一些現有的SLAM包,推薦兩個地方,一個是http://www.openslam.org,裡面有各種SLAM包,主流的SLAM演算法,在這一般都有源碼。另外一個就是ROS了,裡面有很多現成的SLAM包,像Gmapping,RGB-D SLAM,上手非常快,甚至你沒有任何設備,你也可以利用ROS中的模擬環境(如Gazebo)跑。建議先試試Gmapping,百度上有很多中文教程,一開始跑這些package還是很漲成就感的,可以提高你的興趣。如果你是做視覺或者RGB-D,那麼OpenCV和PCL是必不可少的工具。早點上手肯定沒得錯。

2、數學方面

數學的話,可瞭解 Thrun的《probabilistic robotics》,其實不需要全部看完,瞭解下概率學是如何解決機器人中的問題的,關鍵學習貝葉斯濾波,也是就是貝葉斯公式在各個問題(定位,SLAM)中的應用。另外,優化的話,建議先把最小二乘優化中給弄透徹,數學推導要會,因為很多問題,最後都是歸結到最小二乘優化,然後就是梯度下降、求Jacobian之類的。

SLAM演算法入門資料推薦

1. OpenSLAM:https://openslam.org/

這個網站中含有很多slam方面的資料,編寫的程序也各有不同,很權威

2. Kitti圖庫,可以做simulation:http://www.cvlibs.net/datasets/kitti/

3. 蘇黎世理工學習練習excise3看完後可以使用Javier Civera 的程序進行試手,注意對calibration的調整

http://webdiis.unizar.es/~jcivera/code/1p-ransac-ekf-monoslam.html

4. 對於Javier Civera的1p RANSAC-monoSLAM有一定了解了,可以試試用SURF去實現

南理工論文可以參考 http://cdmd.cnki.com.cn/Article/CDMD-10288-1012319519.htm

5. RGB-D SLAM Dataset and Benchmark:http://cvpr.in.tum.de/data/datasets/rgbd-dataset

慕尼黑工業大學,還有其他的資料庫,如單目視覺里程計資料庫,詳見http://vision.in.tum.de/data/datasets

6. Monocular SLAM:http://vision.ia.ac.cn/Students/gzp/monocularslam.html

The research in monocular SLAM technology is mainly based on the EKF(Extended Kalman Filter) SLAM approaches.

7. MRPT:http://www.mrpt.org/ the mobile robot programming toolkit非常好的東西

8. PTAM:http://www.robots.ox.ac.uk/~gk/PTAM/

libCVD:http://www.edwardrosten.com/index.html

編譯PTAM:http://www.fx114.net/qa-207-77156.aspx

windows下編譯PTAM:http://blog.csdn.net/cgf_909/article/details/24457771

9. ORB_SLAM:http://webdiis.unizar.es/~raulmur/orbslam/

10. LSD_SLAM:http://www.cnblogs.com/hitcm/category/763753.html

SLAM演算法入門書籍推薦

1.必讀經典

Thrun S, Burgard W, Fox D. 《Probabilistic robotics》[M]. Cambridge, USA: MIT Press, 2005

《Principles of Robot Motion Theory,Algorithms and Implementation》

2.有很多期,跟著會議一起出的文集

《Robotics: Science and Systems》. Cambridge, USA: MIT Press

會議進展網站http://www.roboticsproceedings.org/

3.入門書籍,簡單實現及代碼

《SLAM for Dummies》

4.SLAM入門教材吐血推薦,對深入理解SLAM實質非常有幫助

《STATE ESTIMATION FOR ROBOTICS》

5.作者Joan Sola關於Graph-SLAM的教程,包含位姿變換、感測器模型、圖優化以及SLAM中的稀疏性求解

《Course on SLAM》

6.加州伯克利的一本2D LIDAR SLAM小書

《Loop Closure Transformation Estimation and Verification Using 2D LiDAR Scanners》

7. Probabilistic Robotics,http://www.probabilistic-robotics.org/理解這本書要有很好的數學基礎

8. Robotics Vision and Control ,http://www.petercorke.com/RVC/

澳大利亞昆士蘭理工大學的Peter Corke是機器視覺領域的大牛人物,他所編寫的Robotics, vision and control一書更是該領域的經典教材

配套有matlab工具箱。工具箱分為兩部分,一部分為機器人方面的,另一部分為視覺方面的工具箱

源代碼都是開放免費下載的: http://petercorke.com/Toolbox_software.html

最後,速感科技是一家專註於機器視覺的公司,我們的價值載體是幫助不同的行業客戶提供一系列高性價比的視覺解決方案。vSLAM演算法是團隊的核心技術演算法,速感科技是國內最早研究vSLAM技術、也是最早把vSLAM產品化的企業。目前公司的主要產品為面向消費級服務機器人的嵌入式視覺相機模塊,及面向工業級大型移動設備的高精度導航定位控制器。

如需瞭解更多可至我司官網http://www.qfeeltech.com獲取詳細信息。


推薦閱讀:
查看原文 >>
相關文章