劉德志,孫作雷,,曾連蓀
?。ㄉ虾:J麓髮W(xué) 信息工程學(xué)院, 上海 201306)
摘要:構(gòu)建了小型2D激光掃描儀驅(qū)動(dòng)解決方案。以RPLIDAR為例,,基于低成本硬件及其合理的通信規(guī)約設(shè)計(jì),,提升數(shù)據(jù)獲取的可靠性?;贑Make交叉編譯鏈?zhǔn)褂布?qū)動(dòng)具有跨平臺(tái)特性,。同時(shí),通過(guò)增加launch文件,,使其支持ROS (Robot Operating System)。并分別在Windows和ROS系統(tǒng)下完成測(cè)試,。相應(yīng)的代碼已在Github上開(kāi)源,,可免費(fèi)用于移動(dòng)機(jī)器人的導(dǎo)航、構(gòu)圖與3D重建,、同步定位與地圖構(gòu)建(SLAM)等科研,。
關(guān)鍵詞:驅(qū)動(dòng);激光雷達(dá),;跨平臺(tái),;開(kāi)源
0引言
隨著工業(yè)、軍事及民用領(lǐng)域?qū)ψ詣?dòng)化和人工智能技術(shù)需求的日益增長(zhǎng),,與移動(dòng)機(jī)器人相關(guān)的理論及應(yīng)用已成為研究熱點(diǎn),。對(duì)于移動(dòng)機(jī)器人而言,最常見(jiàn)的任務(wù)之一是在環(huán)境中繪制地圖并進(jìn)行導(dǎo)航,而2D激光掃描儀是室內(nèi)外機(jī)器人最常用的傳感器,。目前,,市場(chǎng)上已有一些廣泛應(yīng)用于科研的2D激光掃描儀,并在越來(lái)越多的論著中被提及,。例如德國(guó)的SICK系列,、日本的Hokuyo系列等。
但是,,結(jié)合國(guó)內(nèi)外使用現(xiàn)狀,,這些激光雷達(dá)具有如下弊端:(1)體積較大,在小型的機(jī)器人移動(dòng)平臺(tái)上不適合安裝,。(2) 售價(jià)較高,,且多為國(guó)外產(chǎn)品,小型科研組難以承擔(dān)較為高昂的硬件設(shè)備預(yù)算,,同時(shí)也很難廣泛用于民用領(lǐng)域,。對(duì)于低成本小型激光雷達(dá),2008年KONOLIGE K等人已經(jīng)提出低成本激光雷達(dá)硬件設(shè)計(jì)思路[1],,但直到2013年,,一些公司才做出了相應(yīng)的產(chǎn)品,價(jià)格僅為上述產(chǎn)品的十分之一,。本文基于KONOLIGE K等人的設(shè)計(jì)思路及目前市場(chǎng)上現(xiàn)有雷達(dá)的通信規(guī)約,,設(shè)計(jì)了可靠、高效的激光雷達(dá)驅(qū)動(dòng),。該驅(qū)動(dòng)具有以下特點(diǎn):(1)跨平臺(tái)性,,可在Windows、Ubuntu環(huán)境下使用,;(2)使用簡(jiǎn)單,,研究者僅需簡(jiǎn)單設(shè)置即可加入自己的工程;(3)開(kāi)源,,可免費(fèi)用于科研,。
1低成本激光雷達(dá)原理
所有的單點(diǎn)掃描設(shè)備,例如SICK和Hokuyo設(shè)備,,采用激光時(shí)間飛行原理(Time of Flight),,即通過(guò)測(cè)量激光發(fā)射和反射的時(shí)間來(lái)計(jì)算距離目標(biāo)點(diǎn)的距離。而本方案采用激光三角測(cè)距技術(shù),,所用的紅外線傳感器與激光時(shí)間飛行原理所用的激光掃描器不同,,所以極大地節(jié)省了成本。
1.1硬件結(jié)構(gòu)
低成本激光雷達(dá)主要由激光測(cè)距核心,、掃描電機(jī),、傳動(dòng)和USB適配器三部分組成,。測(cè)距核心是激光雷達(dá)最重要的組成部分。在分別給子系統(tǒng)供電后,,測(cè)距核心在掃描電機(jī)的帶動(dòng)下將開(kāi)始順時(shí)針360°旋轉(zhuǎn)掃描并獲得掃描測(cè)距數(shù)據(jù),。
1.2測(cè)距機(jī)理
激光三角測(cè)距技術(shù)通過(guò)反射光線的角度來(lái)測(cè)量距離。圖1展現(xiàn)了三角測(cè)距的幾何圖,。紅外線發(fā)射器發(fā)射一個(gè)紅外線,,經(jīng)物體反射回來(lái)并投影到接收器上。一個(gè)理想的接收器是調(diào)整好的,,這樣紅外線光束與某些射線是平行的,。
利用相似三角形的原理,垂直距離是:
激光束的距離也取決于激光相對(duì)于圖像軸的角度:
1.3數(shù)據(jù)幀格式
當(dāng)激光雷達(dá)工作時(shí),,可進(jìn)行每秒高達(dá)2 000次的測(cè)量動(dòng)作,。每個(gè)采樣點(diǎn)經(jīng)過(guò)內(nèi)部DSP處理器實(shí)時(shí)解算,得出被照射到的目標(biāo)物體與激光雷達(dá)的距離值以及當(dāng)前的夾角信息,,并以表1的數(shù)據(jù)幀結(jié)構(gòu)通過(guò)USB適配器輸出,。
2驅(qū)動(dòng)設(shè)計(jì)
基于目前市場(chǎng)上現(xiàn)有的低成本小型激光雷達(dá)RPLIDAR硬件及其通信規(guī)約,設(shè)計(jì)并完善了驅(qū)動(dòng),。(1)合理規(guī)劃激光雷達(dá)的驅(qū)動(dòng)流程,,既保證讀取數(shù)據(jù)的高效,又增加異常處理保護(hù)硬件的安全,。(2)編寫(xiě)Makefile文件,,采用交叉編譯[2],生成的驅(qū)動(dòng)可以跨平臺(tái)使用,,可供研究者在Windows,、Linux、MacOS系統(tǒng)下使用,。(3)設(shè)計(jì)存儲(chǔ)格式,,使用二進(jìn)制格式保存數(shù)據(jù)文件,將測(cè)量數(shù)據(jù)記錄下來(lái)用于未來(lái)的分析,、處理,、開(kāi)發(fā)和算法驗(yàn)證。(4)支持Robot Operating System(ROS),,為使用低成本激光雷達(dá)研究機(jī)器人的導(dǎo)航與定位、環(huán)境掃描與3D重建,、同步定位與地圖構(gòu)建(SLAM)等領(lǐng)域提供了極大的方便,。
2.1驅(qū)動(dòng)模塊設(shè)計(jì)
本驅(qū)動(dòng)的設(shè)計(jì)使用C++語(yǔ)言,基于模塊化思想,,可分為激光雷達(dá)健康狀況檢測(cè),、通信錯(cuò)誤處理,、掃描準(zhǔn)備、掃描數(shù)據(jù)獲取等模塊[3],。獲取激光雷達(dá)掃描測(cè)量數(shù)據(jù)的整個(gè)流程見(jiàn)圖2,。
準(zhǔn)備掃描模塊:?jiǎn)?dòng)一個(gè)后臺(tái)工作線程,異步地接受來(lái)自激光雷達(dá)的掃描測(cè)距數(shù)據(jù)序列,,并保存在內(nèi)部的緩存當(dāng)中,。
獲取掃描數(shù)據(jù)模塊:抓取被激光雷達(dá)驅(qū)動(dòng)事先接收并緩存的測(cè)距數(shù)據(jù)序列。該模塊將始終返回一個(gè)最新的完整的360°的掃描測(cè)距序列,。每次調(diào)用后,,保存掃描數(shù)據(jù)序列的內(nèi)部緩存將會(huì)清空,以確保每次獲得不重復(fù)的數(shù)據(jù)[4],。
2.2輸出數(shù)據(jù)格式
把激光雷達(dá)的測(cè)量數(shù)據(jù)保存為后綴名為.dat二進(jìn)制文件,,供后期研究分析[5]。激光雷達(dá)的工作頻率為6 Hz,,每掃描一圈有360個(gè)測(cè)量點(diǎn),,稱(chēng)為一條記錄。為了方便管理和后期的研究,,在每條記錄前加上時(shí)間戳,。記錄的數(shù)據(jù)結(jié)構(gòu)見(jiàn)表2。
3實(shí)驗(yàn)驗(yàn)證
本驅(qū)動(dòng)默認(rèn)采樣靜態(tài)庫(kù)方式組織,,使用者只要簡(jiǎn)單設(shè)置就可以整合到自身項(xiàng)目中:引用驅(qū)動(dòng)庫(kù)的外部頭文件(位于sdk/inlcude文件夾),;在鏈接階段,引用編譯好的靜態(tài)庫(kù)(rplidar_driver.a)即可,。以低成本小型激光雷達(dá)的代表性產(chǎn)品rplidar為例,,使用該驅(qū)動(dòng)在多種操作系統(tǒng)下測(cè)試結(jié)果如下。
3.1Windows環(huán)境中單幀掃描
編寫(xiě)顯示界面程序,,把本驅(qū)動(dòng)庫(kù)整合到此程序中,。此程序的功能是實(shí)時(shí)采集雷達(dá)掃描數(shù)據(jù),并在GUI界面上將0~360°環(huán)境下測(cè)距信息以平面圖的方式顯示出來(lái)[6],。在走廊中測(cè)試得到靜態(tài)數(shù)據(jù)如圖3所示,。圖中圓心為RPLIDAR的位置,點(diǎn)集為障礙物,。
3.2ROS中單幀掃描
ROS是專(zhuān)為機(jī)器人軟件開(kāi)發(fā)所設(shè)計(jì)的一套開(kāi)源的電腦操作系統(tǒng)構(gòu)架,,它提供了一系列的開(kāi)源程序庫(kù)和工具以幫助研究者迅速創(chuàng)建機(jī)器人應(yīng)用軟件。
在本驅(qū)動(dòng)庫(kù)的基礎(chǔ)上,,增加幾個(gè)ROS特有的文件并作相關(guān)設(shè)置即可使用,。此部分代碼已在Github上開(kāi)源。在ROS的RViz工具中實(shí)現(xiàn)的靜態(tài)掃描圖如圖4所示,。
3.3實(shí)現(xiàn)構(gòu)建地圖
在ROS中可以很方便地使用本驅(qū)動(dòng),,然后調(diào)用開(kāi)源的Hectorslam包來(lái)構(gòu)建地圖,。移動(dòng)機(jī)器人正在構(gòu)建地圖如圖5所示。本實(shí)驗(yàn)已經(jīng)做成視頻上傳到網(wǎng)絡(luò)并開(kāi)源,。
4結(jié)論
基于激光雷達(dá)硬件及其通信規(guī)約,,構(gòu)建了靈活、高效,、開(kāi)源的驅(qū)動(dòng),。簡(jiǎn)單介紹了低成本小型激光雷達(dá)的測(cè)距原理,重點(diǎn)闡述了驅(qū)動(dòng)的設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié),。在兩種環(huán)境下的測(cè)試和利用本驅(qū)動(dòng)實(shí)現(xiàn)mapping證明了該驅(qū)動(dòng)的易用性及可靠性,。未來(lái)本驅(qū)動(dòng)將用于機(jī)器人的定位與導(dǎo)航、同步定位與地圖構(gòu)建的算法驗(yàn)證工作,。
參考文獻(xiàn)
?。?] KONOLIGE K, AUGENBRAUN J, DONALDSON N. A lowcost laser distance sensor[C]. ICRA,2008:30023008.
[2] 聶和平. 基于ARM9的嵌入式Linux系統(tǒng)移植與驅(qū)動(dòng)開(kāi)發(fā)[D].南京:南京郵電大學(xué),,2013.
?。?] 李進(jìn),王太宏,張恩迪. 嵌入式linux中nRF24l01驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2011,20(9):226229,,237
?。?] OKUBO Y, YE C, BORENSTEIN J. Characterization of the Hokuyo URG04LX laser rangefinder for mobile robot obstacle negotiation[C]. International Society for Optics and Photonics, 2009:73321273321210.
[5] 張雪晶,,孫作雷,,曾連蓀,等. 基于聯(lián)合相容分支定界的關(guān)聯(lián)算法研究[J]. 微型機(jī)與應(yīng)用, 2015,34(15):8284,88.
?。?] CIVERA J, DAVISON A J, MONTIEL J. Inverse depth parametrization for monocular SLAM[J]. IEEE Transactions on Robotics, 2008, 24(5): 932945.