matlab制作以太网数据接收上位机_3D激光扫描仪设计及数据处理
本文內容轉載自《電子技術應用》2019年第10期,版權歸《電子技術應用》編輯部所有。
段清明,王凡,徐琳琳,全文俊
吉林大學儀器科學與電氣工程學院
摘要:利用2D激光雷達配合云臺裝置,設計了一種3D激光掃描儀作為三維數據獲取裝置。根據掃描儀的硬件特性和傳輸特性,進行PC端的掃描控制系統以及數據處理系統的設計。掃描控制系統實現了對掃描范圍以及掃描精度的控制和設定,數據處理系統針對采集到的原始數據,經過坐標的映射將相對坐標轉換到全局坐標,并進行點云濾波,利用最小二乘進行曲面光滑,最終進行三角網格重建。經過多次實驗結果證明,該系統可以對一般幾何復雜度的三維場景進行較好的重建。
關鍵詞:2D激光雷達;三維重建;點云處理;控制系統
0 引言
近年來,隨著計算機圖形和計算機視覺學的發展,三維掃描重建技術在多個領域(如工業測量、地形地貌的測繪、自動導航、無人機航拍、采空區調查等)逐漸展現其優勢。
傳統的三維場景重建方式包括主動建模和被動建模。主動建模是通過設備一次采集場景信息,進行點云成像。被動建模是根據單張或多張圖像,直接利用圖像進行三維建模。后者相對于前者不需要進行全局坐標的標定,避免了真實場景下的幾何復雜性,但計算復雜度高,同時在還原幾何準確性及獲得三維信息的完整性方面存在著較大的缺陷。因此,為彌補被動建模的缺陷,在激光雷達掃描技術的迅速發展下,主動建模的應用越來越多。激光雷達具有測量速度快、精度高、非接觸測量的特點,且應用成本大幅度降低,通過激光雷達進行主動建模的使用越來越廣泛。
激光雷達是通過舵機的轉動配合紅外激光器的單點測距,實現單個平面的測量,其通信接口返回的數據同時包含測量距離和測量方位,運行狀態下受外界環境影響程度較小。但是單個二維激光雷達僅能獲得一個截面的信息,為了獲取三維的數據進行建模,采用同等精度和測量范圍的三維激光雷達時,成本將高出二維激光雷達十幾倍,因此限制了在一般場景下的應用。
為節約經濟成本,大量研究人員著手研究改造二維激光雷達或采用在二維激光雷達的基礎上增加機械結構,以進行3D 掃描。但多數的機械結構復雜,導致全局坐標的標定變得困難,或測量范圍有限,同時缺少針對三維激光掃描系統的整體設計方案。這些問題的存在,也為后來設計利用二維激光雷達實現三維重建的研究指明了方向。
本文依據二維激光雷達,搭配一維的旋轉云臺,設計三維激光掃描儀作為采集裝置。同時設計上位機的機械控制和數據處理系統,最終實現掃描場景的三維重建。
1 坐標采集系統設計
1.1 掃描方案
由于2D激光雷達采用點狀激光進行掃描,因此在掃描一周的情況下,僅能采集獲得單個截面內的極坐標下的距離信息。如果需要擴展為三維掃描儀,一般有兩種方式:(1)“變點為線”,將點狀激光改為線性激光,一次性獲得一個角度下截面的距離信息;(2)增加額外的機械結構(如旋轉裝置)作為擴展軸來獲得第三個維度的信息。
應用第一種方式,不影響掃描的速率,但激光的亮度隨著距離的增加,衰減速度加快,測量距離有限,并且對原本的激光雷達的結構改造較大,對攝像頭的使用要求較高,工作量增多且復雜。應用第二種方式,需要控制額外自由度的轉軸,掃描速度降低,但測量距離遠,額外機械機構造成的誤差可通過數學補償,對原本的雷達的改造減少,只需要設計旋轉裝置即可。因此實驗中選用增加轉軸的方式設計3D掃描儀。
通過使用HLS-LFCD2型號2D激光雷達和RDS3115數碼舵機,搭建3D激光掃描儀。設計機械結構如圖1所示。
圖1 機械結構
舵機帶動機械關節的轉動,其中2D雷達固定在關節處,雷達的幾何中心與轉軸的中心的連線垂直于雷達底部所在平面。掃描時,激光雷達不間斷掃描激光器所在平面。以上述舵機轉軸幾何中心的O點為原點,建立空間直角坐標系,如圖2所示。
圖2中,O′為雷達幾何中心,平面O′QP為雷達掃描平面,XOY平面與參考水準面平行。根據2D激光雷達的當前測量角度α、機械關節的偏轉角θ 和被測量點P到雷達中心的距離ρ可知,測量點P 的全局坐標(x ,y ,z)可通過下式計算得出:
?
圖2 坐標系示意圖
其中,方位角α和距離ρ通過激光雷達串口輸出的數據進行解碼獲得,偏轉角θ根據控制器輸出的PWM 和舵機物理偏轉量之間關系得到。
1.2 機械控制
如圖1所示,機械控制部分主要是對舵機的操作,舵機的精度決定了偏轉角θ的精度。通過ARM公司的STM32ZET6作為控制器,輸出PWM波進行控制RDS3115數碼舵機,舵機主要控制特性如表1所示。
利用控制器產生一個20 ms的時基脈沖,該脈沖的高電平部分為0.5~2.5 ms范圍,最大間隔為2 ms。根據表1和舵機的數據手冊,在該范圍內,輸出的角度值與高電平的寬度成線性關系,舵機輸出角度值θ值計算方式如下:
其中,θ的單位為度;Nset通過控制器進行設置,范圍在500~2 500之間,從而實現舵機角度在0 ~ 180°范圍內偏轉。
由于舵機控制時存在死區,死區時間在3 μs,控制最小精度可達1 μs,小于死區時間,因此,在控制過程中,相鄰兩次偏轉角θ的最小間隔△θ為:
因此,在控制過程中,設定的步進間距均為0.27°的整數倍,舵機的死區一定程度決定了掃描的精度。
2 控制系統及數據采集
上位機控制系統是基于PC 的Windows 10開發平臺下,以Visual Studio 2015中的MFC為開發環境,通過編寫主界面控件的消息響應函數,來實現掃描儀控制和采集數據存儲。MFC 中包含大量Windows 句柄封裝類,以及多種Windows 的內建控件和組件的封裝類,豐富的內建控件為設計可視化界面提供便利。系統設計框圖如圖3 所示。
圖3 控制系統結構圖
上位機PC的任務包括同2D激光雷達的通信以及通過下位機控制器STM32對舵機的操作。激光雷達的數據傳輸接口為UART格式,在上位機和雷達處采用藍牙模塊進行通信,以避免傳輸線對掃描進程中的干擾。通信內容包括雷達的啟動和關閉,以及獲取雷達掃描平面內的ρ和θ。針對雷達發送的每一幀數據進行解碼,保留每幀數據中的角度和距離信息。
在上位機界面,通過對相對坐標系下的起始掃描位置、掃描間隔和終止掃描位置進行選擇,進行掃描路程設定。在控制關節旋轉的同時,采用詢問-應答的形式,以便保證在舵機完成轉動任務后再進行掃描。在上位機界面通過進度條的形式顯示整體掃描進度,方便用戶進行監測。上位機控制系統流程如圖4所示。
圖4 控制系統流程圖
根據項目要求,在MFC設計中采用多線程的方式,其中主線程用于響應用戶的操作,將用戶需求指令(如打開串口、打開文件、保存文件等)轉換為程序指令進行執行、判斷,并反饋執行結果。
MFC界面如圖5 所示。界面中接收框和發送框均是對舵機進行操作,發送框顯示已設置命令或進行手動編輯命令,接收框顯示下位機的回復情況。
圖5 控制系統主界面
掃描同時,上位機通過串口線與STM32通信,控制舵機實現關節的轉動。STM32 控制器功能主要是與上位機進行通信,接收命令數據以便設置舵機的起始角度、步進間隔和終止角度,根據上位機的驅動命令步進舵機并回復執行結果。系統將從雷達處將接收到的數據經解碼后得到方位角α、距離ρ和舵機的偏轉角θ,按照(θ ,α,ρ)的格式存儲到用戶設置的txt文件中,作為后續數據處理系統的原始文件。
3 數據處理
為了提高數據處理的速度,簡化點云處理的計算過程,以及進行離散的點云數據的可視化,基于MATLAB的GUI平臺,建立專用的集坐標轉換、點云數據處理以及數據成像的數據處理系統。點云處理系統組成如圖6所示。
圖6 數據處理系統框圖
數據處理過程,導入上一階段以(α,θ ,ρ)形式存儲的txt文本文件,按照式(1)進行運算,轉換為三維數據坐標(x ,y ,z)的形式,并以pcd的形式輸出保存。此時pcd存儲的即為原始的標準點云數據。
3.1 點云數據濾波
通過掃描儀得到的點云數量極其龐大,測量數據將達到數萬個甚至數十萬個點,龐大的數據量中包含有無法預料到噪聲點。噪聲點的來源主要是激光掃描硬件本身造成的誤差,此外還與采集實際情況有關,如掃描區域中存在煙霧、顆粒、棱角等,這些對于點云匹配等后期的工作顯然是不利的,因此,需要對數據點進行一系列的數據去噪,篩除噪聲點。
為了去除數據中存在的噪聲點,針對每個點的鄰域進行了統計分析。針對點云中的每一個點,認為該點與其附近k 個鄰近點之間的距離分布符合高斯分布規律,根據極限誤差和置信概率來決定該點是否為離群點。
3.2 點云平滑及重建
在消除原始數據中的不規則點時,為了建立光滑完整的模型必須對物體表面進行平滑處理和漏洞修復。因此,針對濾波后的點云,建立KD-tree加快逐個點云數據的鄰近數據搜尋,進而通過MLS(移動最小二乘法)進行重采樣,進行光滑處理。
利用貪婪算法,動態設置三角網格的最大半徑,進行三角網格重建點云輪廓。為了使用戶能夠進一步全面地觀察最終成像,在該界面加入了3個滑塊。當移動滑塊時,獲得當前滑塊的位置,并轉換成角度值,根據旋轉軸和角度值創建4×4的轉移矩陣,同時獲取當前的點云位置,調用MATLAB 函數pctransform()得到旋轉后的新的點云數據,從而實現點云數據在X、Y、Z方向旋轉并刷新顯示。
系統主界面如圖7所示,“文件處理”按鈕的回調函數實現轉換數據格式并按pcd格式文件存儲,“數據處理”中包含了主要的處理算法,“濾波”針對標準格式的點云進行濾波,并保存濾波結果。下拉欄可以對左側圖像區域進行操作,包含“清除”、“顯示原始三維點圖”等,對右側圖像區域進行“顯示點云包絡圖”。包絡圖是最終渲染成像的結果,因此單獨在右側欄進行顯示,與其他成像圖進行直觀對比。
圖7 數據處理系統主界面
4 實驗結果
在一個固定的50 cm×45 cm×28 cm的長方體中進行測試,先是對固定偏轉角α為90°進行2D激光雷達測試,掃描截面為50 cm×45 cm。獲得三維點數據成像結果如圖8所示。
圖8 2D激光雷達掃描測試圖
計算求得的長度為Ly=495.88 mm,Lx=457.19 mm。根據實驗結果可知,2D激光雷達的測量準確度較高,雷達的采樣率高達5 000 次/s,測量速度快,有效測量半徑為0.15~8 m。雷達的良好性能確保了后續的三維建模。
設計3D激光掃描儀實物圖如圖9所示,云臺頂端搭載2D激光雷達,云臺后半部分為基于STM32的控制器,包括無線傳輸設備、舵機控制部分;上位機在PC 端上實現對掃描儀的控制,并進行數據處理。
針對一中空的長方體作為掃描實例進行驗證。設置掃描范圍為x>0部分,掃描示意圖如圖10所示。
原始掃描點云數據如圖10所示,掃描物體外圍存在一圈噪聲點。經統計濾波器濾波之后,距離較遠的離散數據點被濾除,實際掃描物體被較為完整地保存,如圖11所示。濾波結圖7數據處理系統主界面果顯示,點云數據從34113個減少到33900個。圖12為濾波數據通過移動最小二乘法進行光滑之后,采用貪婪三角網格算法進行重建的示意圖。比較圖12的重建結果和圖9的實物圖,可知掃描物體重建效果良好。
圖10 原始離散點云圖
圖11 濾波后離散點云圖
圖12 點云重建圖
上述實驗結果表明,本文設計的三維掃描儀能夠對一般的三維場景選定范圍進行重建分析;數據處理系統可以針對采集到的數據進行一系列的離散濾波、平滑處理,最終實現對掃描場景的重建。
5 結論
本文基于2D激光雷達和云臺裝置,設計了一種三維掃描儀。結合基于MFC設計的控制系統,實現對指定區域內的數據采集,通過推導的坐標變換關系,將坐標轉換到全局坐標系下,實現對三維數據的采集和存儲。同時,基于MATLAB軟件中的GUI工具設計的數據處理系統對采集到的原始數據進行了預處理,利用濾波器剔除點云中的離群點來實現降噪,針對掃描中的漏洞采用最小二乘法進行擬合平滑處理,利用貪婪網格法進行三角網格重建,繪制點云輪廓,根據預處理后的數據進行了三維重建,最終顯示在數據處較低的環境,能夠較好地進行三維重建。
推薦培訓:
《激光雷達核心技術培訓課程》將于10月25日至27日在無錫舉行,本課程邀請優秀講師,傳授核心技術,主要包括八項內容:(1)激光雷達技術綜述;(2)機械式激光雷達和OPA激光雷達核心技術;(3)MEMS激光雷達核心技術;(4)面陣(Flash)激光雷達核心技術;(5)FMCW激光雷達核心技術;(6)激光雷達核心元器件之驅動芯片:脈沖式激光雷達接收與發射驅動芯片;(7)激光雷達核心元器件之光源:高功率EEL/VCSEL和1550nm光纖激光器;(8)激光雷達核心元器件之光電探測器:PIN/APD/SPAD。如果您有興趣,請聯系:
麥姆斯咨詢
聯系人:彭琳
電話:17368357393
郵箱:PENGLin@MEMSConsulting.com
總結
以上是生活随笔為你收集整理的matlab制作以太网数据接收上位机_3D激光扫描仪设计及数据处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 办慢性病卡需要什么材料 申报慢性病卡流程
- 下一篇: 盐湖提锂概念股什么意思