黃知坤,文 煒,劉 明,張香怡,劉凱書,黃 騰,顧繼俊
(1.國(guó)家管網(wǎng)集團(tuán)川氣東送天然氣管道有限公司,武漢 430074;2.中國(guó)石油大學(xué)(北京)機(jī)械與儲(chǔ)運(yùn)工程學(xué)院,北京 102200)
隨著國(guó)內(nèi)輸油氣管道與沿途站場(chǎng)規(guī)模的不斷增長(zhǎng),利用機(jī)器人替代人工巡檢成為當(dāng)下研究重點(diǎn)。四足機(jī)器人具備高機(jī)動(dòng)性與良好的越障能力,在油氣站場(chǎng)巡檢方面具有良好的應(yīng)用前景。需要機(jī)器人根據(jù)現(xiàn)場(chǎng)環(huán)境變化與巡檢指令進(jìn)行自主多自由度組合控制,因此需要為機(jī)器人設(shè)計(jì)出頂層決策控制系統(tǒng)替代人工控制。
指針式儀表由于造價(jià)較低,結(jié)構(gòu)簡(jiǎn)單,使用方便,結(jié)實(shí)耐用等原因[1],大量存在于工業(yè)環(huán)境、生活環(huán)境、農(nóng)業(yè)生產(chǎn)、醫(yī)療設(shè)備、國(guó)家航空等領(lǐng)域,在這些行業(yè)發(fā)揮著至關(guān)重要且基礎(chǔ)的作用。是實(shí)時(shí)檢測(cè)環(huán)境、檢測(cè)數(shù)據(jù)、收集數(shù)據(jù)的一種好工具,具有非常廣泛的應(yīng)用場(chǎng)景。
目前,機(jī)器學(xué)習(xí)(ML)技術(shù)在大數(shù)據(jù)分析、圖像識(shí)別、自動(dòng)駕駛等人工智能領(lǐng)域表現(xiàn)出卓越的性能,使四足機(jī)器人的自主決策成為可能。深度強(qiáng)化學(xué)習(xí)(DRL)作為機(jī)器學(xué)習(xí)的重要分支,它既具備深度學(xué)習(xí)(DL)對(duì)復(fù)雜環(huán)境狀態(tài)的擬合與刻畫能力,又能夠像強(qiáng)化學(xué)習(xí)(RL)一樣對(duì)智能體施加動(dòng)作決策,在一些控制領(lǐng)域其表現(xiàn)已經(jīng)高于人類水平[2-4]。儀表讀數(shù)識(shí)別算法得到了一定的發(fā)展,大多將機(jī)器視覺(jué)和人工智能結(jié)合起來(lái),但是依舊有很多問(wèn)題都沒(méi)有被解決,因此導(dǎo)致了沒(méi)有一套成熟的算法可以大規(guī)模的推廣應(yīng)用,只能在某些小規(guī)模、定制化的場(chǎng)景下使用,魯棒性和普適性都不高。再者,油氣田站場(chǎng)等室外環(huán)境的儀表自動(dòng)讀數(shù)會(huì)受光照條件、天氣狀況的影響,容易造成讀數(shù)失敗[5]。因此,需要研發(fā)出更加具有普適性的讀表算法來(lái)解決這些問(wèn)題。
本文針對(duì)天然氣站場(chǎng)指針式儀表智能識(shí)別追蹤,包括以下幾個(gè)部分:儀表目標(biāo)追蹤、儀表定位、儀表配準(zhǔn)、示數(shù)識(shí)別,流程見(jiàn)圖1所示。
圖1 儀表追蹤及讀數(shù)方法研究?jī)?nèi)容
本文在目標(biāo)追蹤方面,將采用DQN實(shí)現(xiàn)四足機(jī)器人在油氣站場(chǎng)巡檢進(jìn)行儀表目標(biāo)追蹤仿真過(guò)程,通過(guò)基于坐標(biāo)引導(dǎo)的目標(biāo)追蹤任務(wù)和基于視覺(jué)引導(dǎo)的目標(biāo)追蹤任務(wù)兩種子任務(wù),驗(yàn)證DQN在四足機(jī)器人運(yùn)動(dòng)控制上的性能表現(xiàn),以達(dá)到儀表目標(biāo)追蹤的結(jié)果。在儀表智能檢測(cè)方面,采用基于改進(jìn)的YOLOv5算法,在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,自制儀表樣本數(shù)據(jù)集并訓(xùn)練模型文件、優(yōu)化權(quán)重文件;再通過(guò)YOLOv5算法識(shí)別四足機(jī)器人定點(diǎn)采集的圖像中的儀表,并標(biāo)出儀表位置。在角度調(diào)整方面,采用了基于改進(jìn)的SIFT的圖像配準(zhǔn)算法,得到高質(zhì)量的利于儀表示數(shù)讀取的圖像。在儀表示數(shù)讀取方面,利用K_means聚類的二值化算法得到指針信息突出的表盤,并通過(guò)角度與儀表盤示數(shù)的關(guān)系,得到儀表示數(shù)。
為解決巡檢過(guò)程中儀表目標(biāo)實(shí)時(shí)追蹤,本文提出了基于DQN模型的目標(biāo)追蹤算法,可實(shí)現(xiàn)定位系統(tǒng)、機(jī)器人視覺(jué)與運(yùn)動(dòng)控制融為一體。首先通過(guò)將儀表目標(biāo)追蹤任務(wù)分為基于坐標(biāo)引導(dǎo)的目標(biāo)追蹤和基于視覺(jué)引導(dǎo)的目標(biāo)追蹤兩個(gè)子任務(wù),其次在第一個(gè)子任務(wù)中,通過(guò)四足機(jī)器人本身、傳感器儀表目標(biāo)的定位及DQN模型,實(shí)現(xiàn)目標(biāo)的粗追蹤。受定位傳感器測(cè)量精度影響,子任務(wù)一難以達(dá)到規(guī)定精度,因此在第二個(gè)子任務(wù)中,設(shè)定機(jī)器人足端保持靜止,通過(guò)視覺(jué)引導(dǎo),控制機(jī)身做上下俯仰和左右扭轉(zhuǎn)做高精度目標(biāo)追蹤。
四足機(jī)器人頭部安裝深度相機(jī),可控制自身旋轉(zhuǎn)速度使位于正前方4米處的管道儀表進(jìn)入視野,如圖2所示。任務(wù)中,仿真環(huán)境反饋機(jī)器人機(jī)身和目標(biāo)儀表的三維坐標(biāo),與機(jī)器人機(jī)身歐拉角,同類型參數(shù)在現(xiàn)實(shí)環(huán)境可通過(guò)UWB定位系統(tǒng)和IMU測(cè)得。
1.1.1 模型搭建
該任務(wù)的環(huán)境參量為機(jī)器人與儀表空間坐標(biāo)、機(jī)器人機(jī)身傾角,動(dòng)作參量為兩個(gè)正負(fù)相反數(shù)值相同的角加速度,此外,累加每輪動(dòng)作執(zhí)行的角加速度可間接得到機(jī)器人角速度作為環(huán)境參量的補(bǔ)充。由此可見(jiàn),環(huán)境空間參量均為連續(xù)變量,即環(huán)境空間連續(xù),而動(dòng)作空間為離散參量,可以根據(jù)狀態(tài)查表方式選擇當(dāng)前狀態(tài)下價(jià)值最高的動(dòng)作,傳統(tǒng)Q學(xué)習(xí)算法無(wú)法解決連續(xù)狀態(tài)空間問(wèn)題,因此針對(duì)該任務(wù)選擇DQN算法作為訓(xùn)練模型。訓(xùn)練模型如圖3所示
圖3 DQN算法模型
深度Q網(wǎng)絡(luò)(DQN)是在Q學(xué)習(xí)算法基礎(chǔ)上增加神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法,利用神經(jīng)網(wǎng)絡(luò)可以較好地處理連續(xù)狀態(tài)空間問(wèn)題。圖中,環(huán)境對(duì)應(yīng)仿真環(huán)境,經(jīng)驗(yàn)池用以存儲(chǔ)訓(xùn)練過(guò)程中采集的狀態(tài)、動(dòng)作、獎(jiǎng)勵(lì)和更新后的狀態(tài),目標(biāo)網(wǎng)絡(luò)與在線網(wǎng)絡(luò)組成DQN模型中的深度神經(jīng)網(wǎng)絡(luò)部分,損失函數(shù)用以計(jì)算實(shí)際價(jià)值與預(yù)測(cè)價(jià)值的誤差并更新神經(jīng)網(wǎng)絡(luò)參數(shù)。至于參數(shù),s與s,為機(jī)器人狀態(tài)向量,a為機(jī)器人所執(zhí)行動(dòng)作,r為狀態(tài)s時(shí)刻機(jī)器人采取動(dòng)作a所獲得的實(shí)際回報(bào),Q(s,a;θ)表示參數(shù)為θ的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)動(dòng)作a的價(jià)值。
狀態(tài)向量s包含9個(gè)元素,其形式如下:
(1)
式(1)中前3個(gè)元素為機(jī)器人機(jī)身坐標(biāo),中間3個(gè)元素為目標(biāo)儀表坐標(biāo),最后3個(gè)元素分別表示機(jī)器人在Pitch軸和Roll軸傾角以及機(jī)器人圍繞水平面旋轉(zhuǎn)的目標(biāo)速度,最后一組元素描述機(jī)器人機(jī)身穩(wěn)定性,由于機(jī)身旋轉(zhuǎn)速度過(guò)快會(huì)造成摔倒,故將累加產(chǎn)生的目標(biāo)速度也作為狀態(tài)參量。同時(shí)由于目標(biāo)位置固定,為防止訓(xùn)練過(guò)程動(dòng)作的選取依賴世界坐標(biāo)系,故Yaw軸轉(zhuǎn)角不計(jì)入狀態(tài)參量。
1.1.2 訓(xùn)練測(cè)試與結(jié)果分析
任務(wù)訓(xùn)練在Pybullet仿真環(huán)境進(jìn)行,將DQN訓(xùn)練程序與機(jī)器人控制程序分為兩個(gè)線程進(jìn)行。線程將每次任務(wù)訓(xùn)練從開(kāi)始至結(jié)束定義為一回合,期間累加選擇動(dòng)作的次數(shù)作為機(jī)器人運(yùn)動(dòng)時(shí)間衡量,每輪回合結(jié)束分為3種情況:
1)機(jī)器人通過(guò)運(yùn)動(dòng)滿足完成條件,任務(wù)成功;
2)機(jī)器人運(yùn)動(dòng)中途摔倒,任務(wù)失??;
3)機(jī)器人運(yùn)動(dòng)次數(shù)超過(guò)上限將視為超時(shí)。
另外,訓(xùn)練次數(shù)等于DQN模型更新次數(shù),當(dāng)訓(xùn)練次數(shù)超過(guò)規(guī)定上限立即保存參數(shù)模型結(jié)束訓(xùn)練。任務(wù)執(zhí)行過(guò)程回放如圖4所示。
圖4 DQN任務(wù)執(zhí)行過(guò)程回放
DQN模型初始化參數(shù)設(shè)置如下:最大訓(xùn)練次數(shù)10 000,學(xué)習(xí)率0.01,折扣因子0.9,貪心因子0.9,神經(jīng)網(wǎng)絡(luò)復(fù)制間隔500周期。同時(shí),每隔1 000次訓(xùn)練記錄模型損失并保存保存該時(shí)刻模型參數(shù),結(jié)果如圖5所示??梢?jiàn)隨著訓(xùn)練進(jìn)行模型損失曲折下降,損失逐漸收斂趨勢(shì),訓(xùn)練前期模型損失下降較快,當(dāng)訓(xùn)練至第6 000輪時(shí)模型損失達(dá)到最小,而后損失稍有上升并小幅波動(dòng)。
圖5 損失函數(shù)曲線圖
第二個(gè)子任務(wù)主要在第一個(gè)子任務(wù)基礎(chǔ)上進(jìn)行,設(shè)定機(jī)器人通過(guò)自身旋轉(zhuǎn)運(yùn)動(dòng)已經(jīng)將儀表納入攝像機(jī)視野,同時(shí)機(jī)器人與目標(biāo)儀表的距離也進(jìn)入了攝像頭的視距范圍,此時(shí)需要將儀表.影響移動(dòng)至攝像機(jī)畫面中央(圖6),以便后續(xù)讀取儀表示數(shù)。
圖6 任務(wù)仿真環(huán)境
本任務(wù)的環(huán)境狀態(tài)s將不再包括位置坐標(biāo),取而代之的是機(jī)載相機(jī)的視覺(jué)畫面,這要求機(jī)器人能夠“看懂”畫面內(nèi)容并引導(dǎo)自身朝向目標(biāo)方向調(diào)整姿態(tài)。同時(shí),為防止目標(biāo)位姿超出機(jī)器人活動(dòng)空間,也需將目標(biāo)位姿作為極限位置參考加入環(huán)境觀測(cè)量。機(jī)器人方面,實(shí)現(xiàn)機(jī)器人在全運(yùn)動(dòng)空間內(nèi)的位姿調(diào)整。
對(duì)于模型的搭建大體上與前節(jié)任務(wù)相同,根據(jù)任務(wù)內(nèi)容變化做如下調(diào)整:環(huán)境狀態(tài)定義如下:
s=[Mphoto,θt_p,θt_y]
(2)
式(2)中Mphoto為攝像機(jī)單幀圖片矩陣,原圖為640×480的三通道彩色圖片,為降低神經(jīng)網(wǎng)絡(luò)權(quán)重?cái)?shù)量提高訓(xùn)練速度同時(shí)便于經(jīng)驗(yàn)存儲(chǔ),將原圖轉(zhuǎn)換為單通道灰度圖片,并將原二維像素矩陣壓縮重構(gòu)至長(zhǎng)度為48×64的一維向量。θt_p和θt_y是機(jī)器人在Pitch和Yaw旋轉(zhuǎn)軸上的目標(biāo)角度。
本任務(wù)的狀態(tài)觀測(cè)量為二維矩陣與一維向量的組合形式,考慮到需處理圖片數(shù)據(jù),網(wǎng)絡(luò)模型主體應(yīng)包含卷積神經(jīng)網(wǎng)絡(luò)(CNN),同時(shí)需對(duì)網(wǎng)絡(luò)模型進(jìn)行調(diào)整以兼容一維狀態(tài)參數(shù)。受InceptionV3模型啟發(fā),建立并聯(lián)式強(qiáng)化學(xué)習(xí)在線/目標(biāo)網(wǎng)絡(luò)模型如圖7所示。
圖7 改進(jìn)后DQN的深度網(wǎng)絡(luò)部分模型
該模型首先對(duì)輸入的灰度圖像做卷積、池化處理減少網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)量,而后設(shè)置四層全連接神經(jīng)網(wǎng)絡(luò),將卷積處理產(chǎn)生的一維圖像參數(shù)與一維位置參數(shù)拼接合并作為全連接網(wǎng)絡(luò)的輸入層,最終通過(guò)正向傳播輸出4種動(dòng)作的概率分布。在全連接層部分,隱藏層之間采用Relu函數(shù)做非線性激活,隱藏層至輸出層采用Softmax函數(shù)激活確保所有輸出動(dòng)作概率和為1。
1.2.1 訓(xùn)練測(cè)試與結(jié)果分析
DQN模型初始化參數(shù)設(shè)置如下:最大訓(xùn)練次數(shù)10 000,學(xué)習(xí)率0.06,折扣因子0.9,貪心因子0.9,神經(jīng)網(wǎng)絡(luò)復(fù)制間隔50周期。每回合訓(xùn)練開(kāi)始時(shí),機(jī)器人Yaw軸角度隨機(jī)設(shè)置在正負(fù)30°的區(qū)間內(nèi),保證表盤完整出現(xiàn)在相機(jī)視野中。同時(shí),每隔1 000次訓(xùn)練記錄模型損失并保存保存該時(shí)刻模型參數(shù),結(jié)果如圖8所示。與任務(wù)一的訓(xùn)練結(jié)果相似,前1 000輪訓(xùn)練過(guò)程模型快速收斂,之后模型損失趨于穩(wěn)定并伴隨小幅波動(dòng),當(dāng)訓(xùn)練結(jié)束即訓(xùn)練至第10 000輪時(shí),模型損失降至最低。任務(wù)執(zhí)行過(guò)程回放如圖9所示。
圖8 損失函數(shù)曲線圖
圖9 任務(wù)執(zhí)行過(guò)程回放
通過(guò)兩個(gè)子任務(wù)證明,采用DQN算法能夠?qū)C(jī)器人視覺(jué)與運(yùn)動(dòng)控制融為一體,機(jī)器人能夠根據(jù)任務(wù)獎(jiǎng)勵(lì)條件對(duì)輸入圖片進(jìn)行自主分析處理,形成穩(wěn)定的動(dòng)作策略,人員通過(guò)調(diào)整獎(jiǎng)勵(lì)條件即可指導(dǎo)機(jī)器人學(xué)習(xí),無(wú)需涉足圖片分析過(guò)程,便可達(dá)到對(duì)儀表的目標(biāo)追蹤。
本文采用卷積神經(jīng)網(wǎng)絡(luò)算法作為儀表定位的基礎(chǔ),由于基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)是大量的數(shù)據(jù)。本文利用COCO數(shù)據(jù)集進(jìn)行數(shù)據(jù)處理,該數(shù)據(jù)集包含了生活當(dāng)中常用的大部分物體的樣本集以及對(duì)應(yīng)的標(biāo)注集。根據(jù)2018年的數(shù)據(jù)[6],目前公開(kāi)的數(shù)據(jù)當(dāng)中并不能夠找到有關(guān)儀表的訓(xùn)練樣本集,因此,從天然氣站場(chǎng)實(shí)地拍攝了大量的儀表圖像作為基礎(chǔ),并完成圖像的標(biāo)注和反復(fù)迭代的訓(xùn)練任務(wù),生成識(shí)別所需要的數(shù)據(jù)樣本集。
在樣本數(shù)據(jù)集的基礎(chǔ)上,使用YOLOv5算法進(jìn)行儀表識(shí)別,識(shí)別效果見(jiàn)圖10。
圖10 儀表識(shí)別效果圖
由圖10可以看出,識(shí)別效果較好,儀表識(shí)別出來(lái)的置信度較高。
攝像頭在固定位置檢測(cè)到儀表模塊后,需要將檢測(cè)到的儀表模塊修正為模板視角。只有經(jīng)過(guò)修正的圖像才能夠繼續(xù)進(jìn)行下一步示數(shù)的讀取,否則很容易因?yàn)閳D像拍攝角度等原因造成采集到的儀表存在傾斜問(wèn)題,造成讀數(shù)存在誤差。因此本文針對(duì)儀表傾斜問(wèn)題使用改進(jìn)的SIFT算法進(jìn)行儀表圖像的修正運(yùn)算。修正步驟如圖11所示。
圖11 儀表配準(zhǔn)步驟
由于指針式儀表都需要讀取指針,對(duì)于直線檢測(cè)的研究從未間斷。目前識(shí)別指針的方法主要有Hough算法[7]及其改進(jìn)算法、Bresenham[8]算法、最小二乘法等。Hough變換可以讀到邊界,但是儀表識(shí)別過(guò)程中線條并不單一,難以分類,且并不能夠讀到儀表指針的長(zhǎng)度。Bresenham算法和最小二乘法都無(wú)法過(guò)濾噪聲,在考慮光照環(huán)境和外界天氣條件時(shí),處理結(jié)果并不理想。
本文提出了一種新的儀表示數(shù)讀數(shù)方法,該方法對(duì)計(jì)算機(jī)的要求較低,不需要深度學(xué)習(xí)網(wǎng)絡(luò),只需要簡(jiǎn)單的算法就可以進(jìn)行儀表的識(shí)別,識(shí)別流程見(jiàn)圖12。
圖12 儀表示數(shù)識(shí)別流程圖
針對(duì)修正后的圖像,需要對(duì)表盤進(jìn)行處理后再讀取指針,由于天然氣站場(chǎng)環(huán)境復(fù)雜,背景雜亂,直接對(duì)圖像進(jìn)行簡(jiǎn)單的二值化處理后進(jìn)行讀數(shù)會(huì)加大計(jì)算的難度。本文通過(guò)K-means聚類并保留內(nèi)切圓的方法對(duì)圖像進(jìn)行二值化處理,得到表盤清晰的圖像后,用虛擬直線擬合法添加一根過(guò)中點(diǎn)的直線,旋轉(zhuǎn)360度得到與指針重合度最高的角度,從而得到指針的角度,最終得到指針指向的刻度。
圖像二值化是指給彩色的圖像設(shè)置閾值,大于閾值的所有像素點(diǎn)的灰度值都設(shè)置為255(白色),小于閾值的所有像素點(diǎn)的灰度值都設(shè)置為0(黑色),將整個(gè)圖像變?yōu)楹诎讏D像[9]??梢允箞D像的數(shù)據(jù)量大幅度減少,減少運(yùn)算的負(fù)擔(dān)。
為了突出儀表中的主要因素,例如:刻度、數(shù)字、圓心、表盤等。本文針對(duì)機(jī)器人識(shí)別的兩幅儀表圖像做二值化處理,中值分別取80和127。針對(duì)圖13中的1圖和2圖分別作不同參數(shù)的二值化處理,見(jiàn)圖13。
圖13 不同中值的二值化效果
中值80是指將灰度值大于80的部分設(shè)定為白色,灰度值小于80的部分設(shè)定為黑色;中值127是指將灰度值大于127的部分設(shè)定為白色,灰度值小于127的部分設(shè)定為黑色[10];將圖像調(diào)整為只有黑白的效果。
針對(duì)光線較強(qiáng)的1圖,中值為80時(shí)表盤信息較弱,有可能丟失重要信息;中值為127時(shí),表盤信息較為清晰,可用作后續(xù)處理。
針對(duì)光線較暗的2圖,中值為80時(shí)表盤清晰,可以用作后續(xù)處理,但是中值為127時(shí),表盤黑色部分較多,有可能丟失重要信息。
若在程序中人為的設(shè)定中值,在不同的光線條件下,處理效果不同,可能會(huì)導(dǎo)致結(jié)果的偏差。
分為了使圖像二值化的更加智能,使其無(wú)論在怎樣的背景下都能有好的處理效果,本文采用K-means聚類二值化來(lái)處理圖像。
K-means算法是一種基于距離的聚類方法,評(píng)價(jià)不同像素點(diǎn)的相似性的評(píng)價(jià)指標(biāo)是距離。距離越近的對(duì)象,說(shuō)明其相似度越大[11-14]。各個(gè)像素點(diǎn)數(shù)據(jù)事先并沒(méi)有類別之分,該方法的核心思想是通過(guò)迭代尋找m個(gè)類簇,得到這m個(gè)類簇的灰度值的均值來(lái)代表各自的樣本,使得各個(gè)樣本的誤差和達(dá)到最小。也就是各聚類點(diǎn)的灰度值本身要盡可能的緊湊,而各聚類之間要盡可能的遠(yuǎn)離[15-18]。
該算法的基礎(chǔ)是每個(gè)類別的每一個(gè)參數(shù)與該類別的均值做差的平方和加上其他所有類的平方和的總和要達(dá)到最小。即最小誤差平方和準(zhǔn)則。
(3)
式中,μc(i)表示第i個(gè)聚類的均值。
各類別的樣本越相似,與該類別的均值間的誤差平方和越小。當(dāng)平方和達(dá)到最小時(shí),就認(rèn)為聚類為最優(yōu)解。
算法流程圖如圖14所示。
圖14 K-means二值化算法流程圖
由于圖像是由RGB三個(gè)通道的圖像組成,所以圖像被分為兩個(gè)類簇后,得到的聚類中心為2×3的矩陣。第一類簇偏向白色;第二類簇偏向黑色。
聚類方法[19-20]使得圖像迭代多次后自動(dòng)篩選出白色的類簇和黑色的類簇,如圖15所示。
圖15 k-means二值化效果圖
不論是圖15中的1圖還是2圖,圖像的二值化效果都不錯(cuò),可以大大提高儀表識(shí)別的精度,降低圖像數(shù)據(jù)量,提高識(shí)別速度。
由于重要的信息如均在表盤上,為了進(jìn)一步簡(jiǎn)化數(shù)據(jù)量,采用內(nèi)切圓算法,將表盤以外的所有像素點(diǎn)清除,流程圖如圖16所示。
圖16 內(nèi)切圓算法流程圖
要得到圖像的內(nèi)切圓,首先需要將圖像較短的一條邊記為d,再遍歷圖像中所有的像素點(diǎn)與圖像中點(diǎn)的距離r,比較d/2與r的長(zhǎng)度,如果r較大,說(shuō)明該像素點(diǎn)處在表盤之外,置為白色即可;如果r較小,說(shuō)明該像素點(diǎn)處在表盤之內(nèi),則不必更改該像素點(diǎn)灰度值。該算法得到的圖像數(shù)據(jù)量小,且重要信息都得到了有效的保留,去除背景信息,使其應(yīng)對(duì)復(fù)雜背景也擁有一定的魯棒性,為后續(xù)的處理提供了重要保障。
經(jīng)過(guò)內(nèi)切圓算法處理的效果如圖17所示。
圖17 內(nèi)切圓儀表效果圖
內(nèi)切圓算法使得圖像重要信息得到保留的基礎(chǔ)上,降低了數(shù)據(jù)量。
在識(shí)別儀表的過(guò)程中,最重要的一步是要識(shí)別指針的角度,在通過(guò)角度換算得到儀表的示數(shù)。
本文采用旋轉(zhuǎn)的虛擬直線擬合法,添加一條直線從圖像中點(diǎn)指向表盤刻度,直線從右邊的0度位置順時(shí)針繞著圖像中點(diǎn)旋轉(zhuǎn),見(jiàn)下圖。
圖18中的紅色直線為虛擬直線,該直線通過(guò)表盤中點(diǎn),長(zhǎng)度設(shè)為表盤半徑的十分之九,由零度位置旋轉(zhuǎn)360度。
圖18 虛擬直線旋轉(zhuǎn)360度
圖19為直線零度位置示意圖,紅色直線旋轉(zhuǎn)過(guò)程中精確計(jì)算直線與表盤指針的重合度,圖20反映了紅線在旋轉(zhuǎn)過(guò)程中與圖18的表盤中的黑色像素點(diǎn)重合的數(shù)量。重合度最高的點(diǎn)所對(duì)應(yīng)的角度數(shù)就是表盤指針的角度。
圖19 度數(shù)示意圖
圖20 直線與表盤黑色像素點(diǎn)重合數(shù)量
通過(guò)觀察上圖可以發(fā)現(xiàn)重合度在270°左右達(dá)到最高點(diǎn),93°左右是次高點(diǎn),符合儀表狀態(tài),最高點(diǎn)是指針指向的度數(shù),次高點(diǎn)是指針后端指向的度數(shù)。此時(shí)程序認(rèn)為270°即為儀表指向的角度。
取得儀表指針指向的角度并不能夠知道儀表指針的刻度值,需要進(jìn)行相應(yīng)的計(jì)算。本文選擇將度數(shù)與特殊刻度值一一對(duì)應(yīng),選定的刻度值有:0、1、2、3、4、5、6、7、8、9、10。選定圓心坐標(biāo)為(121,116),半徑為99,同時(shí)需要得到0刻度對(duì)應(yīng)的角度以及最大刻度對(duì)應(yīng)的角度。
本文所用案例的0刻度對(duì)應(yīng)的角度為135度,10刻度對(duì)應(yīng)的角度為45度,0~10之間刻度均勻分布,可計(jì)算每一個(gè)刻度之間相隔度數(shù)°。0刻度和10刻度之間間隔90°,剩余度數(shù)為360°-90°=270°,那么每一個(gè)刻度之間的間隔度數(shù)為270°/10=27°。根據(jù)對(duì)應(yīng)的角度,計(jì)算出X、Y坐標(biāo),對(duì)應(yīng)的坐標(biāo)計(jì)算結(jié)果如下表,刻度值用k表示,對(duì)應(yīng)角度用v表示。由于9刻度和10刻度對(duì)應(yīng)的角度跨過(guò)了0度線,所以需在在對(duì)應(yīng)度數(shù)的基礎(chǔ)上減去360度。具體對(duì)應(yīng)關(guān)系見(jiàn)表1。
表1 刻度與角度對(duì)應(yīng)關(guān)系
開(kāi)始計(jì)算3.3節(jié)傳回的儀表指向的角度r所對(duì)應(yīng)的刻度值。
1)先計(jì)算傳回的角度r對(duì)應(yīng)刻度值的整數(shù)部分,定義整數(shù)部分為變量m。
刻度k[]與v[]存在一一對(duì)應(yīng)的關(guān)系,定義函數(shù)result[k]=v。通過(guò)將r與上表中的對(duì)應(yīng)角度v依次做對(duì)比,若r>v,則將m置為v對(duì)應(yīng)的刻度值k,繼續(xù)下一行比較,直到r<=v,跳出循環(huán)。此時(shí)的m為實(shí)際刻度的整數(shù)部分。
2)計(jì)算傳回的角度r對(duì)應(yīng)刻度值的小數(shù)部分,定義小數(shù)部分為變量t,小數(shù)部分所占角度為d,見(jiàn)圖21。
圖21 小數(shù)部分刻度關(guān)系圖示
可知,儀表盤中相鄰兩個(gè)數(shù)之間所占得小格子為10個(gè),要得到小數(shù)部分,必須知道小數(shù)部分占了幾個(gè)格子。
t=0.1×d/(D÷10)
(4)
D÷10為每個(gè)格子所占得角度,d/(D÷10)計(jì)算結(jié)果為小數(shù)部分占幾個(gè)小格,一個(gè)小格為0.1。上式可以簡(jiǎn)化為
t=d/D
(5)
儀表的刻度總數(shù)P可用下式表示:
P=m+t
(6)
本文使用的四足機(jī)器人巡檢平臺(tái)如圖22所示,機(jī)器人機(jī)身內(nèi)置1臺(tái)慣性測(cè)量單元,頭部面板處安裝2臺(tái)Intel Realsense深度攝像機(jī),用于充當(dāng)機(jī)器人的眼睛采集圖像,在本文中重點(diǎn)采集待檢測(cè)儀表的圖像。
圖22 巡檢機(jī)器人巡檢平臺(tái)
圖23 UWB定位系統(tǒng)
在室外的天然氣站場(chǎng)真實(shí)環(huán)境,依靠UWB定位系統(tǒng),提供給子任務(wù)一所需要的機(jī)器人及儀表所處的全局坐標(biāo),傳感器精度可達(dá)到厘米級(jí),誤差小。
在室外的天然氣站場(chǎng),巡檢機(jī)器人到達(dá)巡檢的指定位置后,拍攝視野中的圖像,并傳到機(jī)器人的主控端進(jìn)行識(shí)別。該巡檢機(jī)器人上安裝的攝像機(jī)為Intel Realsense深度相機(jī),里面包含的攝像機(jī)參數(shù)如表2所示。
表2 攝像機(jī)參數(shù)
本次儀表檢測(cè)的四足機(jī)器人環(huán)境為:Ubuntu操作系統(tǒng),Python語(yǔ)言,OpenCV開(kāi)源庫(kù)。在Anaconda平臺(tái)上開(kāi)展深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)算法的訓(xùn)練,安裝了CUDA運(yùn)算平臺(tái),以Tensorflow作為深度學(xué)習(xí)算法框架。訓(xùn)練算法的實(shí)驗(yàn)硬件平臺(tái)為:Intel(R)Core(TM)i7-9700 CPU @ 3.00 GH,8核16 G 內(nèi)存,NVIDIA GeForce GTX 2070 GPU,4 G獨(dú)立顯存。
本文按照子任務(wù)一和子任務(wù)二進(jìn)行聯(lián)合訓(xùn)練測(cè)試,運(yùn)動(dòng)過(guò)程如圖所示,對(duì)四足機(jī)器人運(yùn)動(dòng)過(guò)程中訓(xùn)練輪數(shù)及平均執(zhí)行動(dòng)作數(shù)進(jìn)行分析,結(jié)果見(jiàn)圖24~25。
圖24 任務(wù)完成率
圖25 平均動(dòng)作次數(shù)
由圖可知,前2 000輪訓(xùn)練內(nèi),機(jī)器人尚未完全“理解”任務(wù)規(guī)則,大部分回合因機(jī)身目標(biāo)姿態(tài)超出運(yùn)動(dòng)空間而失敗,僅有的成功是由于初始化時(shí)儀表恰處于畫面中心位置,因此該階段數(shù)據(jù)不具有參考性。隨后的訓(xùn)練中機(jī)器人表現(xiàn)逐漸穩(wěn)定,從第3 000輪至第7 000輪訓(xùn)練機(jī)器人基本能以百分之百的成功率將相機(jī)鏡頭對(duì)準(zhǔn)儀表,并且平均執(zhí)行動(dòng)作數(shù)在25步到30步之間。
本文按照虛擬直線擬合法進(jìn)行測(cè)試,在圖像的左上角輸出讀到的指針參數(shù),見(jiàn)圖26。
圖26 識(shí)別效果
由圖26可以看出,在不同環(huán)境背景下,儀表識(shí)別的結(jié)果都與儀表實(shí)際的示數(shù)相近,本文使用了20張不同環(huán)境下的不同儀表圖像進(jìn)行儀表識(shí)別算法,識(shí)別結(jié)果如表3所示。
表3 儀表識(shí)別結(jié)果
絕對(duì)誤差表達(dá)式見(jiàn)下式:
ε=x-a
(7)
相對(duì)誤差表達(dá)式為下式:
(8)
由表3可以看出,本文論述的指針式儀表讀數(shù)方法識(shí)別的指針讀數(shù)絕對(duì)誤差都在0.12 V以下,相對(duì)誤差都在2.6%以下,該參數(shù)比較依賴真實(shí)數(shù)值a的大小,若真實(shí)電壓值較小,那么相對(duì)誤差很容易大。整體來(lái)看,儀表示數(shù)的讀取準(zhǔn)確率較高,能夠正確的讀取示數(shù)服務(wù)于站場(chǎng)的巡檢工作。
本文提出了一種基于四足機(jī)器人作為載體運(yùn)動(dòng)控制,并通過(guò)深度強(qiáng)化學(xué)習(xí)(DQN)進(jìn)行目標(biāo)追蹤任務(wù)和圖像處理來(lái)讀取儀表示數(shù)的新方法。首先通過(guò)改進(jìn)的DQN算法的深度網(wǎng)絡(luò)模型,根據(jù)仿真的環(huán)境中機(jī)器人學(xué)習(xí)效果,設(shè)計(jì)并調(diào)整動(dòng)作獎(jiǎng)勵(lì)函數(shù),設(shè)計(jì)機(jī)器人頂層決策控制系統(tǒng)。實(shí)現(xiàn)一維與二維狀態(tài)參數(shù)輸入下的儀表目標(biāo)追蹤任務(wù)。其次在儀表定位和儀表配準(zhǔn)的基礎(chǔ)上,通過(guò)K-means聚類二值化處理得到刻度分明的表盤;將圖像進(jìn)行內(nèi)切圓處理,清除表盤以外的背景信息,降低圖像數(shù)據(jù)量的同時(shí)保證圖像質(zhì)量,再在圖像中間添加一根指針進(jìn)行旋轉(zhuǎn),旋轉(zhuǎn)過(guò)程中精確計(jì)算指針與表盤重合度最高的角度來(lái)得到對(duì)應(yīng)刻度。
本文算法可實(shí)現(xiàn)運(yùn)動(dòng)過(guò)程中儀表目標(biāo)的精準(zhǔn)追蹤和降低計(jì)算時(shí)間,并大大提高了儀表追蹤與識(shí)別的精度和效率,為天然氣站場(chǎng)的儀表安全監(jiān)控提供了有效保障。