日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器人学习--激光slam简单案例版学习参考(转)

發布時間:2025/3/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器人学习--激光slam简单案例版学习参考(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容作為激光slam框架概念版 學習參考,轉自知乎網友??https://www.zhihu.com/column/c_1007202713288966144

前言:

開通這個專欄的目的是為了傳播激光雷達SLAM相關工作,為激光雷達SLAM做出一份貢獻,我會盡量以最短時間內把所有研究工作展現出來。

  • 首先要明白,目前來說激光雷達SLAM是非常成熟的,已經不是什么特別高科技的東西,不管是理論研究和實際商業落地都是成熟和成功的。目前很多算法都是好幾年前甚至一二十年前的東西,這個是很顯然的,因為商業上成功的東西,其實它們在實驗室里已經待了很長時間了。我在2011左右研究方向為4G通信信號處理相關的內容,但是那時發表關于4G有關的論文是比較困難的了(可能因為本人水平有限的原因吧),因為那時通信的論文熱點是關于5G的東西,可想而知。
  • 既然是激光雷達SLAM,可以只需要一個激光雷達傳感器就行了,不需要IMU等等,可能在實際商業產品中需要IMU、超聲波、慣導、紅外等其它傳感器和方法,但是我把注意力永遠放在激光雷達上。
  • 需要一臺筆記本(或者臺式)(我的配置:win 7 64位,CPU為i3 2.4GHz,內存4G),如果你的配置比我好那就更好了。需要一個激光傳感器,沒有也沒事,我會給你激光雷達傳感器原始數據,那么你只需要一臺電腦了。
  • 專欄主要圍繞三大主題展開Scan to Scan Match;?Scan to Map Match;?圖優化理論(閉環或者回環檢測)主要就是基于優化理論的,本人認為這些屬于state of the art,搞懂這些基本可以完成激光雷達SLAM相關項目了,因為這些理論是完備的充分的,涉及到了方方面面。基于概率統計理論的方法基本不涉及,擴展卡爾曼濾波EKF、粒子濾波等不討論。不是說不討論的東西就是不好的,我只是想用更簡潔的方式去描述激光雷達SLAM導航,簡潔不是簡單,我只是把注意力放在優化理論上,專注一點,深入挖掘,畢竟人的時間精力有限。想起剛開始入手激光雷達SLAM項目的時候,就是從網上下載了Probablistic Robotics (概率機器人),被稱為圣經的書(聽說有第二版,我看的是最早的不到500頁的PDF),里面全部是是基于概率統計理論方法,看了前面沒幾章,大致了解了SLAM的大概,給了一個入門作用,發現書中后半部分理論越來越深奧不可測,只好放棄另辟蹊徑。書中的理論簡單仿真實現過幾個,后來越來越感到力不從心,感覺自己智商差書的作者太大了,只能放棄,現在當作茶余飯后為了激發靈感而隨手翻閱。真正給我曙光的是發現了基于優化理論的SLAM新大陸,可能緣由我在大學時代研究凸優化理論(Convex Theory)和熟悉矩陣理論有關,發現本人對于非線性優化較敏感,看了一篇又一篇基于優化理論的SLAM論文,豁然開朗,原來其實就是這么回事。
  • 專欄中涉及的理論或者論文都會一一注明,追根到底,而且都是推導驗證仿真測試過的,不僅僅只是復制黏貼一大推公式,更加關注的是理論的說明,公式的Matlab實現,是講的明白的,更是實際驗證正確的。
  • 第一篇:激光雷達

    激光雷達選用北陽(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方法

  • Scan to map ,即激光雷達掃描數據直接與地圖進行匹配,得到實際位置坐標[x,y,theta]。這種方式一邊計算位置,一邊把新掃描到的數據及時加入到先前地圖中。我這邊主要參考論文:A Flexible and Scalable SLAM System with Full 3D Motion Estimation。這里我關心的只是二維激光雷達數據定位和建圖,文獻中的3D姿態估計等不涉及,只關心二維的。其實這篇文獻就是Hector的理論基礎。Google的Cartographer中前半部分submap建立就是用的這個方法,唯一區別就是原文獻的雙線性插值變成了Google的雙三次插值,這么做應該是讓數據更加smooth,插值方式可以隨自己喜好,也可以選用其它數值計算相關書籍中的方法,這個主要是為了讓數值計算更加穩定,避免出現計算崩潰,數據越smooth,計算可靠性越好。本篇講訴比較簡短,因為實現太簡單了,編程很容易實現,這個前提是你要掌握非線性優化理論相關知識,因為文獻中用了高斯牛頓迭代法求解。這里又出現了優化迭代方法,我在第二篇中也提出了一種高斯牛頓法簡化原文獻的計算思路。
  • 第二篇中的Scan to scan 主要用于精確的相對位置求解,那么scan to map用來做什么呢。因為Scan to map 對于地圖表示要求較高,一旦地圖建錯,后面將越來越錯,就算地圖不建錯,它也是有誤差在的。但是假如一張精確的地圖已知,我們可以用Scan to map 給個大致定位,這個才是主要目標。而且它的定位計算量較小,因此在車速較高時也是可以達到實時的。下圖就是我在十幾米長寬的房間實現的一張小地圖,一邊Scan to map,一邊把新的激光雷達數據加入地圖中。地圖50m*50m。
  • 第三篇結束語:

    本篇我講訴比較簡短,只選取了一篇代表性文獻資料進行實現,因為在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.

    ?

  • 圖優化理論中,本質還是優化理論,主要涉及最小均方二次優化方法。這里的圖與組合數學的圖論還是有些區別,這里的圖只是一個形象的比喻,本質是優化理論。自動導航中的路徑規劃Planning概念就比較深入講解組合數學中圖論的相關知識了,后期實際應用時我會專門詳細說明一下相關概念,目前還是以優化理論為主導進行介紹。
  • 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简单案例版学习参考(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。