黃知坤,文 煒,劉 明,張香怡,劉凱書,黃 騰,顧繼俊
(1.國家管網集團川氣東送天然氣管道有限公司,武漢 430074;2.中國石油大學(北京)機械與儲運工程學院,北京 102200)
隨著國內輸油氣管道與沿途站場規模的不斷增長,利用機器人替代人工巡檢成為當下研究重點。四足機器人具備高機動性與良好的越障能力,在油氣站場巡檢方面具有良好的應用前景。需要機器人根據現場環境變化與巡檢指令進行自主多自由度組合控制,因此需要為機器人設計出頂層決策控制系統替代人工控制。
指針式儀表由于造價較低,結構簡單,使用方便,結實耐用等原因[1],大量存在于工業環境、生活環境、農業生產、醫療設備、國家航空等領域,在這些行業發揮著至關重要且基礎的作用。是實時檢測環境、檢測數據、收集數據的一種好工具,具有非常廣泛的應用場景。
目前,機器學習(ML)技術在大數據分析、圖像識別、自動駕駛等人工智能領域表現出卓越的性能,使四足機器人的自主決策成為可能。深度強化學習(DRL)作為機器學習的重要分支,它既具備深度學習(DL)對復雜環境狀態的擬合與刻畫能力,又能夠像強化學習(RL)一樣對智能體施加動作決策,在一些控制領域其表現已經高于人類水平[2-4]。儀表讀數識別算法得到了一定的發展,大多將機器視覺和人工智能結合起來,但是依舊有很多問題都沒有被解決,因此導致了沒有一套成熟的算法可以大規模的推廣應用,只能在某些小規模、定制化的場景下使用,魯棒性和普適性都不高。再者,油氣田站場等室外環境的儀表自動讀數會受光照條件、天氣狀況的影響,容易造成讀數失敗[5]。因此,需要研發出更加具有普適性的讀表算法來解決這些問題。
本文針對天然氣站場指針式儀表智能識別追蹤,包括以下幾個部分:儀表目標追蹤、儀表定位、儀表配準、示數識別,流程見圖1所示。

圖1 儀表追蹤及讀數方法研究內容
本文在目標追蹤方面,將采用DQN實現四足機器人在油氣站場巡檢進行儀表目標追蹤仿真過程,通過基于坐標引導的目標追蹤任務和基于視覺引導的目標追蹤任務兩種子任務,驗證DQN在四足機器人運動控制上的性能表現,以達到儀表目標追蹤的結果。在儀表智能檢測方面,采用基于改進的YOLOv5算法,在卷積神經網絡的基礎上,自制儀表樣本數據集并訓練模型文件、優化權重文件;再通過YOLOv5算法識別四足機器人定點采集的圖像中的儀表,并標出儀表位置。在角度調整方面,采用了基于改進的SIFT的圖像配準算法,得到高質量的利于儀表示數讀取的圖像。在儀表示數讀取方面,利用K_means聚類的二值化算法得到指針信息突出的表盤,并通過角度與儀表盤示數的關系,得到儀表示數。
為解決巡檢過程中儀表目標實時追蹤,本文提出了基于DQN模型的目標追蹤算法,可實現定位系統、機器人視覺與運動控制融為一體。首先通過將儀表目標追蹤任務分為基于坐標引導的目標追蹤和基于視覺引導的目標追蹤兩個子任務,其次在第一個子任務中,通過四足機器人本身、傳感器儀表目標的定位及DQN模型,實現目標的粗追蹤。受定位傳感器測量精度影響,子任務一難以達到規定精度,因此在第二個子任務中,設定機器人足端保持靜止,通過視覺引導,控制機身做上下俯仰和左右扭轉做高精度目標追蹤。
四足機器人頭部安裝深度相機,可控制自身旋轉速度使位于正前方4米處的管道儀表進入視野,如圖2所示。任務中,仿真環境反饋機器人機身和目標儀表的三維坐標,與機器人機身歐拉角,同類型參數在現實環境可通過UWB定位系統和IMU測得。
1.1.1 模型搭建
該任務的環境參量為機器人與儀表空間坐標、機器人機身傾角,動作參量為兩個正負相反數值相同的角加速度,此外,累加每輪動作執行的角加速度可間接得到機器人角速度作為環境參量的補充。由此可見,環境空間參量均為連續變量,即環境空間連續,而動作空間為離散參量,可以根據狀態查表方式選擇當前狀態下價值最高的動作,傳統Q學習算法無法解決連續狀態空間問題,因此針對該任務選擇DQN算法作為訓練模型。訓練模型如圖3所示

