基于FPGA的掃雷機器人軟硬件設計
系統結構和功能簡介
系統主要由三部分組成:
1、PC端的用于完成系統自我學習的初始化程序。
2、進行數字圖像處理和模擬人類思維進行掃雷的決策模塊。
3、機械手臂。
PC端初始化程序:
在系統開始進入游戲之前,初始化程序會配合嵌入式系統在電腦顯示屏上生成相應的與掃雷游戲相關的圖案,輔助系統完成自我學習過程。
決策模塊:
這部分是系統的核心部分,主要由FPGA、攝像頭等其它必要的外圍設備組成,完成對電腦屏幕的圖像采集,然后利用OPENCV或者Simulink編寫的算法對圖像進行處理,并根據游戲規(guī)則模擬人類的思維做出決策,這些決策包括對游戲中的哪個雷區(qū)小方塊進行操作,進行怎樣的操作(單擊、右擊、同時兩個鍵雙擊),作出決策之后將決策信息輸出給機械手臂。
機械手臂:
機械手臂的工作比較簡單,包括對鼠標位置的精確移動,完成對鼠標按鍵的操作(單擊、雙擊等)。機械手臂對鼠標進行控制來完成游戲,就像人控制鼠標一樣。
圖1.1 系統結構圖
掃雷過程:
在介紹自我學習過程之前我們先介紹主要的掃雷過程,掃雷過程的流程圖如圖2.2所示。
圖2.2 掃雷過程流程圖
方塊分割過程:
攝像頭對電腦屏幕捕獲圖像之后進行一些必要的圖像預處理(濾波、均衡化等),然后判斷是否是第一次掃雷。如果是第一次掃雷則要進行邊緣檢測和圖像分割等處理,這樣做的目的是我們要分離出雷區(qū)的每一個方塊,用于后面對每個方塊類型進行判斷。在獲取各個方塊的坐標之后進行存儲操作,之后的處理就可以不再進行方塊的分割操作了。下圖是通過直接對屏幕進行截圖之后在Matlab中對截圖進行的邊緣檢測(sobel)結果。
圖2.3 原始圖像
圖2.4 灰度圖像
圖2.5 邊緣檢測結果圖
圖2.6 邊緣檢測結果局部放大圖
從上面的結果圖來看效果是可以接受的,在對邊緣檢測的結果在進行相應的形態(tài)學操作之后再進行相應的處理和分析就可以得到各個方塊的坐標信息。
決策過程:
決策過程首先是要確定各個方塊的類型,我們利用方塊分割過程確定的方塊坐標信息將每個方塊與9(還是10)種方塊類型的圖像進行對比,通過它們的相似程度來確定該方塊的類型。例如2.7圖中的最右下角的方塊是 ,我們使用 、 、 等方塊類型與之比較,通過對比最右下角方塊與各個確定類型方塊的相關系數的大小來判斷該未知方塊的類型。也可以使用顏色信息等其它方式來判斷類型不確定方塊的類型。在方塊類型確定之后,問題就變得簡單了,我們只需要利用已知的信息結合游戲規(guī)則來推斷哪些方塊是地雷。然后用機械手臂控制鼠標完成掃雷游戲。在完成一幅圖像的所有操作后繼續(xù)采集下一幅圖像重復以上工作,在每判斷出每一個地雷的時候系統都會記錄下來,當記錄的地雷數達到了游戲的所有地雷數時系統會自動退出。
也許會遇到無法判斷的情況,為了避免出現死循環(huán)系統將會采取隨機的方式處理,這時就得看機器人的運氣如何了。
自我學習過程:
由于在圖像的采集過程中,圖像的效果很容易受到周圍環(huán)境的影響,比如攝像頭到屏幕的距離、攝像頭與屏幕的角度以及周圍光線等,所有必要讓系統具有一定的自適應能力。
我們的策略如下幾點。
一、在屏幕上以全屏的方式顯示顏色鮮艷純色背景圖案,這可以是系統準確的獲取屏幕的位置,為后續(xù)的處理節(jié)省時間和空間。
二、在屏幕上對比強烈地顯示位置確定的圖塊,這就像是使用觸摸屏時使用的坐標校準功能,這主要是為后續(xù)系統對光標的控制提供準確的坐標映射信息。
三、按確定的順序依次顯示各種類型確定的方塊圖案,這主要是服務于后續(xù)的方塊類型確定過程,也就是說我們每次都使用相同環(huán)境下的確定類型的方塊去匹配位置類型的方塊而不是一成不變的使用固定的方塊圖像去匹配,這可以在一定程度上提高匹配的準確率。
評論