上海电力学院(飞思卡尔光电组) - 图文(8)

2019-04-15 22:56

第八届全国大学生智能汽车邀请赛技术报告

续高电平20ns后产生第一个CLK信号,并在每个CLK信号的下降沿时采集AO引脚输出的电压值。在采集了128个像素后,还必须生成第129个CLK信号以结束本次采集。在第129个CLK之后到下一个SI信号之间的时间就是下次采集的曝光时间。

采集程序如下:

unsigned int i=0;

unsigned int j=0;

SETSI; /* SI = 1 */ SamplingDelay();

SETCLK; /* CLK = 1 */ SamplingDelay();

RESETSI; /* SI = 0 */ SamplingDelay();

AD_CCD_sample(pCCD_BUFF_H,pCCD_BUFF_L);/*对CCD进行采样*/ RESETCLK; /* CLK = 0 */ for(i=0; i<127; i++) { SamplingDelay();

SETCLK; /* CLK = 1 */ SamplingDelay();

AD_CCD_sample(pCCD_BUFF_H+i+1,pCCD_BUFF_L+i+1); RESETCLK; /* CLK = 0 */ }

SamplingDelay();

SETCLK; /* CLK = 1 */ SamplingDelay(); RESETCLK; 5.3.2 CCD采集图像的图像处理 1、图像预处理

图像处理简单的来说就是根据CCD传回来的视频信号中提取出黑线的位置。常用的黑线提取算法分为二值化算法、直接边缘检测算法和跟踪边缘检测算法。

二值化算法的思路是:设定一个阈值,从左至右比较各像素值和阈值的大小,若像素值大于或等于阈值,则判定该像素对应的是白色赛道;反之,则判定对应的是黑色的目标引导线。记下第一次和最后一次出现像素值小于阈值时的像

30

第五章 软件系统设计

素点的列号,算出两者的平均值,以此作为该行上目标引导线的位置。

直接边缘检测算法:首先找到从白色像素到黑色像素的下降沿和从黑色像素到白色像素的上升沿,然后计算上升沿和下降沿的位置差,如果大于一定的标准值,即认为找到了黑线,并可求平均值算出黑线的中心点。至于上升沿、下降沿的检测,可以通过上上次采样数与这次采样数的差值的绝对值是否大于一个阈值来判断,如果“是”且差值为负,则为上升沿;如果“是”且差值为正,则为下降沿。

跟踪边缘检测算法:由于黑色的目标引导线是连续曲线,所以相邻两行的左边缘点比较靠近。跟踪边缘检测正是利用了这一特性,对直接边缘检测进行了简化。其思路是若已寻找到某行的左边缘,则下一次就在上一个左边缘附近进行搜寻。这种方法的特点是始终跟踪每行左边缘的附近,去寻找下一列的左边缘,所以称为“跟踪”边缘检测算法。

我们的思路是:对一行中所有像素点求平均,然后再逐点对比像素点与平均值之间的关系,求出高于平均值的像素点的平均值以及低于平均值的像素点的平均值。这两个平均值乘以一定的系数之后,这两个值分别作为判断为白色的的阈值与判断为黑色的阈值。这种思路的好处是,对于一行的灰度图像阈值有一定的死区,可以有效滤掉一部分可能产生的噪点与反光,这个思路是源于数电里面学的史密特触发器。 2、边缘提取

对于边缘提取我们使用了捕捉二值化后图像的上跳沿与下降沿的方法,我们的思路是:在一定图像范围内,检测到上跳变沿时把当前列记入上升沿数组中,检测到下降沿时把当前列记入下降沿数组。然后逐对地让下降沿与上跳沿作差,保留其最大一对的差值,即为赛道的中心线。 3、CCD的曝光时间控制

最初我们采用的是10ms的固定时间曝光,后来发现在强光下会产生比较大的畸变,对提取边线有一定的影响,因此改用自适应曝光。

自适应曝光我们有两种方案:第一种为在车辆运行的时候对当前的光线进行实时的调整;第二种方案为只在小车初始化时确定本次运行的曝光时间,之后曝光时间不变。经过我们实际调试,发现第一种情况对光线变化程度大的场地

31

第八届全国大学生智能汽车邀请赛技术报告

适应性会稍微好一点,但是由于每次曝光时间都不一样,会导致采集的图像不太稳定,第二种情况反之。

我们的自适应曝光的程序设计思路如下:先对所有点作平均值,再逐点对高于平均值的点取平均值。当此平均值大于设定值时,让曝光时间减小,当此平均值小于设定值时,让曝光时间增大。 4、起始线的识别

我们有几种方案检测起始线:

第一种:由于起跑线只可能出现在直道,因此在接近起始线时,车身位置较为固定。因此在实际测定的基础上,让程序在一定的范围内检测黑色点的数值,若黑色点在合理范围内即判定为起始线。

第二种:在正常赛道中,提取出来的上升沿与下降沿应为一对。在线性CCD采集到起始线图像时,图像应有多对上升沿与下降沿。如车身正对着起始线时,线性CCD捕捉到的图像经过二值化后应是“黑白黑白黑白黑”,此时有三个上跳沿,三个下降沿;如车身不正,采集到的二值化后的图像应是“黑白黑白”或“白黑白黑”,即两个下跳沿,两个上升沿。通过判断跳变沿的信息即可判断起始线。这种判断在虚线小s时会遇到一些问题,因虚线小s背景板为白色,所以也会出现多个跳变沿。我们的解决方法是在原判断上加上对黑色段宽度的判断,经测试可行。

第三种:在车身两侧加装红外对管,当两侧红外对管同时检测到黑线时即为起始线。

5、路障的识别与处理

由于直立平衡组的路障颜色是黑色的,因此我们通过图像检测的方法检测路障。在采集到路障的图像时,图像的大部分为黑色,此时可以通过对黑色点计数或者对整幅图像的平均灰度进行判断,当黑色点数值大于设定值或平均灰度小于设定值时即为路障。

过路障对于直立小车来说是一个比较大的困难,开始我们不加速度控制,纯靠直立控制让小车过路障,发现在低速时可以过去,速度达到一定值小车会摔倒,然后加上速度控制让小车过路障,发现同一速度下稳定性要比只有直立环

32

第五章 软件系统设计

时的差,所以我们在检测到路障后采用关闭速度环,只靠直立环的方法来过路障,由于高CCD有60cm的前瞻,在检测到路障后,通过给小车前倾的角度让小车快速减速,这样可以提高降速的速度,还以提高小车过路障的稳定性,当小车通过路障后,打开速度环,小车正常行驶。

33

第六章 开发工具说明

6.1 Codewarrior开发工具简介

此次智能车大赛的软件开发平台为Metroworks 公司的Code Warrior 4.7,

Codewarrior 是由Metrowerks 公司提供的专门面向Freescale 所有MCU 与DSP 嵌入式应用开发的软件工具。其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C交叉编译器、汇编器、链接器以及调试器。用户可以将芯片的类库添加到集成环境开发环境中生成就是一个最小系统,就能直接在新建工程时添加所需的程序代码。图6-1为Codewarrior用户操作界面。

图6-1 Codewarrior用户操作界面

6.2 基于MATLAB的参数计算及仿真

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算

34


上海电力学院(飞思卡尔光电组) - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:报关员精讲班课件目录(1-121)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: