錢 平,顧才東,馬建圓,劉 鋒,李子龍
(蘇州市職業(yè)大學,江蘇 蘇州 215104)
近年來,隨著國家海洋開發(fā)步伐的加快,人工智能前沿技術的飛速發(fā)展,前沿的AI技術與海洋開發(fā)相結合必然是大勢所趨。隨著國家對海洋強國發(fā)展戰(zhàn)略的提升,在各級政府的引領下,智能水下機器人發(fā)展迅猛,水下機器人在軍事和民用領域都有著廣泛的應用[1]。由江蘇省教育廳主辦的江蘇省大學生機器人大賽水中機器人項目,貫徹了學科建設與課程實踐,加快教學深化改革,旨在培養(yǎng)當代大學生動手實踐能力、創(chuàng)新能力、團結協(xié)作能力,也積極為新一代人工智能發(fā)展規(guī)劃添磚加瓦,該賽項近幾年正如火如荼地舉辦著。
比賽項目規(guī)則介紹,首先將機器魚放于起點,不得超過起始線。當裁判吹哨時比賽即為開始,不能控制水下機器人使其自主游動。水下機器人沿著白色PVC管道進行巡跡游動,游動過程中將識別貼在白色PVC管道上的直徑為3 cm的黑色膠布點,并以聲音或者光等形式回傳,比賽結果以準確率優(yōu)先,準確率一致時時間短者獲勝[2]。以往比賽過程中大部分使用的是光電傳感器作為采集信息模塊,隨著機器視覺的不斷發(fā)展,開源的機器視覺模塊的應用,攝像頭采集的數據較其他模塊受周邊環(huán)境影響小,識別準確率高。因此,本比賽策略采用的是將開源OpenMV模塊應用于水下機器人來進行該項目的比賽。
基于OpenMV顏色圖像識別的水中巡檢智能機器人核心控制器采用的是STM32F103單片機,以電源管理模塊、驅動電路模塊、游動舵機模塊、OpenMV模塊和LED信號燈等模塊構成了整個硬件系統(tǒng)。數字攝像頭將采集到的圖像信號傳給OpenMV模塊,以OV7725感光元件作為機器視覺模塊,通過OV7725感光元件采集圖像并通過內置的圖像處理算法將信息傳遞給水下機器人的STM32控制器來控制機器魚游動速度、轉向等操作,并在檢測到管道黑點時以燈光閃爍作為檢測信號。整體結構如圖1所示。
圖1中主控制器采用STM32F103單片機為整個執(zhí)行系統(tǒng)的控制核心,該單片機集高性能、實時功能強、低功耗、數字信號處理能力強等優(yōu)點于一身。具有USART、I2C、定時器等豐富的外設,便于開發(fā)和應用[3]。
圖1 整體系統(tǒng)框
OpenMV攝像頭是一款小巧、低功耗、低成本的電路板,可以很輕松地完成機器視覺(Machine Vision)應用。OpenMV搭載Micro Python解釋器,使用Python來編程使機器視覺算法的編程變得比較簡單。OpenMV具有簡單的專用的IDE,它有自動提示、代碼高亮的功能,而且有一個圖像窗口可以直接看到攝像頭的圖像,有終端可以debug,還有一個包含圖像信息的直方圖[4]??梢园巡杉降膱D像算法結構通過串口傳遞給主控模塊,使得執(zhí)行模塊做出相應的動作。
電源模塊作為整個系統(tǒng)的供電系統(tǒng),為了保證水下機器人和OpenMV模塊正常工作,在用12.6V的鋰電池,降壓并穩(wěn)壓到5 V給單片機和OpenMV模塊供電,另一路直接給水下機器人魚尾電機供電。
基于OpenMV的水下機器人管道巡檢主要原理是利用攝像頭采集到的圖像信號通過串口傳遞給水下機器人執(zhí)行系統(tǒng)做出相應的動作。該模塊搭載了Micro Python解釋器,使用Python腳本語言編程實現一系列的功能。本識別系統(tǒng)主要應用到OpenMV的顏色識別功能,通過識別到的不同顏色及色域面積的大小等條件通過串口反饋給單片機使得水下機器人做出相應的動作。在正式比賽運行之前,首先對OpenMV模塊進行初始化,包括導入uart類等相應操作,設置串口波特率為9 600,初始化攝像頭,選擇像素模式 RGB565,設置為彩色,設置為QVGA模式的分辨率為320*240,關閉白平衡和自動增益,關鍵尋找色塊的色域設置white_thresholds=(minL,maxL,minA,maxA,minB,maxB)。這個函數表示白色管道的閾值,黑色標志為black_thresholds。通過提前拍攝管道圖片,設置閾值,將所得閾值即LAB值,代入代碼中,如圖2所示為色域參數的選擇和優(yōu)化,其中黑點是要識別的點,白色的為巡跡的管道。
圖2 色域選擇設置方法
模塊初始化和色域參數選擇好之后,水下機器人在比賽運行開機后沿著白色管道直行,期間遇到的情況包括3種:直行偏差時的修正,直角右拐彎和檢測到黑點進行報警示意。由于采用的是320*240的像素,所以圖像X軸采用-160到160,圖像面積為76 800。第一種情況出現直線行駛偏差時中心線會偏移,當偏移到一定程度時,串口回傳“P”,單片機利用函數通過左右微調使得中心線坐標保持在0左右;第二種情況出現如圖1的直角右轉彎時,判斷X軸正坐標大于200時并且圖像面積介于28 000和76 800時判斷為出現直角右拐情況,串口回傳“R”,單片機利用右轉函數控制水下機器人右轉。第三種情況在運行過程中當檢測到黑點時,串口回傳“L”,單片機利用函數控制LED燈光閃爍3次作為報警示意。
圖3是比賽時水下機器人運行的主程序流程。水下機器人上電后,首先進行系統(tǒng)初始化,主要包括OpenMV模塊初始化,STM32單片機的中斷初始化,各類應用函數初始化。進入循環(huán)函數,并且開始時直行運動,當攝像頭檢測到黑點通過串口發(fā)送“L”使得單片機接收到信號時燈光標志位l_bit反復三次置1和0,使得燈光閃爍3次。當攝像頭檢測到轉彎條件時通過串口發(fā)送“R”使得單片機接收到信號時右轉彎標志位zw_bit置1,水下機器人執(zhí)行右轉彎運動。當檢測到整個水下機器人軌跡偏移管道時通過串口發(fā)送“P”使得單片機接收到信號時偏移修正標志位mode_bit置1或者置2,置1表示左偏修正,置2表示右偏修正。最終在整個循環(huán)程序中完成圖1比賽場地的巡跡管道并識別黑點的比賽任務。
圖3 軟件算法流程
在以往的該項目比賽過程中大部分參賽隊伍采用的是紅外傳感器去獲取感知到周圍的信號,由于在水中受到精度等影響,效果不是很好,容易產生誤報甚至是完全偏離管道的現象,從而導致比賽失敗。因此采取優(yōu)化方案,第一,本系統(tǒng)采用的是攝像頭采集信號,能很好解決以上問題;第二,在測試過程中右拐彎時,不能全速游動通過,否則會由于慣性很容易沖出管道導致比賽失敗,經過再三測試得出結論:通過右拐彎時把速度降為直線管道時的百分之六十,能夠順利完成比賽。實驗室測試的過程中黑點的識別率都在100%,并且跑完全程的時間基本在一分鐘以內,取得較好的比賽效果,并在2019年江蘇省大學生機器人比賽中取得較好的成績。
本研究提出了基于OpenMV圖像識別水下機器人進行水中巡檢比賽策略。OpenMV攝像頭模塊作為數據采集模塊,以STM32單片機作為水下機器人運行核心。整體系統(tǒng)在該項目比賽中識別率和運行時間都有很強的優(yōu)越性。系統(tǒng)的設計也為智能水下機器人在水底管道巡檢等應用領域提供了思路和參考。