基于FPGA的视觉导航小车设计与实现

FPGA/ASIC技术

204人已加入

描述

摘要:视觉导航作为新兴起的技术,受众多研究者的青睐.设计了以现场可编程门列阵(FPGA)为控制核心的自主导航小车,采用一种新颖的自适应路径识别算法实现路径的识别与提取,并结合圆弧路线规划和控制策略完成小车的自主导航控制.自适应路径识别算法使导航小车可以适应多种光照和路面条件.测试结果表明,小车能够在不同光照条件下的实验室和露天田径跑道环境中实现较好的导航效果,在田径跑道上的导航测试中,小车的最高运行速度达到3.5m/s。

目前,在视觉导航小车的研究中所采用的控制处理核心大多是单片机或数字信号处理(DSP)芯片[1-2]。这类处理核心的优点是成本低,使用方便.但是由于单片机和DSP的图像处理速度有限,所以需要对视频图像进行下采样处理,以适应视频采集的速率,从而影响了图像处理和识别的效果.采用现场可编程门列阵(FPGA)芯片可以大大提高图像处理和识别的速度,克服以上缺点.FPGA是一种新型的信息处理系统,是一个介于软件和硬件之间的计算平台.它既可以像软件一样现场编程,也可以像硬件一样直接控制门电路进行运算,这个特性使得它更易于实现并行运算,提高图像处理速度,保证图像处理的实时性.因此FPGA非常适用于视觉控制系统的控制中心[3]。

在迅速准确地处理和分析图像的基础上,控制处理中心可以实时获得小车与路径的相对位置,并依此对小车进行路线规划和运动控制,实现小车的自主导航.在路线规划方面已有大量的研究[4-15]。Liu[9]、Fu[10]等以小车当前位置与目标位置之间的距离和转角偏差作为参数设计模糊控制表,对小车进行控制;Hsueh等[11]对位置和角度偏差的计算方法进行改进,并设计比例-积分-微分(PID)控制器,实现了小车自主导航;刘海涛等[12]提出了基于模式匹配的模糊控制方法;李进等[13]提出了直线拟合提取路径信息,结合PID控制完成小车自主驾驶的方法.任永新等[14]提出将控制分成2部分:大转角部分采用模糊控制、小转弯的路径采用精确的控制方法.在小转弯时,设计一条规划圆弧路线,依据此圆弧路线的曲率半径,通过一定的转换关系得到控制小车2个驱动轮转速的控制量,实现小车的转向控制.本文以OV7620作为图像传感器,以FPGA为核心控制器,通过图像采集、路径识别以及查找表技术实现了小车导航控制系统。

1 硬件结构

自主导航小车的图像获取采用搭载OV7620图像传感器的C3188摄像头模组,FPGA控制板采用Xilinx公司的Spartan3E开发板,小车为恒龙3851-2遥控四驱越野模型车。

小车通过图像传感芯片OV7620获取图像信息。FPGA以图像传感器芯片提供的3个时钟信号作为同步信号完成图像采集.通过FPGA控制板的数字接口直接连接摄像头的8位数据线和相应控制信号,实现视频信号的快速采集.图像速率为30帧/s。

2 路径识别与路线规划

2.1 路径识别
路径识别首先要对图像进行二值化处理。虽然在图像二值化算法方面已经有很多研究,由于视觉导航对运算速度有很高的要求,所以普遍采用最简单的固定阈值方法.但是固定阈值二值化方法对环境的光照条件和背景噪声非常敏感,使得相应的路径识别效果对环境条件要求高,而且非常不稳定.因此我们提出了一种自适应的路径识别方法,把图像二值化、路径位置和宽度的确定这两个分立的步骤结合起来,从一组预设的路径宽度和二值化阈值出发,对图像进行逐行处理,并根据上一行的宽度和阈值计算结果对宽度和阈值的预设值进行调整,当预设值与测量值趋于平衡时,识别结果趋于准确.具体的流程如图1所示.在上电初始化时,以初始的阈值、车道宽度值和路径中心点值作为预设值,对图像第一行数据进行如下处理:
1)对一行图像进行均值滤波。
2)根据预设的阈值对图像进行二值化处理。
3)从预设的路径中心点出发分别向视野的两侧搜索路径边缘。
4)计算路径宽度和路径中心点,把计算的路径宽度值与预设值比较.当计算宽度值大于预设宽度值时,提高预设宽度和二值化阈值,反之作相反调整.路径中心点直接作为新的预设路径中心点。
5)若已到本帧图像的最后一行,则跳到6)处理,否则返回步骤1)处理下一行图像数据。
6)在下一帧图像开始时,以上一帧图像最后一行图像处理后得到的路径宽度和阈值作为预设值返回1)进行处理。

