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