圖3 DQN算法模型
深度Q網絡(DQN)是在Q學習算法基礎上增加神經網絡的學習方法,利用神經網絡可以較好地處理連續狀態空間問題。圖中,環境對應仿真環境,經驗池用以存儲訓練過程中采集的狀態、動作、獎勵和更新后的狀態,目標網絡與在線網絡組成DQN模型中的深度神經網絡部分,損失函數用以計算實際價值與預測價值的誤差并更新神經網絡參數。至于參數,s與s,為機器人狀態向量,a為機器人所執行動作,r為狀態s時刻機器人采取動作a所獲得的實際回報,Q(s,a;θ)表示參數為θ的神經網絡預測動作a的價值。
狀態向量s包含9個元素,其形式如下:
(1)
式(1)中前3個元素為機器人機身坐標,中間3個元素為目標儀表坐標,最后3個元素分別表示機器人在Pitch軸和Roll軸傾角以及機器人圍繞水平面旋轉的目標速度,最后一組元素描述機器人機身穩定性,由于機身旋轉速度過快會造成摔倒,故將累加產生的目標速度也作為狀態參量。同時由于目標位置固定,為防止訓練過程動作的選取依賴世界坐標系,故Yaw軸轉角不計入狀態參量。
1.1.2 訓練測試與結果分析
任務訓練在Pybullet仿真環境進行,將DQN訓練程序與機器人控制程序分為兩個線程進行。線程將每次任務訓練從開始至結束定義為一回合,期間累加選擇動作的次數作為機器人運動時間衡量,每輪回合結束分為3種情況:
1)機器人通過運動滿足完成條件,任務成功;
2)機器人運動中途摔倒,任務失敗;
3)機器人運動次數超過上限將視為超時。
另外,訓練次數等于DQN模型更新次數,當訓練次數超過規定上限立即保存參數模型結束訓練。任務執行過程回放如圖4所示。

圖4 DQN任務執行過程回放
DQN模型初始化參數設置如下:最大訓練次數10 000,學習率0.01,折扣因子0.9,貪心因子0.9,神經網絡復制間隔500周期。同時,每隔1 000次訓練記錄模型損失并保存保存該時刻模型參數,結果如圖5所示。可見隨著訓練進行模型損失曲折下降,損失逐漸收斂趨勢,訓練前期模型損失下降較快,當訓練至第6 000輪時模型損失達到最小,而后損失稍有上升并小幅波動。

圖5 損失函數曲線圖
第二個子任務主要在第一個子任務基礎上進行,設定機器人通過自身旋轉運動已經將儀表納入攝像機視野,同時機器人與目標儀表的距離也進入了攝像頭的視距范圍,此時需要將儀表.影響移動至攝像機畫面中央(圖6),以便后續讀取儀表示數。

