機器人書單與學習資源——導航篇

轉載請保留此段:
感謝鄭帆立黨Wu Kenzi等給出的原創及授權ExBot轉載,由Top liu彙集整理,原文鏈接

入門教程

首先推薦 RA magazine 首頁的幾篇 tutorial 性質的論文。RAM 是 robotics 領域最頂尖的期刊之一,這幾篇都是著名學者寫給學術新人的入門讀物,希望對題主有所幫助。

RAM 首頁:RA Magazine - IEEE Robotics and Automation Societ

 

搬出寶典:Multiple View Geometry in Computer Vision。這本書基本涵蓋了Vision-based SLAM這個領域的全部理論基礎!讀多少遍都不算多!另外建議配合Berkeley的課件學習。(更新:這本書書後附錄也可以一併讀完,包括附帶bundle adjustment最基本的levenberg marquardt方法,newton方法等)

 

框架級的工具

然後是框架級的工具。最常用的機器人框架是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)

ROS如果想做應用是必不可少的,我的工作也都是基於ROS的,自己學習中一個比較重要的視頻是youtube.com/watch? 自帶梯子,還有一個比較好的個人經驗是,ROS中有很多很好的包,學好它們對自己有很大提高,比如openni-camera(自己用的是kinect) rgbdslam等等。G2O是最常用的slam後端優化軟件,很多成熟的slam package用的都是g2o,rgbdslam應該就是,還有比較新的lsd-slam貌似也是使用g2o的 OpenCV應該是必備技巧吧,就不說了

 

RGB-D Camera

至於RGB-D Camera,最常用的採集設備有兩種,一種是Microsoft Kinect,一個生態環境完備的RGBD Camera,可以直接用Visual Studio可Kinect SDK直接開發,也有大量開發好的程序以供借鑑參考,也可以用OpenNI和ROS採集處理,我就不多介紹了,畢竟微軟是對程序員最友好的公司沒有之一(微軟大法好)。另一個是Google的Project Tango,Google對於這個自家的神器還是很低調的,可以看看宣傳片ATAP Project Tango ,絕對酷炫——可惜我們lab剛剛買的那一臺,我還沒有用過,所以對具體開發不太瞭解。

 

SLAM與優化

只要是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++

SLAM現在用least square已經是潮流了,儘管我的老闆是做EKF出家的,但是現在主流期刊上確實已經沒有濾波的文章了。其中大型稀疏矩陣的處理是現在大家正在玩弄的東西。在這裏推薦另外一個網上課程,Cyrill Stachniss 他教授的機器人基礎,定位,繪圖等等,個人覺得是很不錯的。有淺入深,就不僅僅包含graph based slam了。至於概率和KF的東西,其中說的也很多,儘管現在已經不算是熱點了,但是我覺得還是很有必要看看的,畢竟自己第一次接觸SLAM就是EKF的,還是有點懷念

另外多說一句題外話,因爲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。

 

數據集與測試方法

另外有幾個網上成熟的數據集和測試方法,一個是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 vision.in.tum.de/data/d,裏面提供了大量的室內的RGBD數據集,以及非常方便好用的benchmark tools。第三個是KITTI Dataset:The KITTI Vision Benchmark Suite,也是認可度很廣泛的汽車駕駛數據集。

發佈了22 篇原創文章 · 獲贊 131 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章