《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 低成本小型激光雷達開源驅(qū)動構(gòu)建
低成本小型激光雷達開源驅(qū)動構(gòu)建
2016年微型機與應(yīng)用第16期
劉德志,孫作雷,曾連蓀
上海海事大學(xué) 信息工程學(xué)院, 上海 201306
摘要: 構(gòu)建了小型2D激光掃描儀驅(qū)動解決方案。以RPLIDAR為例,基于低成本硬件及其合理的通信規(guī)約設(shè)計,提升數(shù)據(jù)獲取的可靠性?;贑Make交叉編譯鏈?zhǔn)褂布?qū)動具有跨平臺特性。同時,通過增加launch文件,使其支持ROS (Robot Operating System)。并分別在Windows和ROS系統(tǒng)下完成測試。相應(yīng)的代碼已在Github上開源,可免費用于移動機器人的導(dǎo)航、構(gòu)圖與3D重建、同步定位與地圖構(gòu)建(SLAM)等科研。
Abstract:
Key words :

  劉德志,孫作雷,曾連蓀
 ?。ㄉ虾:J麓髮W(xué) 信息工程學(xué)院, 上海 201306)

       摘要:構(gòu)建了小型2D激光掃描儀驅(qū)動解決方案。以RPLIDAR為例,基于低成本硬件及其合理的通信規(guī)約設(shè)計,提升數(shù)據(jù)獲取的可靠性?;贑Make交叉編譯鏈?zhǔn)褂布?qū)動具有跨平臺特性。同時,通過增加launch文件,使其支持ROS (Robot Operating System)。并分別在Windows和ROS系統(tǒng)下完成測試。相應(yīng)的代碼已在Github上開源,可免費用于移動機器人的導(dǎo)航、構(gòu)圖與3D重建、同步定位與地圖構(gòu)建(SLAM)等科研。
  關(guān)鍵詞:驅(qū)動;激光雷達;跨平臺;開源  

0引言
  隨著工業(yè)、軍事及民用領(lǐng)域?qū)ψ詣踊腿斯ぶ悄芗夹g(shù)需求的日益增長,與移動機器人相關(guān)的理論及應(yīng)用已成為研究熱點。對于移動機器人而言,最常見的任務(wù)之一是在環(huán)境中繪制地圖并進行導(dǎo)航,而2D激光掃描儀是室內(nèi)外機器人最常用的傳感器。目前,市場上已有一些廣泛應(yīng)用于科研的2D激光掃描儀,并在越來越多的論著中被提及。例如德國的SICK系列、日本的Hokuyo系列等。
  但是,結(jié)合國內(nèi)外使用現(xiàn)狀,這些激光雷達具有如下弊端:(1)體積較大,在小型的機器人移動平臺上不適合安裝。(2) 售價較高,且多為國外產(chǎn)品,小型科研組難以承擔(dān)較為高昂的硬件設(shè)備預(yù)算,同時也很難廣泛用于民用領(lǐng)域。對于低成本小型激光雷達,2008年KONOLIGE K等人已經(jīng)提出低成本激光雷達硬件設(shè)計思路[1],但直到2013年,一些公司才做出了相應(yīng)的產(chǎn)品,價格僅為上述產(chǎn)品的十分之一。本文基于KONOLIGE K等人的設(shè)計思路及目前市場上現(xiàn)有雷達的通信規(guī)約,設(shè)計了可靠、高效的激光雷達驅(qū)動。該驅(qū)動具有以下特點:(1)跨平臺性,可在Windows、Ubuntu環(huán)境下使用;(2)使用簡單,研究者僅需簡單設(shè)置即可加入自己的工程;(3)開源,可免費用于科研。
