羅 云 張富泉
(中國鐵建港航局集團(tuán)有限公司,廣東 廣州 511442)
隨著工業(yè)的快速發(fā)展,人們對倉庫堆料庫存的測量技術(shù)有了更高的要求,測量過程中的效率和精度是人們關(guān)注的焦點(diǎn)。在機(jī)器視覺圖像處理、超聲波測距、激光雷達(dá)探測等多種測量技術(shù)中,基于激光雷達(dá)探測技術(shù)的測量方法在測量速度、精度、抗干擾能力等方面有著獨(dú)特的優(yōu)勢,因此在多個(gè)領(lǐng)域獲得了廣泛的應(yīng)用[1]。目前,拌合站的堆料(骨料、砂)的庫存管理主要是通過地磅過磅記錄來確定入庫量,拌合站生產(chǎn)記錄來確定消耗量。而對于庫存盤點(diǎn)基本是通過人工手動測量來估算,用鏟車將堆料平整成規(guī)則形狀,再通過皮尺測量相關(guān)的參數(shù)來估算堆料的體積。人工手動測量不僅測量效率低,而且精度不高,對倉庫的日常管理帶來了極大的不便。
本文將激光雷達(dá)掃描技術(shù)引入堆料體積智能測量的研究領(lǐng)域,在行走小車上安裝激光掃描儀,獲取倉庫中所有庫位堆料的三維點(diǎn)云數(shù)據(jù),對這些點(diǎn)云數(shù)據(jù)進(jìn)行校準(zhǔn)和篩選,結(jié)合倉庫庫位的場地參數(shù),得到完整的三維模型,再計(jì)算模型體積即可算出堆料的體積。激光雷達(dá)可全天候工作,不僅測量效率高,而且精度可靠,為拌合站的庫存管理提供了可靠的技術(shù)手段。
單點(diǎn)激光測距的基本原理是飛行時(shí)間原理(time-of-flight,TOF),又稱時(shí)差法。激光發(fā)射器發(fā)出發(fā)射光脈沖,內(nèi)部計(jì)時(shí)器記錄開始時(shí)間;激光脈沖達(dá)到物體表面后發(fā)生發(fā)射,發(fā)射光脈沖回到激光發(fā)射器時(shí),內(nèi)部計(jì)時(shí)器記錄結(jié)束時(shí)間,則由公式(1)可計(jì)算得到激光發(fā)射器到物體表面反射點(diǎn)的距離。
式中t1——開始時(shí)間;
t2——結(jié)束時(shí)間;
c——光速常量;
L——激光發(fā)射器到物體表面反射點(diǎn)的距離。
激光掃描儀中的旋轉(zhuǎn)光學(xué)結(jié)構(gòu)按一定角度間隔(即角度分辨率)連續(xù)不斷地發(fā)射激光脈沖,在掃描角度內(nèi)的各個(gè)方向形成一個(gè)徑向坐標(biāo)為基準(zhǔn)的二維掃描面,如圖1 所示。掃描儀將每個(gè)角度分辨率測得的距離組合成一條掃描結(jié)果,我們稱之為幀點(diǎn)云數(shù)據(jù)。
圖1 激光掃描儀結(jié)構(gòu)及二維掃描面
得到幀掃描結(jié)果后,以掃描儀位置為原點(diǎn),掃描角度內(nèi)90°方向?yàn)閅 軸,0°方向?yàn)閄 軸。根據(jù)掃描儀的初始掃描角度、角度分辨率、掃描儀到物體每個(gè)測點(diǎn)的距離,通過以下公式(2)計(jì)算得到平面坐標(biāo)(xi,yi) 。
式中α——初始掃描角度;
β——角度分辨率;
i——點(diǎn)的序號;
L——激光發(fā)射器到物體表面反射點(diǎn)的距離。
在堆料的上方安裝平直的掃描軌道,行走小車沿著軌道緩慢勻速地前進(jìn)。掃描儀固定在行走小車下方,垂直向下掃描。設(shè)置掃描的掃描頻率為100Hz,隨著行走小車的緩慢勻速前進(jìn),掃描儀每秒可產(chǎn)生100 幀的點(diǎn)云數(shù)據(jù)。以行走小車的前進(jìn)方向?yàn)檩S,將所有幀的點(diǎn)云數(shù)據(jù)組合在一起,即形成三維空間的點(diǎn)云數(shù)據(jù)。
堆料體積激光雷達(dá)智能測量系統(tǒng)由五個(gè)部分組成,分別是行走小車、行走小車控制后臺、點(diǎn)云數(shù)據(jù)存儲服務(wù)器、三維成像解析后臺、前端操作界面,如圖2 所示。
圖2 系統(tǒng)組成示意圖
2.1.1 行走小車。行走小車上裝有樹莓派(Raspberry Pi,一種卡片式計(jì)算機(jī))、激光雷達(dá)掃描儀、行走電機(jī)等設(shè)備,響應(yīng)控制后臺發(fā)送的控制指令,向控制后臺反饋小車當(dāng)前運(yùn)行狀態(tài),將點(diǎn)云數(shù)據(jù)發(fā)送到存儲服務(wù)器。
2.1.2 行走小車控制后臺。給行走小車發(fā)送各種控制指令,如開始掃描任務(wù)、小車前進(jìn)、小車后退等,并根據(jù)小車返回的運(yùn)行狀態(tài)信息,動態(tài)調(diào)整控制指令。
2.1.3 點(diǎn)云數(shù)據(jù)存儲服務(wù)器。接收點(diǎn)云數(shù)據(jù)并存儲。
2.1.4 三維成像解析后臺。對點(diǎn)云數(shù)據(jù)進(jìn)行一系列的校準(zhǔn)和篩選,構(gòu)建堆料表面的三維曲面,結(jié)合倉庫庫位的場地參數(shù),得到完整的三維模型;計(jì)算模型體積,得到堆料的體積;將三維模型和體積數(shù)據(jù)發(fā)送到前端操作界面。
2.1.5 前端操作界面。前端操作界面包括行走小車的操控界面、三維模型呈現(xiàn)界面和體積數(shù)據(jù)顯示界面。
行走小車搭載的主要設(shè)備有樹莓派、激光雷達(dá)掃描儀、行走電機(jī)、4G 路由器、鋰電池、起點(diǎn)行程開關(guān)和終點(diǎn)行程開關(guān)。
2.2.1 樹莓派。負(fù)責(zé)接收用戶的相關(guān)指令,通過繼電器控制行走電機(jī)的正反轉(zhuǎn)、掃描儀的開關(guān)、充電樁的開關(guān),采集掃描儀產(chǎn)生的幀點(diǎn)云數(shù)據(jù)并上傳,監(jiān)控鋰電池電量。
2.2.2 激光雷達(dá)掃描儀。掃描堆料表面,并生成幀點(diǎn)云數(shù)據(jù)。
2.2.3 行走電機(jī)。通過正反轉(zhuǎn)來控制小車的前進(jìn)或者后退。
2.2.4 4G 路由器。為樹莓派、激光雷達(dá)掃描儀提供通信網(wǎng)絡(luò)。
2.2.5 鋰電池。為樹莓派、激光雷達(dá)掃描儀、移動電機(jī)、4G 路由器提供電源。樹莓派實(shí)時(shí)監(jiān)控鋰電池的電量,當(dāng)電量不足時(shí)可自動控制行走小車連接充電樁充電。
2.2.6 起點(diǎn)行程開關(guān)和終點(diǎn)行程開關(guān)。監(jiān)控小車是否到達(dá)起點(diǎn)或者終點(diǎn),為樹莓派提供決策依據(jù)。
當(dāng)行走小車控制后臺向行走小車發(fā)送“開始任務(wù)”的指令后,行走小車的工作流程如圖3 所示。行走小車斷開與充電樁的連接,開啟激光雷達(dá)掃描儀,小車前進(jìn)過程中實(shí)時(shí)采集點(diǎn)云數(shù)據(jù)。當(dāng)行走小車到達(dá)終點(diǎn)時(shí),關(guān)閉激光雷達(dá)掃描儀,行走小車回到起點(diǎn),并停止運(yùn)行。激光雷達(dá)掃描儀工作過程中產(chǎn)生點(diǎn)云數(shù)據(jù)并上傳到點(diǎn)云數(shù)據(jù)存儲服務(wù)器。
圖3 行走小車的控制流程
莞番十一標(biāo)預(yù)制梁場拌合站堆料倉庫的1 號倉至8 號倉用于存放堆料,9 號倉為機(jī)械存放區(qū),如圖4 所示。以堆料倉中部的立柱為支撐,在立柱上方焊裝一條工字鋼導(dǎo)軌,貫穿1 號倉至8號倉。起點(diǎn)設(shè)置在9 號倉內(nèi),終點(diǎn)在1 號倉。充電樁設(shè)置在9 號倉和8 號倉之間的立柱上。導(dǎo)軌兩邊設(shè)置了多條標(biāo)定線,平行于導(dǎo)軌且間隔為6 米(圖4 中的黑色虛線)。
圖4 堆料倉庫示意圖
開始任務(wù)后,行走小車啟動激光雷達(dá)掃描儀并沿著軌道緩慢勻速地前進(jìn)。掃描儀固定在行走小車下方,垂直向下掃描。激光雷達(dá)掃描儀的掃描頻率設(shè)置為100Hz。行走小車搭載的樹莓派通過TCP/IP 網(wǎng)絡(luò)通信協(xié)議獲取點(diǎn)云數(shù)據(jù),并緩存在Redis 數(shù)據(jù)庫中,再將數(shù)據(jù)打包發(fā)送至點(diǎn)云數(shù)據(jù)存儲服務(wù)器。
由堆料倉庫示意圖可知,導(dǎo)軌支撐立柱即為每個(gè)庫位的分隔標(biāo)志。分析幀點(diǎn)云數(shù)據(jù),判斷幀點(diǎn)云數(shù)據(jù)是否含有導(dǎo)軌支撐立柱,如圖5 所示。以立柱作為倉位區(qū)分依據(jù),將所有幀點(diǎn)云數(shù)據(jù)分成0-9 組,編號1-8的幀點(diǎn)云數(shù)據(jù)組分別對應(yīng)8 號倉至1 號倉。因?qū)к壍钠瘘c(diǎn)在9 號倉內(nèi),故編號為0的幀點(diǎn)云數(shù)據(jù)組可以舍棄。
圖5 點(diǎn)云數(shù)據(jù)分倉處理
判斷幀點(diǎn)云數(shù)據(jù)是否掃描支撐立柱的計(jì)算方法:幀點(diǎn)云數(shù)據(jù)在-5°至25°之間的所有點(diǎn)X 坐標(biāo)小于特定距離的置信水平>95%。
點(diǎn)云數(shù)據(jù)具有數(shù)據(jù)量大、冗余度高等特征。由于倉庫現(xiàn)場環(huán)境的復(fù)雜度、激光雷達(dá)掃描儀行走過程中的振動、隨機(jī)誤差等因素,需要對幀點(diǎn)云數(shù)據(jù)進(jìn)行預(yù)處理,刪除噪聲幀點(diǎn)云數(shù)據(jù)和離群幀點(diǎn)云數(shù)據(jù)。將道格拉斯-普克算法(Douglas-Peucker algorithm)應(yīng)用到幀點(diǎn)云數(shù)據(jù)的處理中[2],結(jié)合場地參數(shù),通過一定的判定規(guī)則,從幀點(diǎn)云數(shù)據(jù)中識別出標(biāo)定線、墻、地面、堆料,如圖6 所示。
圖6 幀點(diǎn)云數(shù)據(jù)識別物體
行走小車移動過程中的晃動會導(dǎo)致掃描結(jié)果出現(xiàn)偏移,因此需要通過標(biāo)定線、墻體、地面為參照,標(biāo)定線和地面水平,墻體豎直,對幀點(diǎn)云數(shù)據(jù)進(jìn)行初校準(zhǔn)處理。初校準(zhǔn)前和初校準(zhǔn)后的對比如圖7 所示。
圖7 初校準(zhǔn)前后對比圖
激光雷達(dá)掃描儀的掃描頻率較高,可以近似認(rèn)為點(diǎn)云數(shù)據(jù)幀與幀之間的變化不大,通過幀與幀的圖像匹配,對幀點(diǎn)云數(shù)據(jù)進(jìn)一步校準(zhǔn)。除第一條幀點(diǎn)云數(shù)據(jù)外,所有的幀點(diǎn)云數(shù)據(jù)都和前一幀的點(diǎn)云數(shù)據(jù)進(jìn)行fast-DTW 算法匹配,得到匹配偏移dp和匹配衰減系數(shù)wp;除最后一條幀點(diǎn)云數(shù)據(jù)外,所有的幀點(diǎn)云數(shù)據(jù)都和后一幀的點(diǎn)云數(shù)據(jù)進(jìn)行fast-DTW 匹配,得到匹配偏移da 和匹配衰減系數(shù)wa。如果衰減系數(shù)wp或者wa都在規(guī)定的閾值內(nèi),則當(dāng)前幀的匹配偏移。如果衰減系數(shù)wp或者wa小于閾值的匹配,則認(rèn)定為無效。計(jì)算方法如下:
3.5.1 通過fast-DTW 算法計(jì)算匹配矩陣[3]
將點(diǎn)的角度作為X 軸,點(diǎn)的距離作為Y 軸,設(shè)置fast-DTW的搜索半徑,通過fast-DTW 迭代算法得到匹配矩陣M,矩陣M的搜索路徑參考如圖8 所示。
圖8 矩陣M的搜索路徑
3.5.2 評估匹配效果,即計(jì)算衰減系數(shù)[4]
當(dāng)矩陣M中最優(yōu)路徑的對角直線越長,拐點(diǎn)越少,則說明兩幀點(diǎn)云數(shù)據(jù)的匹配效果越佳。本文使用公式(3)計(jì)算衰減系數(shù)。
當(dāng)a 小于一定的閾值時(shí),認(rèn)為匹配效果不佳,取消應(yīng)用。
式中a——衰減系數(shù);
diagi——每段對角直線的長度;
count——圖中最優(yōu)路徑節(jié)點(diǎn)個(gè)數(shù)。
3.5.3 計(jì)算匹配偏移d
在矩陣M中最優(yōu)路徑中,提取出對角直線上的所有節(jié)點(diǎn)Mij,其中i 代表第一幀點(diǎn)云數(shù)據(jù)中對應(yīng)的點(diǎn)序號,j 代表第二幀點(diǎn)云數(shù)據(jù)中對應(yīng)的點(diǎn)序號,根據(jù)這兩個(gè)點(diǎn)所在的角度分辨率,可以計(jì)算他們之間的夾角。最后求出所有對角直線上節(jié)點(diǎn)對應(yīng)夾角的算術(shù)平均值,即是匹配偏移d。
對幀點(diǎn)云數(shù)據(jù)再次應(yīng)用Douglas-Peucker 算法,提取出每個(gè)幀的特征點(diǎn),如圖9 所示,箭頭所指即為特征點(diǎn)。
圖9 特征點(diǎn)提取
對于多幀點(diǎn)云數(shù)據(jù),采用聚類分析[5],在保證計(jì)算精度的情況下,降低三維模型的計(jì)算規(guī)模以提高計(jì)算速度。將整個(gè)倉庫的所有幀點(diǎn)云數(shù)據(jù)按100 幀分成一小組,對每一組的幀數(shù)據(jù)進(jìn)行聚類分析(均值漂移),提取特征點(diǎn)的X 坐標(biāo)和Y 坐標(biāo)。對于這一組的所有幀數(shù)據(jù)的Z 坐標(biāo)認(rèn)為是相同的,如計(jì)算公式(4)。
式中istore——庫位編號;
Wstore——當(dāng)前庫位的寬度;
Wgap——庫位之間的間隔的寬度;
Cgroup——庫位內(nèi)所有幀點(diǎn)云數(shù)據(jù)的分組數(shù)量;
igroup——當(dāng)前的組號。
根據(jù)場景的初始設(shè)定,將校準(zhǔn)后的點(diǎn)云數(shù)據(jù)剔除倉庫外區(qū)域、墻、地面等無效點(diǎn)云數(shù)據(jù),只保留有效的堆料表面點(diǎn)云數(shù)據(jù)?;谥饘尤蔷W(wǎng)格化算法,生成三維曲面。這種算法將提取后的特征點(diǎn),采用投影網(wǎng)格化法來快速構(gòu)建點(diǎn)云間拓?fù)潢P(guān)系,生成如圖10 所示的三維曲面,這種方式重建的曲面可較好地還原物體表面細(xì)節(jié)[6]。
圖10 三維曲面生成
根據(jù)場景參數(shù),為三維曲面添加底面和四個(gè)側(cè)面,并計(jì)算出所有三維網(wǎng)格點(diǎn)的頂點(diǎn)法線,形成完整的堆料模型?;谌歉窬W(wǎng)模型的四面體體積計(jì)算算法來計(jì)算模型體積,可有效提高復(fù)雜表面目標(biāo)物的體積計(jì)算精度[7]。先計(jì)算模型的中心點(diǎn),遍歷每個(gè)三角片,計(jì)算頂點(diǎn)和三角片組成的四面體體積;如果三角片的面法線方向與頂點(diǎn)和三角片構(gòu)成的任一棱的方向相反,則體積為正數(shù),否則為負(fù);最后,所有四面體體積累加的結(jié)果即為堆料模型的體積。
為不斷促進(jìn)制造業(yè)的升級轉(zhuǎn)型,積極響應(yīng)項(xiàng)目部提出的信息化和智能化賦能預(yù)制梁場的總體要求,筆者將激光雷達(dá)技術(shù)應(yīng)用到莞番十一標(biāo)預(yù)制梁場拌合站的堆料庫存管理。在為混凝土備料期間,部分庫位的堆料只進(jìn)不出,結(jié)合地磅過磅記錄,對系統(tǒng)測量值進(jìn)行誤差分析。系統(tǒng)得到測量結(jié)果和實(shí)際的堆料體積誤差一般不超過±1‰,具有較高的精度。
堆料智能體積測量系統(tǒng)在有限的經(jīng)濟(jì)預(yù)算內(nèi),可實(shí)現(xiàn)堆料體積的自動化測量。與傳統(tǒng)人工測量方式相比,顯著提高了測量效率和測量精度,為預(yù)制梁場堆料庫存管理提供了科學(xué)有效的技術(shù)手段。后續(xù),筆者將考慮將堆料庫存測量結(jié)果與預(yù)制梁場生產(chǎn)信息化系統(tǒng)對接,更加智能地實(shí)現(xiàn)物料需求計(jì)劃、物料實(shí)際用量和物料偏差(損耗)分析,再結(jié)合經(jīng)濟(jì)訂貨模型,實(shí)現(xiàn)生產(chǎn)物料的科學(xué)采購和庫存管理。