速解魔方機器人(上)
4.1.2 FPGA部分
在FPGA部分,分為六個(gè)模塊:CCD圖像采集模塊、圖 像處理模塊、顏色識別模塊、VGA顯示模塊、舵機轉動(dòng)模 塊、SoC_System模塊。
(1)CCD圖像采集模塊
CCD攝像頭與CMOS攝像頭相比,在強光或弱光的不 利條件下,圖像畫(huà)質(zhì)都更高,我們直接采用友晶DE1-SoC配
圖8 VGA方案一效果圖
圖9 VGA方案二效果圖
圖10 VGA方案二效果圖
套提供的穩定高效的CCD圖像采集模塊。 (2)圖像處理模塊 通過(guò)圖像采集模塊,得到一幀分辨率為640*480的RGB
圖像,在圖像處理模塊中,把一幀畫(huà)面中所需部分像素的RGB值存儲到RAM中供顏色識別模塊使用。
(3)顏色識別模塊
此模塊從RAM中讀出魔方9個(gè)格子中心的10*10個(gè)像素 點(diǎn)的RGB數據,首先求出R、G、B各自的平均值,然后把這 些平均值通過(guò)lw_AXI_FPGA-to-HPS Bridge送到HPS部分。
(4)VGA顯示模塊
圖11 舵機轉動(dòng)模塊機械手臂
圖12 圖像采集示意圖
設計了兩套VGA顯示方案,分別如下:
方案一:將魔方的六個(gè)面展開(kāi)平鋪在VGA的右側,在 魔方機器人還原魔方的過(guò)程中,這個(gè)平面效果圖上的各個(gè)小塊也能跟著(zhù)轉動(dòng),最后跟魔方機器人里面的魔方同步還原
成六面。在VGA左側呈現的是CCD攝像頭獲取的畫(huà)面,這 樣大家也可以通過(guò)VGA顯示直觀(guān)地看到魔方機器人的工作狀 況。效果如圖8。
方案二:在開(kāi)發(fā)板上運行Ubuntu12.4系統(如下圖4-3所 示),在該系統下的Qt Creator環(huán)境中,通過(guò)OpenGL繪制了一 個(gè)3D效果的魔方,在VGA上呈現這個(gè)3D魔方,在魔方機器 人還原魔方的過(guò)程中,VGA上的3D魔方同步破解,與破解 系統一起同步完成破解。3D效果比平面效果最大的優(yōu)勢在 于,它給人的感覺(jué)更逼真,就像一個(gè)真的魔方在屏幕上自己 破解,給大家一種更好的視覺(jué)感受。效果如圖9所示。
方案二所呈現的效果圖是在i386的主機 上實(shí)現的,所使用的系統也是Ubuntu12.4, 但是在移植到DE1-SoC開(kāi)發(fā)板的過(guò)程中出現 了有些庫函數無(wú)法調用的問(wèn)題,由于時(shí)間原 因,放棄了方案二,選擇了方案一。
(5)舵機轉動(dòng)模塊 通過(guò)控制PIO端口控制機械手臂的旋轉
伸縮。機械手臂使用廉價(jià)環(huán)保的塑料條與舵 機拼接而成,結構設計確保穩定靈活,才能 準確還原魔方,因此我們設計了如圖11所示結構的機械手
臂。
4.2 系統硬件設計
4.2.1 圖像采集
攝像頭輸入的影像信號送至開(kāi)發(fā)板上的電視譯碼芯片 (ADV7180),經(jīng)過(guò)譯碼之后,轉換成8位ITU_R BT.656標準 接口的影像數據送至Cycolne V E FPGA,經(jīng)ITU-R 656譯碼器 將亮度與彩度信號分開(kāi),再做解交錯與縮放處理,然后將亮 度與彩度信號轉換成VGA顯示的紅、綠、藍信號,Cycolne VE FPGA將數字影像信
號 送 至 D E 1 開(kāi) 發(fā) 板 上 的VG A數碼轉換芯片 (A DV 7 1 2 3 ) , 最后成 功完成用攝像頭采集 圖像。如圖12所示。
* T D _ D e t e c t : 偵 測 電 視 譯 碼 芯 片 解 出 來(lái) 的 水 平 同 步 和 垂 直 同 步 是 否 穩 定 。 另 外 , 由 于 N T S C 與 PA L 在 水 平 同 步 與 垂 直 同 步 的 時(shí) 序 特 性 上 有 細 微 差 別 , 在 此 還 可 以 簡(jiǎn) 單 偵 測 輸 入 影 像的制式為NTSC還是PAL。
* Reset_Delay:當輸入影像的控制信號穩定時(shí),系統的
復位信號會(huì )清除。由于各個(gè)子模塊接受到穩定的影像信號會(huì ) 有時(shí)間差,所以設計不同延遲時(shí)間的復位信號。
* ITU_656_Decoder:8位ITU-R BT.656標準接口的影像 數據,再譯碼回16位亮度與彩度分開(kāi)的數據影像。
* Sdram_Control_4Port:4-Port SDRAM控制器。
* YUV422_to_444:將16位亮度與彩度的影像數據,再生 成每像素24位的YCbCr的影像數據。
* VGA_Ctrl:VGA控制器,產(chǎn)生VGA顯示端的水平同步 與垂直同步信號。
圖13 顏色識別模塊流程圖
圖14 魔方還原算法流程例圖1
圖15 魔方還原算法例圖2
* I2C_AV_Config:串行I2C總線(xiàn)接口來(lái)控制譯碼器與音 頻編譯碼器芯片。4.2.2 顏色識別: 顏色識別模塊的數據流程如圖13所示。 CCD攝像頭獲取的圖像與數據的處理: 首 先 , 在 屏 幕 上 畫(huà) 9 個(gè) 方 框 , 讓 魔 方 的 9 個(gè) 格 子 在 框內,然后只獲取框內區域的顏色數據。經(jīng)過(guò)多次試驗得出最合適的比例是,方框的邊長(cháng)占70個(gè)像素點(diǎn)。然后,因為存儲 容量的限制,取每個(gè)方框正中心的10*10點(diǎn)陣的顏色信息代 表此方格色塊的顏色信息。
由于之后需要對這些點(diǎn)的RGB進(jìn)行整體處理,所以,首先獲取9個(gè)格子的10*10的RGB存入RAM中, 9個(gè)RAM對應
9個(gè)格子的RGB緩存。然后,從9個(gè)RAM中取出RGB,求平均 值,這樣就完成了數據的初步處理,得到了9個(gè)格子的RGB 的平均值。
識別結果處理:
將得到的54個(gè)色塊的RGB值按順序輸入神經(jīng)網(wǎng)絡(luò )的162 維輸入向量,將會(huì )得到54個(gè)色塊的特征值。而標 準值分別 為:0表示白色,100表示紅色,200表示藍色,300表示綠 色,400表示黃色,500表示橙色,用特征值與標準值的誤差 來(lái)判斷最終輸出顏色。(未完待續)
評論