【 聲明:版權所有,歡迎轉載,請勿用於商業用途。 聯繫信箱:feixiaoxing @163.com】
slam技術,就是一邊定位一邊進行建圖。現在比較流行的掃地機器人,其實就是slam應用的一個例子。另外工業生產上用的比較多的AGV,有一部分也是slam技術。相比較傳統的磁條導航,帶有slam的AGV不需要磁條,可以自己對環境進行建圖,並且快速進行部署,接受服務器控制。
1、應用場景
家庭上主要是掃地機器人,工業上主要是AGV、無人叉車等,無人駕駛也算一部分。
2、slam分類
主要是激光slam和視覺slam。
3、基本流程
經典的slam一般包括三個部分。前端負責獲取傳感器數據、尋找特徵點、特徵匹配、數據融合、計算里程計、求解姿態和位置。後端負責對前端的結果數據進行進一步優化,主要有濾波優化和圖優化兩種方法。除了前端和後端,還有一個就是迴環檢測,如果識別到機器人回到了原來的場景,那麼可以重新進行姿態矯正,減小傳感器誤差。
slam的關鍵在於優化和迴環檢測,slam做的好不好、能不能用,就在於這兩個方面。
4、爲什麼要後端優化
傳感器的數據都是有誤差的,如果沒有優化,我們會發現構建出來的圖是一個不合理的圖。即使robot轉了一圈回來之後,這時會發現終點和起點沒有重合。
5、soc方案
除了傳統的樹莓派,現在最火的應該是jetson nano,因爲有gpu的加持,算力會比較強。
6、操作系統
linux,目前用的最多的其實就是ubuntu
7、slam的主要軟件平臺
ros,ros其實是一箇中間件,習慣上稱之爲機器人操作系統
ros裏面其實東西比較多,類似於一個大雜燴,比如說機器人手臂、仿真、地圖顯示什麼的都可以做。slam只是其中的一部分內容。
8、機器人平臺
jetbot或者類似的套件
9、slam使用的主要技術
攝像機標定、攝像機外參標定、pcl點雲庫、opencv庫、Eigen線性代數、sophus庫計算李羣問題、g2o優化、robot規劃、車輛控制、A*算法等等。
常用的傳感器有激光、攝像頭、imu、gps、輪式里程計或者輪式編碼器、麥克風矩陣等等。
10、slam是否需要每一次都重構地圖
理論上只需要構建以此,後面就可以直接利用了,當然也取決於地圖中的關鍵幀信息。有了地圖,就可以每時每刻都知道自己的位置,方便對路徑進行規劃、對車輛進行路線設計了,能做的事情也多了不少。
11、slam參考資料
目前slam的書籍比較少,除了論文,slam十四講可以參考下。
12、目前的發展情況
激光slam比較成熟,視覺slam (比如vio)有所發展,但是做成產品還是有距離。
13、開源代碼
開源代碼其實挺多的。在github上搜一下,就可以出來好多,大家可以選擇適合自己的。
視覺方面,比如orbslam就不錯,大家可以參考這個鏈接,
https://zhuanlan.zhihu.com/p/47451004
上面還有視頻,體驗一下slam出來的效果是什麼樣的。
如果是激光方面,可以直接參考ros gmapping或者hector,最新的方法可以參考Cartographer。
14、matlab資源
http://www.pudn.com/Download/item/id/3868383.html
一個有趣的matlab slam代碼
15、比算法更重要的事情
很多同學學slam偏向於算法,這無可厚非。但是比這更重要的是產品能否落地、能否幫助客戶的問題、耐久性有沒有問題、成本是否hold住,這些往往不是科學的事情,而是技術、工程的事情,甚至是商業的事情。
對於嵌入式的同學來說,slam也是一次機會。嵌入式上面的算力、網絡、加速、安全等等,都是不小的一個挑戰。slam的前端算法、後端優化中,特別是優化,往往是加速的重點,優化意味着更多的循環、計算和算力要求,同時爲了保障實時性的要求,必須在藉助於multi core、dsp、fpga、npu或者gpu的幫助了,這個就看各個供應商自己的絕活了。