garfield

ccd赛道识别

0
阅读(3873)
  1. 前言:

在第一届飞思卡尔杯全国大学生智能车比赛中,需要制作一个以MC9S12DG128单片机(下文简称S12)为核心控制单元并可以自主识别路径的模型赛车进行比赛。赛道底色为白色,标有黑色中心线。如何准确识别道路中心线参数(位置、角度、曲率等),计算出赛车与道路中心线的相对位置与相对角度,是整个控制系统中的关键。

检测路径参数可以使用多种传感器件:光电管阵列、CCD图像传感器、激光扫描器等等。其中,最常使用的方法为光电管阵列、CCD图像传感器1。各种检测方法都有相应的优缺点。如何有效利用单片机内部资源进行路径参数检测,也是确定检测方案的关键。

基于光电管阵列检测赛道参数的方法主要具有如下的缺点:

  1. 赛道空间分辨率低:一方面受到大赛规则2关于传感器个数的限制;另一方面,过多的光电传感器在固定安装、占用CPU输入端口资源等方面也有限制;
  2. 识别道路信息少,一般只能检测路径中心位置;
  3. 由于固定位置的限制,光电管只能安装在车模前面不远的位置,观测信息前瞻性差;
  4. 容易受到环境光线的干扰;

以上问题会影响车模控制精度以及运行速度。通过一定的硬软件设计,虽然可以部分解决上述的问题(这方面将有另文叙述),但相比之下,使用面阵CCD器件则可以更有效的解决这些问题。CCD器件在比赛规则中算作一个传感器。普通CCD传感器图像分辨率都在300线之上,远大于光电管阵列。通过镜头,可以将车模前方很远的道路图像映射到CCD器件中,从而得到车模前方很大范围内的道路信息。对图像中的道路参数进行检测,不仅可以识别道路的中心位置,同时还可以获得道路的方向、曲率等信息。利用CCD器件,通过图像信息处理的方式得到道路信息,可以有效进行车模运动控制,提高路径跟踪精度和车模运行速度。

本文提出一种使用面阵CCD并且能够有效利用S12单片机内部硬件资源的路径参数检测方法。普通CCD图像传感器的工作电压一般为12V,输出NTSC或者PAL制式的模拟视频信号。利用S12内部的AD转换器,配合从视频信号中分离出的同步信号,可直接将图像信号采集到单片机内部RAM中,然后通过软件对图像信息进行处理,得到路径各种参数。

下文中,我们将首先讨论使用S12单片机直接采集视频信号存在的技术难点与解决方法,然后给出了硬件设计方案以及实验结果,最后对这种检测方法特点以及存在的问题进行讨论。

二、技术难点与解决方法:

直接利用S12单片机中的AD采集视频图像,存在着采集速度、存储数据空间、处理速度、工作电压以及同步信号分离等方面的技术难点。下面就这些问题及其解决方法进行讨论。

1、采集速度:

普通CCD图像传感器通过行扫描方式,将图像信息转换为一维的视频模拟信号输出。CCD输出的信号变化很快,比如PAL制式的视频信号,每秒钟输出50帧图像信息(分为奇、偶场),每帧图像有312.5行,每行图像信号时间为64微秒,其中有效的图像信号约为56微妙左右。相比之下,S12的AD转换器采集速度较低:根据S12器件手册(3),进行10位AD转换所需要的时间为7微秒。这样,采集的图像每行只能有8个像素,水平分辨率很低。另一方面,每场图像可以采集300行左右的图像信息,所以图像垂直分辨率相对较高。从这种水平分辨率低、垂直分辨率高的图像中,我们无法获取具有足够精度的路径信息。

为此,我们分析一下大赛采用跑道的形状特点:跑道都是由直线和圆弧组成,检测车模前方一段路线参数,只需要得到中心线上3~5个点的位置信息就可以估算出路径参数(位置、方向、曲率等)。这些点的位置,通过图像中若干行信息就可以检测出来(如图1所示)。因此,所需检测图像应该是水平分辨率高、垂直分辨率低。

图1 部分赛道形状,赛道中心线检测位置

将S12单片机采集的图像分辨率特点,与赛道检测对图像分辨率的要求进行对比,可以发现,在安装CCD摄像头的时候,只要将它旋转90度,输出的图像信息也相应旋转90度(如图2所示)。这样一来,S12中的AD转换器采集的图像信息,水平分辨率与垂直分辨率就会互换,原来水平分辨率低、垂直分辨率高的图像,就会变成水平分辨率高、垂直分辨率低的实际图像,正好满足道路参数检测的要求。

图2 赛道图像以及旋转90度后的赛道图像

此外,我们还可以通过让S12适当超频运行、降低AD转换器精度等方式,提高AD转换器的速度。实验中我们发现,通过设定S12中的时钟PLL寄存器,可以将S12内部总线频率提高到40~48MHz,而此时CPU仍然可以正常工作。同时,可以将AD转换器时钟频率提高到12-24MHz,在损失一定转换精度的代价下,将转换时间缩短为1.5微秒左右。这样,我们就可以在一行图像信号中采集48个有效的图像信息。

将上述方法结合在一起,可以采集到300 * 48分辨率的帧图像数据。在此基础上,可以有效的检测出路径参数。通过实际测试,基于75 * 24分辨率的图像,检测出的路径参数仍能满足控制需要。也就是说,我们每隔4行采集一行数据、每行采集24个点就可以了。这样一来,所需要的图像存储空间以及图像采集的时间就大为降低了。

