DIY编程器网

标题: 基于FPGA的扫雷机器人软硬件设计 [打印本页]

作者: admin    时间: 2014-10-12 16:21
标题: 基于FPGA的扫雷机器人软硬件设计
系统结构和功能简介
                        系统主要由三部分组成:
                         
                        1、PC端的用于完成系统自我学习的初始化程序。
                         
                        2、进行数字图像处理和模拟人类思维进行扫雷的决策模块。
                         
                        3、机械手臂。
                         
                        PC端初始化程序:
                        在系统开始进入游戏之前,初始化程序会配合嵌入式系统在电脑显示屏上生成相应的与扫雷游戏相关的图案,辅助系统完成自我学习过程。
                         
                        决策模块:
                        这部分是系统的核心部分,主要由FPGA、摄像头等其它必要的外围设备组成,完成对电脑屏幕的图像采集,然后利用OPENCV或者Simulink编写的算法对图像进行处理,并根据游戏规则模拟人类的思维做出决策,这些决策包括对游戏中的哪个雷区小方块进行操作,进行怎样的操作(单击、右击、同时两个键双击),作出决策之后将决策信息输出给机械手臂。
                         
                        机械手臂:
                        机械手臂的工作比较简单,包括对鼠标位置的精确移动,完成对鼠标按键的操作(单击、双击等)。机械手臂对鼠标进行控制来完成游戏,就像人控制鼠标一样。
                         
       
               

       
                图1.1  系统结构图

                方块分割过程:
                        摄像头对电脑屏幕捕获图像之后进行一些必要的图像预处理(滤波、均衡化等),然后判断是否是第一次扫雷。如果是第一次扫雷则要进行边缘检测和图像分割等处理,这样做的目的是我们要分离出雷区的每一个方块,用于后面对每个方块类型进行判断。在获取各个方块的坐标之后进行存储操作,之后的处理就可以不再进行方块的分割操作了。下图是通过直接对屏幕进行截图之后在Matlab中对截图进行的边缘检测(sobel)结果。
                         
       
               

       
                图2.3  原始图像

       
                 

       
               

       
                图2.4  灰度图像

       
                 

       
               

       
                图2.5  边缘检测结果图

       
                 

       
               

       
                图2.6  边缘检测结果局部放大图

                         
                        从上面的结果图来看效果是可以接受的,在对边缘检测的结果在进行相应的形态学操作之后再进行相应的处理和分析就可以得到各个方块的坐标信息。
                         
                        决策过程:
                        决策过程首先是要确定各个方块的类型,我们利用方块分割过程确定的方块坐标信息将每个方块与9(还是10)种方块类型的图像进行对比,通过它们的相似程度来确定该方块的类型。例如2.7图中的最右下角的方块是 ,我们使用 等方块类型与之比较,通过对比最右下角方块与各个确定类型方块的相关系数的大小来判断该未知方块的类型。也可以使用颜色信息等其它方式来判断类型不确定方块的类型。在方块类型确定之后,问题就变得简单了,我们只需要利用已知的信息结合游戏规则来推断哪些方块是地雷。然后用机械手臂控制鼠标完成扫雷游戏。在完成一幅图像的所有操作后继续采集下一幅图像重复以上工作,在每判断出每一个地雷的时候系统都会记录下来,当记录的地雷数达到了游戏的所有地雷数时系统会自动退出。
                         
                        也许会遇到无法判断的情况,为了避免出现死循环系统将会采取随机的方式处理,这时就得看机器人的运气如何了。
                         
       
               





欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2