(本文首發於:
學習slam需要哪些預備知識? - 立黨的回答
)學習slam需要哪些預備知識? - 立黨的回答
首先搬出寶典: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)
另外多說一句題外話,因為optimization和的feature extraction是slam裡最核心的兩個問題,而這兩個問題都是運算量極大的。好的slam框架要兼顧速度和精確度。目前大部分vision或者rgbd的slam框架都是用c++來時實現完成的以確保運算速度。雖然我個人很欣賞python,並且python3也支援scipy,opencv,ros等重要工具,不過依然有大量的諸如g2o等基礎性庫在python下無法使用,而且如果要借鑑其他人的**,最方便的還是在c++中實現。所以如果提問者有志於在這個領域做深入研究,夯實的c++基礎是必不可少的。introduction to algorithms,以及 @vczh 推薦的c++ primer等,都是在實際工作前要自己做好的功課。
至於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 裡面提供了大量的室內的rgbd資料集,以及非常方便好用的benchmark tools。第三個是kitti dataset:the kitti vision benchmark suite,也是認可度很廣泛的汽車駕駛資料集。
大資料需要學習哪些知識?
學習一項技術最重要的是要理解它能解決什麼問題,那麼學習大資料可以解決什麼問題呢?沒錯,大資料可以解決海量資料的儲存和計算這兩個問題。海量資料的儲存是使用分布式儲存 hdfs 海量資料的計算是使用分布式計算 mapreduce hadoop則是整合了分布式儲存和分布式計算這兩種功能的一種大資料的解決方...
《視覺SLAM十四講》學習日誌 一 預備知識
slam簡介 我們眼中的世界在計算機中是乙個個由數字排列而成的矩陣 matrix 就像電影 黑客帝國 中的場景。我們要解決的就是讓計算機通過這種方式 理解 我們現在的世界。第一講習題 1.有線性方程ax b,若已知a,b,需要求解x,該如何求解?這對a和b有哪些要求?解 首先考慮非齊次線性方程的情況...
視覺SLAM十四講 第1講 預備知識
何為高斯分布?它的一維形式是什麼樣子?高維形式又如何?參考博文 1 2 3 答 高斯分布 gaussian distribution 又稱為正態分佈 normal distribution 是一種非常重要的概率分布。有幾種不同的方法用來說明乙個隨機變數,最直觀的方法是概率密度函式,這種方法能夠表示隨...