李志強(qiáng),黃 明,康欽清*,王東滔,肖玉亮,李本高
(湖南涉外經(jīng)濟(jì)學(xué)院信息與機(jī)電工程學(xué)院,湖南 長沙 410205)
有視覺功能的智能小車在各行各業(yè)中的應(yīng)用越來越廣泛[1]。它們可以協(xié)助人們完成某些特殊產(chǎn)品或物品的分揀分類,比如有毒化學(xué)物品,易燃易爆物品等危險(xiǎn)品。可以大大提高效率,降低危險(xiǎn)。
顏色識別是將要識別的顏色從外界眾多的顏色中凸顯出來[2]。如果把顏色識別與智能小車的追蹤功能相結(jié)合,對不同物品的顏色特征進(jìn)行識別,從而實(shí)現(xiàn)對物品的追蹤,減少人與物品的接觸,提高工作效率和保障員工人身安全[3-4]。
本系統(tǒng)選定需要追蹤的目標(biāo)物體顏色,采用Open MV作為圖像采集模塊,對目標(biāo)物體進(jìn)行識別,并計(jì)算得到目標(biāo)物體的中心坐標(biāo),傳送給Arduino UNO3開發(fā)板為主控板的智能小車,結(jié)合組合傳感器測距模塊,完成對目標(biāo)物體的追蹤[5]。
本設(shè)計(jì)由電源模塊、控制模塊、執(zhí)行模塊組成,系統(tǒng)硬件總體框圖如圖1所示。利用Open MV攝像頭自動識別物體的顏色,返回物體的中心坐標(biāo),根據(jù)中心坐標(biāo)的偏離程度驅(qū)動電機(jī)完成小車的行進(jìn)。借助組合傳感器測距模塊,精確判斷小車跟蹤或躲避的距離。電源模塊為整個(gè)智能小車提供需要的電源,保證各部分正常工作。
圖1 小車硬件系統(tǒng)總體框圖
Arduino UNOR3開發(fā)板以ATMGA328P作為主控芯片,并將其IO端口全部引出。Arduino UNOR3開發(fā)板通過UART串口與Open MV進(jìn)行通信,接收目標(biāo)色塊的中心坐標(biāo)。依據(jù)其橫坐標(biāo)所在數(shù)值區(qū)間控制小車的左轉(zhuǎn)或右轉(zhuǎn)。同時(shí)依靠組合傳感器測距模塊測量小車與目標(biāo)之間的距離,從而實(shí)現(xiàn)對目標(biāo)的追蹤或躲避。
本設(shè)計(jì)采用Open MV作為圖像采集與識別模塊。0pen MV攝像頭是一款小巧,低功耗,低成本,可擴(kuò)展,可使用Python語言的可編程圖像傳感器模塊。STM32H743VIT6作為主控芯片,且在其Open MV IDE開源開發(fā)環(huán)境中將大多數(shù)圖像處理算法模塊化并封裝供用戶調(diào)用。Open MV將采集到的圖像進(jìn)行二值化處理,通過閾值編輯器初始化需要識別的顏色閾值,同時(shí)計(jì)算所采集圖像中最大的目標(biāo)色塊面積并計(jì)算其中心坐標(biāo),通過UART串口發(fā)送給小車主控模塊。
小車采用由超聲波傳感和激光傳感器VL53L0X構(gòu)成的組合傳感器測距模塊。將超聲波傳感器安裝在位于智能小車整體頂部最上方的舵機(jī)上,通過舵機(jī)旋轉(zhuǎn)識別左、前、右方的距離,進(jìn)行障礙物的判斷。激光傳感器可以及時(shí)判定遠(yuǎn)距離的前方有無障礙物。
在本設(shè)計(jì)中,采用L298N模塊作為電機(jī)驅(qū)動模塊,在輸入6V~46V的輸入電壓范圍,可輸出2A的電流供給電機(jī)工作,驅(qū)動四輪小車正常運(yùn)行。L298N模塊的控制輸入端與主控板IO口相連接。通過IO口的高低電平的變化,控制電機(jī)的正反轉(zhuǎn)及停止。當(dāng)主控板接收到Open MV發(fā)送的障礙物或追蹤目標(biāo)的中心坐標(biāo)后,主控平臺向L298N發(fā)送相應(yīng)的高低電平,從而控制小車的左轉(zhuǎn),右轉(zhuǎn),前進(jìn),后退及停止。
表1 L298N電機(jī)控制真值表
采用LM2596S穩(wěn)壓模塊作為電壓轉(zhuǎn)換模塊,具有轉(zhuǎn)換效率高,輸入電壓范圍廣,輸出電流大,帶負(fù)載能力強(qiáng)等特點(diǎn)。LM2596S穩(wěn)壓模塊為主控板等電路提供正常工作電壓,還要為電機(jī)驅(qū)動板提供穩(wěn)定的12V電壓,使電機(jī)工作更加穩(wěn)定,小車的運(yùn)轉(zhuǎn)更加流暢,速度更加穩(wěn)定。
本設(shè)計(jì)的軟件系統(tǒng)由圖像處理模塊和小車追蹤/避障模塊組成,系統(tǒng)總流程圖如圖2所示。借助Open MV開發(fā)平臺,使用其封裝好的函數(shù)模塊,實(shí)現(xiàn)對特定顏色的識別以及最大色塊的中心坐標(biāo)的獲取。中心坐標(biāo)通過串口發(fā)送給主控板。主控板接收到最大色塊的中心坐標(biāo),提取出橫坐標(biāo)與設(shè)定值進(jìn)行比較,大則右轉(zhuǎn)、小則左轉(zhuǎn)。結(jié)合組合傳感器測距模塊得出的數(shù)據(jù)實(shí)現(xiàn)躲避障礙物的功能或者使小車轉(zhuǎn)向目標(biāo)物體。
圖2 系統(tǒng)總流程圖
在Open MV中使用LAB顏色模型來描述顏色,L是亮度,A和B為兩個(gè)顏色通道。A為紅色到綠色的范圍,B為黃色到藍(lán)色的范圍。通過設(shè)置L,A,B的取值范圍得到要識別的顏色。如綠色色塊 LAB閾值可設(shè)置為(100,0,-128,-20,-128,127)。
對比LAB顏色模型中L、A、B的取值,閾值編輯器會自動將LAB取值不等于設(shè)定值的顏色濾除,變?yōu)楹谏槐A襞c設(shè)定值相等閾值的顏色,由此可得到某一顏色的LAB顏色閾值。使用find_blobs和threshold函數(shù)可實(shí)現(xiàn)顏色識別功能。在threshold函數(shù)中填入LAB顏色模型的L、A、B的取值范圍,再填入find_blobs中,系統(tǒng)通過顏色閾值比較自動對圖像進(jìn)行二值化處理,最后用方框?qū)㈤撝翟谌≈捣秶念伾虺?,從而達(dá)到顏色識別的目的。
圖3(a)給出Open MV采集到的圖片,(b)圖是設(shè)定識別顏色為綠色的顏色閾值后得到的二值化圖像。
圖3 閾值編輯器處理圖片
使用MAX函數(shù)在find_blobs函數(shù)識別出的色塊中找出面積最大的色塊,濾除其他的較小面積的色塊。然后使用blob函數(shù)在色塊中心畫出十字標(biāo)并獲取色塊的中心坐標(biāo),如圖3(c)所示。最后通過UART串口將色塊的中心坐標(biāo)發(fā)送給主控板。
本部分實(shí)現(xiàn)代碼如下。
將Open MV模塊發(fā)送的色塊中心坐標(biāo)與攝像頭中心軸的橫坐標(biāo)進(jìn)行對比,大則說明物體在小車的左邊,小則說明物體在小車的右邊,相等則說明物體在小車的正前方;于此可以操控小車做出相應(yīng)的動作,從而達(dá)到追蹤或避障的目的。
準(zhǔn)備兩個(gè)顏色相同、大小不一的色塊,見圖4所示。通過閾值比較器設(shè)置要識別的顏色閾值,寫在threshold函數(shù)中。啟動Open MV,燒錄程序,開始識別色塊。通過上位機(jī)查看Open MV傳回的圖像視頻。圖4傳回圖像顯示,存在兩個(gè)與背景顏色相差較大的色塊。經(jīng)過圖像處理之后,系統(tǒng)會自動將要識別的色塊用方框框起來,并將面積最大的顏色色塊用十字標(biāo)標(biāo)出。
圖4 尋找最大色塊實(shí)驗(yàn)
將小車放置在起點(diǎn),在距離小車1m處放置藍(lán)、綠、黃三個(gè)同等大小的圓形色塊。通過上位機(jī)向小車分別發(fā)送藍(lán)、綠、黃三種顏色識別指令,測量和記錄小車識別到藍(lán)、綠、黃三色塊并到達(dá)色塊附近的時(shí)間,如表2所示。
表2 藍(lán)、綠、黃三色色塊識別追蹤
智能小車在實(shí)驗(yàn)場地一定、距離一定的情況下,識別形狀大小相同,顏色不同的障礙物并追蹤到其附近所用的時(shí)間幾乎相同,攝像頭對于黃、綠、藍(lán)三色識別較為靈敏,識別用時(shí)較短。
本文實(shí)現(xiàn)了基于 Open MV的智能追蹤小車。利用Open MV的顏色識別功能,快速識別設(shè)定的目標(biāo)物體顏色,確定其中心坐標(biāo),傳送至控制中心,完成小車對目標(biāo)物體的追蹤功能。