圖6 任務仿真環境
本任務的環境狀態s將不再包括位置坐標,取而代之的是機載相機的視覺畫面,這要求機器人能夠“看懂”畫面內容并引導自身朝向目標方向調整姿態。同時,為防止目標位姿超出機器人活動空間,也需將目標位姿作為極限位置參考加入環境觀測量。機器人方面,實現機器人在全運動空間內的位姿調整。
對于模型的搭建大體上與前節任務相同,根據任務內容變化做如下調整:環境狀態定義如下:
s=[Mphoto,θt_p,θt_y]
(2)
式(2)中Mphoto為攝像機單幀圖片矩陣,原圖為640×480的三通道彩色圖片,為降低神經網絡權重數量提高訓練速度同時便于經驗存儲,將原圖轉換為單通道灰度圖片,并將原二維像素矩陣壓縮重構至長度為48×64的一維向量。θt_p和θt_y是機器人在Pitch和Yaw旋轉軸上的目標角度。
本任務的狀態觀測量為二維矩陣與一維向量的組合形式,考慮到需處理圖片數據,網絡模型主體應包含卷積神經網絡(CNN),同時需對網絡模型進行調整以兼容一維狀態參數。受InceptionV3模型啟發,建立并聯式強化學習在線/目標網絡模型如圖7所示。

圖7 改進后DQN的深度網絡部分模型
該模型首先對輸入的灰度圖像做卷積、池化處理減少網絡節點數量,而后設置四層全連接神經網絡,將卷積處理產生的一維圖像參數與一維位置參數拼接合并作為全連接網絡的輸入層,最終通過正向傳播輸出4種動作的概率分布。在全連接層部分,隱藏層之間采用Relu函數做非線性激活,隱藏層至輸出層采用Softmax函數激活確保所有輸出動作概率和為1。
1.2.1 訓練測試與結果分析
DQN模型初始化參數設置如下:最大訓練次數10 000,學習率0.06,折扣因子0.9,貪心因子0.9,神經網絡復制間隔50周期。每回合訓練開始時,機器人Yaw軸角度隨機設置在正負30°的區間內,保證表盤完整出現在相機視野中。同時,每隔1 000次訓練記錄模型損失并保存保存該時刻模型參數,結果如圖8所示。與任務一的訓練結果相似,前1 000輪訓練過程模型快速收斂,之后模型損失趨于穩定并伴隨小幅波動,當訓練結束即訓練至第10 000輪時,模型損失降至最低。任務執行過程回放如圖9所示。

圖8 損失函數曲線圖

圖9 任務執行過程回放
通過兩個子任務證明,采用DQN算法能夠將機器人視覺與運動控制融為一體,機器人能夠根據任務獎勵條件對輸入圖片進行自主分析處理,形成穩定的動作策略,人員通過調整獎勵條件即可指導機器人學習,無需涉足圖片分析過程,便可達到對儀表的目標追蹤。
本文采用卷積神經網絡算法作為儀表定位的基礎,由于基于深度學習的卷積神經網絡的基礎是大量的數據。本文利用COCO數據集進行數據處理,該數據集包含了生活當中常用的大部分物體的樣本集以及對應的標注集。根據2018年的數據[6],目前公開的數據當中并不能夠找到有關儀表的訓練樣本集,因此,從天然氣站場實地拍攝了大量的儀表圖像作為基礎,并完成圖像的標注和反復迭代的訓練任務,生成識別所需要的數據樣本集。
在樣本數據集的基礎上,使用YOLOv5算法進行儀表識別,識別效果見圖10。

圖10 儀表識別效果圖
由圖10可以看出,識別效果較好,儀表識別出來的置信度較高。
攝像頭在固定位置檢測到儀表模塊后,需要將檢測到的儀表模塊修正為模板視角。只有經過修正的圖像才能夠繼續進行下一步示數的讀取,否則很容易因為圖像拍攝角度等原因造成采集到的儀表存在傾斜問題,造成讀數存在誤差。因此本文針對儀表傾斜問題使用改進的SIFT算法進行儀表圖像的修正運算。修正步驟如圖11所示。

