基于FPGA的嵌入式机器人视觉识别系统模块Word文件下载.doc
《基于FPGA的嵌入式机器人视觉识别系统模块Word文件下载.doc》由会员分享,可在线阅读,更多相关《基于FPGA的嵌入式机器人视觉识别系统模块Word文件下载.doc(13页珍藏版)》请在冰豆网上搜索。
本项目英文页面:
http:
//www.seattlerobotics.org/encoder/200601/article3/index.php
所有源代码本站打包下载(注意,源代码均在网页文件中):
图一:
彩色视觉系统的设计概述
在图一中,箭头代表互连。
粗线描绘的是视频数据的通道,包括模拟和数字。
这些数据在图中不同功能块中以不同形式呈现。
最简单的数据通道是摄像机到处理器(从右到左)的数据获取。
在功能块VideoCamera和VIP之间,录像是模拟NTSC格式并通过电阻与75ohm同轴电缆进行匹配;
在功能块VIP和FPGA之间,数据以一个多线路的时间同步数字传输格式呈现;
在功能块FPGA和SRAM之间,视频数据仅仅是实际的数据;
最后,在功能块U-Processor和FPGA之间,视频数据是通过处理器地址和数据总线随机存储的。
图二:
电路板PCB焊点图
彩色视觉系统的设计利用了六个基本功能模块——U型处理器,FPGA(现场可编程门阵列),视频输入处理器,NTSC系统彩色摄像机,SRAM数据缓冲区和彩色液晶显示器。
在图一上可以看到这六个功能模块和它们之间的相互联系,其中粗线箭头代表视频路径。
第一个功能模块是U型处理系统。
由于这是一个通用的视觉系统,这里就不重点介绍U型处理器。
第二个功能模块FPGA是整个视觉系统的核心部分。
可编程逻辑是用来实施一些状态机,记忆体映射寄存器和其他功能,进而剥离处理器的图像采集功能。
彩色视觉系统实施全部功能所需要的逻辑元件数量远远超过了以往项目中CPLD(复杂可编程逻辑元件)的使用数量。
在选择FPGA的时候,最重要的是找到一个与处理器兼容的电压等级。
需要电压等级转换芯片是因为驱动电路板的尺寸和调试的复杂性。
最适合彩色视觉系统的FPGA是XilinxSpartanII-E系列的XC2SE-300。
第三个功能模块是模拟前端。
在某种意义上,它代表一个模拟向数字转换的功能。
因为输入这个系统的是NTSC视频,而输出是原始数字视频,所以它比标准的高速模拟数位转换器需要更多的电路元件。
如果目标是黑白的图像,简单的A/D转换就足够了,但是在彩色视频中捕捉相位关系就需要更多的能量。
这种能量来源于视频输入处理器VIP(VideoInputProcessor)。
第四个功能模块在某些情况下是可选的。
该功能块是一个静态的RAM池。
它直接连接到FPGA。
数据的输入和输出由FPGA内部的状态机完成。
在这种情况下,数据就是即将被采集的视频图像。
这个模块可选是基于一部分设计上的限制的。
现在,FPGA中都含有大量的RAM。
而所包含RAM的具体数量取决于系统要采集的图像的尺寸(X-Y+色彩深度)。
第五个功能模块是彩色视频摄像机。
过去主要是围绕物理尺寸等参数来选择摄像机以满足机器人所需空间。
只要光学和CCD都是合理的,NTSC-CCIR/ITU601就能保证多数摄像机正常工作。
第六个功能模块是彩色液晶显示器。
这个跟我们平时所认识的液晶显示器作用相同,这里也不作详细介绍了。
图三:
摄像机
应用一:
有色的Blob跟踪
图四:
Blob颜色检测
该视觉系统应用之一就是简单的Blob颜色检测。
如图三所示,彩色LCD显示屏的右边的影像是一个数码快照曝光点。
在这张图像上,系统正在识别绿心。
在这个系统中颜色边界定义如下:
red_bounds{8:
2}
green_bounds{31:
10}
blue_bounds{24:
10}
这些限界是针对该系统的。
在顶层文件系统中分别称为red_upper,red_lower,green_upper,greenlower,blue_upper和blue_lower。
这六个5位的寄存器从U型处理器总线接口被写入(内存映射),它们的内容反过来被输出到blob检测模块与原始视频信号做比较。
在每一个R,G,B中系统的色彩深度都是5位。
这就导致了一个颜色跨度0~31,并且[31,31,31]代表白色。
为了存储和加工,一开始这些都会被处理为一个单独的MSB格式的16位字即[0,R4,R3,R2,R1,R0,G4,G3,G2,G1,G0,B4,B3,B2,B1,B0]
图五:
彩色滤光示例(蓝色)
图四显示了系统中一个被过滤只剩下蓝色的图像。
在图中,FPGA已经去掉了所有未通过六个过滤标准的其它颜色信息。
在这张图片上,读者可以看到对象往往包含有少量的颜色问题,这是我们不希望看到的。
这可以在观察圆形的对象时体现出来,实际上是在逻辑分析仪显示屏上灯光对外部的反映。
结合这一图像,并注意到在蓝色过滤值中含有大量绿色物质,使用下面的过滤值:
red_bounds{16:
5}
green_bounds{30:
16}
blue_bounds{31:
12}
文本或字体,光标和定位线重叠时,将图像从U型处理器实时发送给FPGA。
整段包含即将采集的视频图像的SRAM将被内存映射到U型处理器的内存空间。
在视频帧转换完成后,内存映射寄存器提供给U型处理器,XY数据点就可以从FPGA直接读出。
所有这些都是U型处理器系统所必须的,来叠加文字和图形,然后写入相应的内存位置。
图六:
采集的图像
上面这四幅图是从视觉系统直接采集来的。
前面两幅图显示的是雷达光追踪人的手指,距离分别是2和4。
后面两幅图显示距离为4和6,并且有一个横向偏移时,追踪的差别。
图形重叠发生在FPGA影像下载之前。
激光场发生器和摄像机之间的垂直位移很小,从而导致影像间视差位移较低。
在这一点上,读者可能会想知道在这些影像上色彩的内容。
事实上,它看起来有点模糊。
这些影像被抓获之前,在通过4lsb绿色位时偏差就出现了。
应用二:
结构光的提取
图七:
激光测距形象广场
图八:
激光测距形象球面
图九:
激光测距的物理格局
图十:
采集到的图像
这幅图显示了由FPGA实时提取的跟踪结构光输出的一个重叠,同时提供采集到的图像给处理器系统。
不同于图五直接采集而来,这幅图是通过使用一个软件采集到的。
应用三:
FPGA处理器影像传输
图十一:
上图,又是一个通过系统直接数字捕获的例子,并且可以直接传输到PC上。
在这幅图中,摄像机和激光场发生器之间的垂直间隔小于2英寸。
最终的设计结果:
图十二:
制作完成的视觉系统平台
图十三:
VIP测试电路板的原型
图十四:
VIP的测试安装
图十五:
固定装置图
图十六:
机器人-"
DohnJoe"
图十七:
机器人的CAD模型
(RobotSky编辑:
ChenJing)
(RobotSky主编:
LiuWeichao)