2、图像存储空间:

由于将图像水平旋转了90度,需要将图像数据进行存储,在整幅图像的基础上计算出路径水平信息。S12内部有8K字节的RAM空间。如果存储300*48分辨率图像则不够,但可以存储若干幅75*24的低分辨率图像数据。从低分辨率图像所得到的路径参数,其精度仍可以满足车模控制的需要。一般情况下,只需要两块图像存储空间即可,一块作为采集图像的存储空间,另外一块作为处理缓冲区。

3、图像信息处理速度:

CPU的主要工作包括图像采集、图像信息处理以及运动控制等。图像采集采用中断的方式进行,如果采用75*24分辨率的图像,每隔4行采集一行图像信息,图像采集所占用的CPU时间不会超过1/4。因此,大部分的CPU工作时间可以用于图像处理以及运动控制。

由于采集到的图像由白色背景和黑色中心线组成,所以检测每一行路径中心线位置可以通过简单的阈值比较的方式计算出来。在此基础上,还可以通过参数拟合获取道路位置、方向以及曲率等参数。另外,通过适当的动态阈值的方法,可以提高算法的稳定性。核心算法如果处理相对简单,可通过适当的优化方法,在图像采集周期20毫秒内计算出结果,达到实时图像处理的要求。如果算法比较复杂,可以将核心算法采用汇编语言完成,以提高效率,配合CPU超频运行方法,保证算法需要时间小于20毫秒。

4、CCD器件工作电压:

CCD器件工作电压需要在12V左右。为此,需要在系统电路设计中,增加独立12V电源模块。或者也可以采用斩波升压的方式获得12V电压,具体电路后面给出。

5、视频同步信息分离:

为了采集图像信息,CPU需要根据行、场同步信号启动AD转换器,采集稳定的图像。由于视频信号的变化很快,所以需要另外设计同步分离电路。在本方案中,使用了LM1881视频同步分离集成块,获取视频同步信号,将此同步信号连到单片机的中断输入端口。

除此之外,一般的CCD输出的视频信号的峰峰值在1V左右,可以不经过放大直接连接到单片机的AD输入端口进行采集,也可以进行适当视频信号放大后将信号的峰峰值提高到3-4V左右输入到单片机。

三、系统设计与实验结果

1、硬件设计:

基于S12单片机采集视频图像电路系统框图如下:

5V

稳压

S12单片机

12V

斩波

7.2V

电池电压

12V

LM1881

同步分离

CCD

视频信号

AD

IO

图3 单片机采集图像系统框图

其中包括有S12单片机最小系统、同步分离电路、5V稳压电路、12V斩波升压电路等。

其中S12单片机端口资源配置如下:

  • AD 输入端口PAD02 :输入视频模拟信号;
  • 外部中断口IRQ :输入视频行同步信号;
  • 数字IO口PM1 :输入奇偶场信号;
  • PWM输出端口:PWM2 12V斩波升压控制信号;

下面是部分系统电路图:

图4 12V斩波升压电路

图5 同步信号分离电路

上图中,只需要将行同步信号和奇偶场信号输入到单片机,视频信号不经过电容隔直直接输入到单片机的AD转换口。

2、软件设计

软件设计主要包括由图像采集模块,图像处理模块以及通讯模块。

其中图像采集模块的主要功能包括:

1)初始化模块:AD 转换器初始化、外部中断初始化;

2)外部中断响应模块:判断是否帧图像开始、判断是否采集该行图像、启动AD转换、标示图像采集完毕;

3)AD 转换中断响应模块:采集固定数目的图像数据。

图像处理模块主要完成采集图像中的黑色中心线参数的计算。实验中,我们采用了简单的动态阈值比较的方法,得到每一行的中心线的水平位置,然后通过参数拟合得到中心线在图像坐标系中的位置、方向以及曲率。

为了能够在PC上显示出单片机采集的图像信息,软件中还包括了串口通讯模块,通过软件将内存中的图像数据传输到微机进行显示。

3、实验结果:

下面是两幅S12单片机采集到并通过串口传送到微机显示的前方直线路径中心线的图像,它们的分辨率为72 * 24。实验证明通过简单的动态阈值比较的方式,即可以将每行中心线位置计算出来,整个处理时间约为8毫秒左右。

实验结果证明,上述CCD检测方法可以有效的获取路径图像信息,并计算出其中的参数。

图6 赛道中心线图像:垂直位置

图7 赛道中心线图像:倾斜位置

四、结论:

从实验结果中可以看出,通过合理放置CCD摄像头,并且充分利用S12单片机内部的硬件资源,可以获得满足路径参数检测需要的图形数据,进而可以通过图像处理算法,得到路径参数。

当然,利用CCD检测路径参数也存在一些缺点:比如占用RAM资源比较多、道路信息检测速率受到限制(CCD每秒产生50帧图像)、检测有延时(1/50秒)等。除此之外,还有如下问题需要进一步解决:

  • 确定CCD摄像头的镜头参数,使之更适合图像采集;
  • 确定CCD摄像头安置的高度、倾斜的角度;
  • 开发有效的图像处理算法,在满足处理时间的约束条件下可以适应环境影响图像的变化,补偿由于车模运动产生的采集图像模糊失真等问题。

另外,除了使用单一CCD摄像头检测路径参数之外,还可以采用光电管与CCD相结合的方式,发挥各自的优点。

Baidu
map