基于FPGA的扫雷机器人软硬件设计
时间:07-26 10:02 阅读:1630次
*温馨提示:点击图片可以放大观看高清大图
简介:系统主要由三部分组成:1、PC端的用于完成系统自我学习的初始化程序。2、进行数字图像处理和模拟人类思维进行扫雷的决策模块。3、机械手臂。
系统结构和功能简介
系统主要由三部分组成:
1、PC端的用于完成系统自我学习的初始化程序。
2、进行数字图像处理和模拟人类思维进行扫雷的决策模块。
3、机械手臂。
PC端初始化程序:
在系统开始进入游戏之前,初始化程序会配合嵌入式系统在电脑显示屏上生成相应的与扫雷游戏相关的图案,辅助系统完成自我学习过程。
决策模块:
这部分是系统的核心部分,主要由FPGA、摄像头等其它必要的外围设备组成,完成对电脑屏幕的图像采集,然后利用OPENCV或者Simulink编写的算法对图像进行处理,并根据游戏规则模拟人类的思维做出决策,这些决策包括对游戏中的哪个雷区小方块进行操作,进行怎样的操作(单击、右击、同时两个键双击),作出决策之后将决策信息输出给机械手臂。
机械手臂:
机械手臂的工作比较简单,包括对鼠标位置的精确移动,完成对鼠标按键的操作(单击、双击等)。机械手臂对鼠标进行控制来完成游戏,就像人控制鼠标一样。
图1.1 系统结构图
系统工作流程
系统的工作流程主要分为自我学习过程和扫雷过程,该过程由PC端的初始化程序辅助完成。
图2.1 系统工作流程图
扫雷过程:
在介绍自我学习过程之前我们先介绍主要的扫雷过程,扫雷过程的流程图如图2.2所示。
图2.2 扫雷过程流程图
方块分割过程:
摄像头对电脑屏幕捕获图像之后进行一些必要的图像预处理(滤波、均衡化等),然后判断是否是第一次扫雷。如果是第一次扫雷则要进行边缘检测和图像分割等处理,这样做的目的是我们要分离出雷区的每一个方块,用于后面对每个方块类型进行判断。在获取各个方块的坐标之后进行存储操作,之后的处理就可以不再进行方块的分割操作了。下图是通过直接对屏幕进行截图之后在Matlab中对截图进行的边缘检测(sobel)结果。
图2.3 原始图像
图2.4 灰度图像
图2.5 边缘检测结果图
图2.6 边缘检测结果局部放大图
从上面的结果图来看效果是可以接受的,在对边缘检测的结果在进行相应的形态学操作之后再进行相应的处理和分析就可以得到各个方块的坐标信息。
决策过程:
决策过程首先是要确定各个方块的类型,我们利用方块分割过程确定的方块坐标信息将每个方块与9(还是10)种方块类型的图像进行对比,通过它们的相似程度来确定该方块的类型。例如2.7图中的最右下角的方块是,我们使用、、等方块类型与之比较,通过对比最右下角方块与各个确定类型方块的相关系数的大小来判断该未知方块的类型。也可以使用颜色信息等其它方式来判断类型不确定方块的类型。在方块类型确定之后,问题就变得简单了,我们只需要利用已知的信息结合游戏规则来推断哪些方块是地雷。然后用机械手臂控制鼠标完成扫雷游戏。在完成一幅图像的所有操作后继续采集下一幅图像重复以上工作,在每判断出每一个地雷的时候系统都会记录下来,当记录的地雷数达到了游戏的所有地雷数时系统会自动退出。
也许会遇到无法判断的情况,为了避免出现死循环系统将会采取随机的方式处理,这时就得看机器人的运气如何了。
自我学习过程:
由于在图像的采集过程中,图像的效果很容易受到周围环境的影响,比如摄像头到屏幕的距离、摄像头与屏幕的角度以及周围光线等,所有必要让系统具有一定的自适应能力。
我们的策略如下几点。
一、在屏幕上以全屏的方式显示颜色鲜艳纯色背景图案,这可以是系统准确的获取屏幕的位置,为后续的处理节省时间和空间。
二、在屏幕上对比强烈地显示位置确定的图块,这就像是使用触摸屏时使用的坐标校准功能,这主要是为后续系统对光标的控制提供准确的坐标映射信息。
三、按确定的顺序依次显示各种类型确定的方块图案,这主要是服务于后续的方块类型确定过程,也就是说我们每次都使用相同环境下的确定类型的方块去匹配位置类型的方块而不是一成不变的使用固定的方块图像去匹配,这可以在一定程度上提高匹配的准确率。