杜曉峰, 朱 凱, 林晨暉, 貢 亮, 劉成良
(上海交通大學(xué)機(jī)械與動(dòng)力工程學(xué)院,上海200240)
光學(xué)三維掃描技術(shù)作為一種高精度、高效率的非接觸式測(cè)量方法,在逆向工程、工業(yè)自動(dòng)化、文物修復(fù)等諸多領(lǐng)域得到了廣泛的應(yīng)用。植物表型參數(shù)的分析對(duì)植物各個(gè)領(lǐng)域的研究具有重要意義。為了獲取植物的三維信息,分析植物的表型參數(shù),本文設(shè)計(jì)了一種基于結(jié)構(gòu)光三維測(cè)量技術(shù)的點(diǎn)云生成與拼接儀器。
目前市場(chǎng)上有很多基于結(jié)構(gòu)光的三維掃描設(shè)備。通常情況下,投影儀將結(jié)構(gòu)光投射到被測(cè)物體上,同時(shí)相機(jī)采集圖像,并計(jì)算被測(cè)物體的三維點(diǎn)云信息[1]。對(duì)于一個(gè)三維測(cè)量對(duì)象,無(wú)法從單一方向的掃描中得到其所有的表面信息,因此需要收集被測(cè)物體不同角度的點(diǎn)云信息,以便拼接成完整的三維點(diǎn)云[2-4]。
數(shù)字光處理(DLP)技術(shù)因其出色的性能而在光學(xué)工程中得到廣泛使用。掃描裝置的核心組件是德州儀器DLP4500 評(píng)估模塊。TI 公司提供了一種基于DLP4500 的精確點(diǎn)云生成方法,并提供了開(kāi)源的軟件開(kāi)發(fā)工具包。但是,它只能用于收集物體單方向的點(diǎn)云信息,無(wú)法滿(mǎn)足復(fù)雜零件整體三維重構(gòu)的需求。
本文解決方案中,物體所有的表面信息都將被收集,并將它們拼接成一個(gè)整體[5-8]。由于所有數(shù)據(jù)和代碼都是免費(fèi)提供和開(kāi)源的,因此可以對(duì)該儀器進(jìn)行改造以滿(mǎn)足個(gè)性化需求。其靈活的機(jī)械結(jié)構(gòu),可以輕松滿(mǎn)足不同尺寸物體的掃描。作為一種非接觸式測(cè)量方法,被測(cè)對(duì)象的表面點(diǎn)云將被快速收集和拼接,并且沒(méi)有其他測(cè)量方法的限制。
圖1、2 顯示了儀器的外觀。儀器主要由DLP4500評(píng)估模塊,USB 攝像頭,USB 集線器,MCU,步進(jìn)電動(dòng)機(jī)轉(zhuǎn)臺(tái),步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)器,24 V 直流電源,安裝板,支撐夾,直線導(dǎo)軌和鋁型材框架組成。
圖1 儀器三維模型
圖2 儀器外觀
儀器功能如下:序號(hào)01,單面點(diǎn)云掃描;序號(hào)02,多面點(diǎn)云掃描;序號(hào)03,點(diǎn)云拼接。圖3 顯示了儀器的總體結(jié)構(gòu)。
表1、2 列出了該儀器的物料清單(BOM),分別是標(biāo)準(zhǔn)零件和定制零件。儀器所用到的標(biāo)準(zhǔn)零件便于采購(gòu),易于組裝。定制零件的安裝板在CNC 銑床中用5 mm厚的鋁合金板制成,它們用于固定儀器的各部分。電路組件還需要諸如排插、USB 線等組件。系統(tǒng)軟件的一部分基于TI 公司的開(kāi)源代碼;另一部分基于OpenCV和PCL開(kāi)源庫(kù)[9]。
圖3 儀器拓?fù)浣Y(jié)構(gòu)
表1 儀器標(biāo)準(zhǔn)件
圖4、5 顯示了儀器機(jī)械結(jié)構(gòu)的裝配細(xì)節(jié),分別為三維掃描模塊部分和導(dǎo)軌轉(zhuǎn)臺(tái)部分。
圖4 掃描系統(tǒng)裝配細(xì)節(jié)
圖5 導(dǎo)軌轉(zhuǎn)臺(tái)裝配細(xì)節(jié)
(1)三維掃描模塊的裝配方法。①使用定制長(zhǎng)度的鋁型材搭建整體機(jī)架,②將DLP4500 模塊安裝在定制的鋁板零件上。③將鋁板安裝在鋁型材框架上。④將相機(jī)夾持裝置安裝在鋁板上。整個(gè)模塊的安裝示意圖見(jiàn)圖4,兩個(gè)槽用來(lái)調(diào)節(jié)相機(jī)位置,同時(shí)夾持裝置可以調(diào)節(jié)相機(jī)高度。通過(guò)相機(jī)位置的調(diào)節(jié)可以使掃描系統(tǒng)適應(yīng)不同尺寸物體的掃描需求。
(2)旋轉(zhuǎn)模塊的裝配方法。旋轉(zhuǎn)平臺(tái)系統(tǒng)由減速比為90 的蝸輪蝸桿旋轉(zhuǎn)平臺(tái)、直線導(dǎo)軌、89C52 單片機(jī)、步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)器、24 V 開(kāi)關(guān)電源組成。旋轉(zhuǎn)平臺(tái)用于將物體旋轉(zhuǎn)至不同姿態(tài),采集不同角度的點(diǎn)云。旋轉(zhuǎn)平臺(tái)可在直線導(dǎo)軌上移動(dòng),以適應(yīng)不同大小的物體。具體安裝步驟:①將直線導(dǎo)軌安裝在鋁型材框架的相應(yīng)位置上;②轉(zhuǎn)臺(tái)通過(guò)螺栓固定在滑塊上;③電源、微控制器也安裝在對(duì)應(yīng)的位置上。
圖6 展示了儀器的電路連接。這一部分由插座、24 V直流電源、USB 集線器,以及前述的結(jié)構(gòu)光掃描系統(tǒng)和旋轉(zhuǎn)平臺(tái)系統(tǒng)的電路部分連接在一起組成。
圖6 儀器的電路連接
該系統(tǒng)軟件由五部分組成:①點(diǎn)云掃描軟件(見(jiàn)圖7);②點(diǎn)云格式批量轉(zhuǎn)換腳本;③MeshLab 開(kāi)源軟件;④點(diǎn)云拼接軟件(見(jiàn)圖8);⑤轉(zhuǎn)臺(tái)旋轉(zhuǎn)控制程序。
圖7 點(diǎn)云掃描軟件界面
圖8 點(diǎn)云拼接軟件
所有代碼已經(jīng)開(kāi)源,在GitHub搜索倉(cāng)庫(kù)名:Point_Cloud_Generation_And_Stitching。
三維點(diǎn)云生成與拼接的具體操作步驟如圖9所示。
圖9 儀器具體操作步驟
對(duì)物體不同方向的點(diǎn)云進(jìn)行拼接時(shí),需要對(duì)各點(diǎn)云進(jìn)行三維坐標(biāo)變換。由于物體繞轉(zhuǎn)臺(tái)轉(zhuǎn)軸旋轉(zhuǎn),因此需要對(duì)轉(zhuǎn)臺(tái)進(jìn)行標(biāo)定。
通常,轉(zhuǎn)臺(tái)標(biāo)定方法包括基于標(biāo)記的方法和免工具方法[10-11]。帕克等將棋盤(pán)固定在轉(zhuǎn)盤(pán)上,然后計(jì)算不同視圖中角點(diǎn)的3D 坐標(biāo)。最后,通過(guò)求解超定線性方程來(lái)近似求解轉(zhuǎn)軸[12]。菲利普·薩德羅使用彩色棋盤(pán)在每次掃描中計(jì)算攝像機(jī)的外部參數(shù)[13]。虛擬攝像機(jī)位置擬合的圓的旋轉(zhuǎn)軸被視為轉(zhuǎn)盤(pán)的軸。這些方法的誤差主要來(lái)自掃描系統(tǒng)校準(zhǔn)誤差和角點(diǎn)檢測(cè)誤差,標(biāo)定精度有限,而且方法復(fù)雜,對(duì)器材要求也高,采集的數(shù)據(jù)量較少,不能很好地確定轉(zhuǎn)軸位置;另一種方法是采用平板標(biāo)定,這種方法不是用特征點(diǎn)來(lái)實(shí)現(xiàn)標(biāo)定的(見(jiàn)圖10)。其原理如下:將平面放在與平臺(tái)上并且保證與平臺(tái)垂直。得到平面的點(diǎn)云數(shù)據(jù)后,采用最小二乘法擬合得到平面方程,這樣該平面的法向量就和轉(zhuǎn)軸垂直,求取多個(gè)法向量的叉積再求平均值就可以得到轉(zhuǎn)軸的方程。這種標(biāo)定方法雖然簡(jiǎn)便,但是過(guò)多地依賴(lài)于平板的制作精度。
圖10 平板標(biāo)定
本文提出在使用轉(zhuǎn)臺(tái)的方法進(jìn)行點(diǎn)云拼接時(shí),首先要標(biāo)定轉(zhuǎn)臺(tái)。將物體安裝在轉(zhuǎn)盤(pán)上,在每個(gè)掃描步驟中旋轉(zhuǎn)相同角度的轉(zhuǎn)盤(pán),獲得一系列的點(diǎn)云。假設(shè)旋轉(zhuǎn)角度為θ,生成點(diǎn)云的坐標(biāo)系(通常與相機(jī)坐標(biāo)系重合)為S。轉(zhuǎn)盤(pán)坐標(biāo)系記為R1,旋轉(zhuǎn)軸與R1的z 軸重合。轉(zhuǎn)盤(pán)旋轉(zhuǎn)角度后,轉(zhuǎn)盤(pán)坐標(biāo)系記為R2。
假設(shè)點(diǎn)P1是旋轉(zhuǎn)之前物體的點(diǎn),P2是旋轉(zhuǎn)之后物體的點(diǎn)。然后可以得到S中P1和P2的坐標(biāo):
由于P1和P2是物體上的同一個(gè)點(diǎn),因此可以得到R1P1=R2P2。由式(1)和(3),可以得到:
這意味著可以通過(guò)齊次變換矩陣將點(diǎn)云1 中的點(diǎn)P1與點(diǎn)云2 中的P2對(duì)齊,
轉(zhuǎn)盤(pán)校準(zhǔn)的目的是拼接一系列掃描得到的點(diǎn)云,意味著需要解式(5)中用一對(duì)已知的矩陣T來(lái)計(jì)算轉(zhuǎn)換矩式(5)可以變換成AX =XB的形式,對(duì)于這種形式的矩陣方程,在機(jī)器人手眼校準(zhǔn)領(lǐng)域中已經(jīng)有了較好的解決方案[14]。由可以由θ計(jì)算得到,所以轉(zhuǎn)臺(tái)旋轉(zhuǎn)角為θ時(shí),標(biāo)定問(wèn)題也就轉(zhuǎn)換為了獲取矩陣T的問(wèn)題(見(jiàn)圖11)。
圖11 掃描系統(tǒng)坐標(biāo)系圖解
使用矩形平面作為校準(zhǔn)工具,它沒(méi)有幾何精度要求。唯一的要求是在物體上至少有4 個(gè)可識(shí)別的特征點(diǎn),以便可以通過(guò)對(duì)齊旋轉(zhuǎn)前后的點(diǎn)云來(lái)獲得變換矩陣T。具體步驟如下:①將工具放在轉(zhuǎn)盤(pán)上,采集一次點(diǎn)云記為S1。將轉(zhuǎn)盤(pán)旋轉(zhuǎn)θ角,再次采集點(diǎn)云記為S2。②通過(guò)特征點(diǎn)對(duì)齊點(diǎn)云S1和S2,接著使用迭代最近點(diǎn)(ICP)算法精確拼接點(diǎn)云。然后,計(jì)算變換矩陣T。③解公(6)得到旋轉(zhuǎn)矩后得到其次變換矩
上述第2 步使用到MeshLab 的手動(dòng)拼接功能和ICP算法,如圖12 所示。選擇好4 個(gè)特征點(diǎn)以后,MeshLab會(huì)自動(dòng)計(jì)算變換矩陣,如果需要避免選擇特征點(diǎn)時(shí)的誤差可以使用MeshLab自帶的ICP算法得到比較精確的變換矩陣:
圖12 獲取變換矩陣T
重復(fù)上述步驟幾次,通過(guò)多次獲取矩陣并求取均值,可以進(jìn)一步減小變換矩陣T的誤差。
旋轉(zhuǎn)平臺(tái)直徑60 mm,臺(tái)面偏心小于5 μm,最大旋轉(zhuǎn)速度50°/s,重復(fù)定位精度0.005°,絕對(duì)定位精度0.01°。
點(diǎn)云的測(cè)量和拼接精度較高,誤差在0.2 mm 以?xún)?nèi)。單次掃描時(shí)間45 s,整圈掃描時(shí)間在8 min 以?xún)?nèi),整個(gè)系統(tǒng)能夠有效、快速的測(cè)量物體的三維點(diǎn)云數(shù)據(jù)并進(jìn)行拼接(見(jiàn)圖13)。
圖13 點(diǎn)云掃描過(guò)程和拼接結(jié)果
系統(tǒng)的誤差由兩部分組成,分別是掃描誤差和拼接誤差:①掃描誤差來(lái)源于攝像頭、投影儀的標(biāo)定誤差,在掃描軟件中定義了兩者標(biāo)定結(jié)果的損失函數(shù),標(biāo)定結(jié)果接近0 為好。為了得到最好的掃描結(jié)果,通常需要相機(jī)分辨率滿(mǎn)足奈奎斯特采樣定律。在同等條件下,通常相機(jī)分辨率越高,得到的3D 點(diǎn)云圖片精度越好。另外,掃描時(shí)應(yīng)該避開(kāi)50 Hz 閃爍的室內(nèi)燈光。②拼接誤差取決于變換矩陣T 的誤差,可以通過(guò)多次獲取T并求取平均值來(lái)避免誤差。
本文基于TI的DLP4500 評(píng)估模塊,開(kāi)發(fā)了基于結(jié)構(gòu)光和自動(dòng)轉(zhuǎn)臺(tái)的桌面式3D 點(diǎn)云掃描儀。它可以實(shí)現(xiàn)三維物體的點(diǎn)云生成、拼接,并且可以根據(jù)需要通過(guò)更改配置文件來(lái)改變點(diǎn)云的密度與個(gè)數(shù)。儀器通過(guò)USB集線器與電腦實(shí)時(shí)通信。整個(gè)方案使用了轉(zhuǎn)臺(tái)標(biāo)定方法用于點(diǎn)云拼接,能夠快速、穩(wěn)定、準(zhǔn)確的完成不同視角點(diǎn)云的拼接,對(duì)標(biāo)定器材要求低,有效降低了成本。該方案可以實(shí)現(xiàn)對(duì)不同大小的物體測(cè)量,與專(zhuān)用儀器相比,制作簡(jiǎn)單,全部開(kāi)源,更適合研發(fā)人員二次開(kāi)發(fā)。適用于實(shí)驗(yàn)室的相關(guān)研究。