圖11 儀表配準步驟
由于指針式儀表都需要讀取指針,對于直線檢測的研究從未間斷。目前識別指針的方法主要有Hough算法[7]及其改進算法、Bresenham[8]算法、最小二乘法等。Hough變換可以讀到邊界,但是儀表識別過程中線條并不單一,難以分類,且并不能夠讀到儀表指針的長度。Bresenham算法和最小二乘法都無法過濾噪聲,在考慮光照環境和外界天氣條件時,處理結果并不理想。
本文提出了一種新的儀表示數讀數方法,該方法對計算機的要求較低,不需要深度學習網絡,只需要簡單的算法就可以進行儀表的識別,識別流程見圖12。

圖12 儀表示數識別流程圖
針對修正后的圖像,需要對表盤進行處理后再讀取指針,由于天然氣站場環境復雜,背景雜亂,直接對圖像進行簡單的二值化處理后進行讀數會加大計算的難度。本文通過K-means聚類并保留內切圓的方法對圖像進行二值化處理,得到表盤清晰的圖像后,用虛擬直線擬合法添加一根過中點的直線,旋轉360度得到與指針重合度最高的角度,從而得到指針的角度,最終得到指針指向的刻度。
圖像二值化是指給彩色的圖像設置閾值,大于閾值的所有像素點的灰度值都設置為255(白色),小于閾值的所有像素點的灰度值都設置為0(黑色),將整個圖像變為黑白圖像[9]。可以使圖像的數據量大幅度減少,減少運算的負擔。
為了突出儀表中的主要因素,例如:刻度、數字、圓心、表盤等。本文針對機器人識別的兩幅儀表圖像做二值化處理,中值分別取80和127。針對圖13中的1圖和2圖分別作不同參數的二值化處理,見圖13。

圖13 不同中值的二值化效果
中值80是指將灰度值大于80的部分設定為白色,灰度值小于80的部分設定為黑色;中值127是指將灰度值大于127的部分設定為白色,灰度值小于127的部分設定為黑色[10];將圖像調整為只有黑白的效果。
針對光線較強的1圖,中值為80時表盤信息較弱,有可能丟失重要信息;中值為127時,表盤信息較為清晰,可用作后續處理。
針對光線較暗的2圖,中值為80時表盤清晰,可以用作后續處理,但是中值為127時,表盤黑色部分較多,有可能丟失重要信息。
若在程序中人為的設定中值,在不同的光線條件下,處理效果不同,可能會導致結果的偏差。
分為了使圖像二值化的更加智能,使其無論在怎樣的背景下都能有好的處理效果,本文采用K-means聚類二值化來處理圖像。
K-means算法是一種基于距離的聚類方法,評價不同像素點的相似性的評價指標是距離。距離越近的對象,說明其相似度越大[11-14]。各個像素點數據事先并沒有類別之分,該方法的核心思想是通過迭代尋找m個類簇,得到這m個類簇的灰度值的均值來代表各自的樣本,使得各個樣本的誤差和達到最小。也就是各聚類點的灰度值本身要盡可能的緊湊,而各聚類之間要盡可能的遠離[15-18]。
該算法的基礎是每個類別的每一個參數與該類別的均值做差的平方和加上其他所有類的平方和的總和要達到最小。即最小誤差平方和準則。
(3)
式中,μc(i)表示第i個聚類的均值。
各類別的樣本越相似,與該類別的均值間的誤差平方和越小。當平方和達到最小時,就認為聚類為最優解。
算法流程圖如圖14所示。

圖14 K-means二值化算法流程圖
由于圖像是由RGB三個通道的圖像組成,所以圖像被分為兩個類簇后,得到的聚類中心為2×3的矩陣。第一類簇偏向白色;第二類簇偏向黑色。
聚類方法[19-20]使得圖像迭代多次后自動篩選出白色的類簇和黑色的類簇,如圖15所示。

圖15 k-means二值化效果圖
不論是圖15中的1圖還是2圖,圖像的二值化效果都不錯,可以大大提高儀表識別的精度,降低圖像數據量,提高識別速度。
由于重要的信息如均在表盤上,為了進一步簡化數據量,采用內切圓算法,將表盤以外的所有像素點清除,流程圖如圖16所示。

