九游中國體育官方入口九游中國體育官方入口今天要為大家分享的主題內容是關于SLAM技術的,SLAM技術聽起來就很高大上,那么SLAM技術到底是什么?以及SLAM技術主要應用在哪些領域呢?下面將為大家全面講解!
SLAM,全稱叫做 Simultaneous Localization and Ming,含義是“即時定位與地圖構建”。啊不行,這么講下去,這篇文章肯定沒有人讀,所以我們換一個講法。假設有一個機器人,它被關進了一間空屋子,里面放滿了雜七雜八的東西。機器人感到很害怕,因為這個地方他從來沒來過,一點兒也不了解。它需要精準地建立時間和空間的對應關系,并能完美地回答以下一系列問題:我剛才在哪里,現(xiàn)在在哪里?我看到了什么,現(xiàn)在看到的和之前看到的有哪些異同?我過去的行走軌跡是什么?我現(xiàn)在看到的世界是什么樣子,和過去相比有怎樣的變化? 我還能跟蹤到自己的軌跡嗎,如果我丟了應該怎么辦?我過去建立的對世界的認識還有用嗎?我能在已有世界的抽象里快速對我現(xiàn)在的位置進行定位嗎?
筆者認為SLAM技術和別的技術一樣:一方面,從研究和開發(fā)的角度,技術需要達到一個較高的學術或工業(yè)標準;另一方面,技術本身必須落地到真正的產品中去,單純的技術上要達到100分當然也有它的意義,但一味追求技術或數學上的“美”而完全無視工程實現(xiàn)和產品化要求就很可能誤入歧途。在今天SLAM種類如此繁多細微細節(jié)如此復雜的情況下,微軟、蘋果、Google、Facebook等大公司憑借多年各方面積累和各種資源能夠負擔得起核心算法、軟件的研發(fā),但廣大中小型公司或是之前沒在這方面布局的大公司,在急需這項技術時,需要想好自己的產品規(guī)劃和具體需求再做決策。
在室內機器人中,最早應用到SLAM技術要屬掃地機器人了,掃地機機器人通過用SLAM算法結合激光雷達或者攝像頭的方法,讓掃地機可以高效繪制室內地圖,但實際上SLAM算法本身只是完成了機器人的定位和地圖構建兩件事情,和我們說的導航定位還不是完全等價的。這里的導航,其實是SLAM算法做不了的。它在業(yè)內叫做運動規(guī)劃(Motion Planning)。
運動規(guī)劃是一個很大的概念,從機械臂的運動、到飛行器的飛行,再到這里我們說的掃地機的清掃路徑規(guī)劃,都是路徑規(guī)劃范疇。我們這里就主要先談談針對掃地機這類輪式機器人的運動規(guī)劃。
我們一般在完成SLAM后,要進行一個叫做目標點導航的能力。一般說的路徑規(guī)劃,顧名思義其實指的這個。通俗說,就是規(guī)劃一條A點B點的路徑出來,然后讓機器人過去。
要實現(xiàn)這個過程,運動規(guī)劃會實現(xiàn)至少兩個層次的模塊,一個叫做全局規(guī)劃。這個和我們開車導航儀有一點像,就是它需要在地圖上預先規(guī)劃一條線路,也要有當前機器人的位置。這是由我們的SLAM系統(tǒng)提供出來的。行業(yè)內一般會用叫做A*的算法來實現(xiàn)這個過程。
當然,光規(guī)劃了這個路徑還是不夠的,現(xiàn)實中會有很多突發(fā)情況,比如正巧有個小孩子擋道了。那么原先的路徑就要調整。當然,有時候這種調整并不需要重新計算一遍全局路徑,機器人可能稍微繞一個彎就可以。此時,我們就需要另一個層次的規(guī)劃模塊,叫做局部規(guī)劃。它可能并不知道機器人最終要去哪,但是對于機器人怎么繞開眼下障礙物特別在行。
這兩個層次的規(guī)劃模塊一起協(xié)同,機器人就可以很好的實現(xiàn)從A到B點的行動了,不過實際工作環(huán)境下,上述配置還不夠。比如前面提到的A*算法必須要求機器人預先把地圖探明后才能展開行動,這在很多時候不夠靈活。如果掃地機器人買回家,必須先把屋子都走一遍以后才肯掃地,那用戶體驗就會很差。
為此,也會有針對這類算法的改進,比如SLAMTEC-思嵐科技公司研發(fā)的SLAMWARE定位導航解決方案,采用了改良的D*算法進行路徑規(guī)劃,最大優(yōu)點是不需要地圖預先探明,機器人可以和人一樣,即使環(huán)境未知,也可以展開行動,隨著機器人不斷探索,路徑也會時刻調整。
國內大家非常熟悉的大疆精靈四避障用的雙目視覺+超聲波,一位大疆工程師徐梟涵坦率承認:“P4里面呈現(xiàn)的主動避障功能就是一種非常非常典型的Slam的弱應用,無人機只需要知道障礙物在哪,可以進行 Planning,繞開障礙物?!?/p>
而近期另一個號稱刷爆美國朋友圈的hover camera無人機,因為其創(chuàng)始人的的計算機視覺背景,正式把SLAM技術應用進來了,在介紹他們無人機的主要產品技術時,提到了SLAM(即時定位與地圖構建):通過感知自身周圍環(huán)境來構建3D增量式地圖,從而實現(xiàn)自主定位和導航。
VR的本質是讓用戶通過沉浸式的體驗來感受一個完全不同的虛擬世界,而SLAM是對真實世界的感知和理解,如果VR產品需要SLAM,那一定是虛擬世界和真實世界的結合。目前市場上除了三大廠(Oculws、索尼和HTC)有自己的“outside-in tracking”,大部分沒有“outside-in tracking”解決方案的VR產品只能通過六軸陀螺儀來跟蹤用戶的頭部轉動而不能跟蹤用戶的位移,但SLAM能解決六個自由度的跟蹤問題。另外,對于VR產品是否需要SLAM中的地圖(ming)、什么形式什么場景有需要,也有待各方面進一步的思考。
目前基于SLAM技術開發(fā)的代表性產品有微軟的Hololens,谷歌的Project Tango以及同樣有名的Magic Leap,后者4月20號公布它的新一代水母版demo后,國內的AR公司更加看到了這個趨勢,比如進化動力近期就公布了他們的SLAM demo, 用一個小攝像頭實現(xiàn)VR頭顯空間定位。很多VR應用需要用到SLAM技術,定位只是一個feature,路徑記錄、3D重構、地圖構建都可以是SLAM技術的輸出。
因為Google無人駕駛車的科普,很多人都知道了基于激光雷達技術的Lidar Slam。Lidar Slam是指利用激光雷達作為外部傳感器,獲取地圖數據,使機器人實現(xiàn)同步定位與地圖構建。雖然成本高昂,但目前為止是最穩(wěn)定、最可靠、高性能的SLAM方式。
首先,SLAM對數學專業(yè)知識有一定的基本要求,包括矩陣、微積分、數值計算和空間幾何等,同時對計算機視覺的基礎知識也有一定的要求,包括特征點、地圖、multi-view geometry、bundle adjustment、filter和camera model等。這些知識都需要一定的基礎和積累,不過也不需要純數學專業(yè)背景。SLAM編程一般使用C++,如果針對某個特殊指令集或平臺進行優(yōu)化,可能需要知道SSE、NEON、GPU的一些知識和經驗,需要對系統(tǒng)設計有一定的經驗和感覺,需要比較靠譜的動手能力及寫代碼的能力和意愿??傮w而言,門檻就是一定的數學和工科背景、一定的計算機視覺的基礎知識、一定的編程基礎和經驗以及最關鍵的踏踏實實寫代碼的意愿。
其次,SLAM強調實時和準確性。SLAM是一整套的大型系統(tǒng),實時系統(tǒng)一般是多線程并發(fā)執(zhí)行,資源的分配、讀寫的協(xié)調、地圖數據的管理、優(yōu)化和準確性、一些關鍵參數和變量的不確定性和高速度高精度的姿態(tài)跟蹤(比如VR/AR應用必須要至少90fps才有可能解決眩暈和渲染效果)等,都是需要解決的挑戰(zhàn)。
再次,SLAM難在適應硬件,更難在系統(tǒng)整合。SLAM技術的數據來源于傳感器,而且越來越多的SLAM種類來源于多個傳感器融合,那么傳感器的質量對SLAM技術的效果影響很大。舉個例子,如果一套SLAM系統(tǒng)用了某款相機,該相機在一動不動而且光照環(huán)境完全不變時圖像噪點非常多,那么系統(tǒng)對穩(wěn)定的姿態(tài)跟蹤影響就非常不好,因為特征點提取會很不一致。另一個很實際的例子,如果用多個傳感器(相機或六軸陀螺儀),如果時間戳不一致(至少毫秒級),也會很影響算法。多個傳感器的分別校準和互相校準,乃至整個系統(tǒng)幾十個上百個參數的調整,都是很實際很花時間的東西。
此外,在對數學有一定要求的同時,SLAM技術目前還有很多工程方面的問題,需要靜下心來一塊一塊地至少走兩遍踩各種坑并一一解決。如果只看已有代碼就覺得數學和算法盡在掌握,而動手時要么眼高手低要么根本不去寫代碼,這對真正要做產品研發(fā)的團隊而言是非??膳碌?。當前多個領域因為硬件系統(tǒng)和產品應用之間差異很大,所以距離所有領域的SLAM都實現(xiàn)產品化還有很多的工作,但相信在不久的未來會有較大的突破。而由于SLAM技術的復雜特性和眾多的算法及其產品化仍然需要在SLAM技術的基礎上實現(xiàn),可以預見和SLAM技術相關的產品研發(fā)在未來相當長一段時間內仍然需要大量人力和資源。返回搜狐,查看更多