机器人学习--激光slam简单案例版学习参考(转)
內容作為激光slam框架概念版 學習參考,轉自知乎網友??https://www.zhihu.com/column/c_1007202713288966144
前言:
開通這個專欄的目的是為了傳播激光雷達SLAM相關工作,為激光雷達SLAM做出一份貢獻,我會盡量以最短時間內把所有研究工作展現出來。
第一篇:激光雷達
激光雷達選用北陽(HOKUYO)的產品:UTM-30LX-EW,工業級別,可用于室外,
價格為人民幣3萬一千塊。
主要性能指標:1、數據傳輸為以太網。2、測量距離極限最大為60米,一般有效測量范圍為30米之內。最小精度為正負3厘米,一般為5厘米。3、掃描范圍270度,間隔0.25度一個激光測量數據,每幀激光雷達數據分割為1080個數據點。4、掃描頻率最大40Hz,每隔25ms一幀雷達數據。
如還需了解相關特性可從官網上查詢(需要注冊),以下圖片是激光雷達、官網相關資料和官方軟件使用界面。
?
?
?
?
?
?
?
官方軟件有保存測量數據功能,我們后期各種仿真測試都是基于原始測量的存儲文檔,以后落地為C++時需要實時讀取以太網數據包中激光雷達數據即可(只要后期C++優化處理恰當,就可以實時讀取、測量計算)。下圖為保存的原始數據內容,可以Txt格式打開,因為是ASCII格式,Matlab可以很容易讀取里面的數據(仿真測試階段使用),測量數據單位為mm。
?
?
?
?
開篇結束語:
前言和第一篇到此為止,我主要講了以后要做的三大任務:Scan to Scan Match;?Scan to Map Match;?圖優化理論(閉環或者回環檢測)。主要就是基于優化理論的。另外說明了一下使用的激光雷達,以后開始就是正式的核心內容了,我會詳細展開。
?
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
分割線
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
參考思嵐科技官網的激光雷達模塊說明了解基本參數:http://www.slamtec.com/cn/Lidar/A3
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
分割線
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二篇:Scan to Scan(上)
本篇主要講述柵格地圖構建和Scan to Scan方法。
在Matlab中創建一個1000*1000大小的二維數組,如果數組中每個元素取值為0到255的整數(灰度圖),再把這個數組用Matlab中的圖片轉換函數把數組轉化為BMP圖片(也可以其它你自己覺得合適的格式),這樣我們就手動構建了一張地圖了。直接用Windows自帶的畫圖軟件打開,可以在圖上自己手動修改,這樣就是手動地圖修改,保存后在用Matlab讀取這張BMP圖片,轉換為1000*1000的二維數組,這樣就是地圖的讀取。說明:你也可以生成500*500,或者10000*10000大小,根據實際需求設置。圖片中每個像素點代表一個單位距離,假如一個像素點代表0.05m,那么1000*1000大小的圖片代表50m*50m大小的地圖,以此類推,一個像素點也可以代表1m單位距離(距離分辨率小了)或者0.01m單位距離(距離分辨率大了)。在灰度圖中0值為黑色,255為白色,可以假定0值為障礙物和255值為空(也可以反過來,隨自己喜好),其它值代表這個位置是障礙物的概率或者是空的概率的大小,比如128代表既不是空也不是障礙物或者說兩者的情形概率相等,比如200代表是空的概率大點,比如50代表是障礙物的概率大點。
?
下圖為全是0值的1000*1000像素大小的地圖,這里假定0值為空。
?
?
?
下圖為自己隨意畫的幾條線代表障礙物,假定255白色為障礙物。
?
?
?
下兩幅圖為實際利用激光雷達SLAM方法生成一個大的房間的地圖,兩幅地圖本質一樣,只是表達方式取值不一樣,第二幅只顯示了障礙物和空地(沒探索到的地方也表示空了)。
?
?
?
?
?
柵格地圖理論可以從?概率機器人這本書中或者網上很方便的搜索到,我這邊在仔細說明一下,以我自己實際應用的方式班門弄斧。
?
?
?
?
?
到此為止,柵格地圖的大體已介紹完畢,而且這些也基本足夠了,除非特別提到,后面將不再提起,因為如何畫地圖在激光雷達SLAM中只是很簡單的一件事。
?
?
?
?
?
?
?
?
?
?
?
第二篇結束語:
其實到目前為止,你可以直接激光雷達數據地圖構建了。怎么弄!假設第一幀激光雷達數據為原點[0,0,0],通過Trim-PLICP得到第二幀和第一幀相對偏移量[x1,y1,theta1],那么第二點位置坐標為[x1,y1,theta1],第三幀相對第二幀偏移[x2,y2,theta2],那么第三點坐標為[x1+x2,y1+y2,theta1+theta2],……,以此類推求得所有經過的點坐標,又由于該點對應的激光雷達掃描數據也是知道的,就可以建圖了。這就是增量建圖原理。不過你馬上就會提出問題,對的,這樣累計誤差會越來越大。雖然兩幀之間匹配是很準確的,但是還是會有計算誤差,積累起來到最后誤差是可觀的,假如你的地圖好幾百米的長寬。那么怎么辦,很簡單,專欄第三部分要講圖優化理論,就是為了消除回環或者閉環誤差,我會到時詳細求解。
另外再提一點,點云匹配方法一定要掌握,因為這是非常精確的求相對位置的方法。雖然可能它的運算量較大,但是在車速較慢,求相對偏移時是很好的,而且對于我們后面圖優化理論約束條件的建立是很重要的。
最后再說一下,非線性優化迭代方法一定要掌握兩三種,它是核導彈,查閱優化相關文獻資料的得力助手,學了它,你查閱論文資料再也不會摸不著頭腦了,而且有些論文你一天時間就可以把它模型仿真出來。在后面Scan to?map?和圖優化理論中,我基本上兩三天看完一篇論文的大概,再花一天時間把它仿真出來。
第三篇:Scan to Map Match
本篇主要講述Scan to map方法
第三篇結束語:
本篇我講訴比較簡短,只選取了一篇代表性文獻資料進行實現,因為在SLAM中相關方法沒有太大的區別,而且Scan to map 在slam中不是特別有主導地位,比如說用來建圖還是有誤差,后端還是主要圖優化來建圖;它主要還是在前端作用,用來即時定位,這就是它的存在吧,因為計算量還是比較小的相比Scan to Scan。以后開始我要著重講訴圖優化原理方法,把圖優化理論用到激光雷達slam中可以說是激光雷達slam到了成熟期,理論上基本已經可以不需要再去研究了,最多只是計算效率怎么提升下,因為它把地圖誤差消除處理的非常好,回環誤差或者閉環誤差在圖優化理論下根本無處可躲。現在主流slam都轉向了視覺,更是由于神經網絡,深度學習等等這幾年的再一次火熱,視覺slam成為了最新研究熱點,我目前不會講訴相關視覺slam,主要還是以激光雷達為主,也許以后再有機會研究討論下。
第四篇:激光雷達slam圖優化理論
?
本篇開始,我要大張旗鼓地介紹激光雷達SLAM圖優化理論,并以此理論設計后端地圖優化方法,這樣,關于激光雷達地圖構建的理論就基本介紹完畢了,剩下的就是實際應用問題。本篇主要參考文獻資料:
Globally Consistent Range Scan Alignment for Environment Mapping.
Efficient Sparse Pose Adjustment for 2D Mapping.
A Tutorial on Graph-Based SLAM.
?
2、
?
激光雷達掃描位置從P0開始,沿著P1,P2,……,一直到Pn-1,Pn。結束點Pn在起始點P0附近。Pn的坐標位置可以通Pn-1獲得,當然也可以通過P0獲得。顯然由于誤差存在問題,Pn分別從Pn-1和P0獲得的坐標不一樣。如通過Scan to scan,Pn通過P0獲得的坐標準確點,通過Pn-1獲得的坐標誤差大點,因為累計誤差較大;如通過Scan to map獲得坐標,由于地圖信息在不停地變換,因此P0、Pn兩點地圖信息和P0、P1、P2、…、Pn-1、Pn所有點地圖信息也不一樣,因此得到的Pn點坐標也不可能重合。
那么怎么辦,簡單方法就是可以通過Pn-1和P0的加權平均得到Pn的位置坐標。這樣,Pn-1的位置坐標也要更新了,同樣Pn-2,Pn-3等等都需要重新更新一下。因此我們需要一個統一的方法去處理如上的問題。
?
?
?
?
?
?
?
第四篇結束語:
?
利用圖優化理論去消除位置坐標誤差方法是非常完備的,這里的消除不是說沒有誤差,而是降到最低。一般具體應用時,我們一般采集好激光雷達數據,進行地圖構建,地圖構建中利用圖優化理論降低回環誤差,修正位置坐標,而且位置之間相互約束關系也根據實際情況求解,對于大范圍地圖,這個過程可能會消耗兩三個小時。你可能會說,那么慢怎么實時。這里說明一下,首先工業級別激光雷達數據量比幾百塊或者上千塊的電子消費級別(如掃地機器人,服務機器人)激光雷達大的多,同樣的算法需要處理更多數據;一般實時指后期定位導航實時,前提是地圖事先生成好了,我們在第一次建圖時還是以準確建圖為目標,而且一般地圖肯定還需要進行人為修改后才會正式使用,這個是工業壞境中的應用。
圖優化理論是強大的,我在實際測試數據仿真時在位置坐標中加入高斯噪聲,優化出來的實際位置還很準確,如下兩圖對比:
下圖位置坐標加入高斯噪聲建圖:
?
?
下圖在加入高斯噪聲位置坐標進行圖優化計算后建圖:
?
?
可以看到,好像濾波一樣,把高斯噪聲濾除了,第一次實際看到數據結果時還是蠻驚訝的,感嘆圖優化理論的強大。
最后說明:我目前為止只講了優化的相關理論。為了簡單說明,環境假設靜態不變。但是后期實際應用,如動態路徑規劃,地圖環境改變時導航定位等,我會另外抽空具體講解一些應對方法。尤其是動態路徑規劃,實際壞境有靜態的路徑巡航,當然更多的是動態的巡航,而且在地圖壞境變化時,比如環境改變,有人員在場內運動,這時的導航和定位環境更加惡劣,對算法可靠性要求更加大了,比起靜態環境。這時也許需要其它傳感器來輔助等等。
到目前為止三大部分講解完畢,講了皮毛而已,優化理論很廣很強大,還需繼續深入研究,有機會再探討。
總結
以上是生活随笔為你收集整理的机器人学习--激光slam简单案例版学习参考(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人学习--栅格地图(occupanc
- 下一篇: 机器人学习--Robotics 4:Pe