1低成本激光雷達原理
  所有的單點掃描設(shè)備,例如SICK和Hokuyo設(shè)備,采用激光時間飛行原理(Time of Flight),即通過測量激光發(fā)射和反射的時間來計算距離目標(biāo)點的距離。而本方案采用激光三角測距技術(shù),所用的紅外線傳感器與激光時間飛行原理所用的激光掃描器不同,所以極大地節(jié)省了成本。
  1.1硬件結(jié)構(gòu)
  低成本激光雷達主要由激光測距核心、掃描電機、傳動和USB適配器三部分組成。測距核心是激光雷達最重要的組成部分。在分別給子系統(tǒng)供電后,測距核心在掃描電機的帶動下將開始順時針360°旋轉(zhuǎn)掃描并獲得掃描測距數(shù)據(jù)。
  1.2測距機理
  激光三角測距技術(shù)通過反射光線的角度來測量距離。圖1展現(xiàn)了三角測距的幾何圖。紅外線發(fā)射器發(fā)射一個紅外線,經(jīng)物體反射回來并投影到接收器上。一個理想的接收器是調(diào)整好的,這樣紅外線光束與某些射線是平行的。

圖像 001.png

  利用相似三角形的原理,垂直距離是:
    QQ圖片20160912192358.png

  激光束的距離也取決于激光相對于圖像軸的角度:
  QQ圖片20160912192409.png

  1.3數(shù)據(jù)幀格式
  當(dāng)激光雷達工作時,可進行每秒高達2 000次的測量動作。每個采樣點經(jīng)過內(nèi)部DSP處理器實時解算,得出被照射到的目標(biāo)物體與激光雷達的距離值以及當(dāng)前的夾角信息,并以表1的數(shù)據(jù)幀結(jié)構(gòu)通過USB適配器輸出。

圖像 006.png

2驅(qū)動設(shè)計
  基于目前市場上現(xiàn)有的低成本小型激光雷達RPLIDAR硬件及其通信規(guī)約,設(shè)計并完善了驅(qū)動。(1)合理規(guī)劃激光雷達的驅(qū)動流程,既保證讀取數(shù)據(jù)的高效,又增加異常處理保護硬件的安全。(2)編寫Makefile文件,采用交叉編譯[2],生成的驅(qū)動可以跨平臺使用,可供研究者在Windows、Linux、MacOS系統(tǒng)下使用。(3)設(shè)計存儲格式,使用二進制格式保存數(shù)據(jù)文件,將測量數(shù)據(jù)記錄下來用于未來的分析、處理、開發(fā)和算法驗證。(4)支持Robot Operating System(ROS),為使用低成本激光雷達研究機器人的導(dǎo)航與定位、環(huán)境掃描與3D重建、同步定位與地圖構(gòu)建(SLAM)等領(lǐng)域提供了極大的方便。
  2.1驅(qū)動模塊設(shè)計
  本驅(qū)動的設(shè)計使用C++語言,基于模塊化思想,可分為激光雷達健康狀況檢測、通信錯誤處理、掃描準(zhǔn)備、掃描數(shù)據(jù)獲取等模塊[3]。獲取激光雷達掃描測量數(shù)據(jù)的整個流程見圖2。

圖像 002.png

  準(zhǔn)備掃描模塊:啟動一個后臺工作線程,異步地接受來自激光雷達的掃描測距數(shù)據(jù)序列,并保存在內(nèi)部的緩存當(dāng)中。
  獲取掃描數(shù)據(jù)模塊:抓取被激光雷達驅(qū)動事先接收并緩存的測距數(shù)據(jù)序列。該模塊將始終返回一個最新的完整的360°的掃描測距序列。每次調(diào)用后,保存掃描數(shù)據(jù)序列的內(nèi)部緩存將會清空,以確保每次獲得不重復(fù)的數(shù)據(jù)[4]。
  2.2輸出數(shù)據(jù)格式
  把激光雷達的測量數(shù)據(jù)保存為后綴名為.dat二進制文件,供后期研究分析[5]。激光雷達的工作頻率為6 Hz,每掃描一圈有360個測量點,稱為一條記錄。為了方便管理和后期的研究,在每條記錄前加上時間戳。記錄的數(shù)據(jù)結(jié)構(gòu)見表2。