在以上自适应算法中,图像的滤波和二值化是同时进行的,系统只需要存储一行二值化后的图像,在提高处理速度的同时,有效降低了存储需求。

FPGA

在步骤3)中,采用卷积的方法对路径边缘进行检测并计算路径的位置和宽度,其流程如图2所示。从预设中心点向两边同时扫描,确定路径的边缘.利用路径自身的连续性,使上一行的检测结果在下一行的检测中得到应用,有效提高了算法的稳定性和适应能力。

FPGA

图2中2个卷积函数在硬件上的实现方式分别为

从上式可知,V1、V2的取值范围为8~16,故定义当卷积值大于或等于12时为路径边缘点判据.当左右边缘搜索结束后,根据如下规则确定这一行路径中心点和路径宽度.记前一行路径中心点为M0,当前所扫描到的左边缘位置为L,右边缘位置为R,当前行的路径中心点位置M 和路径宽度W 的计算方法如下:

FPGA

以上4点中,除了第4)外,其余3点都对阈值及预定的路径宽度进行了调整.我们用上一帧图像第一行路径的中心位置和宽度作为下一帧图像的中心位置和宽度的预设值。

2.2 路线规划
小车上的摄像头是固定的,其视野范围也随之固定。图3给出摄像头的视野范围及相对位置,其中梯形框为视野范围,y轴为小车前进方向,O为小车前轴中心点,D 为视野最前方的路径中心点,即目标点.规划路线为通过O 和D 点且与y 轴相切的圆弧.在小车偏离了路径的情况下,规划路线可以引导小车逐渐回归导航路径.根据图3给出的几何关系,可以得出规划路径的曲率半径R 满足方程

FPGA

 

FPGA

图4给出小车在圆弧上行驶的示意图,其中A,B两点分别代表小车前轴和后轴的中心点,L 为小车主轴的长度.从图4可以得到小车舵机转角与规划路线的曲率半径R 之间关系

FPGA

sinα=L/2R. (3)
由于在实际行走的路线中,实际路线的曲率半径R 远大于车轴L,因此,式(3)可以简化成
α≈L/2R. (4)

根据式(4)计算的转角,可以对小车的舵机转角进行实时控制.实验中的小车采用脉冲调制(PWM)控制器来控制舵机转角.舵机转角与输出给控制器的占空比成正比,有
α=μx, (5)
其中x 为占空比,μ为比例系数。

由式(3)~(5)可知,控制舵机转角的占空比与规划路线的曲率是成正比关系

FPGA

由于导航过程中,b保持不变,所以只需测得目标点D 在视场中的横坐标值a,即可根据式(7)求得控制所需的占空比,实现的小车的导航和控制。

任永新等[14]同样采用圆弧路线规划,但是采用小车前轴中点与预瞄点之间的距离为路线参数,这不利于计算,而我们给出的公式更有利于在图像上直接获得,更便于实时性计算.传统的模糊控制中将路径分区段和类型进行控制,控制是不连续、不精确的,而本文提出的圆弧路线规划算法则具有连续精确控制的优点。

3 FPGA实现

FPGA控制系统采用FPGA作为控制核心,在算法的实现方式上与传统的软件算法有着较大的区别,如图5所示。

FPGA

