王培俊, 呂東旭, 陳 鵬
(西南交通大學(xué)機械工程學(xué)院, 四川 成都 610031)
尖軌是道岔的重要部件,在列車變軌的過程中起引導(dǎo)作用.相對于基本軌,尖軌的結(jié)構(gòu)薄弱,是鐵路交通的薄弱環(huán)節(jié),需得到及時有效的檢測.隨著高速鐵路的迅速發(fā)展,為保證高速列車安全、平穩(wěn)地變軌,高速尖軌需滿足更高的工作性能,其檢測需求也相應(yīng)地提高.
道岔中鋼軌損壞的主要原因是車輪走行對鋼軌形成的磨耗和疲勞破壞[1].目前,我國主要采用人工的方法檢測尖軌,使用相應(yīng)的測量尺,甚至目測來判斷尖軌的工作狀態(tài),檢測效率低下且檢測結(jié)果易受個人經(jīng)驗影響.近年來,隨著數(shù)字圖像技術(shù)的發(fā)展,出現(xiàn)了許多基于圖像視覺的檢測方法,如通過單目視覺的方法構(gòu)建的鋼軌輪廓檢測系統(tǒng)[2].相對于單目視覺系統(tǒng),基于結(jié)構(gòu)光雙目立體視覺的三維掃描系統(tǒng)具有測量精度高、掃描速度快且一次可進行較大幅面掃描等特點[3],廣泛應(yīng)用于逆向工程和表面檢測等領(lǐng)域,包括鋼軌輪廓的檢測[4],主要研究應(yīng)用對象為結(jié)構(gòu)較為簡單的鋼軌[5-6].有學(xué)者對道岔進行了縫隙較大處的密貼值檢測[7],但對于結(jié)構(gòu)較為復(fù)雜的、非拉伸件的尖軌檢測尚沒有較為全面深入的研究.雖然激光檢測儀在道岔檢測中也有應(yīng)用,但激光檢測儀是截面檢測形式,難免存在數(shù)據(jù)小部分丟失的問題,難以完全滿足結(jié)構(gòu)復(fù)雜的道岔檢測要求.鐵路高速道岔檢測仍然是鐵路線路檢測中的難題.為檢測高速尖軌的磨耗,基于點云庫(point cloud library, PCL)開發(fā)了磨耗分析軟件,將三維結(jié)構(gòu)光設(shè)備掃描的點云數(shù)據(jù)導(dǎo)入可獲得三維尺度的檢測結(jié)果,但當前的系統(tǒng)存在如下問題:
(1) 結(jié)構(gòu)光掃描系統(tǒng)的機器視覺設(shè)備具有一定的工作視場范圍,無法在同一測點采集完整的高速道岔尖軌點云數(shù)據(jù),需從多個視角進行數(shù)次掃描,將多幅局部點云拼接成完整的尖軌模型.目前常用的點云拼接方法是基于標識點識別的點云拼接[8],極大地增加了人工成本,降低了掃描效率,并且需要點云數(shù)據(jù)連續(xù).
(2) 在應(yīng)用PCL進行點云數(shù)據(jù)處理與分析時,部分函數(shù)設(shè)備利用率不高,運行速度緩慢,降低了整個檢測系統(tǒng)的實時性.
針對基于標識點的點云拼接效率低下的問題,本文通過分析高速道岔尖軌的檢測需求及其幾何形態(tài),引入了復(fù)合拼接的方法,通過融合編碼器的位移信息,完成了尖軌點云數(shù)據(jù)的拼接.通過掃描實驗證實其可行性,在檢測系統(tǒng)的自動化、掃描效率方面有較大提升.
針對PCL函數(shù)效率低下的問題,考慮到數(shù)據(jù)處理流程的計算復(fù)雜度和運算的時間消耗,重點分析了點特征直方圖(point feature histograms, PFH)的計算過程,結(jié)合PFH算法和OpenCL(open computing language)硬件模型的特點,調(diào)整點云數(shù)據(jù)結(jié)構(gòu),提出基于OpenCL的PFH算法.通過實驗測試,獲取優(yōu)化后的算法相對于原有PFH函數(shù)的加速比以及系統(tǒng)整體性能的提升幅度.
尖軌磨損的測量參數(shù)有垂直磨耗、側(cè)面磨耗和降低值等.以垂直磨耗為例,測量的是尖軌軌頂?shù)哪p,檢測位置為未磨損尖軌軌頂距離內(nèi)側(cè)1/3軌頭寬度處[9].不同于基本軌的固定截面,高速道岔尖軌的截面隨著位置的變化而改變.因此,要準確測量尖軌各部位的垂直磨耗,需精確定位檢測點.
使用結(jié)構(gòu)光掃描儀對高速道岔尖軌進行磨耗檢測時,在截面方向的定位可以選擇未與列車輪軌直接接觸的軌底頂面作為參考,以尖軌的CAD設(shè)計模型作為配準目標,將測量得到的尖軌軌底數(shù)據(jù)精確配準到這一標準模型的軌底,再對比軌頂處的磨耗情況;由于軌底截面固定不變,不具備在尖軌延伸方向定位的條件,原始的定位方法是采集整個尖軌的點云數(shù)據(jù),以其開端為原點計算延伸值.受結(jié)構(gòu)光掃描儀工作范圍和掃描方位的限制,尖軌點云數(shù)據(jù)的獲取過程中需要進行多次掃描并且精確拼接.將數(shù)次從不同方位、視角獲取的局部點云數(shù)據(jù)拼接成完整的待測尖軌的三維模型,再將其與標準的尖軌CAD模型精確配準,計算兩者之間的差異可以得出待測尖軌的磨耗值.傳統(tǒng)拼接流程如圖1所示.
圖1 點云的傳統(tǒng)拼接流程Fig.1 General point cloud registration
點云拼接的本質(zhì)是將在不同方位、視角下獲取的尖軌局部點云數(shù)據(jù)作剛性變換,將各自的局部坐標系統(tǒng)一到全局坐標系中.首先需定義全局坐標系,通??蓪⑹状潍@取的局部尖軌點云所對應(yīng)的局部坐標系定義為全局坐標系,而單次測量獲得的尖軌點云是局部數(shù)據(jù),設(shè)平移變換為T和旋轉(zhuǎn)變換為R,局部坐標為(XL,YL,ZL),全局坐標為(XW,YW,ZW),它們之間的變換可描述為
(1)
通過式(1)中矩陣R和T的具體參數(shù)即可完成局部坐標到全局坐標的統(tǒng)一.典型的求解方法是通過對標識點的檢測與定位[10].由于標識點在全局坐標系與局部坐標系中拓撲關(guān)系不變,在局部到全局坐標的變換中可以利用這一屬性實現(xiàn)標識點匹配,從而確定變換關(guān)系.
利用局部點云交疊部分的標識點實現(xiàn)點云拼接,對標識點的數(shù)量和分布都具有一定的要求.在測試實驗中,如果能夠滿足標識點數(shù)目大于3且不共線的條件,即可實現(xiàn)點云的拼接,用于檢測高速道岔尖軌的磨耗.然而,在高鐵線路的實際工況環(huán)境下,道岔檢測時存在以下弊端:
(1) 較低的效率.人工的方法保證局部點云交疊處標識點的位置與數(shù)量,極大耗費檢測的時間,同時檢測人員對標識點布置的合理性將影響測量的成功率和精度.
(2) 數(shù)據(jù)存在空洞.全黑或全白的標識點的顏色設(shè)計,雖然有利于特征提取,但與此同時會造成極端的曝光不足或過量,從而引起數(shù)據(jù)的缺失,形成點云數(shù)據(jù)空洞.
(3) 數(shù)據(jù)有冗余.鐵路現(xiàn)場的道岔尖軌磨耗以抽檢的形式進行檢查,主要是在尖軌的尖端、頂寬5 mm處、頂寬20 mm處、頂寬35 mm處、頂寬50 mm處、頂寬70 mm以上6個主要檢查斷面[9].使用標識點的方法強制性地要求尖軌的各幅點云數(shù)據(jù)之間具有重疊區(qū)域,不僅大大增加了掃描工作量,導(dǎo)致點云數(shù)據(jù)冗余,還會增加潛在的拼接失敗的風(fēng)險.
針對以上問題,綜合高速道岔尖軌的幾何形態(tài),本文提出了基于距離編碼器的高速尖軌點云復(fù)合拼接方法.
首先分析高速道岔尖軌的幾何形態(tài).我國鐵路的大部分12號及12號以下的道岔均采用直線型尖軌[11],即大部分的尖軌曲率為0.由于尖軌軌底的截面形狀保持不變,沿尖軌延伸方向測得的各組點云可以看作是第1組點云的Z向平移.為了保證檢測數(shù)據(jù)的連續(xù)性,結(jié)構(gòu)光掃描設(shè)備搭載在檢測小車上,小車沿尖軌直線行駛,結(jié)構(gòu)光掃描設(shè)備相對于尖軌無偏轉(zhuǎn),僅在與軌道平行的方向發(fā)生位置變化.假設(shè)檢測過程中檢測車的車輪不與被測軌相對滑動,則檢測車通過的距離與車輪轉(zhuǎn)動的總周長相等,利用激光編碼器采集車輪的轉(zhuǎn)動總弧度,可獲得檢測車在被測尖軌上平移的距離.
在沒有參考標識點的條件下,以結(jié)構(gòu)光掃描設(shè)備自身的局部坐標系為基準獲取多組點云數(shù)據(jù),由于各測點處掃描設(shè)備對于尖軌的可視范圍一定,軌底的截面也恒定,各組檢測數(shù)據(jù)基本重合.
設(shè)XY平面與尖軌CAD模型的啟示截面重合,Z方向為鋼軌的延伸方向,建立全局坐標系.利用激光編碼器記錄脈沖量,乘以脈沖長度計算出測量檢測小車的位移量,換算成各局部點云沿軌道的偏移量,基于激光距離編碼器復(fù)合尖軌點云拼接的工作流程圖如圖2所示.
圖2 基于激光距離編碼器復(fù)合拼接流程Fig.2 Complex point cloud registration based on laser distance encoder
PFH是一種穩(wěn)定性較優(yōu)秀的點云特征描述方法,具有曲面剛性不變、點距對特征計算影響小和噪點擾動較弱等優(yōu)勢[12].如圖3所示,PFH使用多維直方圖描述目標點Pt與鄰域點Pi(i=1,2,…,k)之間的幾何特性[13-14],計算復(fù)雜度為O(k2),從而輔助點云配準[15].
圖3 目標點與k個鄰近點之間的幾何特性Fig.3 Geometric characteristic between query points and their nearest k neighbors
任取鄰域中兩點Pa與Pb,設(shè)它們的法向量分別為na、nb,計算兩點之間的空間位置關(guān)系和法向量的角度偏轉(zhuǎn).取其中的一點作為局部坐標系原點定義局部坐標系,以簡化運算,如圖4所示.
圖4 任意兩點Pa和Pb之間的相對位置關(guān)系Fig.4 Relative position of two arbitrary points Pa and Pb
其中,將Pa與Pb相連得到(Pb-Pa)坐標系的Z軸垂直于X軸和(Pb-Pa)所在的平面.Pa和Pb的位置關(guān)系和其所對應(yīng)的法向量ns和nt之間的偏轉(zhuǎn)關(guān)系可描述為
(2)
式中:d是Pa和Pb之間的歐式距離.
計算鄰域內(nèi)任意兩點的幾何特征描述值(α,φ,θ,d),把兩點的空間位置關(guān)系和法向量偏轉(zhuǎn)關(guān)系(共12個值)減少為4個.其中,3個參數(shù)是角度量,且省略d能減弱算法對點云密度的敏感度,從而增強魯棒性[13].將這3個角度參數(shù)映射到n3個區(qū)間的直方圖,計算領(lǐng)域點落到各區(qū)間的頻數(shù).PCL點云庫提供了一個pcl::PFHSignature125的數(shù)據(jù)類型存儲PFH值,它包含125個浮點數(shù),即n=5(每個分量分為5等分).
結(jié)構(gòu)光掃描設(shè)備采集的高速尖軌點云包含x、y、z3個位置坐標描述,不具備法向量,因此首先需要估計點云數(shù)據(jù)的法向量.實驗證明,在尖軌點云數(shù)據(jù)(規(guī)模為(105~106個點)的計算中,點云的法向量的計算復(fù)雜度低于5%,OpenCL并行加速收益低,甚至可能因GPU (graphics processing unit)之間的數(shù)據(jù)拷貝帶來的額外開銷而降低性能.綜上,本文中法向量計算在CPU平臺實現(xiàn).
假設(shè)尖軌點云包含M個點,鄰域點數(shù)量設(shè)為N,那么計算PFH循環(huán)次數(shù)為M(N2-N)次(包括重復(fù)配對),或者MN2次(不計重復(fù)配對).每個循環(huán)輸入的數(shù)值為6個(空間坐標和法向量),且各點的PFH計算完全獨立,并行度較高.實踐表明,PFH直方圖計算所時間占整個點云數(shù)據(jù)處理時間的85%.因此,本文結(jié)合PFH算法和GPU設(shè)備的特點,提出了OpenCL并行化的PFH算法.
GPU全局內(nèi)存的訪問代價十分高昂,若線程頻繁訪問全局內(nèi)存會因內(nèi)存阻塞而空載,降低計算單元的利用率.使用GPU內(nèi)建的局部內(nèi)存可以有效解決內(nèi)存阻塞問題[16].GPU的局限在于其局部內(nèi)存容量,對于單個計算單元,局部內(nèi)存容量通常只有幾十KB,而PFH的直方圖計算中,需要搜索配對臨近,對于無序點云這種搜索將擴大到整個點云.因此,不能直接將完整的點云數(shù)據(jù)復(fù)制到局部內(nèi)存中.
針對上述問題,本文對點云數(shù)據(jù)格式進行重構(gòu),使其適應(yīng)OpenCL設(shè)備高速訪存,優(yōu)化如下:
假設(shè)尖軌的點云數(shù)據(jù)量為M.首先設(shè)定鄰域點的數(shù)量為k,遍歷整個點云數(shù)據(jù),基于k-d搜索樹的方法建立鄰域點索引.建立兩個浮點數(shù)組,將鄰域點索引按目標點遍歷的順序存儲空間坐標和法向量.因此,每個點的鄰域點索引相互獨立,且在內(nèi)存中連續(xù).將待計算的目標點的鄰域索引拷貝到GPU各計算單元的局部內(nèi)存中,每個單元的線程只需從局部內(nèi)存中讀取數(shù)據(jù),避免頻繁訪問全局內(nèi)存,降低了訪存阻塞.基于OpenCL的PFH計算流程如圖5所示.在PFH計算流程中,法向量和鄰域點索引的創(chuàng)建在CPU平臺中實現(xiàn).CPU計算完成后,將計算結(jié)果拷貝到GPU的全局內(nèi)存中,在GPU平臺完成PFH計算,再將計算結(jié)果拷貝到主機內(nèi)存.
圖5 OpenCL優(yōu)化的PFH流程Fig.5 Flowchart of OpenCL-accelerated PFH
在OpenCL的抽象模型中,共享數(shù)據(jù)的工作項(work-item)組成一個工作組(work-group)[17],具體到GPU硬件設(shè)備中,在相同工作組中的所有工作項共享局部內(nèi)存.結(jié)合PFH的計算特點,本文將單個點的PFH計算任務(wù)分配到OpenCL模型中的一個工作組.
工作組大小的劃分會直接影響GPU的負載效率.以AMD GCN (advanced micro devices, graphics core next)架構(gòu)的GPU為例,最小的線程操作粒度為64(稱作wavefront)[18],即這64個線程的操作指令是同步的.以wavefront的整數(shù)倍劃分工作組的大小時,GPU計算單元的利用率最高,計算性能會顯著優(yōu)于其他情況[17].設(shè)任意目標點的鄰域點索引數(shù)量為k,則分配到每個工作組后需要執(zhí)行k2次計算.將工作組的大小設(shè)為P,每個工作項執(zhí)行S次循環(huán),使得總循環(huán)次數(shù)PS≥k2.最佳的k值隨點云數(shù)據(jù)密度改變而浮動,若工作組大小P設(shè)置太大,當k值設(shè)置較小時容易造成計算單元的閑置.運用CodeXL,可以分析出不同工作組大小下VALU (vector arithmetic logic unit)的負載利用率如圖6所示.
圖6 工作組大小不同時向量運算器的負載情況Fig.6 Load percentage of VALU in different workgroup sizes
從圖6可以看出,當k設(shè)定較小時,包含64個工作項的工作組VALU初始化比例與包含256個工作項的工作組相當,但前者的VALU負載更高.因此在k較小時,工作組設(shè)為64個工作項時計算單元利用率更高,與理論分析一致.當k設(shè)定較大時兩者均能使GPU的計算單元高負載運行.綜上,本文將工作組64個工作項,即一個wavefront對應(yīng)的線程數(shù)量.
檢測的高速尖軌長度為1 200 mm,使用點云采集幅面為400 mm×300 mm的掃描裝置獲取被測尖軌工作側(cè)的點云.考慮點云數(shù)據(jù)之間的交集,進行4次數(shù)據(jù)采集,點云數(shù)據(jù)的偏移量由距離編碼器獲取.未經(jīng)處理的的原始點云數(shù)據(jù)將重疊在初始位置,如圖7所示.
將首次采集的軌尖處的點云與尖軌設(shè)計CAD模型尖端對齊.首先分割出軌底的點云數(shù)據(jù),將其與標準模型的對應(yīng)位置進行粗配準和精確配準,再沿Z軸平移至尖軌尖端,效果如圖8所示.
融合激光距離編碼器測得的偏移量到尖軌點云變換矩陣,實現(xiàn)后續(xù)點云的剛性變換,限制變換后的點云位置,進而完成精確配準.后續(xù)點云精確配準后的效果如圖9所示.
圖7 多片原始尖軌點云相互重疊Fig.7 Overlaps of multiple point clouds in the initial state
圖8 掃描的第一片尖端點云與高速尖軌標準模型尖端對齊Fig.8 Registration of the first scanned piece of point cloud of the switch rail to the CAD model on the starting points
圖9 后續(xù)點云與標準模型精確配準結(jié)果Fig.9 Accurate registration results of the rest point clouds to the designed model
以測量數(shù)據(jù)與標準CAD模型的截面配準誤差和距離編碼器法在尖軌延伸方向的誤差評價復(fù)合配準方法的精度,利用商用軟件Geomagic Qualify作為驗證工具,誤差分析操作如圖10所示.
圖10 點云模型匹配誤差分析Fig.10 Point cloud alignment error analysis
兩種點云拼接方法與標準CAD模型的匹配誤差如表1所示.首次采集的尖軌尖端數(shù)據(jù)由兩種方法共用,因此匹配誤差一致;距離編碼器法的任意一副局部點云均獨立與標準CAD模型精確配準,因此在截面方向上的匹配精度保持一致;標識點法僅對首次采集的尖軌尖端數(shù)據(jù)精確配準,后續(xù)局部點云通過標識點的檢測來定位,造成誤差累計,為了使各截面的匹配足夠精確以滿足磨耗分析的要求,標識點法的匹配過程中仍然需要考慮每一組局部點云的匹配精度.
表1匹配誤差表
Tab.1Alignment errors mm
點云序列標識點拼接法距離編碼器拼接法0010.240.240020.450.280030.630.260040.880.23
以標識點法為參考,距離編碼器法在尖軌延伸方向上的誤差如表2所示.可以看出,單次誤差約為0.40 mm.本文點云拼接所產(chǎn)生的累計誤差在1.00 mm內(nèi),適用于尖軌延伸方向的精度需求不高的測量.
表2延伸方向誤差表
Tab.2Errors along the switch rail mm
點云序號延伸方向誤差00100020.230030.610040.89
本實驗的測試平臺如表3所示.
表3 OpenCL平臺配置表Tab.3 Hardware and software of the OpenCL platform
上述高速尖軌采集的第一片點云模型作為實驗測試的點云數(shù)據(jù),數(shù)據(jù)量為400 117個點.選取不同的鄰近點規(guī)模k,計算上述點云數(shù)據(jù)的PFH點特征直方圖,記錄CPU平臺和GPU平臺耗時.選取每個實例運行 3次后的平均值進行對比.CPU平臺使用PCL庫提供的計算函數(shù),GPU平臺使用本文針對OpenCL優(yōu)化后的PFH函數(shù).測試的結(jié)果如圖11所示.
圖11 CPU和GPU的PFH計算對比Fig.11 Comparison between CPU and GPU PFH computing
GPU的加速效果在較小的k值下并不明顯,接近于CPU的計算耗時,但隨著k值的逐步增長,GPU的計算耗時并未顯著增加,而CPU的計算時間卻發(fā)生了指數(shù)性增長.在臨近點為100的條件下,相對于CPU平臺,GPU運算的加速比可達45.
經(jīng)上述兩個方法優(yōu)化后,檢測系統(tǒng)的點云掃描效率和處理效率有了一定提升.以掃描四片點云為例,預(yù)估檢測系統(tǒng)的整體提升幅度,如表4所示.
表4系統(tǒng)優(yōu)化前后耗時對比
Tab.4Comparison of time consumption between original and optimized methods s
對比項目原方法改進方法系統(tǒng)標定33.1533.15噴涂顯影劑34.06×434.06×4粘貼標識點30.00×30清除標識點10.00×30掃描6.45×46.45×4點云預(yù)處理5.005.00PFH計算50.006.41粗匹配10.4110.41精確匹配4.65×44.65×4總耗時399.20235.61速度提升/%69.43
本文在高速尖軌點云拼接中引入基于距離編碼器的混合配準,取代了傳統(tǒng)的標識點拼接法,在取得較滿意的拼接精度的同時精簡了手動粘貼標識點的流程,提升了檢測系統(tǒng)掃描數(shù)據(jù)的自動化程度;相對于PCL庫提供的默認PFH算法,引入了基于OpenCL異構(gòu)加速計算的PFH點特征直方圖算法,能更有效的利用計算資源,發(fā)揮GPU的并行處理優(yōu)勢,提升處理速度.以實際尖軌為實驗對象,實驗證明本文針對高速尖軌的結(jié)構(gòu)光檢測系統(tǒng)通過對數(shù)據(jù)掃描和數(shù)據(jù)處理兩部分的優(yōu)化,將檢測系統(tǒng)的整體效率提升了約70%,顯著提高了檢測效率.