馮 萍,陳澤宇
(長春大學 計算機科學與技術學院, 長春 130022)
機器人點球大賽是由軟銀組織的面向本科生、研究生的開放比賽。NAO 機器人作為 robocup 標準平臺組的比賽機器人,被廣泛使用于各大學間的機器人足球比賽。在比賽中,參賽者需使用設定好的程序,使NAO機器人自主完成在模擬足球場地上的點球射門;主要考察參賽者對NAO機器人的控制技術以及對足球的精準識別和進攻策略。傳統的NAO機器人點球比賽普遍存在著足球識別不準確、決策速度慢且無法進行微調操作、機器人與草坪摩擦過大導致的摔倒問題等。文章就以上幾點進行分析及解決。
NAO機器人的視覺模塊通過對攝像機拍攝的彩色圖像處理來獲取環境的相關數據信息,進而判斷機器人與球的相對位置,為機器人移動提供決策依據。NAO機器人有著極高的自由度,如圖1所示,通過對機器人關節的相對角度的控制以及官方提供的API接口來實現對其移動控制。

圖1 NAO機器人的相關關節
NAO機器人的兩個攝像頭一個位于額頭上,負責機器人水平方向的視野;另一個位于嘴部,負責機器人腳下近處的觀察,分辨率皆為640*480。由于系統原因,兩個攝像頭不可同時開啟,但可做到隨時切換。主要使用下攝像頭來進行圖像的捕獲。
在最常用的RGB的色彩空間中,色彩均由R(紅)、G(綠)、B(藍)3種基礎顏色組合變換而來。但在攝像機實際拍照時,會有不同場景不同光照的情況,使用RGB顏色空間會產生一定程度上的誤差。相關結果表明,在不同環境(光源種類、光照強度等)下,對相同顏色的物體,測得的RGB值很分散而且波段非常寬。因此很難選取到合理的RGB值,識別的泛化性很差。故在比賽中選取RGB色彩空間進行識別可能會出現因環境引起的漏識別、錯識別。為增強識別的泛化性以及準確率,選用HSV作為圖像處理的色彩空間。在對圖像進行處理前使用OpenCV下的cvtColor()方法將RGB空間轉化為HSV空間。
2.2.1 掩膜操作進行足球顏色閾值的選擇
在點球比賽中,足球的成功識別是贏得比賽的基礎。而足球識別中的足球由黑白兩色組成,一直都是識別的難點。部分選手選擇使用NAO的紅外裝置對球進行定位,解決了對足球顏色識別的難題,但定位準確率較低。我們采用OpenCV中的掩膜操作,并通過TrackBar來分別找出足球中白色部分、黑色部分對應的閾值解決了這個問題,識別效果如圖2、 圖3所示。

HSVH(min)H(max)S(min)S(max)V(min)V(max)白048425599255黑01790255092

圖2 對足球中的黑色進行掩膜 圖3 對足球中的白色進行掩膜
2.2.2 足球顏色的組合
在完成了對足球上黑白兩色的篩選后,將這兩張提取顏色的圖片拼接,使用cv2下的inRange方法分別得到對應白色與黑色的灰度圖,然后利用cv2.add完成兩張圖片的拼接,目標區域為255(白色),無關區域為0(黑色),效果如圖4、圖5、圖6所示。

圖4 白色部分inRange后的二值圖 圖5 黑色部分inRange后的二值圖 圖6 圖片拼接后的結果圖
要使NAO機器人識別足球,不僅要識別足球的顏色,同時也要識別足球的形狀,在找到足球的顏色閾值的基礎上,對符合顏色閾值的圖像進行形狀檢測。應用高斯濾波,腐蝕膨脹技術進行平滑去噪,最后采用霍夫變化檢測圓形。
在完成掩膜操作后,仍存在小部分干擾圖像識別的噪聲,為防止其影響圖像識別的準確率,采用高斯濾波減少噪聲的干擾。
(1)
式中,δ為在程序中指定的sigmaX,f(x)則為各個點經過處理后的權重,指定δ為1.5,經過處理后得到圖7所示效果。
在高斯濾波后,仍存在部分干擾噪聲,使用腐蝕操作進一步去除圖形中存在的椒鹽噪聲點,并使用膨脹操作強化局部最大值較大的區域。經過處理后得到圖8所示效果。

