基于顏色識(shí)別的智能小車集群控制
引言
隨著嵌入式技術(shù)的發(fā)展,基于小型便攜式識(shí)別和集群控制技術(shù)較傳統(tǒng)計(jì)算機(jī)技術(shù)具有更廣闊的應(yīng)用?;跀z像頭的顏色識(shí)別技術(shù)較一般傳感器定位和采集技術(shù)具有穩(wěn)定性和可移動(dòng)等方面的優(yōu)勢(shì),在生產(chǎn)車間自動(dòng)物料配送車的循跡以及基于顏色的物料提取中具有廣泛的應(yīng)用前景。而集群控制作為一種新生的控制方式,在大范圍、多控制對(duì)象的控制方面具有舉足輕重的作用,如太陽(yáng)能發(fā)電板的集群控制、風(fēng)力發(fā)電機(jī)的集群控制以及大型舞臺(tái)劇中的燈光集群控制。而本文中的小車集群控制是將顏色識(shí)別與集群控制的較好方式。小車位置及方向信息通過(guò)攝像頭的顏色識(shí)別技術(shù)獲取,處理之后傳送到STM32進(jìn)行校驗(yàn),并通過(guò)無(wú)線模塊發(fā)送出去,驅(qū)動(dòng)多輛小車按指定的路線行走,從而實(shí)現(xiàn)集群控制。
1 系統(tǒng)整體構(gòu)架
本文中的設(shè)計(jì)系統(tǒng)由智能小車和攝像頭控制模塊兩部分組成,為滿足集群控制的需要選用3輛小車,小車由兩輪驅(qū)動(dòng),便于在行走過(guò)程中調(diào)節(jié)方向。每輛小車搭載NRF無(wú)線模塊和測(cè)速模塊,可以實(shí)現(xiàn)小車的旋轉(zhuǎn)角度測(cè)量以及速度調(diào)整。跑道的正上方是USB攝像頭,通過(guò)5m長(zhǎng)的延長(zhǎng)線與地面的主控板相連接。為滿足數(shù)據(jù)的實(shí)時(shí)處理及多任務(wù)控制的需要,主控板采用Tiny2440四核Cortex—A9核處理器,搭載Linux系統(tǒng),通過(guò)QT的設(shè)計(jì)使得操作界面美觀易操作。為減輕處理器內(nèi)核的負(fù)擔(dān)以及確保傳送指令的準(zhǔn)確性,指令的校驗(yàn)工作由外圍的STM32芯片處理,并通過(guò)nRF模塊與小車通信。系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。
2 硬件結(jié)構(gòu)
2.1 主控制器硬件結(jié)構(gòu)
Exynos 4412采用哈佛結(jié)構(gòu)設(shè)計(jì),使得數(shù)據(jù)和代碼的讀取速率較高,而其特有的四核處理器具有1.5 GHz的主頻,使得對(duì)攝像頭采集數(shù)據(jù)的處理更加實(shí)時(shí),并流暢支持1280× 800高清屏,可通過(guò)LCD屏指定小車路線范圍,實(shí)施控制??刂破鲀?nèi)部結(jié)構(gòu)圖如圖2所示。
2.2 智能控制結(jié)構(gòu)
智能小車對(duì)于接收指令的實(shí)時(shí)響應(yīng)決定了最終的控制效果,本文中的智能小車采用意法半導(dǎo)體公司的STM32F103C8T6作為控制芯片,通過(guò)產(chǎn)生的PWM信號(hào)來(lái)控制直流電機(jī)的轉(zhuǎn)速。在實(shí)際控制過(guò)程中需要涉及到小車的定向旋轉(zhuǎn),以及直線行駛的問(wèn)題,于是在小車中引入了光電紅外對(duì)射管作為小車的測(cè)速模塊。
當(dāng)直線行駛時(shí),小車將通過(guò)測(cè)速碼盤(pán)的脈沖輸出來(lái)判斷轉(zhuǎn)速的大小,從而作出左右輪轉(zhuǎn)速的調(diào)整。同時(shí)小車會(huì)將調(diào)整的結(jié)果存入到內(nèi)部Flash中作為下一次啟動(dòng)時(shí)的調(diào)整數(shù)據(jù),這樣只要在實(shí)際運(yùn)行前做測(cè)試調(diào)整,小車就會(huì)在直線行駛時(shí),實(shí)現(xiàn)不同場(chǎng)地的阻力誤差記憶。小車控制板結(jié)構(gòu)圖如圖3所示。
2.3 小車定位方式
小車的頂部色盤(pán)必須同時(shí)具備小車位置定位和方向定位功能。由于通過(guò)形狀定位的傳統(tǒng)方式對(duì)攝像頭要求過(guò)高且識(shí)別精度有較大誤差,本設(shè)計(jì)采用兩個(gè)圓盤(pán)的顏色識(shí)別方式來(lái)實(shí)現(xiàn)這一功能。小車頂部色盤(pán)如圖4所示。
2.4 小車的控制指令
小車的控制數(shù)據(jù)由8個(gè)字節(jié)組成,如下所示:
其中,1、2、3、8為指令校驗(yàn)碼,4~7為指令內(nèi)容。第1個(gè)字節(jié)到第3個(gè)字節(jié)表示數(shù)據(jù)頭,都是0x80。第8個(gè)字節(jié)表示數(shù)據(jù)尾,是0x81。這樣只有出現(xiàn)數(shù)據(jù)頭的字節(jié),其后面的內(nèi)容才被小車識(shí)別為有用的數(shù)據(jù),使得小車正確運(yùn)轉(zhuǎn)。數(shù)據(jù)尾的出現(xiàn)代表對(duì)小車的控制結(jié)束。
數(shù)據(jù)內(nèi)容為發(fā)送控制指令的具體形式。小車有以下幾個(gè)命令。
2.5 小車搭載色盤(pán)顏色的確定
由于USB攝像頭采集到的顏色數(shù)據(jù)為YUV格式,需要將其轉(zhuǎn)換成RGB格式來(lái)顯示。所以在確定小車搭載定位色盤(pán)的顏色時(shí)需要選定特殊的顏色,以使得采集到的數(shù)據(jù)容易被分辨。本設(shè)計(jì)在原色選擇時(shí)采用Y、U、V為三維坐標(biāo)軸使得色盤(pán)的YUV分量之間存在一定差距,再通過(guò)公式將其轉(zhuǎn)換成RGB基色值。
3 軟件實(shí)現(xiàn)
3.1 主控軟件系統(tǒng)
軟件平臺(tái)為L(zhǎng)inux Kemel 3.5、Qtopia-2.2.0;交叉編譯環(huán)境為嵌入式QT、arm-linux-gcc;開(kāi)發(fā)語(yǔ)言為C++。
3.2 顏色識(shí)別算法
此模塊在一個(gè)線程中,先讀取配置文件,得到各個(gè)顏色的Y、U、V平均值,然后從攝像頭取得一幀的圖像,按行掃描每個(gè)像素,根據(jù)Y、U、V平均值確定Y、U、V的閥值對(duì)像素的Y、U、V值進(jìn)行匹配,從而確定像素的顏色。程序把各個(gè)顏色的像素點(diǎn)分類,同一顏色的像素點(diǎn)坐標(biāo)放在一起,然后算出同一顏色像素點(diǎn)的中心坐標(biāo)。然后通過(guò)表1對(duì)應(yīng)到小車的坐標(biāo)。
得到3輛小車的中心點(diǎn)坐標(biāo)和方向點(diǎn)坐標(biāo)后,存放在內(nèi)存中,供其他模塊調(diào)用。攝像頭采集數(shù)據(jù)流程圖如圖5所示。
3.3 集群防碰撞控制算法
集群小車在行走的過(guò)程中為了防止相互之間的碰撞,必須采用相應(yīng)的防碰撞措施。在本設(shè)計(jì)中采用角度與距離來(lái)實(shí)現(xiàn)防碰撞控制,當(dāng)小車1和2之間的距離L
小車在防碰撞過(guò)程中若出現(xiàn)全部車輛停止(即進(jìn)入鎖死狀態(tài)),則啟動(dòng)應(yīng)急預(yù)案,使邊緣小車在原地向鎖死反方向轉(zhuǎn)動(dòng)相應(yīng)的角度,并行走一段距離,以解除鎖死狀態(tài)。
3.4 小車控制軟件流程圖
小車控制軟件流程圖如圖7所示。
4 整體性能測(cè)試
為防止因環(huán)境顏色和光照的影響,測(cè)試場(chǎng)地為一塊2 m×3 m的長(zhǎng)方形布料,剛好是攝像頭的拍攝范圍。
①小車測(cè)試。通過(guò)直線行駛指令,將小車放在測(cè)試場(chǎng)地中,使小車直線行駛一段距離。小車將獲得兩個(gè)不同的PWM信號(hào)占空比,作為下一次啟動(dòng)時(shí)的配置參數(shù)。
②小車頂部色盤(pán)像素的采集。為消除因光照強(qiáng)度所引起的顏色誤差,需先將與小車頂部色盤(pán)相同顏色的紙片放在場(chǎng)地中間,攝像頭將采集這一坐標(biāo)的像素值作為參考值,用于實(shí)際測(cè)試過(guò)程中的顏色識(shí)別與定位。
③為小車設(shè)置起跑路線圖。通過(guò)LCD屏,在上面為小車指定運(yùn)動(dòng)的路線圖,其后小車將按照設(shè)定的軌跡行走。行駛過(guò)程中小車很好地實(shí)現(xiàn)了集群之間防碰撞的功能。
小車路線圖如圖8所示。
結(jié)語(yǔ)
基于顏色識(shí)別的集群控制系統(tǒng),可以通過(guò)顏色的采集來(lái)實(shí)現(xiàn)定位,是自動(dòng)控制和人工智能方面的一種可行方式,具有運(yùn)行穩(wěn)定、使用方便的優(yōu)點(diǎn)。而多控制對(duì)象的集群控制理論的研究,使得多目標(biāo)協(xié)同工作成為可能?;诖四J降闹悄芸刂圃O(shè)備具有廣闊的應(yīng)用前景。