機器人能通過觀察環境明白自己在哪嗎?機器人定位的方式對解決「人類路痴」問題有幫助嗎?
經常會有一些機器人到處走的視頻,他們是怎麼知道自己在哪的?
這些技術的發展,有沒有可能解決人類的路痴問題?就是那種看了地圖也不知道自己在哪的路痴?
本題已收錄至知乎圓桌:人工智慧 · 機器感知,更多「人工智慧」相關話題歡迎關注討論
SLAM是做定位的傳統方法,網上可以搜到很多相關文獻。缺點很明顯,SLAM本質是個matching的問題,需要存儲大量的dense frame的數據,以及進行大量的特徵匹配(feature matching),以及特徵跟蹤(feature tracking)。想了解SLAM的最新進展的可以直接拉到文章最下面的鏈接。
這裡提兩個我所知道的比較有意思的基於深度學習的visual localization的工作,可能這個回答跟題主的問題本身關係不大,機器人主要還是在用SLAM進行定位。
PoseNet: Visual LocalisationVisual Localisation。劍橋大學Cipolla組在ICCV『15的一個工作,通過神經網路來直接回歸相機的6-DOF pose。主要做的是街道或者建築物的定位,就是拍張街道圖,估計拍攝者的當前pose(位置和拍攝方向)。
這裡訓練數據採集有點意思,是直接用手持手機視頻去拍建築,然後從手機導出來的視頻直接做SfM(Structure from Motion), 這樣每個frame的pose就可以從SfM的結果知道了,然後再用神經網路去回歸擬合這個pose,也算是unsupervised learning了。idea本質我覺得是從3D點雲裡面去匹配2D的圖片,作者利用了一個神經網路來做這事兒,這樣就使得testing時候的匹配直接轉化成一個神經網路的feedforward pass,速度極快,所以這個框架其實可以擴展到很多機器人的應用之中去。
PlaNet (https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45488.pdf)。Google在ECCV』16發表的一個工作,做的是一個圖片定位網路。非常虎的是他們用到了9千萬張geo-tagged images,然後把全球的地圖用一種adaptive split的辦法分成26263個格子(類),然後直接暴力地花了2.5個月訓練一個inception分類網路。對比了之前基於image retrieval的Im2GPS(IM2GPS: estimating geographic information from a single image)的結果,好出一大截。然後玩GeoGuessr遊戲,也比人好很多。說到這裡,GeoGuessr(GeoGuessr - Letamp;amp;amp;#x27;s explore the world!)這個遊戲本身蠻有意思,不知不覺就玩了半小時@.@. 。只有Google才能訓練這麼虎的定位網路,不得不感慨在這個深度學習的時代,數據和計算資源為王。。。
最後再分享個我前同事Tomas(這人好像也是一些同學的男神?)寫的一個博客文章, 很好地討論了SLAM相關的最新進展和文獻:The Future of Real-Time SLAM and Deep Learning vs SLAM
@Pickles Husky 瀉藥。。。
樓上各位似乎都直接把定位的解決方案歸結為SLAM了,作為一個比較熟悉視覺SLAM的菜雞,我認為SLAM僅僅是其中的一個技術點,講講不同的吧。先聲明,這篇回答主要泛泛而談,暫不涉及任何技術細節,如有需要歡迎深入探討。
題主在題中問到的是機器人如何通過視頻序列來給自己定位,@周博磊 大神的答案已經比較完善了,不僅可以通過視覺SLAM,還可以通過類似於場景識別,記憶全局定位的方式來處理。
而題目中所問的「機器人定位」這個關鍵詞,其實是個挺大的topic,因此在這個答案中,我想順勢把機器人「定位」這個問題稍微展開一下,希望能夠拋磚引玉。
-------------------------------------------------------
定位是機器人學時至今日最大的難題(我認為沒有之一)。主要原因在於,沒有任何一種感測器能夠保證全天候,高精度地運行(具體每個感測器的特性就不展開來說了,有需要再討論)。而由於人類主要依賴於視覺系統進行定位(其實還包括慣性感知系統),所以長期以來AI界對定位的解決方案主要從視覺方面進行切入。另一方面,機器人學方向的學者大多出身於機械方向,本著最實用穩定的原則,更多地依賴於視覺之外的其它高精度感測器,如RTK-GPS, 激光雷達,超聲波等。只是近年來由於視覺感測器低成本高信息量的特性,Robot Vision方向開始越發趨向火熱,Sensor Fusion的方式更是獲得了廣泛的認同。
簡單來說,定位可以分為絕對定位與相對定位兩種方式。絕對定位直接獲得世界坐標系的位置,相對定位假設起始點的位置為原點,之後的定位全部相對於原點的坐標系。
絕對定位需要地圖。僅僅告訴機器人一個絕對的世界坐標,它是無法自主移動導航的,因為它不知道什麼地方可以走,什麼地方是障礙物。
而地圖如何構建,本身就是一件複雜且困難的事情。。。。(此處省略十萬字)
相對定位需要至少一個定位點的絕對坐標。
IMU,Camera,Lidar都是相對定位的重要感測器。它們通過在連續兩個時刻獲取感知數據,然後關聯起來,計算出這兩個時刻的相對位移和旋轉。通過不斷地迭代這個過程,可以獲得最新一個時刻,相對於起始點的位移與旋轉。在這個過程中,數據關聯,pose計算等等都非常,非常容易產生誤差,且誤差的分布很難估計!
-----------------------------------------------
講真,對於題主所問的「是否對路痴有幫助」這一點,我的答案絕對是YES。簡單舉例,在kitti的visual odometry榜單上,從每100m到800m的平均定位誤差如果超過5%,就得排在20名以後了,這還只是已經公開的評測結果。
這是什麼概念呢?機器人每向前走1000m,自己認為的前進距離為950-1050m(中間還有若干旋轉。。),試問哪一個人能做到呢?作為一個曾經的無線電測向一級運動員,長期奔跑於毫無路標的野地中,深知失去了先驗信息與全局定位+地圖,人類自身的定位能力是多麼薄弱。很多時候在山裡轉了一圈,還以為回到了原地(就算有指北針也是搞笑好嘛!!),可是最後復盤的時候發現是在幾公里開外。。。。何況,現在的機器人視覺SLAM還是有閉環檢測能力(loop closure)的,就是,走了一圈發現自己回到了原地,就會提醒自己,把之前的定位誤差全攤平了。。。人類,這方面其實挺弱的。。
因此結論是:機器人定位的方式一定可以解決「路痴」的問題。即使不是路痴(我一向對自己的方向感十分自信,但在野外的時候,真心真心做不到),目前的定位能力也一定優於人類本身,請相信科技的力量~~~~~
樓上 @ 周博磊 回答的很好。我再補充幾點。機器人的SLAM問題最重要的就是求解相機的6自由度姿態Pose(3自由度的位移 t,3自由度的旋轉 R),以及確定圖像中點的3D位置。
目前單目視覺SLAM的主流方法分為兩派:1. Feature based Method,例如ORB-SLAM [1-2] 2. Direct Method,如LSD-SLAM [3]。當然還有最新的,@周博磊提到的 3. 使用深度學習來做SLAM。下面分別大致介紹下這三種方法。
1. Feature based方法主要從圖像裡面提取特徵點(如SIFT,ORB等),然後在不同幀之間匹配這些提取的特徵點。這樣,同一個特徵點在不同兩幅圖像中的位置就可以匹配起來。只要匹配的特徵點足夠多,我們就可以得到兩幀之間的Fundamental Matrix (F),而如果知道相機的內參數(K),我們就又可以得到Essential Matrix(E),對 E求SVD分解,兩幀圖像的相對位移(t),以及相對的旋轉(R)就可以被解出來了。這樣以來,以第一幀為原點,我們就可以得到之後相機在每一幀的位移和旋轉,這就算是定位了,也叫Localization或Odometry。在確定相機姿態的同時,兩幀之間的匹配點也可以計算出這些匹配過的特徵點的3D坐標,這個過程叫Mapping。這也就是feature based SLAM或者Structure from Motion的大致過程。
當然,完整Feature based的SLAM框架相對複雜,需要做Bundle Adjustment以優化相機姿態和3D點雲的坐標,還要做閉環檢測(Loop Closure),以減小誤差。
2. 再說說Direct Method。可能有些人覺得Feature based Method已經足夠完美了,其實不然。Feature Based方法確實可以玩到real-time,ORB-SLAM的實時性就比較完美,但是,由於每一幀提取出來的feature不是很多,這就會導致重建出來的3D點雲map太過於稀疏, 並且只有圖像中的一小部分信息被用到。於是,為了克服上述問題,LSD-SLAM橫空出世。LSD-SLAM直接用圖像的像素信息,而不是特徵點來計算相機的姿態和像素點的3D坐標。但是LSD-SLAM不是很穩定,而且速度明顯跟不上ORB-SLAM,看來Direct Method還有很長的路要走。不過最近 LSD-SLAM的作者,TUM 的 Engel和Cremers的新演算法DSO [4] 取得了更好的效果,期待以後直接法能夠大放光彩。
3. CNN based SLAM or Localization。比較有代表性的就是@周博磊提到的PoseNet。但是,PoseNet有個巨大的問題,它沒辦法在沒有訓練過的場景中定位。PoseNet其實不能叫定位(Localization),應該叫重定位(Relocalization)。什麼意思呢,就是PoseNet實際上的輸入,一定是之前訪問過(訓練過)的場景的圖像幀,也就是說,如果輸入一張PoseNet之前完全沒有訓練過的圖像幀,那麼PoseNet一定會瞎。
你說解決路痴的這個問題可以用手機來輔助定位啊!在室外的話,用手機的GPS和IMU基本足夠。室內就比較蛋疼了,因為GPS沒信號啊。相信很多人都有在商場裡面轉好多圈然後依舊找不到去的地方的經歷吧。所以,在室內,使用視覺來輔助定位是極好的。你拿出手機然後拍到周圍的場景,然後手機利用已經構建好的,存貯在線下的3D地圖來定位,不就可以幫助你導航了嗎。
References以及推薦閱讀:
[1] Raul Mur-Artal, J. M. M. Montiel and Juan D. Tardos, "ORB-SLAM: A Versatile and Accurate Monocular SLAM System," IEEE Trans on Robotics, VOL. 31, NO. 5, OCTOBER 2015
[2] Raul Mur-Artal and Juan D. Tardos. " ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras " ArXiv preprint arXiv:1610.06475, 2016
[3] Jakob Engel and Thomas Sch¨ops and Daniel Cremers, "LSD-SLAM: Large-Scale Direct Monocular SLAM" in ECCV 2014
[4] J. Engel, V. Koltun, D. Cremers "Direct Sparse Odometry," In arXiv:1607.02565, 2016
另外,ORB-SLAM 和LSD-SLAM都開源,有時間可以下下來讀一讀,跑一跑。
大量同意 @顏沁睿 的觀點,特別是:
定位是機器人學時至今日最大的難題(我認為沒有之一)
控制的前提是對狀態的準確估計,對於移動機器人來說就是定位,控制的精度無法超過定位精度,可見其重要性。
主要原因在於,沒有任何一種感測器能夠保證全天候,高精度地運行(具體每個感測器的特性就不展開來說了,有需要再討論)。
其難度我認為主要是對環境的敏感性,因為環境變化引發時變!引發時變!引發時變!
這裡的時變可以是模型的時變,更多時候,指的是感測器雜訊分布特性的時變。而對於最優估計/多源信息融合這類問題,準確的先驗信息是其最優性與穩定性的保證,時變往往會導致其喪失最優性甚至發散。
解決了時變問題,其實就是實現了實驗室產品到實際應用的轉型。
這就引入了自適應估計,或者叫系統辨識問題。
如@顏沁睿 所說:
機器人學方向的學者大多出身於機械方向,本著最實用穩定的原則,更多地依賴於視覺之外的其它高精度感測器,如RTK-GPS, 激光雷達,超聲波等。
事實上,單一種類感測器往往是很難實現性能的大幅提升的,而且有的問題是沒法解決的。例如:再精確的GPS在室內/叢林/高樓環境下也難以發揮其功效,再貴的攝像頭在低流明環境中也難以擺脫瞎子/近視的命運。
解決機器人定位問題,multi-sensor fusion(多感測器信息融合/多源信息融合)無疑是個很好思路,為啥?
1、各個感測器之間取長補短,你不行了我來,我不行了你來,大幅提升對環境適應性;
2、利用數據的冗餘性大幅度提升精確度與可靠性;
3、數據的冗餘能夠幫助識別故障感測器,及時隔離壞數據對系統的提升不是一點半點。
4、超級便宜!!!
關於multi-sensor fusion,我認為難點在於
1、感測器系統的設計:儘可能選擇性能上互補的感測器(陀螺儀/加速度計組合就是很好的例子),具有一定的藝術性;
2、感知模型的建立以及數據融合演算法(卡爾曼濾波及其各種衍生版本是最常用的);
3、注意,所有演算法加上「自適應」三個字,定位系統的自我調節能力,才是其成功的關鍵所在。
最後,四個字:協同超越。
這個問題,叫做同時定位與地圖重建(simultaneous localization and mapping),簡稱SLAM.
拋磚引玉,畢竟我只是剛入門的新人呀完全沒有問題吧。把微信的街景掃描嫁接到機器人身上,完美解決這個問題
所有生物的定位都是一定程度的認知積累和自身系統之間相互協作才能達到目的的吧。對機器人而言,也應該是為其建立龐大完善的認知資料庫,搭配各式感測器系統,使其通過定位知道自己的位置,通過感測器知道自己所處的環境,再通過資料庫規避和選擇自己的路線及通過方式吧。
可以集成導航軟體,如我國的北斗衛星導航…
1.靠感測器了解周圍環境,比如激光雷達,攝像頭(可見光,紅外)。大的位置和手機地圖定位一樣,靠GPS或者基站,WIFI。
2.人類路痴是個人的方向感和邏輯問題,如果不能改變大腦結構或者訓練出方向感,那就沒辦法解決路痴問題,頂多開發個導航軟體。
實際上當前的機器人開發大多數是模仿人類的邏輯思維,頂多是硬體牛一些,就像千里眼順風耳,內部都是人類寫的程序。頂多是在某些特定方向因為演算法和計算速度強於人類(比如下棋),沒有真正的智慧,不會發明創造。
推薦閱讀:
※基於深度學習的單目深度估計有什麼發展前景呢?
※Bundle Adjustment到底是什麼?
※三維重建 3D reconstruction 有哪些實用演算法?
※華中科技大學圖像所怎麼樣?
※哪些人工智慧領域已經或者未來1-2年會實現盈利?