圖16 內切圓算法流程圖
要得到圖像的內切圓,首先需要將圖像較短的一條邊記為d,再遍歷圖像中所有的像素點與圖像中點的距離r,比較d/2與r的長度,如果r較大,說明該像素點處在表盤之外,置為白色即可;如果r較小,說明該像素點處在表盤之內,則不必更改該像素點灰度值。該算法得到的圖像數據量小,且重要信息都得到了有效的保留,去除背景信息,使其應對復雜背景也擁有一定的魯棒性,為后續的處理提供了重要保障。
經過內切圓算法處理的效果如圖17所示。

圖17 內切圓儀表效果圖
內切圓算法使得圖像重要信息得到保留的基礎上,降低了數據量。
在識別儀表的過程中,最重要的一步是要識別指針的角度,在通過角度換算得到儀表的示數。
本文采用旋轉的虛擬直線擬合法,添加一條直線從圖像中點指向表盤刻度,直線從右邊的0度位置順時針繞著圖像中點旋轉,見下圖。
圖18中的紅色直線為虛擬直線,該直線通過表盤中點,長度設為表盤半徑的十分之九,由零度位置旋轉360度。

圖18 虛擬直線旋轉360度
圖19為直線零度位置示意圖,紅色直線旋轉過程中精確計算直線與表盤指針的重合度,圖20反映了紅線在旋轉過程中與圖18的表盤中的黑色像素點重合的數量。重合度最高的點所對應的角度數就是表盤指針的角度。

圖19 度數示意圖

圖20 直線與表盤黑色像素點重合數量
通過觀察上圖可以發現重合度在270°左右達到最高點,93°左右是次高點,符合儀表狀態,最高點是指針指向的度數,次高點是指針后端指向的度數。此時程序認為270°即為儀表指向的角度。
取得儀表指針指向的角度并不能夠知道儀表指針的刻度值,需要進行相應的計算。本文選擇將度數與特殊刻度值一一對應,選定的刻度值有:0、1、2、3、4、5、6、7、8、9、10。選定圓心坐標為(121,116),半徑為99,同時需要得到0刻度對應的角度以及最大刻度對應的角度。
本文所用案例的0刻度對應的角度為135度,10刻度對應的角度為45度,0~10之間刻度均勻分布,可計算每一個刻度之間相隔度數°。0刻度和10刻度之間間隔90°,剩余度數為360°-90°=270°,那么每一個刻度之間的間隔度數為270°/10=27°。根據對應的角度,計算出X、Y坐標,對應的坐標計算結果如下表,刻度值用k表示,對應角度用v表示。由于9刻度和10刻度對應的角度跨過了0度線,所以需在在對應度數的基礎上減去360度。具體對應關系見表1。

表1 刻度與角度對應關系
開始計算3.3節傳回的儀表指向的角度r所對應的刻度值。
1)先計算傳回的角度r對應刻度值的整數部分,定義整數部分為變量m。
刻度k[]與v[]存在一一對應的關系,定義函數result[k]=v。通過將r與上表中的對應角度v依次做對比,若r>v,則將m置為v對應的刻度值k,繼續下一行比較,直到r<=v,跳出循環。此時的m為實際刻度的整數部分。
2)計算傳回的角度r對應刻度值的小數部分,定義小數部分為變量t,小數部分所占角度為d,見圖21。

圖21 小數部分刻度關系圖示
可知,儀表盤中相鄰兩個數之間所占得小格子為10個,要得到小數部分,必須知道小數部分占了幾個格子。
t=0.1×d/(D÷10)
(4)
D÷10為每個格子所占得角度,d/(D÷10)計算結果為小數部分占幾個小格,一個小格為0.1。上式可以簡化為
t=d/D
(5)
儀表的刻度總數P可用下式表示:
P=m+t
(6)
本文使用的四足機器人巡檢平臺如圖22所示,機器人機身內置1臺慣性測量單元,頭部面板處安裝2臺Intel Realsense深度攝像機,用于充當機器人的眼睛采集圖像,在本文中重點采集待檢測儀表的圖像。

