文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190413
中文引用格式: 段清明,王凡,徐琳琳,等. 3D激光掃描儀設(shè)計(jì)及數(shù)據(jù)處理[J].電子技術(shù)應(yīng)用,2019,45(10):66-70.
英文引用格式: Duan Qingming,Wang Fan,Xu Linlin,et al. 3D laser scanner design and data processing[J]. Application of Electronic Technique,2019,45(10):66-70.
0 引言
近年來,隨著計(jì)算機(jī)圖形和計(jì)算機(jī)視覺學(xué)的發(fā)展,三維掃描重建技術(shù)在多個(gè)領(lǐng)域(如工業(yè)測(cè)量、地形地貌的測(cè)繪、自動(dòng)導(dǎo)航、無人機(jī)航拍、采空區(qū)調(diào)查等)逐漸展現(xiàn)其優(yōu)勢(shì)[1-2]。
傳統(tǒng)的三維場(chǎng)景重建方式包括主動(dòng)建模和被動(dòng)建模。主動(dòng)建模是通過設(shè)備一次采集場(chǎng)景信息,進(jìn)行點(diǎn)云成像。被動(dòng)建模是根據(jù)單張或多張圖像,直接利用圖像進(jìn)行三維建模[3]。后者相對(duì)于前者不需要進(jìn)行全局坐標(biāo)的標(biāo)定,避免了真實(shí)場(chǎng)景下的幾何復(fù)雜性,但計(jì)算復(fù)雜度高,同時(shí)在還原幾何準(zhǔn)確性及獲得三維信息的完整性方面存在著較大的缺陷[4]。因此,為彌補(bǔ)被動(dòng)建模的缺陷,在激光雷達(dá)掃描技術(shù)的迅速發(fā)展下,主動(dòng)建模的應(yīng)用越來越多。激光雷達(dá)具有測(cè)量速度快、精度高、非接觸測(cè)量的特點(diǎn),且應(yīng)用成本大幅度降低,通過激光雷達(dá)進(jìn)行主動(dòng)建模的使用越來越廣泛[5]。
激光雷達(dá)是通過舵機(jī)的轉(zhuǎn)動(dòng)配合紅外激光器的單點(diǎn)測(cè)距,實(shí)現(xiàn)單個(gè)平面的測(cè)量,其通信接口返回的數(shù)據(jù)同時(shí)包含測(cè)量距離和測(cè)量方位,運(yùn)行狀態(tài)下受外界環(huán)境影響程度較小。但是單個(gè)二維激光雷達(dá)僅能獲得一個(gè)截面的信息,為了獲取三維的數(shù)據(jù)進(jìn)行建模,采用同等精度和測(cè)量范圍的三維激光雷達(dá)時(shí),成本將高出二維激光雷達(dá)十幾倍,因此限制了在一般場(chǎng)景下的應(yīng)用。
為節(jié)約經(jīng)濟(jì)成本,大量研究人員著手研究改造二維激光雷達(dá)或采用在二維激光雷達(dá)的基礎(chǔ)上增加機(jī)械結(jié)構(gòu),以進(jìn)行3D掃描。但多數(shù)的機(jī)械結(jié)構(gòu)復(fù)雜,導(dǎo)致全局坐標(biāo)的標(biāo)定變得困難,或測(cè)量范圍有限,同時(shí)缺少針對(duì)三維激光掃描系統(tǒng)的整體設(shè)計(jì)方案。這些問題的存在,也為后來設(shè)計(jì)利用二維激光雷達(dá)實(shí)現(xiàn)三維重建的研究指明了方向。
本文依據(jù)二維激光雷達(dá),搭配一維的旋轉(zhuǎn)云臺(tái),設(shè)計(jì)三維激光掃描儀作為采集裝置。同時(shí)設(shè)計(jì)上位機(jī)的機(jī)械控制和數(shù)據(jù)處理系統(tǒng),最終實(shí)現(xiàn)掃描場(chǎng)景的三維重建。
1 坐標(biāo)采集系統(tǒng)設(shè)計(jì)
1.1 掃描方案
由于2D激光雷達(dá)采用點(diǎn)狀激光進(jìn)行掃描,因此在掃描一周的情況下,僅能采集獲得單個(gè)截面內(nèi)的極坐標(biāo)下的距離信息。如果需要擴(kuò)展為三維掃描儀,一般有兩種方式:(1)“變點(diǎn)為線”,將點(diǎn)狀激光改為線性激光,一次性獲得一個(gè)角度下截面的距離信息[6];(2)增加額外的機(jī)械結(jié)構(gòu)(如旋轉(zhuǎn)裝置)作為擴(kuò)展軸來獲得第三個(gè)維度的信息。
應(yīng)用第一種方式,不影響掃描的速率,但激光的亮度隨著距離的增加,衰減速度加快,測(cè)量距離有限,并且對(duì)原本的激光雷達(dá)的結(jié)構(gòu)改造較大,對(duì)攝像頭的使用要求較高,工作量增多且復(fù)雜。應(yīng)用第二種方式,需要控制額外自由度的轉(zhuǎn)軸,掃描速度降低,但測(cè)量距離遠(yuǎn),額外機(jī)械機(jī)構(gòu)造成的誤差可通過數(shù)學(xué)補(bǔ)償,對(duì)原本的雷達(dá)的改造減少,只需要設(shè)計(jì)旋轉(zhuǎn)裝置即可。因此實(shí)驗(yàn)中選用增加轉(zhuǎn)軸的方式設(shè)計(jì)3D掃描儀。
通過使用HLS-LFCD2型號(hào)2D激光雷達(dá)和RDS3115數(shù)碼舵機(jī),搭建3D激光掃描儀。設(shè)計(jì)機(jī)械結(jié)構(gòu)如圖1所示。
舵機(jī)帶動(dòng)機(jī)械關(guān)節(jié)的轉(zhuǎn)動(dòng),其中2D雷達(dá)固定在關(guān)節(jié)處,雷達(dá)的幾何中心與轉(zhuǎn)軸的中心的連線垂直于雷達(dá)底部所在平面。掃描時(shí),激光雷達(dá)不間斷掃描激光器所在平面。以上述舵機(jī)轉(zhuǎn)軸幾何中心的O點(diǎn)為原點(diǎn),建立空間直角坐標(biāo)系,如圖2所示。
圖2中,O′為雷達(dá)幾何中心,平面O′QP為雷達(dá)掃描平面,XOY平面與參考水準(zhǔn)面平行。根據(jù)2D激光雷達(dá)的當(dāng)前測(cè)量角度α、機(jī)械關(guān)節(jié)的偏轉(zhuǎn)角θ和被測(cè)量點(diǎn)P到雷達(dá)中心的距離ρ可知,測(cè)量點(diǎn)P的全局坐標(biāo)(x,y,z)可通過下式計(jì)算得出:
其中,方位角α和距離ρ通過激光雷達(dá)串口輸出的數(shù)據(jù)進(jìn)行解碼獲得,偏轉(zhuǎn)角θ根據(jù)控制器輸出的PWM和舵機(jī)物理偏轉(zhuǎn)量之間關(guān)系得到。
1.2 機(jī)械控制
如圖1所示,機(jī)械控制部分主要是對(duì)舵機(jī)的操作,舵機(jī)的精度決定了偏轉(zhuǎn)角θ的精度。通過ARM公司的STM32ZET6作為控制器,輸出PWM波進(jìn)行控制RDS3115數(shù)碼舵機(jī),舵機(jī)主要控制特性如表1所示。
利用控制器產(chǎn)生一個(gè)20 ms的時(shí)基脈沖,該脈沖的高電平部分為0.5~2.5 ms范圍,最大間隔為2 ms。根據(jù)表1和舵機(jī)的數(shù)據(jù)手冊(cè),在該范圍內(nèi),輸出的角度值與高電平的寬度成線性關(guān)系,舵機(jī)輸出角度值θ值計(jì)算方式如下:
其中,θ的單位為度;Nset通過控制器進(jìn)行設(shè)置,范圍在500~2 500之間,從而實(shí)現(xiàn)舵機(jī)角度在0~180°范圍內(nèi)偏轉(zhuǎn)。
由于舵機(jī)控制時(shí)存在死區(qū),死區(qū)時(shí)間在3 μs,控制最小精度可達(dá)1 μs,小于死區(qū)時(shí)間,因此,在控制過程中,相鄰兩次偏轉(zhuǎn)角θ的最小間隔Δθ為:
因此,在控制過程中,設(shè)定的步進(jìn)間距均為0.27°的整數(shù)倍,舵機(jī)的死區(qū)一定程度決定了掃描的精度。
2 控制系統(tǒng)及數(shù)據(jù)采集
上位機(jī)控制系統(tǒng)是基于PC的Windows 10開發(fā)平臺(tái)下,以Visual Studio 2015中的MFC為開發(fā)環(huán)境,通過編寫主界面控件的消息響應(yīng)函數(shù),來實(shí)現(xiàn)掃描儀控制和采集數(shù)據(jù)存儲(chǔ)。MFC中包含大量Windows句柄封裝類,以及多種Windows的內(nèi)建控件和組件的封裝類[6],豐富的內(nèi)建控件為設(shè)計(jì)可視化界面提供便利。
系統(tǒng)設(shè)計(jì)框圖如圖3所示。
上位機(jī)PC的任務(wù)包括同2D激光雷達(dá)的通信以及通過下位機(jī)控制器STM32對(duì)舵機(jī)的操作。激光雷達(dá)的數(shù)據(jù)傳輸接口為UART格式,在上位機(jī)和雷達(dá)處采用藍(lán)牙模塊進(jìn)行通信,以避免傳輸線對(duì)掃描進(jìn)程中的干擾。通信內(nèi)容包括雷達(dá)的啟動(dòng)和關(guān)閉,以及獲取雷達(dá)掃描平面內(nèi)的ρ和θ。針對(duì)雷達(dá)發(fā)送的每一幀數(shù)據(jù)進(jìn)行解碼,保留每幀數(shù)據(jù)中的角度和距離信息[7]。
在上位機(jī)界面,通過對(duì)相對(duì)坐標(biāo)系下的起始掃描位置、掃描間隔和終止掃描位置進(jìn)行選擇,進(jìn)行掃描路程設(shè)定。在控制關(guān)節(jié)旋轉(zhuǎn)的同時(shí),采用詢問-應(yīng)答的形式,以便保證在舵機(jī)完成轉(zhuǎn)動(dòng)任務(wù)后再進(jìn)行掃描。在上位機(jī)界面通過進(jìn)度條的形式顯示整體掃描進(jìn)度,方便用戶進(jìn)行監(jiān)測(cè)。
上位機(jī)控制系統(tǒng)流程如圖4所示。
根據(jù)項(xiàng)目要求,在MFC設(shè)計(jì)中采用多線程的方式,其中主線程用于響應(yīng)用戶的操作,將用戶需求指令(如打開串口、打開文件、保存文件等)轉(zhuǎn)換為程序指令進(jìn)行執(zhí)行、判斷,并反饋執(zhí)行結(jié)果。
MFC界面如圖5所示。界面中接收框和發(fā)送框均是對(duì)舵機(jī)進(jìn)行操作,發(fā)送框顯示已設(shè)置命令或進(jìn)行手動(dòng)編輯命令,接收框顯示下位機(jī)的回復(fù)情況。
掃描同時(shí),上位機(jī)通過串口線與STM32通信,控制舵機(jī)實(shí)現(xiàn)關(guān)節(jié)的轉(zhuǎn)動(dòng)。STM32控制器功能主要是與上位機(jī)進(jìn)行通信,接收命令數(shù)據(jù)以便設(shè)置舵機(jī)的起始角度、步進(jìn)間隔和終止角度,根據(jù)上位機(jī)的驅(qū)動(dòng)命令步進(jìn)舵機(jī)并回復(fù)執(zhí)行結(jié)果。系統(tǒng)將從雷達(dá)處將接收到的數(shù)據(jù)經(jīng)解碼后得到方位角α、距離ρ和舵機(jī)的偏轉(zhuǎn)角θ,按照(θ,α,ρ)的格式存儲(chǔ)到用戶設(shè)置的txt文件中,作為后續(xù)數(shù)據(jù)處理系統(tǒng)的原始文件。
3 數(shù)據(jù)處理
為了提高數(shù)據(jù)處理的速度,簡(jiǎn)化點(diǎn)云處理的計(jì)算過程,以及進(jìn)行離散的點(diǎn)云數(shù)據(jù)的可視化,基于MATLAB的GUI平臺(tái),建立專用的集坐標(biāo)轉(zhuǎn)換、點(diǎn)云數(shù)據(jù)處理以及數(shù)據(jù)成像的數(shù)據(jù)處理系統(tǒng)。點(diǎn)云處理系統(tǒng)組成如圖6所示。
數(shù)據(jù)處理過程,導(dǎo)入上一階段以(α,θ,ρ)形式存儲(chǔ)的txt文本文件,按照式(1)進(jìn)行運(yùn)算,轉(zhuǎn)換為三維數(shù)據(jù)坐標(biāo)(x,y,z)的形式,并以pcd的形式輸出保存。此時(shí)pcd存儲(chǔ)的即為原始的標(biāo)準(zhǔn)點(diǎn)云數(shù)據(jù)。
3.1 點(diǎn)云數(shù)據(jù)濾波
通過掃描儀得到的點(diǎn)云數(shù)量極其龐大,測(cè)量數(shù)據(jù)將達(dá)到數(shù)萬個(gè)甚至數(shù)十萬個(gè)點(diǎn),龐大的數(shù)據(jù)量中包含有無法預(yù)料到噪聲點(diǎn)。噪聲點(diǎn)的來源主要是激光掃描硬件本身造成的誤差,此外還與采集實(shí)際情況有關(guān),如掃描區(qū)域中存在煙霧、顆粒、棱角等,這些對(duì)于點(diǎn)云匹配等后期的工作顯然是不利的,因此,需要對(duì)數(shù)據(jù)點(diǎn)進(jìn)行一系列的數(shù)據(jù)去噪,篩除噪聲點(diǎn)[8]。
為了去除數(shù)據(jù)中存在的噪聲點(diǎn),針對(duì)每個(gè)點(diǎn)的鄰域進(jìn)行了統(tǒng)計(jì)分析。針對(duì)點(diǎn)云中的每一個(gè)點(diǎn),認(rèn)為該點(diǎn)與其附近k個(gè)鄰近點(diǎn)之間的距離分布符合高斯分布規(guī)律,根據(jù)極限誤差和置信概率來決定該點(diǎn)是否為離群點(diǎn)[9]。
3.2 點(diǎn)云平滑及重建
在消除原始數(shù)據(jù)中的不規(guī)則點(diǎn)時(shí),為了建立光滑完整的模型必須對(duì)物體表面進(jìn)行平滑處理和漏洞修復(fù)。因此,針對(duì)濾波后的點(diǎn)云,建立KD-tree加快逐個(gè)點(diǎn)云數(shù)據(jù)的鄰近數(shù)據(jù)搜尋,進(jìn)而通過MLS(移動(dòng)最小二乘法)進(jìn)行重采樣,進(jìn)行光滑處理。
利用貪婪算法,動(dòng)態(tài)設(shè)置三角網(wǎng)格的最大半徑,進(jìn)行三角網(wǎng)格重建點(diǎn)云輪廓。為了使用戶能夠進(jìn)一步全面地觀察最終成像,在該界面加入了3個(gè)滑塊。當(dāng)移動(dòng)滑塊時(shí),獲得當(dāng)前滑塊的位置,并轉(zhuǎn)換成角度值,根據(jù)旋轉(zhuǎn)軸和角度值創(chuàng)建4×4的轉(zhuǎn)移矩陣,同時(shí)獲取當(dāng)前的點(diǎn)云位置,調(diào)用MATLAB函數(shù)pctransform()得到旋轉(zhuǎn)后的新的點(diǎn)云數(shù)據(jù),從而實(shí)現(xiàn)點(diǎn)云數(shù)據(jù)在X、Y、Z方向旋轉(zhuǎn)并刷新顯示。
系統(tǒng)主界面如圖7所示,“文件處理”按鈕的回調(diào)函數(shù)實(shí)現(xiàn)轉(zhuǎn)換數(shù)據(jù)格式并按pcd格式文件存儲(chǔ),“數(shù)據(jù)處理”中包含了主要的處理算法,“濾波”針對(duì)標(biāo)準(zhǔn)格式的點(diǎn)云進(jìn)行濾波,并保存濾波結(jié)果。下拉欄可以對(duì)左側(cè)圖像區(qū)域進(jìn)行操作,包含“清除”、“顯示原始三維點(diǎn)圖”等,對(duì)右側(cè)圖像區(qū)域進(jìn)行“顯示點(diǎn)云包絡(luò)圖”。包絡(luò)圖是最終渲染成像的結(jié)果,因此單獨(dú)在右側(cè)欄進(jìn)行顯示,與其他成像圖進(jìn)行直觀對(duì)比。
4 實(shí)驗(yàn)結(jié)果
在一個(gè)固定的50 cm×45 cm×28 cm的長(zhǎng)方體中進(jìn)行測(cè)試,先是對(duì)固定偏轉(zhuǎn)角α為90°進(jìn)行2D激光雷達(dá)測(cè)試,掃描截面為50 cm×45 cm。獲得三維點(diǎn)數(shù)據(jù)成像結(jié)果如圖8所示。
計(jì)算求得的長(zhǎng)度為L(zhǎng)y=495.88 mm,Lx=457.19 mm。根據(jù)實(shí)驗(yàn)結(jié)果可知,2D激光雷達(dá)的測(cè)量準(zhǔn)確度較高,雷達(dá)的采樣率高達(dá)5 000次/s,測(cè)量速度快,有效測(cè)量半徑為0.15~8 m。雷達(dá)的良好性能確保了后續(xù)的三維建模。
設(shè)計(jì)3D激光掃描儀實(shí)物圖如圖9所示,云臺(tái)頂端搭載2D激光雷達(dá),云臺(tái)后半部分為基于STM32的控制器,包括無線傳輸設(shè)備、舵機(jī)控制部分;上位機(jī)在PC端上實(shí)現(xiàn)對(duì)掃描儀的控制,并進(jìn)行數(shù)據(jù)處理。
針對(duì)一中空的長(zhǎng)方體作為掃描實(shí)例進(jìn)行驗(yàn)證。設(shè)置掃描范圍為x>0部分,掃描示意圖如圖10所示。
原始掃描點(diǎn)云數(shù)據(jù)如圖10所示,掃描物體外圍存在一圈噪聲點(diǎn)。經(jīng)統(tǒng)計(jì)濾波器濾波之后,距離較遠(yuǎn)的離散數(shù)據(jù)點(diǎn)被濾除,實(shí)際掃描物體被較為完整地保存,如圖11所示。濾波結(jié)果顯示,點(diǎn)云數(shù)據(jù)從34 113個(gè)減少到33 900個(gè)。圖12為濾波數(shù)據(jù)通過移動(dòng)最小二乘法進(jìn)行光滑之后,采用貪婪三角網(wǎng)格算法進(jìn)行重建的示意圖。比較圖12的重建結(jié)果和圖9的實(shí)物圖,可知掃描物體重建效果良好。
上述實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的三維掃描儀能夠?qū)σ话愕娜S場(chǎng)景選定范圍進(jìn)行重建分析;數(shù)據(jù)處理系統(tǒng)可以針對(duì)采集到的數(shù)據(jù)進(jìn)行一系列的離散濾波、平滑處理,最終實(shí)現(xiàn)對(duì)掃描場(chǎng)景的重建。
5 結(jié)論
本文基于2D激光雷達(dá)和云臺(tái)裝置,設(shè)計(jì)了一種三維掃描儀。結(jié)合基于MFC設(shè)計(jì)的控制系統(tǒng),實(shí)現(xiàn)對(duì)指定區(qū)域內(nèi)的數(shù)據(jù)采集,通過推導(dǎo)的坐標(biāo)變換關(guān)系,將坐標(biāo)轉(zhuǎn)換到全局坐標(biāo)系下,實(shí)現(xiàn)對(duì)三維數(shù)據(jù)的采集和存儲(chǔ)。同時(shí),基于MATLAB軟件中的GUI工具設(shè)計(jì)的數(shù)據(jù)處理系統(tǒng)對(duì)采集到的原始數(shù)據(jù)進(jìn)行了預(yù)處理,利用濾波器剔除點(diǎn)云中的離群點(diǎn)來實(shí)現(xiàn)降噪,針對(duì)掃描中的漏洞采用最小二乘法進(jìn)行擬合平滑處理,利用貪婪網(wǎng)格法進(jìn)行三角網(wǎng)格重建,繪制點(diǎn)云輪廓,根據(jù)預(yù)處理后的數(shù)據(jù)進(jìn)行了三維重建,最終顯示在數(shù)據(jù)處較低的環(huán)境,能夠較好地進(jìn)行三維重建。
參考文獻(xiàn)
[1] 王曾蘭.基于二維激光雷達(dá)數(shù)據(jù)的三維重建研究[D].沈陽:東北大學(xué),2013.
[2] 何銳斌,李子揚(yáng),賀文靜,等.激光點(diǎn)云解算的軟硬件協(xié)同設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2019,45(3):100-103.
[3] 項(xiàng)志宇,李斌.基于2D激光雷達(dá)的快速3D測(cè)距系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].傳感技術(shù)學(xué)報(bào),2006(6):2638-2642.
[4] 謝理想,萬剛,曹雪峰,等.無人機(jī)序列圖像快速三維重建系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2017,43(6):134-137,142.
[5] 肖琪.基于激光掃描數(shù)據(jù)點(diǎn)集的三維重建算法研究[D].北京:華北電力大學(xué),2011.
[6] 詹坤烽,陳文建,李武森,等.線激光三維場(chǎng)景重建系統(tǒng)及誤差分析[J].中國(guó)激光,2018,45(12):173-182.
[7] 牛京玉,胡堅(jiān),孟凡榮,等.基于多核DSP的激光點(diǎn)云解算算法并行設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,43(2):54-57.
[8] 史皓良.三維點(diǎn)云數(shù)據(jù)的去噪和特征提取算法研究[D].南昌:南昌大學(xué),2017.
[9] 張育鋒.三維數(shù)據(jù)點(diǎn)云的去噪及其檢測(cè)[D].南京:南京信息工程大學(xué),2014.
作者信息:
段清明,王 凡,徐琳琳,全文俊
(吉林大學(xué) 儀器科學(xué)與電氣工程學(xué)院,吉林 長(zhǎng)春130012)