⑴ 如何看待谷歌在10月6日開源的slam演算法cartographer
跑了demo,效果非常好.之前使用gmapping畫過室內地圖,分別用北醒與鐳神的雷達跑的,鐳神效果較好,但是總體還是和cartographer差了一截.
現在的問題是,cartographer使用的是MultiEchoLaserScan類型的數據,而我使用的雷達傳入的是LaserScan類型的數據,正在尋找解決辦法
⑵ SLAM演算法解析
【嵌牛導讀】: SLAM(Simultaneous Localization and Mapping) 是業界公認視覺領域空間定位技術的前沿方向,中文譯名為「同步定位與地圖構建」,它主要用於解決機器人在未知環境運動時的定位和地圖構建問題。
【 嵌牛鼻子】: 有人就曾打比方,若是手機離開了 WIFI 和數據網路,就像無人車和機器人,離開了 SLAM 一樣。
【嵌牛正文】: 目前科技發展速度飛快,想讓用戶在 AR/VR、機器人、無人機、無人駕駛領域體驗加強,還是需要更多前沿技術做支持,SLAM 就是其中之一。實際上,有人就曾打比方,若是手機離開了 WIFI 和數據網路,就像無人車和機器人,離開了 SLAM 一樣。
在 VR/AR 方面,根據 SLAM 得到地圖和當前視角對疊加虛擬物體做相應渲染,這樣做可以使得疊加的虛擬物體看起來比較真實,沒有違和感。在無人機領域,可以使用 SLAM 構建局部地圖,輔助無人機進行自主避障、規劃路徑。在無人駕駛方面,可以使用 SLAM 技術提供視覺里程計功能,然後跟其他的定位方式融合。機器人定位導航方面,SLAM 可以用於生成環境的地圖。基於這個地圖,機器人執行路徑規劃、自主探索、導航等任務。
SLAM 技術的發展距今已有 30 余年的歷史,涉及的技術領域眾多。由於本身包含許多步驟,每一個步驟均可以使用不同演算法實現,SLAM 技術也是機器人和計算機視覺領域的熱門研究方向。
SLAM 的英文全程是 Simultaneous Localization and Mapping,中文稱作「同時定位與地圖創建」。SLAM 試圖解決這樣的問題:一個機器人在未知的環境中運動,如何通過對環境的觀測確定自身的運動軌跡,同時構建出環境的地圖。SLAM 技術正是為了實現這個目標涉及到的諸多技術的總和。
SLAM 技術涵蓋的范圍非常廣,按照不同的感測器、應用場景、核心演算法,SLAM 有很多種分類方法。按照感測器的不同,可以分為基於激光雷達的 2D/3D SLAM、基於深度相機的 RGBD SLAM、基於視覺感測器的 visual SLAM(以下簡稱 vSLAM)、基於視覺感測器和慣性單元的 visual inertial odometry(以下簡稱 VIO)。
基於激光雷達的 2D SLAM 相對成熟,早在 2005 年,Sebastian Thrun 等人的經典著作《概率機器人學》將 2D SLAM 研究和總結得非常透徹,基本確定了激光雷達 SLAM 的框架。目前常用的 Grid Mapping 方法也已經有 10 余年的歷史。2016 年,Google 開源了激光雷達 SLAM 程序 Cartographer,可以融合 IMU 信息,統一處理 2D 與 3D SLAM 。目前 2D SLAM 已經成功地應用於掃地機器人中。
基於深度相機的 RGBD SLAM 過去幾年也發展迅速。自微軟的 Kinect 推出以來,掀起了一波 RGBD SLAM 的研究熱潮,短短幾年時間內相繼出現了幾種重要演算法,例如 KinectFusion、Kintinuous、Voxel Hashing、DynamicFusion 等。微軟的 Hololens 應該集成了 RGBD SLAM,在深度感測器可以工作的場合,它可以達到非常好的效果。
視覺感測器包括單目相機、雙目相機、魚眼相機等。由於視覺感測器價格便宜,在室內室外均可以使用,因此 vSLAM 是研究的一大熱點。早期的 vSLAM 如 monoSLAM 更多的是延續機器人領域的濾波方法。現在使用更多的是計算機視覺領域的優化方法,具體來說,是運動恢復結構(structure-from-motion)中的光束法平差(bundle adjustment)。在 vSLAM 中,按照視覺特徵的提取方式,又可以分為特徵法、直接法。當前 vSLAM 的代表演算法有 ORB-SLAM、SVO、DSO 等。
視覺感測器對於無紋理的區域是沒有辦法工作的。慣性測量單元(IMU)通過內置的陀螺儀和加速度計可以測量角速度和加速度,進而推算相機的姿態,不過推算的姿態存在累計誤差。視覺感測器和 IMU 存在很大的互補性,因此將二者測量信息進行融合的 VIO 也是一個研究熱點。按照信息融合方式的不同,VIO 又可以分為基於濾波的方法、基於優化的方法。VIO 的代表演算法有 EKF、MSCKF、preintegration、OKVIS 等。Google 的 Tango 平板就實現了效果不錯 VIO。
總的來說,相比於基於激光雷達和基於深度相機的 SLAM,基於視覺感測器的 vSLAM 和 VIO 還不夠成熟,操作比較難,通常需要融合其他感測器或者在一些受控的環境中使用。
【轉51cto】
⑶ 無人駕駛的核心是什麼是如何運行的
4級或5級的自主駕駛很難有一個明確的標准來定義,自主駕駛應該不復雜。自動駕駛其實涉及三個問題:一、我在哪裡?第二,我要去哪裡?第三是怎麼去。這三個問題的完整解決方案就是真正的自動駕駛。所以特斯拉升級的8000美元自動駕駛2.0隻有部分線控功能,並不是真正的自動駕駛。福特、網路、谷歌做的都是真正的自動駕駛,遠超特斯拉,兩者差別巨大。
機器人定位有三種常見的類型:相對定位、絕對定位和組合定位。自動駕駛一般採用組合定位。首先,本體感受感測器如里程計和陀螺儀測量相對於機器人初始姿態的距離和方向,以確定機器人的當前姿態,這也稱為軌跡估計。然後使用激光雷達或視覺感知環境,使用主動或被動識別、地圖匹配、GPS或導航信標進行定位。位置的計算方法包括三角測量、三邊測量和模型匹配演算法。從這個角度來說,IMU也是自動駕駛必不可少的一部分。
同時,機器人定位實際上是一個概率問題,所以機器人定位演算法有兩個流派,一個是卡爾曼濾波,一個是貝葉斯推理。有擴展卡爾曼濾波器(EKF)、卡爾曼濾波器(KF)和無跡卡爾曼濾波器(UKF)。另一種是基於貝葉斯推理的定位方法。網格和粒子用於描述機器人位置空間,遞歸計算狀態空間中的概率分布,如馬爾可夫定位(MKV)和蒙特卡羅定位(MCL)。
在地圖匹配中,必須有一個優先地圖與之比較。這張地圖不一定是厘米級高精度地圖。有必要談談地圖,它可以分為四類,即度量、拓撲、感測器和語義。我們最常見的地圖是語義級地圖。無人駕駛不是導彈。一般輸入目的地應該是語義層面。畢竟人類的交通方式是語義層面,不是地理坐標。這是機器人和無人駕駛的區別之一。機器人一般不考慮語義,只需要知道自己在坐標系中的位置。全球定位系統提供全球坐標系的度量。未來,V2X將提供雷達和視覺探測距離(NLOS)之外的特定物體(移動的行人和汽車)的地圖,或V2X地圖。目前國內處於研究階段的無人車大多採用GPS RTK定位,必須配合厘米級高精度地圖才能獲得語義信息,不可能做到真正的無人。
⑷ 如何看待谷歌在 10 月 6 日開源的 SLAM 演算法 cartographer
1. LIDAR SLAM,並且用了IMU輔助;
2. 有submap,有scan matching,解決了一些基本的問題;
3. 有Loop closure optimization,這個很好,非常好,這是在indoor環境里必須要有的,在visual slam中大幅降低accumulated error的方法,作者給加進來了;
4. 給了一套node selection, branching, and computation
of upper bounds的方法.
結論:一套state-of-art的indoor LIDAR SLAM系統實現,該有的都有了,很robust,看得出作者為了降低accumulated error提高真正工程上的可用性做了很多努力。
作者:立黨
鏈接:
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
⑸ 激光雷達SLAM包括以下幾種方案:
激光雷達SLAM包括以下幾種方案:
直接法, 直接法的典型代表是ICP和NDT系列,ICP可以直接計算出激光的位姿,多幀可以構成聯合優化,這種方案比較簡單但是比較有效,常用於激光雷達的多程對齊。
基於特徵的匹配(LO),該方案的典型代表是LOAM和後續的改進方案A-LOAM/F-LOAM,該方案通過尋找線面特徵,並通過特徵匹配來計算幀間的位姿,多個位姿可以做BA優化。
多感測器融合的方案。該方案的典型代表是LIO-Mapping,LINS和LIO-SAM.LIO-Mapping演算法借鑒VINS-Mono的預積分和後端優化,前端視覺里程計改成激光里程計。
基於柵格的,該方案的代表是谷歌開源的cartography,這種方案在室內的機器人定位比較有優勢。
基於面元,該方案的典型代表是suma。
基於語義信息,該方案的典型代表是segmap和suma++。
高精地圖的生產包括語義信息的提取(通常來自視覺,部分也可來自激光),單程LIO(gnss+imu+dmi+lidar/visual odometry),多程對齊。說一下每一部分的難點吧:
圖像語義信息的提取。圖像的語義信息包括車道線,桿狀物體,牌子,地面車信等;在高速場景,物體遮擋較少,物體檢測的准確率是可以做到95%以上的;在城市道路,由於樹木的遮擋(對牌子和桿狀物體的遮擋), 車輛遮擋(對車道線和地面車信的遮擋),目前的檢測是很難做到90%以上的。
點雲的語義信息提取。點雲對於特殊材料反射率較大(如車道線),基本上二分就可以解決很多問題,對於高速場景,車道線磨損並不嚴重,語義信息提取較容易;對於城市道路車道線磨損嚴重,且存在老舊的車道線的干擾,語義信息的提取是很難做到90%以上的。
LIO. 高精採集車一般配備激光雷達,相機,imu, dmi和RTK等設備,對單程軌跡來說,是可以採用多感測器融合的。對於高速場景,建築物遮擋較少,RTK信號較好,後結算的RTK的精度是可以做到30cm以內的(在山區和隧道場景例外),自動化比較難做,這個和場景有關系。
多程融合。主要看人眼去分辨點雲是否對齊,當然是可以建立小規模數據集進行評測,自動化率非常低。
總的來說,目前高精地圖的生產是很難做到自動化的,主要原因是場景復雜,corner case太多,絕對精度和相對精度都很難滿足要求。
總結一下,目前激光SLAM的直接法比較簡單,可以用於激光里程計的多程對齊或回環檢測; 純LO的演算法目前工業圈很少使用,一般採用多感測器融合的方案,畢竟激光雷達都用了,也不差IMU這樣的感測器。多感測器融合的方案主要用於高精地圖的製作,自動駕駛領域一般採用高精地圖作為先驗來定位,不會同時定位和建圖。基於柵格的可以用於移動機器人,在室內環境柵格假設大多數還是有效的,在室外場景的話,一般會採用NDT Map來存儲地圖。基於語義信息和面元的話,個人不太了解,在工業圈的使用也不多。
⑹ slam演算法是什麼
SLAM是Simultaneous localization and mapping縮寫,意為「同步定位與建圖」,主要用於解決機器人在未知環境運動時的定位與地圖構建問題。
Simultaneous Localization and Mapping (SLAM)原本是Robotics領域用來做機器人定位的,最早的SLAM演算法其實是沒有用視覺camera的(Robotics領域一般用Laser Range Finder來做SLAM)。
SLAM對實時性要求比較高,而要做到比較精確、穩定、可靠、適合多種場景的方案一般計算量相對較大,目前移動式設備的計算能力還不足夠支撐這么大的計算量,為了達到實時性能,往往需要在精確度和穩定性上做些犧牲。
因此在具體的應用中,往往需要根據移動設備所具有的感測器組合、計算能力、用戶場景等,選擇和深度定製合適的SLAM演算法。比如,無人駕駛汽車和手機端AR類應用的SLAM演算法就非常不同。
SLAM的典型應用領域
機器人定位導航領域:地圖建模。SLAM可以輔助機器人執行路徑規劃、自主探索、導航等任務。國內的科沃斯、塔米以及最新面世的嵐豹掃地機器人都可以通過用SLAM演算法結合激光雷達或者攝像頭的方法,讓掃地機高效繪制室內地圖,智能分析和規劃掃地環境,從而成功讓自己步入了智能導航的陣列。
VR/AR方面:輔助增強視覺效果。SLAM技術能夠構建視覺效果更為真實的地圖,從而針對當前視角渲染虛擬物體的疊加效果,使之更真實沒有違和感。VR/AR代表性產品中微軟Hololens、谷歌ProjectTango以及MagicLeap都應用了SLAM作為視覺增強手段。
無人機領域:地圖建模。SLAM可以快速構建局部3D地圖,並與地理信息系統(GIS)、視覺對象識別技術相結合,可以輔助無人機識別路障並自動避障規劃路徑,曾經刷爆美國朋友圈的Hovercamera無人機,就應用到了SLAM技術。
無人駕駛領域:視覺里程計。SLAM技術可以提供視覺里程計功能,並與GPS等其他定位方式相融合,從而滿足無人駕駛精準定位的需求。例如,應用了基於激光雷達技術Google無人駕駛車以及牛津大學MobileRoboticsGroup11年改裝的無人駕駛汽車野貓(Wildcat)均已成功路測。
以上內容參考:slam路徑規劃演算法 - CSDN
⑺ slam演算法是什麼
slam演算法是實現機器人定位、建圖、路徑規劃的一種演算法。SLAM是同步定位與地圖構建(Simultaneous Localization And Mapping)的縮寫,最早由Hugh Durrant-Whyte 和 John J.Leonard自1988年提出。
其實SLAM更像是一個概念而不是一個演算法,它本身包含許多步驟,其中的每一個步驟均可以使用不同的演算法實現。主要用於解決移動機器人在未知環境中運行時即時定位與地圖構建的問題。
SLAM技術的核心步驟:
大體上而言,SLAM包含了感知、定位、建圖這三個過程。
感知:機器人能夠通過感測器獲取周圍的環境信息。
定位:通過感測器獲取的當前和歷史信息,推測出自身的位置和姿態。
建圖:根據自身的位姿以及感測器獲取的信息,描繪出自身所處環境的樣貌。
⑻ slam演算法是什麼
slam演算法是實現機器人定位、建圖、路徑規劃的一種演算法。
Simultaneous Localization and Mapping (SLAM)原本是Robotics領域用來做機器人定位的,最早的SLAM演算法其實是沒有用視覺camera,Robotics領域一般用Laser Range Finder來做SLAM。
其中一個原因是SLAM對實時性要求比較高,而要做到比較精確、穩定、可靠、適合多種場景的方案一般計算量相對較大,目前移動式設備的計算能力還不足夠支撐這么大的計算量,為了達到實時性能,往往需要在精確度和穩定性上做些犧牲。
演算法:
指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。
也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
⑼ 激光雷達SLAM演算法
機器人研究的問題包含許許多多的領域,我們常見的幾個研究的問題包括:建圖(Mapping)、定位(Localization)和路徑規劃(Path Planning),如果機器人帶有機械臂,那麼運動規劃(Motion Planning)也是重要的一個環節,SLAM需要機器人在未知的環境中逐步建立起地圖,然後根據地區確定自身位置,從而進一步定位。
ROS系統通常由大量節點組成,其中任何一個節點均可以通過發布/訂閱的方式與其他節點進行通信。舉例來說,機器人上的一個位置感測器如雷達單元就可以作為ROS的一個節點,雷達單元可以以信息流的方式發布雷達獲得的信息,發布的信息可以被其他節點如導航單元、路徑規劃單元獲得。
ROS的通信機制:
ROS(機器人操作系統)中SLAM的一些功能包,也就是一些常用的SLAM演算法,例如Gmapping、Karto、Hector、Cartographer等演算法。我們不會去關注演算法背後的數學原理,而是更注重工程實現上的方法,告訴你SLAM演算法包是如何工作的,怎樣快速的搭建起SLAM演算法。
地圖 : ROS中的地圖很好理解,就是一張普通的灰度圖像,通常為pgm格式。這張圖像上的黑色像素表示障礙物,白色像素表示可行區域,灰色是未探索的區域
地圖在ROS中是以Topic的形式維護和呈現的,這個Topic名稱就叫做 /map ,由於 /map 中實際上存儲的是一張圖片,為了減少不必要的開銷,這個Topic往往採用鎖存(latched)的方式來發布。地圖如果沒有更新,就維持著上次發布的內容不變,此時如果有新的訂閱者訂閱消息,這時只會收到一個 /map 的消息,也就是上次發布的消息;只有地圖更新了(比如SLAM又建出來新的地圖),這時 /map 才會發布新的內容。 這種方式非常適合變動較慢、相對固定的數據(例如地圖),然後只發布一次,相比於同樣的消息不定的發布,鎖存的方式既可以減少通信中對帶寬的佔用,也可以減少消息資源維護的開銷。
Gmapping ,Gmapping演算法是目前基於激光雷達和里程計方案裡面比較可靠和成熟的一個演算法,它基於粒子濾波,採用RBPF的方法效果穩定,許多基於ROS的機器人都跑的是gmapping_slam。
gmapping的作用是根據激光雷達和里程計(Odometry)的信息,對環境地圖進行構建,並且對自身狀態進行估計。因此它得輸入應當包括激光雷達和里程計的數據,而輸出應當有自身位置和地圖。
論文支撐:R-LINS: A Robocentric Lidar-Inertial State Estimator for Robust and Efficient Navigation
6軸 IMU:高頻,聚焦自身運動,不採集外界環境數據
3D LiDAR:低頻,聚焦車體運動,採集外界環境數據
R-LINS使用以上兩種感測器來估計機器人的運動姿態, 對於任一感測器而言,單獨的依靠自己的數據是很難實現地圖構建的, 比如純雷達模型使用的感測器是激光雷達,可以很好的探測到外界的環境信息。但是,同樣的,也會受到這些信息的干擾,再長時間的運算中會產生一定的累計誤差。為了防止這種誤差干擾到後續的地圖構建中,需要使用另一種感測器來矯正機器人自身的位姿信息, 即IMU感測器,IMU感測器由於是自身運動估計的感測器,所以,採集的都是自身運動的姿態信息。可以很好的矯正激光雷達里程計的位姿信息。所以,通常使用激光雷達和慣導來進行數據融合,實現姿態信息的矯正。
一共分為三大塊:
⑽ slam演算法是什麼
slam演算法是解決一個機器人在未知的環境中運動,如何通過對環境的觀測確定自身的運動軌跡,同時構建出環境的地圖的問題方法。
SLAM技術正是為了實現這個目標涉及到的諸多技術的總和。SLAM技術涵蓋的范圍非常廣,按照不同的感測器、應用場景、核心演算法,SLAM有很多種分類方法。
slam演算法應用
在 VR/AR 方面,根據 SLAM 得到地圖和當前視角對疊加虛擬物體做相應渲染,這樣做可以使得疊加的虛擬物體看起來比較真實,沒有違和感。在無人機領域,可以使用 SLAM 構建局部地圖,輔助無人機進行自主避障、規劃路徑。
在無人駕駛方面,可以使用 SLAM 技術提供視覺里程計功能,然後跟其他的定位方式融合。機器人定位導航方面,SLAM 可以用於生成環境的地圖。基於這個地圖,機器人執行路徑規劃、自主探索、導航等任務。