圖22 巡檢機器人巡檢平臺

圖23 UWB定位系統
在室外的天然氣站場真實環境,依靠UWB定位系統,提供給子任務一所需要的機器人及儀表所處的全局坐標,傳感器精度可達到厘米級,誤差小。
在室外的天然氣站場,巡檢機器人到達巡檢的指定位置后,拍攝視野中的圖像,并傳到機器人的主控端進行識別。該巡檢機器人上安裝的攝像機為Intel Realsense深度相機,里面包含的攝像機參數如表2所示。

表2 攝像機參數
本次儀表檢測的四足機器人環境為:Ubuntu操作系統,Python語言,OpenCV開源庫。在Anaconda平臺上開展深度學習的神經網絡算法的訓練,安裝了CUDA運算平臺,以Tensorflow作為深度學習算法框架。訓練算法的實驗硬件平臺為:Intel(R)Core(TM)i7-9700 CPU @ 3.00 GH,8核16 G 內存,NVIDIA GeForce GTX 2070 GPU,4 G獨立顯存。
本文按照子任務一和子任務二進行聯合訓練測試,運動過程如圖所示,對四足機器人運動過程中訓練輪數及平均執行動作數進行分析,結果見圖24~25。

圖24 任務完成率

圖25 平均動作次數
由圖可知,前2 000輪訓練內,機器人尚未完全“理解”任務規則,大部分回合因機身目標姿態超出運動空間而失敗,僅有的成功是由于初始化時儀表恰處于畫面中心位置,因此該階段數據不具有參考性。隨后的訓練中機器人表現逐漸穩定,從第3 000輪至第7 000輪訓練機器人基本能以百分之百的成功率將相機鏡頭對準儀表,并且平均執行動作數在25步到30步之間。
本文按照虛擬直線擬合法進行測試,在圖像的左上角輸出讀到的指針參數,見圖26。

圖26 識別效果
由圖26可以看出,在不同環境背景下,儀表識別的結果都與儀表實際的示數相近,本文使用了20張不同環境下的不同儀表圖像進行儀表識別算法,識別結果如表3所示。

表3 儀表識別結果
絕對誤差表達式見下式:
ε=x-a
(7)
相對誤差表達式為下式:
(8)
由表3可以看出,本文論述的指針式儀表讀數方法識別的指針讀數絕對誤差都在0.12 V以下,相對誤差都在2.6%以下,該參數比較依賴真實數值a的大小,若真實電壓值較小,那么相對誤差很容易大。整體來看,儀表示數的讀取準確率較高,能夠正確的讀取示數服務于站場的巡檢工作。
本文提出了一種基于四足機器人作為載體運動控制,并通過深度強化學習(DQN)進行目標追蹤任務和圖像處理來讀取儀表示數的新方法。首先通過改進的DQN算法的深度網絡模型,根據仿真的環境中機器人學習效果,設計并調整動作獎勵函數,設計機器人頂層決策控制系統。實現一維與二維狀態參數輸入下的儀表目標追蹤任務。其次在儀表定位和儀表配準的基礎上,通過K-means聚類二值化處理得到刻度分明的表盤;將圖像進行內切圓處理,清除表盤以外的背景信息,降低圖像數據量的同時保證圖像質量,再在圖像中間添加一根指針進行旋轉,旋轉過程中精確計算指針與表盤重合度最高的角度來得到對應刻度。
本文算法可實現運動過程中儀表目標的精準追蹤和降低計算時間,并大大提高了儀表追蹤與識別的精度和效率,為天然氣站場的儀表安全監控提供了有效保障。