朱志巍 陳華東 張 潔
(1海軍工程大學(xué),武漢,430033;2 31131部隊,南京,210016)
水下機器人是先進機器人技術(shù)在水下的特殊應(yīng)用,近幾十年來,隨著科技的不斷發(fā)展,水下機器人技術(shù)取得長足進步,繼而出現(xiàn)了一大批性能良好的水下機器人,它們主要用于海底考察、鉆井支援、海底施工、數(shù)據(jù)采集、水下設(shè)備維護與維修等作業(yè)任務(wù)。
圖像是人類獲取信息的主要來源,也是智能機器人感知環(huán)境和識別目標的重要信息源之一。圖像處理技術(shù)經(jīng)過幾十年的發(fā)展逐漸成熟,目前已廣泛應(yīng)用于航空航天、生物醫(yī)學(xué)工程、通信工程、工業(yè)檢測、軍事公安等領(lǐng)域[1]。
本文結(jié)合單關(guān)節(jié)機器魚(如圖1所示),即水下機器人創(chuàng)新平臺基礎(chǔ)版(下文稱機器魚)與輸油管巡檢技術(shù)挑戰(zhàn)賽的相關(guān)要求及比賽規(guī)則[2],提出利用STM32F429IGT6(下文簡稱STM32)核心板與OV2640攝像頭相結(jié)合進行圖像識別處理的方法,使得機器魚可以實現(xiàn)管道巡線、漏點檢測等功能。
圖1 單關(guān)節(jié)機器魚的整體圖(左)與分解圖(右)
輸油管巡檢技術(shù)挑戰(zhàn)賽比賽場地設(shè)置如圖2、圖3所示,將PVC 管鋪入水池底部用來模擬輸油管線,PVC 管直徑為75mm;采用直徑 3cm 的圓形實心黑色標記表示漏油處,共設(shè)置 8 個漏油處,隨機分布在輸油管各處,其中,有2個點分布在側(cè)面區(qū)域,2 個點分布在深水區(qū)。圖2中標識起點和終點所處的虛線方框內(nèi),上半部為起點區(qū),下半部分為終點區(qū),通過黑色膠帶標記規(guī)劃范圍。
圖2 比賽場地俯視圖
圖3 比賽場地側(cè)視圖
輸油管巡檢技術(shù)挑戰(zhàn)賽的比賽規(guī)則為:比賽開始前,機器魚在起點區(qū),不得超過分隔線;裁判吹哨示意比賽開始,同時比賽開始計時,由裁判遠程連接并啟動機器魚,啟動后不允許再進行任何操作;機器魚沿著輸油管線并按照白色箭頭指示方向游動,不得偏離管線,從正上方觀察,若機器魚在水平面上的投影與管線在水平面上的投影沒有重疊則比賽停止,計時結(jié)束;機器魚游動的同時檢測管線上是否有標記的漏油處,檢測到漏油處時通過某種方式及時告知裁判及觀眾,比如,聲音、光、回傳PC機數(shù)據(jù)等;機器魚全身都進入終點區(qū)時比賽結(jié)束,計時停止;比賽時間共計150s,如果150s后機器魚仍未到達終點區(qū),比賽亦停止。每條機器魚一共有兩次比賽機會,在比賽過程中不得暫停;比賽滿分120分,機器魚正確檢測到一個漏油處得 10 分,檢測到側(cè)面的漏油處和深水區(qū)的漏油處均得20 分。正確的檢測要求是:從正上方觀測到機器魚與漏油處重合,并且同時以明確的方式報告檢測到漏油處。如果機器魚在未遇到漏油處時進行報告則為誤報,扣10分。
本系統(tǒng)總體設(shè)計思路為:系統(tǒng)以STM32為主控核心,利用TIM定時器產(chǎn)生PWM信號,控制舵機擺動速度和方向使機器魚游動前進;通過DCMI接口接收圖像傳感器OV2640攝像頭采集的圖像,利用DMA數(shù)據(jù)流方式將圖像發(fā)送到SDRAM,在SRAM中對采集到的圖像數(shù)據(jù)進行實時處理。若圖像中出現(xiàn)漏油點,則通過GPIO端口輸出至蜂鳴器進行報警,若圖像中白色PVC管道沒有在視野中央,則利用PWM信號改變舵機姿態(tài)進行調(diào)直動作;若圖像中出現(xiàn)管道直角處,則利用PWM信號控制舵機姿態(tài)進行轉(zhuǎn)彎動作[3]。系統(tǒng)原理框圖如圖4所示。
圖4 系統(tǒng)原理框圖
本系統(tǒng)硬件主要包括STM32核心板、OV2640攝像頭傳感器、機器魚體(包含舵機、電源),其中機器魚體如圖1所示。
本系統(tǒng)選用ARM 公司設(shè)計的STM32核心板,其采用Cortex-M4 內(nèi)核(CPU),主頻達180MHz,具有1MB Flash,256KB SRAM,可接32M SDRAM,能存儲大容量程序和數(shù)據(jù);擁有2條APB總線、2條AHB總線和1個32位多AHB總線矩陣,可外掛如GPIO、DCMI等多種I/O和外設(shè)。因此,STM32可以設(shè)計實現(xiàn)對運算量有較高要求的實時圖像處理和舵機控制。
OV2640攝像頭傳感器主要包括控制寄存器、通信控制信號及外部時鐘、感光矩陣、DSP處理單元、數(shù)據(jù)輸出等。該傳感器不僅支持輸出像素最大為200萬的圖像(1600x1200分辨率),還支持使用VGA時序輸出圖像數(shù)據(jù),輸出圖像的數(shù)據(jù)格式支持YUV(422/420)、YCbCr422、RGB565以及JPEG格式,若直接輸出JPEG格式的圖像時可大大減少數(shù)據(jù)量,方便網(wǎng)絡(luò)傳輸。OV2640攝像頭傳感器還可以對采集到的圖像進行補償,支持伽瑪曲線、白平衡、飽和度、色度等基礎(chǔ)處理。根據(jù)不同的分辨率配置,傳感器輸出圖像數(shù)據(jù)的幀率在15-60幀之間均可以調(diào)節(jié),工作時功率在125-140mW之間。
系統(tǒng)主控器控制OV2640攝像頭時,采用SCCB協(xié)議讀寫其寄存器,輸出圖像時采用VGA時序,而且一幀一幀地輸出,在幀內(nèi)的數(shù)據(jù)一般從左到右、從上到下、一個像素一個像素地輸出。OV2640攝像頭采用Y2-Y9數(shù)據(jù)線,圖像格式設(shè)置為RGB565,在數(shù)據(jù)輸出時,Y2-Y9數(shù)據(jù)線會在1個像素同步時鐘PCLK的驅(qū)動下發(fā)送1字節(jié)的數(shù)據(jù)信號,所以2個PCLK時鐘可發(fā)送1個RGB565格式的像素數(shù)據(jù)。像素數(shù)據(jù)依次傳輸,每傳輸完一行數(shù)據(jù)時,行同步信號HREF會輸出一個電平跳變信號,每傳輸完一幀圖像時,VSYNC就會輸出一個電平跳變信號。
STM32的控制器包含DCMI數(shù)字攝像頭接口(Digital Camera Interface),它支持使用VGA時序獲取圖像數(shù)據(jù)流,支持原始的按行、幀格式來組織的圖像數(shù)據(jù),如YUV、RGB,也支持接收JPEG格式壓縮的數(shù)據(jù)流;接收數(shù)據(jù)時,主要使用HSYNC及VSYNC信號來同步。STM32的DCMI外設(shè)使用的通信時序與OV2640攝像頭的圖像數(shù)據(jù)輸出接口時序一致。
在STM32的內(nèi)部,采用HCLK作為時鐘源提供給DCMI外設(shè)。從DCMI引出有DCMI_IT信號至中斷控制器,并可通過DMA_REQ信號發(fā)送DMA請求。數(shù)字攝像頭接口每接收到32位數(shù)據(jù),觸發(fā)一次DMA請求,由于DCMI采集的數(shù)據(jù)量很大,此時可以使用DMA把采集的數(shù)據(jù)搬運至內(nèi)存[4]。
圖像采集原理框圖如圖5所示,STM32內(nèi)核、DCMI外設(shè)和OV2640攝像頭三者相互配合,OV2640攝像頭將圖像信息轉(zhuǎn)變?yōu)殡娦盘柡?,通過DCMI外設(shè)將數(shù)據(jù)存儲至STM32的SDRAM中,以便接下來對圖像數(shù)據(jù)信息進行分析處理。
圖5 圖像采集原理框圖
在圖像數(shù)據(jù)采集傳輸過程中,每采集一行數(shù)據(jù)需調(diào)用一次DMA數(shù)據(jù)傳輸,包含本次傳輸?shù)哪康氖椎刂芳皞鬏數(shù)臄?shù)據(jù)量。DMA每次傳輸完畢后會引起DMA中斷,以便在中斷服務(wù)函數(shù)中配置DMA傳輸下一行數(shù)據(jù)。同時,為了防止DMA有時出現(xiàn)傳輸錯誤或傳輸速度跟不上,導(dǎo)致數(shù)據(jù)錯位、偏移等問題,需要配置DCMI幀中斷。每次DCMI接收到OV2640攝像頭的一幀數(shù)據(jù),得到新的幀同步信號后(VSYNC),就進入中斷,復(fù)位DMA,同時將DMA傳輸?shù)哪康氖椎刂愤M行偏移,使它重新開始一幀的數(shù)據(jù)傳輸。這樣可以使采集數(shù)據(jù)連續(xù)不斷地傳入SDRAM中[5],從而實現(xiàn)圖像數(shù)據(jù)的連續(xù)傳輸。
在每一幀圖像傳輸完成后,系統(tǒng)對本幀圖像進行簡易的平滑濾波處理,以方便后續(xù)的圖像處理工作。因為白色PVC管道與藍色場地背景交界處、圓形實心黑點與白色PVC管道交界處顏色差異明顯,所以可利用此特點檢測圖像邊緣。抽取PVC管道和圓形實心黑點的輪廓,運用一階Sobel算子模板,利用像素鄰近區(qū)域的梯度值來計算一個像素的梯度,運算結(jié)果得到一幅邊緣幅度圖像。
在STM32核心板中存入PVC管道圖像模板、PVC管道直角處圖像模板和圓形實心黑點圖像模板信息。每一幀圖像邊緣檢測完成后,系統(tǒng)將得到的邊緣幅度圖像與事先存入的兩幅模板進行匹配,若邊緣幅度圖像中的PVC管道與標準的PVC管道圖像模板中的PVC管道不重合,說明機器魚偏離PVC管道,則輸出控制舵機信號,對機器魚體進行調(diào)直操作;若與PVC管道直角圖像模板匹配吻合,則輸出控制舵機信號,改變舵機姿態(tài)進行轉(zhuǎn)彎操作;若與圓形實心黑點圖像模板匹配吻合,則輸出信號使蜂鳴器報警。
通過上述圖像處理,本系統(tǒng)可滿足總體設(shè)計思路中提出的調(diào)直、轉(zhuǎn)彎、報警動作要求,實現(xiàn)機器魚具備管道巡線、漏點檢測的功能。
筆者按照上述內(nèi)容進行系統(tǒng)軟硬件設(shè)計,完成機器魚平臺的改裝和程序編寫燒錄后,搭建如圖2所示的場地進行最終測試分析。
經(jīng)多次調(diào)試、測試,機器魚能夠?qū)崿F(xiàn)沿PVC管道游動且不偏離管道。在游動的同時,機器魚會檢測管線上標記的漏油點,檢測到漏油點后通過蜂鳴器報警,沒有出現(xiàn)誤判或漏判的現(xiàn)象,最短耗時48s,取5次的調(diào)試測試結(jié)果如表1所示。
表1 機器魚測試結(jié)果記錄
測試結(jié)果表明:利用STM32核心板與OV2640攝像頭相結(jié)合進行圖像識別處理,使得機器魚在管道巡線、漏點檢測上取得了良好效果,機器魚不僅具備自主沿管道游動的能力,還能準確找到漏油點,可以認定:本方案達到設(shè)計要求。
在輸油管巡檢技術(shù)挑戰(zhàn)賽中,筆者及其團隊利用上述平臺參賽獲得了該項目的冠軍。由此可見,利用STM32核心板與OV2640攝像頭相結(jié)合進行圖像識別處理實現(xiàn)管道巡線、漏點檢測的設(shè)計方法具有明顯優(yōu)勢。同時,此類圖像處理設(shè)計思路對于實際工程應(yīng)用也具有很強的現(xiàn)實意義。