基于PIC32實(shí)現(xiàn)的智能球類回收車,軟硬件協(xié)同
針對(duì)這一問(wèn)題,我們思考,是否可以設(shè)計(jì)一種自動(dòng)找球、撿球的小車,它可以在運(yùn)動(dòng)場(chǎng)地中自動(dòng)尋找、識(shí)別、跟蹤散落在地上的球體,如發(fā)現(xiàn)符合此項(xiàng)訓(xùn)練球類特征,小車將自動(dòng)調(diào)整運(yùn)動(dòng)接近此球,然后控制機(jī)械臂將進(jìn)入U(xiǎn)型槽的球體“收入囊中”,這既避免了不必要的勞動(dòng),提高了訓(xùn)練、比賽的效率,同時(shí)可以讓運(yùn)動(dòng)員更加專注地投入比賽,取得更好的成績(jī)。
本文引用地址:http://m.butianyuan.cn/article/201612/326286.htm基于上述考慮,本隊(duì)提出了如下設(shè)計(jì)方案---智能球類回收車。
本作品是以PIC32單片機(jī)為核心微控制器,以自動(dòng)目標(biāo)跟蹤為主要工作方式的智能小車系統(tǒng),它由視頻采集分析模塊、智能小車驅(qū)動(dòng)模塊以及機(jī)械臂控制模塊等部分組成,此系統(tǒng)有自動(dòng)目標(biāo)尋找、識(shí)別、跟蹤、撿拾等功能。
利用此系統(tǒng),在乒乓球、網(wǎng)球等訓(xùn)練場(chǎng)地以及鉛球等危險(xiǎn)比賽現(xiàn)場(chǎng),可以在完全脫離工作人員控制的情況下,自動(dòng)找尋目標(biāo)撿拾訓(xùn)練、比賽用球。這樣就避免了工作人員或運(yùn)動(dòng)員不必要的工作,提高了訓(xùn)練效率,也避免了鉛球、鐵餅等比賽、訓(xùn)練中不安全事故發(fā)生的可能。在球類比賽百花齊放、全民運(yùn)動(dòng)熱情高漲的今天,該系統(tǒng)的研發(fā)、生產(chǎn)、應(yīng)用必將具有重大的社會(huì)、經(jīng)濟(jì)效益。
系統(tǒng)功能概述
本系統(tǒng)的工作過(guò)程如下:
①通過(guò)攝像頭觀察球場(chǎng)范圍,尋找小球,當(dāng)視野中出現(xiàn)一個(gè)或多個(gè)完整的小球時(shí)根據(jù)近大遠(yuǎn)小選擇最大的一個(gè)調(diào)整小車位置使小球正好位于小車視野正中心。
②控制小車運(yùn)動(dòng),在運(yùn)動(dòng)過(guò)程中不斷校正小車方向,確定使其正對(duì)要撿起的小球,最后使小車到達(dá)小球位置。
③當(dāng)小球進(jìn)入車前設(shè)計(jì)的U型槽時(shí)觸動(dòng)傳感器使小車進(jìn)入撿球模式,控制一個(gè)位于小球上方類似裝羽毛球的筒形狀的筒放下將小球壓入其中,完成撿球。
④繼續(xù)掃描其他目標(biāo)進(jìn)行撿拾,按遠(yuǎn)近關(guān)系依次撿完球場(chǎng)上所有的小球。攝像頭觀察檢測(cè)到?jīng)]有剩余小球時(shí)找尋返回位置標(biāo)志(比如紅色小旗)返回,完成任務(wù)。
本系統(tǒng)主要包括視頻采集分析模塊、智能小車驅(qū)動(dòng)模塊以及機(jī)械臂控制模塊等部分。
硬件模塊:
軟件流程:
我們的項(xiàng)目涉及到的軟件模塊主要由三個(gè)部分組成:
一、攝像頭定位模塊:攝像頭結(jié)合I2C連接到單片機(jī)上。主要進(jìn)行圖像收集,計(jì)算定位判斷,為下層小車控制提供運(yùn)行控制字。
二、小車控制模塊:根據(jù)上層提供的控制字,控制步進(jìn)電機(jī)進(jìn)行左轉(zhuǎn),右轉(zhuǎn),前進(jìn)的運(yùn)動(dòng)。這里考慮到小車是在運(yùn)行過(guò)程中,通過(guò)攝像頭收集到的數(shù)據(jù)進(jìn)行運(yùn)動(dòng)判斷,因此小車運(yùn)行的時(shí)間用定時(shí)中斷嚴(yán)格控制。每次小車轉(zhuǎn)彎精度為3度,前進(jìn)距離為12cm。
三、機(jī)械臂控制模塊:機(jī)械臂的控制模塊采用中斷控制,當(dāng)小車的u型槽前部判斷小球已進(jìn)入槽后,進(jìn)入機(jī)械臂中斷,控制機(jī)械臂向下運(yùn)動(dòng),套入小球后,再讓機(jī)械臂回到原處。接下來(lái)回到主程序繼續(xù)執(zhí)行下部操作。
下面,通過(guò)流程圖具體介紹軟件的運(yùn)行流程:
首先是主函數(shù):主函數(shù)是一個(gè)while的無(wú)限循環(huán):
接下來(lái)對(duì)上面的各個(gè)部分進(jìn)行說(shuō)明:
(1)
攝像頭拍照模塊采用查詢方式,攝像頭拍下照片,等待所有數(shù)據(jù)都傳給單片機(jī)后,標(biāo)志位flagd置1。這里攝像頭與單片機(jī)是運(yùn)用I2C進(jìn)行連接。流程圖如下:
(2)
對(duì)攝像頭采集進(jìn)來(lái)的圖片進(jìn)行輪廓分析,判斷小球的位置。未看到小球時(shí),小車原地旋轉(zhuǎn),然后再次進(jìn)行拍攝。當(dāng)看到多個(gè)小球時(shí),根據(jù)遠(yuǎn)近關(guān)系照成的平面上大小的不同,將最大的一個(gè)鎖定為目標(biāo)。然后根據(jù)小球的位置,向小車的控制模塊發(fā)送控制字,流程圖:
(3)
根據(jù)上一步送下來(lái)的控制字control對(duì)小車的運(yùn)動(dòng)進(jìn)行控制,小車的驅(qū)動(dòng)模塊接單片機(jī)的不同IO口,對(duì)IO給出不同的輸出分別控制小車向左旋轉(zhuǎn),向右旋轉(zhuǎn)以及前進(jìn)。旋轉(zhuǎn)以及前進(jìn)的精度通過(guò)定時(shí)中斷精確控制;流程圖如下:
(4)
(5)
當(dāng)檢測(cè)到小球入槽后,就進(jìn)入該中斷。中斷首先將IO清零,防止小車仍然在運(yùn)動(dòng)。然后控制機(jī)械臂的電機(jī)轉(zhuǎn)動(dòng),實(shí)現(xiàn)升降。機(jī)械臂的筒口也是采用塑料片做成的類似人體靜脈瓣的裝置,只用筒罩住球就能保證球不再掉出來(lái)。流程圖如下所示:
視頻處理與自動(dòng)目標(biāo)識(shí)別模塊工作原理
1.1原理概述
攝像頭拍照模塊采用查詢方式,攝像頭拍下照片,等待所有數(shù)據(jù)都傳給單片機(jī)后,標(biāo)志位flagd置1。這里攝像頭與單片機(jī)是運(yùn)用I2C進(jìn)行連接。對(duì)攝像頭采集進(jìn)來(lái)的圖片進(jìn)行輪廓分析,判斷小球的位置。未看到小球時(shí),小車原地旋轉(zhuǎn),然后再次進(jìn)行拍攝。當(dāng)看到多個(gè)小球時(shí),根據(jù)遠(yuǎn)近關(guān)系照成的平面上大小的不同,將最大的一個(gè)鎖定為目標(biāo)。然后根據(jù)小球的位置,向小車的控制模塊發(fā)送控制字。
1.2 設(shè)計(jì)細(xì)節(jié)
本設(shè)計(jì)采用一種基于球色的球類檢測(cè)方案。
球類檢測(cè)是指: 在輸入圖像中確定是否有球體存在,如果有則確定其位置、大小的過(guò)程。球體檢測(cè)問(wèn)題的提出基于人臉識(shí)別,人臉識(shí)別的第一步就是要從圖像中檢測(cè)并定位出人臉的位置,隨著模式識(shí)別技術(shù)的發(fā)展以及自動(dòng)化程度的提高, 人臉檢測(cè)開(kāi)始作為一個(gè)獨(dú)立的領(lǐng)域進(jìn)行研究。
球體檢測(cè)方法主要有基于幾何特征的方法:基于球色模型的方法和基于統(tǒng)計(jì)理論的方法。本文將主要介紹一種基于球色的球體檢測(cè)算法!
1.2.1 色彩空間的選擇
為了對(duì)球色進(jìn)行分割, 把球體區(qū)域從背景中分離出來(lái), 需要使用適合不同光照條件下的可靠的球色模型!研究顯示:盡管不同種類、不同材質(zhì)的球色看上去不同,但這種不同主要集中在亮度上, 在去除亮度的色彩空間里,不同球體的顏色分布具有聚類性。本文中的球色模型就是在這樣的色彩空間里建立的。通常所用的表現(xiàn)彩色圖像的方法是R G B , 但是在這里, R G B 空間不再適合用來(lái)作為球色模型的色度空間,因?yàn)樵赗 G B 圖中, (r,g,b) 這三個(gè)分量不但代表著圖像的色彩分布, 而月還表示著圖像的亮度(圖像中每個(gè)像素的亮度等于其R G B 三個(gè)分量之和),而亮度是一個(gè)非常不穩(wěn)定的參量, 它很容易受到周圍環(huán)境的影響而導(dǎo)致分離球色區(qū)域的失敗。因此采用把亮度分離的色度空間能夠減小亮度的影響。
Y Cb Cr 色彩空間中的球色分布聚集在色度空間中一個(gè)較小的區(qū)域中, 它具有以下幾個(gè)優(yōu)點(diǎn):(1)具有與人類視覺(jué)感知過(guò)程相類似的構(gòu)成原理;(2) Y Cb Cr色彩空間格式廣泛地應(yīng)用在電視顯示等領(lǐng)域中, 也是許多視頻編碼, 如MPEG、JPEG 等標(biāo)準(zhǔn)中普遍采用的顏色表示格式;(3)Y Cb Cr色彩空間格式月有與HSI等其它一些色彩空間格式相類似的將色彩中的亮度分量分離出來(lái)的優(yōu)點(diǎn)。
因此,本文最終選擇了Y Cb Cr色彩空間進(jìn)行球色建模。
1.2.2 球色的相似度計(jì)算
依據(jù)球體顏色在Y Cb Cr空間的概率分布特性,建立一個(gè)高斯球色模型,其概率密度函數(shù)用式(1)表示:
(1)
其中C 為協(xié)方差矩陣
(2)在前面建立的球色模型的基礎(chǔ)上, 通過(guò)球色相似度計(jì)算公式:
(3)
可以計(jì)算單個(gè)像素的球色相似度值, 并且很容易得到整幅圖像的最大球色相似度值。每
一點(diǎn)像素的球色相似度值除以最大球色相似度值,作為i亥緣素點(diǎn)的灰度值,從而得到球色相似度。
由于我們傳輸?shù)膱D片屬于RGB模式,因此需要進(jìn)行顏色空間變化。
Y = 0.257*R + 0.504*G +0.098*B + 16;
Cr = 0.439*R - 0.368*G - 0.071*B + 128;
Cb = -0.148*R -0.291*G + 0.439*B +128;
1.2.3 圖像的二值化分割
二值圖像是指圖像中的每個(gè)像素只取兩個(gè)離散的值之一(如0, l) ,用數(shù)學(xué)公式表示為:
(4)
上式中, f 認(rèn)刃表示一幅數(shù)字圖像, x,y是該圖像中某個(gè)像素點(diǎn)的坐標(biāo)值,0 和1 表示該像素的像素取值。0 和1是個(gè)抽象的表示,并非實(shí)際像素值,它可以代表不同的顏色,在這里0代表黑色, 1代表白色, 所得到的圖就是一個(gè)黑白二值圖。將圖二值化是因?yàn)?二值圖像中的許多運(yùn)算是邏輯運(yùn)算而不是算術(shù)運(yùn)算, 所需的處理時(shí)間很短,計(jì)算速度快,而且算法也容易理解和實(shí)現(xiàn)。
二值化圖像可以通過(guò)選取適當(dāng)?shù)拈y值獲得。選擇合適的閥值是圖像二值化分割效果好壞的關(guān)鍵。通過(guò)對(duì)球體灰度圖像進(jìn)行分析可以發(fā)現(xiàn),真正的球色像素相比于非球色像素往往擁有更高的亮度,所以可以設(shè)定一個(gè)閥值,當(dāng)該點(diǎn)像素的近似度高于這個(gè)閥值則認(rèn)為該點(diǎn)為球色像素并置1,反之若低于該閥值則置0。
1.2.4 候選球體的確定
經(jīng)過(guò)平滑濾波處理后, 二值化圖中的部分噪聲可以被去除,但由于背景較復(fù)雜,受影響的因素很多, 圖中仍然會(huì)存在許多面積較小的非球體區(qū)域。為了減少算法的工二作量,需要進(jìn)一步排除這些不含球體的區(qū)域。因此對(duì)二值分割圖中的這些區(qū)域進(jìn)行比例結(jié)構(gòu)的分析,過(guò)濾掉不可能的球體區(qū)域,以確定最終的候選球體區(qū)域。
本文將用以下兩個(gè)方法對(duì)候選球體區(qū)域進(jìn)行篩選:
(1)區(qū)域的面積:去掉面積較小區(qū)域,即刪除面積小于30 以下的區(qū)域, 其面積為該區(qū)域中的白色像素點(diǎn)的個(gè)數(shù)。
(2) 區(qū)域的長(zhǎng)寬比:一般來(lái)說(shuō)球體(以網(wǎng)球?yàn)槔?的直徑介于6.35cm至6.67cm之間,考慮到其他球體直徑可能大于網(wǎng)球, 故選取的范圍的上限可以適當(dāng)放大,經(jīng)過(guò)多次實(shí)驗(yàn)發(fā)現(xiàn), 當(dāng)把球體的選取范圍定在直徑為8cm的時(shí)候,真正的球體區(qū)域一般都能包含在內(nèi),不會(huì)被刪除。這個(gè)條件考慮到了真正包含球體區(qū)域的范圍大小, 排除了一些類似球類顏色但直徑不合要求的區(qū)域。
1.2.5 總結(jié)
綜上所述, 基于球色的球體檢測(cè)方法能較好的分割出可能的球體區(qū)域, 把接近于球體顏色的區(qū)域從圖像中分離出來(lái), 使得目標(biāo)區(qū)域能較好地提取。由于此算法首先篩選掉了一部分背景,減小了球體搜索范圍,故可以大幅度提高檢測(cè)的速度。對(duì)分割出來(lái)的可能球色區(qū)域幾何直徑的篩選, 進(jìn)一步排除了較為明顯的干擾區(qū)域, 在一定程度上減少了后續(xù)模板匹配過(guò)程的工作量。
2、小車驅(qū)動(dòng)工作模塊工作原理
該模塊充分應(yīng)用了pic32單片機(jī)存儲(chǔ)容量大, 運(yùn)算速度快,數(shù)據(jù)傳輸迅速的特點(diǎn),成功將Y Cb Cr色彩空間進(jìn)行球色建模的算法移植到單片機(jī)上實(shí)現(xiàn),大大縮減了成本。
單片機(jī)首先通過(guò)串口(38400Baud)接受攝像頭拍攝獲得的R G B圖像(70*70),然后將每個(gè)像素點(diǎn)的R,G,B轉(zhuǎn)成Y,Cr,Cb。接下來(lái)執(zhí)行上述所提“根據(jù)Y ,Cb,Cr色彩空間進(jìn)行球色建模”的算法(算法具體實(shí)現(xiàn)見(jiàn)附錄代碼,已做詳細(xì)注釋),實(shí)現(xiàn)對(duì)小球的空間定位,判斷小球的重心與攝像頭中心的位置關(guān)系。再根據(jù)得到的位置關(guān)系,對(duì)單片機(jī)的IOA口賦值(0:停止,1:左轉(zhuǎn),2:右轉(zhuǎn),3:直行),從而驅(qū)動(dòng)小車的電機(jī)實(shí)現(xiàn)小車的運(yùn)作。
這里關(guān)于精度的判斷至關(guān)重要。我們經(jīng)過(guò)反復(fù)驗(yàn)證。最終選定:對(duì)于左轉(zhuǎn),右轉(zhuǎn)延時(shí)10個(gè)毫秒,從而實(shí)現(xiàn)X軸2個(gè)刻度的改變。對(duì)于前進(jìn)延時(shí)20個(gè)毫秒,從而實(shí)現(xiàn)Y軸3個(gè)刻度的變化。之所以選擇上面的轉(zhuǎn)彎以及前進(jìn)步長(zhǎng),是考慮到計(jì)算得到的重心與攝像頭中心可能存在的誤差,經(jīng)過(guò)我們的試驗(yàn)證明,上述誤差是不會(huì)影響最終結(jié)果的。
3、機(jī)械臂撿球模塊工作原理
有兩片塑料片做成的類似人體靜脈瓣的裝置,當(dāng)小球進(jìn)入U(xiǎn)型槽后,由于該結(jié)構(gòu)使得小球不會(huì)再?gòu)牟壑忻撾x出去,并且再槽壁裝有傳感器,一旦小球入槽,則進(jìn)入下一步的中斷子程序,從而進(jìn)入撿球狀態(tài)。
當(dāng)檢測(cè)到小球入槽后,就進(jìn)入該中斷。中斷首先將IO清零,防止小車仍然在運(yùn)動(dòng)。然后控制機(jī)械臂的電機(jī)轉(zhuǎn)動(dòng),實(shí)現(xiàn)升降。機(jī)械臂的筒口也是采用塑料片做成的類似人體靜脈瓣的裝置,只用筒罩住球就能保證球不再掉出來(lái)。
4、應(yīng)用前景分析
本智能球類回收車是未來(lái)體育運(yùn)動(dòng)中電子系統(tǒng)的重要組成部分的基本模型。本系統(tǒng)將實(shí)現(xiàn)在復(fù)雜球場(chǎng)環(huán)境中自動(dòng)尋找、識(shí)別、跟蹤符合既定要求的目標(biāo)并回收的功能。
如果將來(lái)投入實(shí)地應(yīng)用,可采用更加專用的控制系統(tǒng)及硬件系統(tǒng),即可實(shí)現(xiàn)更高效率的工作,不僅可以撿拾網(wǎng)球等小球還可以撿拾籃球、排球等相對(duì)較大的球體以及甚至其他形狀的運(yùn)動(dòng)器材,使參加運(yùn)動(dòng)的人能全身心沉浸到運(yùn)動(dòng)帶來(lái)的歡樂(lè)中而不用管撿球等一些繁瑣且費(fèi)時(shí)費(fèi)力的工作。運(yùn)動(dòng)員可以進(jìn)行更加高效有序的訓(xùn)練,取得更好的成績(jī),體現(xiàn)本系統(tǒng)的設(shè)計(jì)初衷,彰顯本系統(tǒng)的社會(huì)、經(jīng)濟(jì)效益。
評(píng)論