李志強,黃 明,康欽清*,王東滔,肖玉亮,李本高
(湖南涉外經濟學院信息與機電工程學院,湖南 長沙 410205)
有視覺功能的智能小車在各行各業中的應用越來越廣泛[1]。它們可以協助人們完成某些特殊產品或物品的分揀分類,比如有毒化學物品,易燃易爆物品等危險品。可以大大提高效率,降低危險。
顏色識別是將要識別的顏色從外界眾多的顏色中凸顯出來[2]。如果把顏色識別與智能小車的追蹤功能相結合,對不同物品的顏色特征進行識別,從而實現對物品的追蹤,減少人與物品的接觸,提高工作效率和保障員工人身安全[3-4]。
本系統選定需要追蹤的目標物體顏色,采用Open MV作為圖像采集模塊,對目標物體進行識別,并計算得到目標物體的中心坐標,傳送給Arduino UNO3開發板為主控板的智能小車,結合組合傳感器測距模塊,完成對目標物體的追蹤[5]。
本設計由電源模塊、控制模塊、執行模塊組成,系統硬件總體框圖如圖1所示。利用Open MV攝像頭自動識別物體的顏色,返回物體的中心坐標,根據中心坐標的偏離程度驅動電機完成小車的行進。借助組合傳感器測距模塊,精確判斷小車跟蹤或躲避的距離。電源模塊為整個智能小車提供需要的電源,保證各部分正常工作。

圖1 小車硬件系統總體框圖
Arduino UNOR3開發板以ATMGA328P作為主控芯片,并將其IO端口全部引出。Arduino UNOR3開發板通過UART串口與Open MV進行通信,接收目標色塊的中心坐標。依據其橫坐標所在數值區間控制小車的左轉或右轉。同時依靠組合傳感器測距模塊測量小車與目標之間的距離,從而實現對目標的追蹤或躲避。
本設計采用Open MV作為圖像采集與識別模塊。0pen MV攝像頭是一款小巧,低功耗,低成本,可擴展,可使用Python語言的可編程圖像傳感器模塊。STM32H743VIT6作為主控芯片,且在其Open MV IDE開源開發環境中將大多數圖像處理算法模塊化并封裝供用戶調用。Open MV將采集到的圖像進行二值化處理,通過閾值編輯器初始化需要識別的顏色閾值,同時計算所采集圖像中最大的目標色塊面積并計算其中心坐標,通過UART串口發送給小車主控模塊。
小車采用由超聲波傳感和激光傳感器VL53L0X構成的組合傳感器測距模塊。將超聲波傳感器安裝在位于智能小車整體頂部最上方的舵機上,通過舵機旋轉識別左、前、右方的距離,進行障礙物的判斷。激光傳感器可以及時判定遠距離的前方有無障礙物。
在本設計中,采用L298N模塊作為電機驅動模塊,在輸入6V~46V的輸入電壓范圍,可輸出2A的電流供給電機工作,驅動四輪小車正常運行。L298N模塊的控制輸入端與主控板IO口相連接。通過IO口的高低電平的變化,控制電機的正反轉及停止。當主控板接收到Open MV發送的障礙物或追蹤目標的中心坐標后,主控平臺向L298N發送相應的高低電平,從而控制小車的左轉,右轉,前進,后退及停止。

表1 L298N電機控制真值表
采用LM2596S穩壓模塊作為電壓轉換模塊,具有轉換效率高,輸入電壓范圍廣,輸出電流大,帶負載能力強等特點。LM2596S穩壓模塊為主控板等電路提供正常工作電壓,還要為電機驅動板提供穩定的12V電壓,使電機工作更加穩定,小車的運轉更加流暢,速度更加穩定。
本設計的軟件系統由圖像處理模塊和小車追蹤/避障模塊組成,系統總流程圖如圖2所示。借助Open MV開發平臺,使用其封裝好的函數模塊,實現對特定顏色的識別以及最大色塊的中心坐標的獲取。中心坐標通過串口發送給主控板。主控板接收到最大色塊的中心坐標,提取出橫坐標與設定值進行比較,大則右轉、小則左轉。結合組合傳感器測距模塊得出的數據實現躲避障礙物的功能或者使小車轉向目標物體。

圖2 系統總流程圖
在Open MV中使用LAB顏色模型來描述顏色,L是亮度,A和B為兩個顏色通道。A為紅色到綠色的范圍,B為黃色到藍色的范圍。通過設置L,A,B的取值范圍得到要識別的顏色。如綠色色塊 LAB閾值可設置為(100,0,-128,-20,-128,127)。
對比LAB顏色模型中L、A、B的取值,閾值編輯器會自動將LAB取值不等于設定值的顏色濾除,變為黑色,只保留與設定值相等閾值的顏色,由此可得到某一顏色的LAB顏色閾值。使用find_blobs和threshold函數可實現顏色識別功能。在threshold函數中填入LAB顏色模型的L、A、B的取值范圍,再填入find_blobs中,系統通過顏色閾值比較自動對圖像進行二值化處理,最后用方框將閾值在取值范圍的顏色框出,從而達到顏色識別的目的。
圖3(a)給出Open MV采集到的圖片,(b)圖是設定識別顏色為綠色的顏色閾值后得到的二值化圖像。

圖3 閾值編輯器處理圖片
使用MAX函數在find_blobs函數識別出的色塊中找出面積最大的色塊,濾除其他的較小面積的色塊。然后使用blob函數在色塊中心畫出十字標并獲取色塊的中心坐標,如圖3(c)所示。最后通過UART串口將色塊的中心坐標發送給主控板。
本部分實現代碼如下。


將Open MV模塊發送的色塊中心坐標與攝像頭中心軸的橫坐標進行對比,大則說明物體在小車的左邊,小則說明物體在小車的右邊,相等則說明物體在小車的正前方;于此可以操控小車做出相應的動作,從而達到追蹤或避障的目的。
準備兩個顏色相同、大小不一的色塊,見圖4所示。通過閾值比較器設置要識別的顏色閾值,寫在threshold函數中。啟動Open MV,燒錄程序,開始識別色塊。通過上位機查看Open MV傳回的圖像視頻。圖4傳回圖像顯示,存在兩個與背景顏色相差較大的色塊。經過圖像處理之后,系統會自動將要識別的色塊用方框框起來,并將面積最大的顏色色塊用十字標標出。

圖4 尋找最大色塊實驗
將小車放置在起點,在距離小車1m處放置藍、綠、黃三個同等大小的圓形色塊。通過上位機向小車分別發送藍、綠、黃三種顏色識別指令,測量和記錄小車識別到藍、綠、黃三色塊并到達色塊附近的時間,如表2所示。

表2 藍、綠、黃三色色塊識別追蹤
智能小車在實驗場地一定、距離一定的情況下,識別形狀大小相同,顏色不同的障礙物并追蹤到其附近所用的時間幾乎相同,攝像頭對于黃、綠、藍三色識別較為靈敏,識別用時較短。
本文實現了基于 Open MV的智能追蹤小車。利用Open MV的顏色識別功能,快速識別設定的目標物體顏色,確定其中心坐標,傳送至控制中心,完成小車對目標物體的追蹤功能。