圖像 007.png

3實驗驗證
  本驅(qū)動默認(rèn)采樣靜態(tài)庫方式組織,使用者只要簡單設(shè)置就可以整合到自身項目中:引用驅(qū)動庫的外部頭文件(位于sdk/inlcude文件夾);在鏈接階段,引用編譯好的靜態(tài)庫(rplidar_driver.a)即可。以低成本小型激光雷達的代表性產(chǎn)品rplidar為例,使用該驅(qū)動在多種操作系統(tǒng)下測試結(jié)果如下。
  3.1Windows環(huán)境中單幀掃描
  編寫顯示界面程序,把本驅(qū)動庫整合到此程序中。此程序的功能是實時采集雷達掃描數(shù)據(jù),并在GUI界面上將0~360°環(huán)境下測距信息以平面圖的方式顯示出來[6]。在走廊中測試得到靜態(tài)數(shù)據(jù)如圖3所示。圖中圓心為RPLIDAR的位置,點集為障礙物。

圖像 003.png

  3.2ROS中單幀掃描
  ROS是專為機器人軟件開發(fā)所設(shè)計的一套開源的電腦操作系統(tǒng)構(gòu)架,它提供了一系列的開源程序庫和工具以幫助研究者迅速創(chuàng)建機器人應(yīng)用軟件。
  在本驅(qū)動庫的基礎(chǔ)上,增加幾個ROS特有的文件并作相關(guān)設(shè)置即可使用。此部分代碼已在Github上開源。在ROS的RViz工具中實現(xiàn)的靜態(tài)掃描圖如圖4所示。

圖像 004.png

  3.3實現(xiàn)構(gòu)建地圖
  在ROS中可以很方便地使用本驅(qū)動,然后調(diào)用開源的Hectorslam包來構(gòu)建地圖。移動機器人正在構(gòu)建地圖如圖5所示。本實驗已經(jīng)做成視頻上傳到網(wǎng)絡(luò)并開源。


圖像 005.png

4結(jié)論

  基于激光雷達硬件及其通信規(guī)約,構(gòu)建了靈活、高效、開源的驅(qū)動。簡單介紹了低成本小型激光雷達的測距原理,重點闡述了驅(qū)動的設(shè)計和實現(xiàn)細(xì)節(jié)。在兩種環(huán)境下的測試和利用本驅(qū)動實現(xiàn)mapping證明了該驅(qū)動的易用性及可靠性。未來本驅(qū)動將用于機器人的定位與導(dǎo)航、同步定位與地圖構(gòu)建的算法驗證工作。
  參考文獻
 ?。?] KONOLIGE K, AUGENBRAUN J, DONALDSON N. A lowcost laser distance sensor[C]. ICRA,2008:30023008.
 ?。?] 聶和平. 基于ARM9的嵌入式Linux系統(tǒng)移植與驅(qū)動開發(fā)[D].南京:南京郵電大學(xué),2013.
 ?。?] 李進,王太宏,張恩迪. 嵌入式linux中nRF24l01驅(qū)動的設(shè)計與實現(xiàn)[J]. 計算機系統(tǒng)應(yīng)用, 2011,20(9):226229,237
  [4] OKUBO Y, YE C, BORENSTEIN J. Characterization of the Hokuyo URG04LX laser rangefinder for mobile robot obstacle negotiation[C]. International Society for Optics and Photonics, 2009:73321273321210.
 ?。?] 張雪晶,孫作雷,曾連蓀,等. 基于聯(lián)合相容分支定界的關(guān)聯(lián)算法研究[J]. 微型機與應(yīng)用, 2015,34(15):8284,88.
 ?。?] CIVERA J, DAVISON A J, MONTIEL J. Inverse depth parametrization for monocular SLAM[J]. IEEE Transactions on Robotics, 2008, 24(5): 932945.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。