圖7 高斯濾波后的圖像

圖8 經過腐蝕膨脹后處理的圖像
在霍夫變換方法中,首先使用Canny方法對圖片中的圓形進行篩選,然后經過霍夫變換,將圓內的點轉換到霍夫空間。轉換方程如下:
x=x0+rcosθ;y=y0+rsinθ,
(2)
式中,x0,y0為圓的圓心坐標,r為圓的半徑,且對于圓來說,θ的范圍為0°~360°。
在此方法中,圓內的每一點都有成為“圓心”的可能,故需將圓內每一點都映射到由x0,y0,r組成的三維空間中,由于霍夫線變換需要更多的計算消耗,所以采用霍夫梯度法來對圓進行檢測。
霍夫梯度法通過遍歷圓內的每一個點,并計算其模向量,即垂直于該點并且經過該點的切線的垂直線上,這些圓上的模向量的交點就是圓心。根據某一點上模向量焦點的多少,來判斷這點是否為圓心。
綜上所述,對于足球識別的具體實現過程如圖9所示。

圖9 足球識別算法流程圖
(1)通過攝像頭獲取圖像信息;
(2)變換色彩空間,由RGB轉換為HSV空間;
(3)二值化圖像:根據預設好的白、黑閾值參數,對圖片分別進行inRange(),然后進行拼接,得到二值圖;
(4)對二值圖進行高斯模糊,使用OpenCV中的GaussianBlur()函數,并使用erode、dilate對圖像進行進一步的處理;
(5)足球檢測:通過霍夫圓檢測來篩選視野里是否出現足球;
(6)是否檢測到足球?是到(7),否到(1);
(7)返回足球在圖片中的相對位置。
在點球比賽中,進攻方與球的距離相距1 m,由于上攝像頭像素較低、視野范圍較大,對足球的定位以及識別都存在諸多不利(足球相對較小,占用系統計算資源等),所以選用視野范圍相對小的下攝像頭,先調用NAOqi中的angleInterpolationWithSpeed()方法對機器人的頭部headYaw進行角度調整,使機器人在行走的過程中處于低頭的狀態,下攝像頭的視野范圍可以監控到NAO腳步附近的各種情況。由于比賽場地為8 mm的標準草坪,使用moveTo()方法進行行走會導致機器人不穩,在機器人腳上纏繞報紙,減少了與草坪的摩擦,使機器人可以正常地行走。
由于點球位置與球門相距1.5 m,需要設計一個有力的踢球動作。使用Choregraphe中的時間線儲存一套合適的動作,然后傳輸到機器人內。如圖10所示。

圖10 Choregraphe中編寫的踢球動作
在程序中創建一個ALBehaviorManger代理,然后在成功識別足球且根據策略需要踢球時,通過代理啟動這條時間線,完成踢球動作。使用多線程的方式,將ALBehaviorManger封裝其中,并編寫啟動函數為其啟動。
當攝像機回傳的畫面中出現足球時,根據足球在圖像中的相對位置,對乙方機器人以及守門員的位置進行微調,尋找合適的角度進行踢球。具體流程如圖11所示。

圖11 程序的具體流程圖
針對機器人點球比賽中目標識別困難、草地摩擦力過大等問題,分別采用掩膜+圖像拼接和物理降低摩擦力的方法得以優化,并提出了一套包含移動控制,點球決策的完整的點球體系。由視覺模塊獲取數據,應用策略來控制球不同位置下機器人的移動行為,并通過ALBehaviorManager模塊來調用Choregraphe中的時間線來實現踢球,使點球比賽更具準確性。經實驗測試,在正常的燈光照射下,機器人可以正確識別球,完成射門的準確率在97%以上。且通過此程序參加本地區的點球比賽并以優越的性能取得了一等獎。