图5中有3个模块:图像采集、滤波及二值化模块、路径识别模块、小车控制模块.每一个模块都对应一个独立的电路结构.由于是硬件实现,整个系统的不同部分是并行工作的。

在FPGA中滤波通过8个8bit的移位寄存器和一个加法器实现,而二值化由一个比较器和一个二路选择器来实现.滤波和二值化采用流水线设计,使二项操作可以并行进行.在采集图像的同时完成滤波和二值化,以节省逻辑资源和提高运算速度。

二值化后的数据传到路径识别模块,并逐行进行边缘检测.边缘检测同样采用流水线设计,使整个系统的各部分都处于并行运行状态.与需要高度下采样才能跟上视频速率的单片机或者DSP系统相比,我们的并行处理系统可以对实际图像无压缩的处理,提高了路径识别的准确度。

通过路径识别模块对图像的处理,找到路径与视场中心点的距离,即a 的值.根据式(7)即可计算出需要向小车舵机控制器输出的占空比,并生成符合占空比要求的脉冲信号.式(7)中除了a 值之外都是固定值,其中比例系数可通过实验测量,所以可以事先计算出与每个a值对应的占空比x,并储存到FPGA芯片中.在实际导航过程中根据实际a 值进行查表运算得到所需要的占空比.这样既可以提高运算速度,又可以节省逻辑资源.我们的视频图像每行共有320个像素,所以只需要储存320个x 值即可。

图像采集系统采用的OV7620感光芯片的帧率为30帧/s,由于采用了FPGA 并行处理技术,系统可以实时处理30帧/s的图像信息,在保证实时性的同时提高了小车导航的灵敏度和可靠性。

整个系统共使用2457个4输入的查找表(lookup-table,LUT)单元,占总资源的25%。

4 系统调试与实验结果

4.1 占空比与曲率半径关系测量

由式(7)可知FPGA在控制小车舵机转角所输出的占空比与模拟圆弧的曲率为正比关系.通过测量占空比与路线曲率的关系即可得到λ 值.给小车设定一系列固定占空比,然后测量小车行驶圆弧路线的曲率。图6给出了占空比与小车行驶圆弧路线曲率的关系。

FPGA

通过图6,可以得出式(7)中比例系数为0.9206。利用这个比例系数和实际测得的b值,就可以根据规划路线的曲率半径得出应输出的占空比。

4.2 实际导航测试
图7给出小车在室内实验路径环境下,测试自适应算法时所采集的图像信息.从图7可以看出,二值化后的路径开始的一段呈锯齿状,而在此之后的得到的路径边缘是光滑的.说明在开始时,二值化阈值处于调整阶段,在一定时间后达到适应于当前环境的阈值。

FPGA

小车的实际导航效果分别在实验室路径和田径场的实际跑道路径进行了测试.实验室顶部有6支日光灯管,侧面有2扇窗户.在实验室内4种不同光照条件下进行了实际导航测试:6支灯管加上2扇窗户照明、2扇窗户照明、1扇窗户照明、0.5扇窗户照明.在实验室环境下还测试了路径部分遮掩和平行干扰路径对导航效果的影响.实验室环境的测试路径如图8所示。

FPGA

测试结果表明,小车在不同的光照条件下都能准确沿着直线部导航.在转弯部分偏离了较小的部分,但不超过3cm,实现了较好的导航效果。

为了测试小车在更复杂的路径环境下的视觉导航能力,我们在露天的400m标准田径跑道上进行导航测试。在实际测试中,其偏离路径的最大距离随着其速度增加和跑道上杂物的干扰而略有增加.小车的最高测试速度可达3.5m/s,此时小车偏离跑道的最大距离约为4~6cm,展现了较好的导航效果.我们还在早、中、晚不同时间段对小车的导航效果进行测试,证明小车可以在不同露天光照条件下进行准确导航。

5 结 论

本文介绍了一种基于FPGA 的视觉导航小车系统,采用FPGA作为处理控制中心,实现对图像的并行高速处理;提出了一种自适应路径识别算法,和圆弧路线规划算法,实现了在多种光照条件下和复杂路径条件下的准确导航。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分