新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 基于PIC32實現的智能球類回收車,軟硬件協同

        基于PIC32實現的智能球類回收車,軟硬件協同

        作者: 時間:2016-12-05 來源:網絡 收藏
        近年來,隨著改革開放的不斷深化,人民生活水平有了極大的提高,更多的人參與到體育鍛煉中來,運動員的水平也有了飛躍性地上升,在訓練、比賽中提高效率顯得越來越重要。而在訓練場地以及比賽現場,如果能在不需要人工控制的情況下,就自動將練習時擊出的大量乒乓球、網球以及可能構成不安全因素的鉛球等球類撿回,無疑會減少運動員或工作人員的不必要的勞動,極大地提高訓練、比賽的效率。在我們普通民眾健身運動累了時也多么希望有這么一個工具能幫我們完成這些不必要的工作啊!

        針對這一問題,我們思考,是否可以設計一種自動找球、撿球的小車,它可以在運動場地中自動尋找、識別、跟蹤散落在地上的球體,如發現符合此項訓練球類特征,小車將自動調整運動接近此球,然后控制機械臂將進入U型槽的球體“收入囊中”,這既避免了不必要的勞動,提高了訓練、比賽的效率,同時可以讓運動員更加專注地投入比賽,取得更好的成績。

        本文引用地址:http://www.104case.com/article/201612/326286.htm

        基于上述考慮,本隊提出了如下設計方案---智能球類回收車。

        本作品是以PIC32單片機為核心微控制器,以自動目標跟蹤為主要工作方式的智能小車系統,它由視頻采集分析模塊、智能小車驅動模塊以及機械臂控制模塊等部分組成,此系統有自動目標尋找、識別、跟蹤、撿拾等功能。

        利用此系統,在乒乓球、網球等訓練場地以及鉛球等危險比賽現場,可以在完全脫離工作人員控制的情況下,自動找尋目標撿拾訓練、比賽用球。這樣就避免了工作人員或運動員不必要的工作,提高了訓練效率,也避免了鉛球、鐵餅等比賽、訓練中不安全事故發生的可能。在球類比賽百花齊放、全民運動熱情高漲的今天,該系統的研發、生產、應用必將具有重大的社會、經濟效益。

        系統功能概述

        本系統的工作過程如下:

        ①通過攝像頭觀察球場范圍,尋找小球,當視野中出現一個或多個完整的小球時根據近大遠小選擇最大的一個調整小車位置使小球正好位于小車視野正中心。

        ②控制小車運動,在運動過程中不斷校正小車方向,確定使其正對要撿起的小球,最后使小車到達小球位置。

        ③當小球進入車前設計的U型槽時觸動傳感器使小車進入撿球模式,控制一個位于小球上方類似裝羽毛球的筒形狀的筒放下將小球壓入其中,完成撿球。

        ④繼續掃描其他目標進行撿拾,按遠近關系依次撿完球場上所有的小球。攝像頭觀察檢測到沒有剩余小球時找尋返回位置標志(比如紅色小旗)返回,完成任務。

        本系統主要包括視頻采集分析模塊、智能小車驅動模塊以及機械臂控制模塊等部分。

        硬件模塊:

        軟件流程:

        我們的項目涉及到的軟件模塊主要由三個部分組成:

        一、攝像頭定位模塊:攝像頭結合I2C連接到單片機上。主要進行圖像收集,計算定位判斷,為下層小車控制提供運行控制字。

        二、小車控制模塊:根據上層提供的控制字,控制步進電機進行左轉,右轉,前進的運動。這里考慮到小車是在運行過程中,通過攝像頭收集到的數據進行運動判斷,因此小車運行的時間用定時中斷嚴格控制。每次小車轉彎精度為3度,前進距離為12cm。

        三、機械臂控制模塊:機械臂的控制模塊采用中斷控制,當小車的u型槽前部判斷小球已進入槽后,進入機械臂中斷,控制機械臂向下運動,套入小球后,再讓機械臂回到原處。接下來回到主程序繼續執行下部操作。

        下面,通過流程圖具體介紹軟件的運行流程:

        首先是主函數:主函數是一個while的無限循環:

        接下來對上面的各個部分進行說明:

        (1)

        攝像頭拍照模塊采用查詢方式,攝像頭拍下照片,等待所有數據都傳給單片機后,標志位flagd置1。這里攝像頭與單片機是運用I2C進行連接。流程圖如下:

        (2)

        對攝像頭采集進來的圖片進行輪廓分析,判斷小球的位置。未看到小球時,小車原地旋轉,然后再次進行拍攝。當看到多個小球時,根據遠近關系照成的平面上大小的不同,將最大的一個鎖定為目標。然后根據小球的位置,向小車的控制模塊發送控制字,流程圖:

        (3)

        根據上一步送下來的控制字control對小車的運動進行控制,小車的驅動模塊接單片機的不同IO口,對IO給出不同的輸出分別控制小車向左旋轉,向右旋轉以及前進。旋轉以及前進的精度通過定時中斷精確控制;流程圖如下:

        (4)

        有兩片塑料片做成的類似人體靜脈瓣的裝置,當小球進入U型槽后,由于該結構使得小球不會再從槽中脫離出去,并且再槽壁裝有傳感器,一旦小球入槽,則進入下一步的中斷子程序,從而進入撿球狀態。流程圖如下:

        (5)

        當檢測到小球入槽后,就進入該中斷。中斷首先將IO清零,防止小車仍然在運動。然后控制機械臂的電機轉動,實現升降。機械臂的筒口也是采用塑料片做成的類似人體靜脈瓣的裝置,只用筒罩住球就能保證球不再掉出來。流程圖如下所示:

        視頻處理與自動目標識別模塊工作原理

        1.1原理概述

        攝像頭拍照模塊采用查詢方式,攝像頭拍下照片,等待所有數據都傳給單片機后,標志位flagd置1。這里攝像頭與單片機是運用I2C進行連接。對攝像頭采集進來的圖片進行輪廓分析,判斷小球的位置。未看到小球時,小車原地旋轉,然后再次進行拍攝。當看到多個小球時,根據遠近關系照成的平面上大小的不同,將最大的一個鎖定為目標。然后根據小球的位置,向小車的控制模塊發送控制字。

        1.2 設計細節

        本設計采用一種基于球色的球類檢測方案。

        球類檢測是指: 在輸入圖像中確定是否有球體存在,如果有則確定其位置、大小的過程。球體檢測問題的提出基于人臉識別,人臉識別的第一步就是要從圖像中檢測并定位出人臉的位置,隨著模式識別技術的發展以及自動化程度的提高, 人臉檢測開始作為一個獨立的領域進行研究。

        球體檢測方法主要有基于幾何特征的方法:基于球色模型的方法和基于統計理論的方法。本文將主要介紹一種基于球色的球體檢測算法!

        1.2.1 色彩空間的選擇

        為了對球色進行分割, 把球體區域從背景中分離出來, 需要使用適合不同光照條件下的可靠的球色模型!研究顯示:盡管不同種類、不同材質的球色看上去不同,但這種不同主要集中在亮度上, 在去除亮度的色彩空間里,不同球體的顏色分布具有聚類性。本文中的球色模型就是在這樣的色彩空間里建立的。通常所用的表現彩色圖像的方法是R G B , 但是在這里, R G B 空間不再適合用來作為球色模型的色度空間,因為在R G B 圖中, (r,g,b) 這三個分量不但代表著圖像的色彩分布, 而月還表示著圖像的亮度(圖像中每個像素的亮度等于其R G B 三個分量之和),而亮度是一個非常不穩定的參量, 它很容易受到周圍環境的影響而導致分離球色區域的失敗。因此采用把亮度分離的色度空間能夠減小亮度的影響。

        Y Cb Cr 色彩空間中的球色分布聚集在色度空間中一個較小的區域中, 它具有以下幾個優點:(1)具有與人類視覺感知過程相類似的構成原理;(2) Y Cb Cr色彩空間格式廣泛地應用在電視顯示等領域中, 也是許多視頻編碼, 如MPEG、JPEG 等標準中普遍采用的顏色表示格式;(3)Y Cb Cr色彩空間格式月有與HSI等其它一些色彩空間格式相類似的將色彩中的亮度分量分離出來的優點。

        因此,本文最終選擇了Y Cb Cr色彩空間進行球色建模。

        1.2.2 球色的相似度計算

        依據球體顏色在Y Cb Cr空間的概率分布特性,建立一個高斯球色模型,其概率密度函數用式(1)表示:

        (1)

        其中C 為協方差矩陣

        (2)在前面建立的球色模型的基礎上, 通過球色相似度計算公式:

        (3)

        可以計算單個像素的球色相似度值, 并且很容易得到整幅圖像的最大球色相似度值。每

        一點像素的球色相似度值除以最大球色相似度值,作為i亥緣素點的灰度值,從而得到球色相似度。

        由于我們傳輸的圖片屬于RGB模式,因此需要進行顏色空間變化。

        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 圖像的二值化分割

        二值圖像是指圖像中的每個像素只取兩個離散的值之一(如0, l) ,用數學公式表示為:

        (4)

        上式中, f 認刃表示一幅數字圖像, x,y是該圖像中某個像素點的坐標值,0 和1 表示該像素的像素取值。0 和1是個抽象的表示,并非實際像素值,它可以代表不同的顏色,在這里0代表黑色, 1代表白色, 所得到的圖就是一個黑白二值圖。將圖二值化是因為,二值圖像中的許多運算是邏輯運算而不是算術運算, 所需的處理時間很短,計算速度快,而且算法也容易理解和實現。

        二值化圖像可以通過選取適當的閥值獲得。選擇合適的閥值是圖像二值化分割效果好壞的關鍵。通過對球體灰度圖像進行分析可以發現,真正的球色像素相比于非球色像素往往擁有更高的亮度,所以可以設定一個閥值,當該點像素的近似度高于這個閥值則認為該點為球色像素并置1,反之若低于該閥值則置0。

        1.2.4 候選球體的確定

        經過平滑濾波處理后, 二值化圖中的部分噪聲可以被去除,但由于背景較復雜,受影響的因素很多, 圖中仍然會存在許多面積較小的非球體區域。為了減少算法的工二作量,需要進一步排除這些不含球體的區域。因此對二值分割圖中的這些區域進行比例結構的分析,過濾掉不可能的球體區域,以確定最終的候選球體區域。

        本文將用以下兩個方法對候選球體區域進行篩選:

        (1)區域的面積:去掉面積較小區域,即刪除面積小于30 以下的區域, 其面積為該區域中的白色像素點的個數。

        (2) 區域的長寬比:一般來說球體(以網球為例)的直徑介于6.35cm至6.67cm之間,考慮到其他球體直徑可能大于網球, 故選取的范圍的上限可以適當放大,經過多次實驗發現, 當把球體的選取范圍定在直徑為8cm的時候,真正的球體區域一般都能包含在內,不會被刪除。這個條件考慮到了真正包含球體區域的范圍大小, 排除了一些類似球類顏色但直徑不合要求的區域。

        1.2.5 總結

        綜上所述, 基于球色的球體檢測方法能較好的分割出可能的球體區域, 把接近于球體顏色的區域從圖像中分離出來, 使得目標區域能較好地提取。由于此算法首先篩選掉了一部分背景,減小了球體搜索范圍,故可以大幅度提高檢測的速度。對分割出來的可能球色區域幾何直徑的篩選, 進一步排除了較為明顯的干擾區域, 在一定程度上減少了后續模板匹配過程的工作量。

        2、小車驅動工作模塊工作原理

        該模塊充分應用了pic32單片機存儲容量大, 運算速度快,數據傳輸迅速的特點,成功將Y Cb Cr色彩空間進行球色建模的算法移植到單片機上實現,大大縮減了成本。

        單片機首先通過串口(38400Baud)接受攝像頭拍攝獲得的R G B圖像(70*70),然后將每個像素點的R,G,B轉成Y,Cr,Cb。接下來執行上述所提“根據Y ,Cb,Cr色彩空間進行球色建模”的算法(算法具體實現見附錄代碼,已做詳細注釋),實現對小球的空間定位,判斷小球的重心與攝像頭中心的位置關系。再根據得到的位置關系,對單片機的IOA口賦值(0:停止,1:左轉,2:右轉,3:直行),從而驅動小車的電機實現小車的運作。

        這里關于精度的判斷至關重要。我們經過反復驗證。最終選定:對于左轉,右轉延時10個毫秒,從而實現X軸2個刻度的改變。對于前進延時20個毫秒,從而實現Y軸3個刻度的變化。之所以選擇上面的轉彎以及前進步長,是考慮到計算得到的重心與攝像頭中心可能存在的誤差,經過我們的試驗證明,上述誤差是不會影響最終結果的。

        3、機械臂撿球模塊工作原理

        有兩片塑料片做成的類似人體靜脈瓣的裝置,當小球進入U型槽后,由于該結構使得小球不會再從槽中脫離出去,并且再槽壁裝有傳感器,一旦小球入槽,則進入下一步的中斷子程序,從而進入撿球狀態。

        當檢測到小球入槽后,就進入該中斷。中斷首先將IO清零,防止小車仍然在運動。然后控制機械臂的電機轉動,實現升降。機械臂的筒口也是采用塑料片做成的類似人體靜脈瓣的裝置,只用筒罩住球就能保證球不再掉出來。

        4、應用前景分析

        本智能球類回收車是未來體育運動中電子系統的重要組成部分的基本模型。本系統將實現在復雜球場環境中自動尋找、識別、跟蹤符合既定要求的目標并回收的功能。

        如果將來投入實地應用,可采用更加專用的控制系統及硬件系統,即可實現更高效率的工作,不僅可以撿拾網球等小球還可以撿拾籃球、排球等相對較大的球體以及甚至其他形狀的運動器材,使參加運動的人能全身心沉浸到運動帶來的歡樂中而不用管撿球等一些繁瑣且費時費力的工作。運動員可以進行更加高效有序的訓練,取得更好的成績,體現本系統的設計初衷,彰顯本系統的社會、經濟效益。



        關鍵詞: PIC32智能球

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 哈巴河县| 文昌市| 阿克苏市| 合山市| 淳安县| 镶黄旗| 利川市| 乌拉特后旗| 南华县| 拉孜县| 清涧县| 临泉县| 高唐县| 蒙阴县| 镇平县| 修水县| 兖州市| 枣庄市| 晋中市| 怀来县| 会泽县| 襄樊市| 徐水县| 都安| 罗定市| 岢岚县| 湟源县| 清远市| 垣曲县| 山阳县| 集安市| 平安县| 吉安市| 大兴区| 梁河县| 宣化县| 武邑县| 鹰潭市| 福建省| 磐安县| 江阴市|