基于摄像头的最佳道路识别及赛车控制算法 飞思卡尔
飞思卡尔智能车大赛杭州电子科技大学杭电二队智能车技术报告

本设计采用单片机(MC9S12DG128)作为智能小车的检测和控制核心。
路径识别采用CMOS 摄像头,车速检测采用红外对管和编码盘,由MOS管组成H桥来控制驱动电机正反转的快速切换,利用PWM技术控制小车的运动速度及运动方向。
基于这些完备而可靠的硬件设计,还设计了一套PID优化算法,编写了全闭环运动控制程序,经反复测试,取得了较好的效果。
第一章引言.1 智能车系统研究内容智能车系统要求以MC9S12DG128为核心,能够自主识别路线,在专门设计的跑道上自动识别道路行驶,以最快的速度跑完全程。
其主要研究内容包括以下几个部分:电源、路径识别、直流电动机驱动及运动控制等。
1.1.1 电源根据智能车系统各部件正常工作的需要,对配发的标准车模用7.2V 1800mAh Ni-cd电池进行电压调节。
其中,单片机系统、车速传感器电路需要5V电压,摄像头的12V工作电压由DC-DC升压回路提供,伺服电机工作电压范围4.8V到6V,直流电机经过H桥路由7.2V 1800mAh Ni-cd蓄电池直接供电。
1.1.2 路径识别路径识别模块是智能车系统的关键模块之一,路径识别方案的好坏,直接关系到最终性能的优劣。
在高速度和预先判断算法的前提下,摄像头可能是寻找路径规迹的最好选择。
因为MC9S12DG128的运算处理和AD采样速度有限,因此确定合理的采样次数和合理的处理摄像头的数据是十分重要的。
舍弃非关键数据进行数据简化和制定高效率的路径规划也是一个难题。
1.1.3 直流电动机驱动直流电机的控制一般由单片机产生的PWM信号配以H桥路来完成。
为了得到更大的驱动电流和较好的刹车效果,选用低内阻的MOS管和适当的反向驱动也是必需的。
MOS管我们选取了IRF4905和IRFZ48N,在MOS管子的驱动方面我们直接使用IR公司的IR4427双道驱动芯片。
具体的H桥电路见图1.1 。
1.2 智能车制作情况整个智能车控制系统分为4部分电路板,分别为路径识别模块,单片机模块,直流电机驱动模块和速度检测模块,还有串口通讯及调试接口。
飞思卡尔智能车摄像头组新手指南(5)--让车跑起来篇

飞思卡尔智能车摄像头组新⼿指南(5)--让车跑起来篇舵机、电机控制策略让车跑起来彭岸辉控制器设置了快速的控制周期,在每个运算周期内,控制器即时地得到智能车车速以及传感器采样来的道路信号,经过控制算法的计算后,控制单元输出相应的前轮控制转⾓以及电机占空⽐的值,其输出值再经过函数映射关系转换为 PWM 脉宽信号传⾄前轮舵机以及驱动电机,从⽽实现⼀个周期的控制。
由于摄像头的信号是具有周期性的,可以直接采⽤摄像头采集⼀幅图像的周期作为控制周期。
舵机控制采⽤ PD 控制,控制跟随性较好,P可以及时对赛道的变化作出反应,当然舵机的 P 项值也是跟随赛道情况变化的,直道和较⼩的弯道时控制较弱,90 度弯道或 270 度⼤弯道控制量较强,D有预测道路类型的作⽤,也就是能使舵机提前打⾓。
电机控制采⽤ PID 控制,可以减⼩动态误差并且跟随性能较好。
当然也可以使⽤其他控制,很多⼈舵机采⽤P控制,电机采⽤PD或PI控制。
对⽐他们的优缺点⾃⼰选择适合⾃⼰⼩车的PID。
这⾥不进⾏深⼊讲解。
前⾯的⼯作完成后懂得基本的图像处理算法就差不多可以使⼩车跑起来了!要使⼩车跑起来其实不难的,很多初学者最希望的就是看⾃⼰的车跑起来,因为当初我也是这样的,很理解师弟师妹们此刻的想法!最基本的图像处理算法就是:图像中间往两边搜索⿊线注意:初学者在初学时不知道偏差是怎样计算的。
这⾥就提⼀下:偏差就是计算出的中线即图中赛道中的⿊线与摄像头所看到的中线即图中赛道中的竖直红线(例如采集到的图像是100列的,那么摄像头看到的中线就是50)做差得到的值就是偏差。
它表⽰车当前位置与期望位置的偏离程度。
再看个图吧:⽤两⾏来说明,其他的⼀样。
第⼀⾏左边坐标(0,1)右边坐标(0,99),得出的中线就是(0,50),那么50所在的那⼀列就是摄像头所看到的中线(就是图中竖直的红线)。
这⾥再提⼀下,很多⼈提出中线后发现上位机上或LCD上没显⽰出中线,其实显⽰出中线很简单的:根据RGB,⼀个像素点的像素值为255时显⽰出来的是⽩⾊,像素值为0时显⽰出来的是⿊⾊。
基于飞思卡尔和摄像头的智能小车寻迹系统设计

基于飞思卡尔和摄像头的智能小车寻迹系统设计1 引言智能小车寻迹系统是基于摄像头和飞思卡尔16 微处理器mc9s12xs128 组成,由摄像头采集图像有用信息送入单片机分析道路参数。
智能小车跑道表面为白色,中心有连续黑线作为引导线,黑线宽25mm,铺设跑道地板颜色与背景不一样;跑道宽度为60cm,窄道区的宽度为45cm;跑道最小曲率半径不小于50 厘米; 跑道可以交叉,交叉角为90 度。
系统主要包括视频图像采集、图像处理、黑线中心提取、路径判断。
2 视频图像采集图像采集是基于mc9s12xs128 单片机来实现的。
mc9s12xs128 是飞思卡尔开发的以cpu12 内核为核心的单片机,采用5v 电源供电,总线速度最高可达40mhz,8kb ram,128kb flash,具有丰富的i/o 模块和工业控制专用的通信模块[1]。
(a) 视频信号;(b) 行同步信号;(c) 场同步信号;(d) 奇偶场同步信号图1 摄像头信号时序图摄像头前瞻距离大,有利于提高速度。
同时跑道色内外色差只有黑白两色,只需提取探测画面的灰度信息就能识别黑线信息,因而图像采集选用黑白摄像头。
摄像头输出的是pal 制式的复合全电视信号,每秒输出25 帧,每帧分为偶场和奇场。
黑白视频图像信号由图像信号、消隐信号及同步信号共同组成。
场同步脉冲标志着新的一场到来。
场消隐区恰好跨在一场的结尾部分和下场的开始部分,得等到场消隐区过去,下场的视频信号才真正到来。
pal 制式的摄像头每秒扫描25 幅图像,每幅又分奇偶两场,故每秒扫描50 场图像[2]。
为此要有效地采集摄像头的视频信号,需要把摄像信号进行分离。
lm1881 视频同步信。
飞思卡尔智能车摄像头组技术报告 (2)

第十届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告摘要本文设计的智能车系统以K60微控制器为核心控制单元,基于CCD摄像头的图像采样获取赛道图像信息,提取赛道中心线,计算出小车与黑线间的位置偏差,采用PD方式对舵机转向进行反馈控制。
使用PID控制算法调节驱动电机的转速,结合特定算法分析出前方赛道信息实现对模型车运动速度的闭环控制。
为了提高模型车的速度和稳定性,我们用C++开发了仿真平台、蓝牙串口模块、SD卡模块、键盘液晶模块等调试工具,通过一系列的调试,证明该系统设计方案是确实可行的。
关键词:K60,CCD摄像头,二值化,PID控制,C++仿真,SD卡AbstractIn this paper, we will design a intelligent vehicle system based on MC56F8366 as the micro-controller unit. using the CCD image sensor sampling to the track image information to extract the track line center, to calculate the positional deviation between the car with the black line, the use of PD on the rudder. The machine turned to the feedback control. We use PID control algorithm to adjust the speed of the drive motor, combined with specific algorithms to achieve closed-loop control of the movement speed of the model car in front of the track. In order to improve the speed and stability of the model car, we use the C++ to develop a simulation platform, Bluetooth serial module, SD card module, keyboard, LCD modules, debugging tools. Through a series of debugging, the system design is feasible.Key words: K60,CCD_camera, binaryzation, PID control, C++ simulation, SD card目录第1章引言................................................................................... - 1 - 第2章系统总体设计................................................................ - 2 - 2.1 系统分析..................................................................................... - 2 - 2.2 车模整体布局............................................................................. - 3 - 2.3 本章小结....................................................................................... - 4 - 第3章系统机械设计及实现................................................... - 5 - 3.1 前轮定位的调整......................................................................... - 5 -3.1.1主销内倾..............................................................................- 6 -3.1.2 后倾角.................................................................................- 6 -3.1.3 内倾角.................................................................................- 7 - 3.2 舵机安装....................................................................................... - 8 -3.2.1 左右不对称问题的发现与解决........................................- 10 - 3.3 编码器的安装............................................................................ - 10 - 3.4 摄像头安装.................................................................................- 11 -3.4.1 偏振镜的使用......................................................................- 12 -3.4.2 摄像头的标定......................................................................- 12 - 3.5 摄像头的选用.............................................................................- 13 - 3.6 红外接收装置.............................................................................- 14 -3.7 防止静电复位.............................................................................- 15 - 3.8 本章小结.......................................................................................- 15 - 第4章硬件电路系统设计及实现 ...................................... - 16 -4.1 硬件设计方案............................................................................- 16 - 4.2 电源稳压......................................................................................- 17 - 4.3 电机驱动......................................................................................- 18 - 4.4 图像处理部分............................................................................- 19 -4.4.1 摄像头升压电路.............................................................- 19 -4.4.2 视频分离电路.................................................................- 19 -4.4.3 硬件二值化.....................................................................- 19 - 4.5 灯塔电路......................................................................................- 21 - 4.6 本章小结......................................................................................- 21 -第5章系统软件设计.............................................................. - 22 -5.1 软件流程图...............................................................................- 22 - 5.2 算法新思路...............................................................................- 23 -5.2.1中心线提取.......................................................................- 23 -5.2.2 直角检测........................................................................... - 24 -5.2.3 单线检测......................................................................... - 24 - 5.3 舵机控制.....................................................................................- 25 - 5.4 速度控制.....................................................................................- 26 - 5.5 PID算法....................................................................................- 26 - 5.6 路径优化.....................................................................................- 31 -第6章系统联调...................................................................... - 33 - 6.1 开发工具.................................................................................... - 33 - 6.2 无线调试蓝牙模块及蓝牙上位机..........................................- 33 - 6.3 键盘加液晶调试......................................................................- 34 - 6.4 TF卡调试模块.........................................................................- 34 -6.4.1 TF卡.............................................................................- 34-6.4.2 SDCH卡 .........................................................................- 35 -6.4.3 软件实现.......................................................................- 36 - 6.5 C++上位机设计........................................................................- 36 - 6.6 电源放电模块...........................................................................- 38-6.6.1 镍镉电池记忆效应…………………………………….. - 39-6.6.2 放电及电池性能检测设备…………………………….. - 39- 6.7 本章小结....................................................................................- 40 - 第7章模型车技术参数........................................................ - 41 - 第8章总结............................................................................... - 42 - 参考文献...................................................................................... - 44 -第1章引言在半导体技术日渐发展的今天,电子技术在汽车中的应用越来广泛,汽车智能化已成为行业发展的必然趋势。
(毕业设计)飞思卡尔智能车及机器视觉

图像处理在智能车路径识别中的应用摘要机器视觉技术在智能车中得到了广泛的应用,这项技术在智能车的路径识别、障碍物判断中起着重要作用。
基于此,依据飞思卡尔小车的硬件架构,研究机器视觉技术应用于飞思卡尔小车。
飞思卡尔智能车处理器采用了MC9S12XS128芯片,路况采集使用的是数字摄像头OV7620。
由于飞思卡尔智能车是是一款竞速小车,因此图像采集和处理要协调准确性和快速性,需要找到其中的最优控制。
因此本设计主要需要完成的任务是:怎样用摄像头准确的采集每一场的图像,然后怎样进行二值化处理;以及怎样对图像进行去噪处理;最后也就是本设计的难点也是设计的核心,怎样对小车的轨迹进行补线。
本设计的先进性,在众多的图像处理技术中找到了适合飞思卡尔智能车的图像处理方法。
充分发挥了摄像头的有点。
经过小车的实际测试以及相关的MATLAB 仿真,最终相关设计内容都基本满足要求。
小车的稳定性和快速性得到显著提高。
关键词:OV7620,视频采集,图像处理,二值化The Application of Image Processing in the Recognition ofIntelligent Vehicle PathABSTRACTCamera Machine vision technology in the smart car in a wide range of applications, the technology identified in the path of the smart car, and plays an important role in the obstacles to judge. Based on this, based on the architecture of the Freescale car, machine vision technology used in the Freescale car. Freescale smart car the processor MC9S12XS128 chip traffic collected using a digital camera OV7620. Freescale's Smart car is a racing car, so the image acquisition and processing to coordinate the accuracy and fast, you need to find the optimal control. This design need to complete the task: how to use the camera to accurately capture every image, and then how to binarization processing; and how to image denoising; last is the difficulty of this design is the design of the core, how to fill line on the trajectory of the car.The advanced nature of the design found in many image processing techniques of image processing methods for Freescale Smart Car. Give full play to the camera a bit. The actual testing of the car and MATLAB simulation, the final design content can basically meet the requirements. The car's stability and fast to get improved significantly.KEY WORDS: OV7620,Video Capture,Picture Processing,Binarization目录前言 (1)第1章飞思卡尔赛车及机器视觉的概述 (2)1.1 智能车的研究背景 (2)1.1.1 智能车的发展历史 (2)1.1.2 应用前景 (2)1.2 智能车设计要求介绍 (3)1.3 机器视觉介绍 (4)1.4 小结 (4)第2章主要思路及技术方案概要 (5)2.1 总体设计主要方法步骤 (5)2.2 摄像头的对比与选择 (5)2.2.1 摄像头的选取 (5)2.2.2 模拟摄像头 (6)2.2.3 数字摄像头 (6)2.2.4 摄像头的选定 (7)2.3 二值化方案的选取 (7)2.3.1 双峰值法 (7)2.3.2 迭代法 (8)2.3.3 大津法 (8)2.3.4 灰度拉伸-一种改进的大津法 (9)2.3.5 二值化方案的最终选定 (9)2.4对图像进行去噪 (9)2.4.1 传统的去噪法 (9)2.4.2 小波去噪 (11)2.4.3 去噪方法的最终确定 (13)2.5小结 (13)第3章硬件设计 (14)3.1 硬件总体方案设计 (14)3.2 核心控制板 (15)3.3 摄像头的安装 (15)3.4 小结 (16)第4章软件设计 (17)4.1 系统软件总体设计方案 (17)4.2 图像二值化软件设计 (17)4.3 去噪设计 (19)4.3.1 实验信号的产生 (19)4.3.2各参数下去噪效果对比 (20)4.4 二值化后补线 (24)4.5 小结 (32)第5 章结果分析 (33)5.1 采集到的灰度值去噪前的MATLAB仿真 (33)5.1.1 去噪前MATLAB函数和仿真结果 (33)5.1.2 去噪后MATLAB仿真结果 (34)5.2 边界扣取 (35)5.2.1 边界扣取函数 (35)5.2.2 边界扣取仿真结果 (36)5.3 补线后效果 (37)5.4 小结 (38)结论 (39)谢辞 (40)参考文献 (41)附录 (42)外文资料翻译 (45)前言机器视觉技术近几十年来已经得到广泛的应用,并且已经取得了巨大的成功,大大改善了人们的日常生活。
飞思卡尔智能车电磁组分区算法介绍

飞思卡尔智能车电磁组分区算法介绍写在之前的话:1、⽬前我是⼀名在校学⽣,这也是我第⼀次写博客,不周之处,请多谅解;2、此算法并⾮原创,借鉴⾃⼭东德州学院第⼋届⽩杨队(PS:个⼈看法,对于⼀些⼈把别⼈的开源东西改头换⾯⼀下就说是⾃⼰的原创⾏为⼗分鄙视);3、对于此算法的理解和说明并⾮纸上谈兵,算法已经被我运⽤到了⼩车⽐赛中并取得好的成绩(具体就不多说了,⽐赛时车莫名其妙坏了,⽐赛前调试的速度绝对能进国赛,⽐较遗憾),总之这算法是我尝试过的最好的算法;4、这⼀次所介绍的只是路径算法和⼀些知识普及,后⾯有时间会介绍其余部分算法及许多好的思路(舵机电机控制思路(不只是简单的PID),双车策略);5、希望对于这⽅⾯有涉及的⼈能与我联系并交流或指出不⾜之处。
---------------------------------------------------------------分割线-----------------------------------------------------------------------------⼀、没有这⽅⾯了解的可以看看 飞思卡尔智能车分为三组:摄像头、光电、电磁,我做的是电磁车,三种车队区别在于传感器的不同,所以获得路径信息的⽅法也不⼀样,摄像头和光电识别的是赛道上的⿊线(⽩底赛道),⽽电磁车则是检测埋在赛道下的通⼊100mh电流的漆包线,摄像头和光电采⽤的是摄像头和ccd作为传感器,电磁则是⽤电感放在漆包线周围,则电感上就会产⽣感应电动势,且感应电动势的⼤⼩于通过线圈回路的磁通量成正⽐,⼜因为漆包线周围的磁感应强度不同,因此不同位置的电感的感应电动势就不同,因此就可以去确定电感位置;因此在车⼦前⾯设置了50cm的前瞻,电感布局如下(怎么发不了图⽚):分为两排,前排3个,编号0,1,2(前期还加了两个竖直电感⽤来帮助过直⾓弯,后来改为了⼋字电感);后排2个,编号3,4;现在车⼦获得了不同位置的感应电动势的⼤⼩了,但这些值是不能处理的:1、感应电动势太微弱;2、是模拟信号,信号太微弱就放⼤它;这就涉及到模拟电路的知识了,就不多说了(因为要把这讲完到PCB绘制的篇幅就⾜够写另开⼀号专门写这些⽅⾯来(PS:题外话(我的题外话⽐较多)):放⼤部分外围你设计的再好也抵不过⼀个更好的芯⽚,有两个例⼦,⼀个是我⾃⼰的:之前⽤的是NE5532,但是效果不理想,加了好多什么滤波,补偿,都⽤上,没⽤,软件⾥处理后⾯再说,后来⼀狠⼼换了AD620,感觉像是春天来了,因为它是仪⽤放⼤器,还有就是贵。
飞思卡尔智能车原理

飞思卡尔智能车原理飞思卡尔智能车是一种基于嵌入式系统和人工智能技术的智能交通工具。
它通过搭载各种传感器、控制器和算法,在无人驾驶、自动泊车等场景下发挥重要作用。
本文将介绍飞思卡尔智能车的原理,并分析其在实际应用中的优势和挑战。
一、飞思卡尔智能车的硬件组成飞思卡尔智能车的硬件组成主要包括以下几个方面:1. 主控单元:主控单元是飞思卡尔智能车的核心组件,通常采用高性能的嵌入式处理器。
它负责接收来自各种传感器的信息,并根据预设的算法进行数据处理和决策。
2. 传感器:飞思卡尔智能车搭载多种传感器,如摄像头、激光雷达、超声波传感器等。
这些传感器可以实时感知周围环境的信息,包括道路状况、障碍物位置等,为智能车提供必要的数据支持。
3. 电机与驱动系统:飞思卡尔智能车搭载电机和对应的驱动系统,用于控制车辆的行驶和转向。
这些系统通常采用先进的电子控制技术,能够实现精确的转向和速度控制。
4. 通信模块:飞思卡尔智能车通过通信模块与其他车辆、交通基础设施等进行信息交互。
这种通信方式可以实现车辆之间的协同工作,提高交通系统的整体效率。
二、飞思卡尔智能车的工作原理飞思卡尔智能车的工作原理可以归结为以下几个关键步骤:1. 环境感知:飞思卡尔智能车通过搭载的传感器对周围环境进行感知。
摄像头可以捕捉到道路状况、交通标志和其他车辆的信息;激光雷达可以检测到障碍物的位置和距离;超声波传感器可以测量车辆与前方障碍物的距离等。
通过这些传感器获取到的数据,智能车可以对周围环境做出准确判断。
2. 数据处理与决策:主控单元接收传感器传来的数据,并根据预设的算法进行数据处理和决策。
它会将传感器的信息与事先建立的模型进行比对,进而判断车辆应该采取何种动作,如加速、刹车、转向等。
3. 控制指令生成:基于数据处理与决策的结果,主控单元生成相应的控制指令,通过驱动系统控制车辆的行驶和转向。
这些控制指令可以通过电机和驱动系统精确地控制车辆的运动。
4. 数据通信与协同:飞思卡尔智能车通过通信模块与其他车辆以及交通基础设施进行信息交互。
基于CMOS图像传感器的智能车路径识别与转向控制

摘要:本文基于第二届“飞思卡尔”杯全国大学生智能车竞 赛,在组委会提供 MC9S12DG128 单片机最小系统和竞赛 车模的基础上,采用 CMOS 图像传感器作为智能车的路径 检测传感器,扩大了智能车的检测范围,有利于智能车在快 速行进时对前方路况进行预判;在路径识别算法中,通过与 黑色灰度值比较来确定单行黑线位置;在转向控制方面,采 用了 PID 算法中的 PD 算法作为舵机的转向控制算法。经过 多次调试,赛车可以在规定的跑道上以较快的速度稳定行 进。
xaver = (xold 57) × D
(2)
yaver = ( yold 95) × L1 + L2
(3)
式(2)中的 57 和(3)中的 95 分别代表摄像
头一帧图像的列数和行数。当计算得到(xcent, ycent) 和(xaver, yaver)两点的坐标之后,很容易就可以计 算舵机应该偏转的角度α。
短的参赛队将获得最终的胜利。在比赛过程中,能 够准确识别赛道是赛车稳定行进的前提,常用的路 径检测传感器有红外二极管和 CCD/CMOS 图像传 感器[2]。由于红外二极管的检测范围有限,而且组 委会对传感器的数量有严格限制(传感器数量不超 过 16 个,红外传感器的每对发射与接受单元计为 1 个传感器,CCD/CMOS 传感器记为 1 个传感器); 另外,多个红外二极管或者单个 CCD 图像传感器 的功耗都比单个 CMOS 图像传感器的功耗要大。所 以本文选用了 CMOS 图像传感器作为智能车的路 径检测传感器,在降低智能车系统整体功耗的同 时,还扩大了赛车的检测范围,有利于赛车在快速 行进时对前方路况进行预判。本文主要针对如何利 用 CMOS 图像传感器识别赛道和赛车的转向控制 进行了探讨。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于摄像头的道路识别及赛车控制算法杨运海周祺吕梁摘要:本文探讨了摄像头在智能车道路识别中的应用,并提出了一种通用的控制算法。
在准确采集图像的基础上,利用临近搜索法对有效道路信息进行快速提取,通过分析赛道信息,计算出赛道黑线的走向趋势及赛车当前位置。
在充分考虑当前和过去的赛道信息的基础上,对赛道类型进行判断及分类。
在综合考虑赛道类型,黑线走向及车当前位置,对舵机的转向和电机的速度进行精确控制。
关键词:图像采集;临近搜索;转向控制,速度控制1.概述在飞思卡尔智能车汽车比赛中,路径识别方法主要有两大类,一类是基于红外光电传感器,令一类是基于摄像头。
通常,红外光电传感器安装灵活,原理简单,可靠性好,不易受环境光干扰,因而得到了广泛应用,但其对前方道路的预判距离非常有限,不适宜赛车高速行驶。
另一类是基于摄像头,与光电传感器相比,其优点非常明显,能提前获取大量前方道路信息,有利于实现赛车的最优控制。
但其缺点是图像采集要求有高的AD转换频率,图像处理算法复杂度高,且容易受环境光的干扰。
考虑到摄像头的优点远大于其缺点,因此选择了摄像头。
以下是摄像头的工作流程图:图B-1 摄像头工作流程摄像头控制赛车行驶方案有三大模块:图像采集、赛道信息提取、转向和速度控制。
2.图像采集考虑到S12的运算能力,我们采用了黑白制式、320*240的CMOS单板摄像头。
摄像头出来的是模拟信号,每秒有50场图像,场之间有场消隐信号,行之间有行消隐信号,经过lm1881分离后,可得到场同步信号和行同步信号,作为行中断信号。
由于行中断中要采集该行的信号,对时间要求很严格,其中断优先级应比普通中断的优先级高,因此我们选择IRQ作为行同步信号输入口,PT0作为场信号输入口。
此外,为保证图像不丢失,我们仅对场信号的下降沿进行捕捉。
图B-2 摄像头视频信号按照目前车的刹车时的加速度,我们选定图像拍摄最远处为前方1米就足以对速度做出了控制。
考虑到前轮到前方20cm为摄像头的盲区,故有效拍摄范围为0.8m,为了保证不丢失起跑线,每2.5cm至少拍摄一行,故一幅图像至少采集32行。
为了稳妥起见,我们选择了ROW=45行。
摄像头最前方拍摄的宽度为80cm,而黑线宽度为2.5cm,故一行至少采集32,为了稳妥起见,一行采集的点数定为COL=45个点。
正常情况下,S12的AD频率不能超过2M,转化一个点需要14个周期,如果不超频,一行将只能采集8个点(24M主频时)。
将分频系数设为0,此时AD 频率为12M。
在行采集过程中,我们通过查询方式来判断AD是否转换完成,并对AD转换时间进行了记录,发现记录到的时间恰是期间指令执行一次的时间,这表明,影响一行采集的点数已不是AD的频率,而是执行指令的时间,因此采集过程中不需要查询A TDSTA T0的标志位,只需要通过执行一定数量的NOP空操作指令延时即可。
例如采集47个点需要时,每个点的时间间隔是53us/47=1.125us,对应的指令周期数为1.125*24=27。
通过反编译知读写等指令本身有13个指令周期,故令加14个NOP指令即可实现。
由于摄像头的角度关系,拍摄是不均匀的,而是前方疏,近处密。
为了保证采集的均匀,采集的行之间间隔的行数就不能相同。
摄像头的有效行数为285行左右,具体关系如下表:行采集计数器line 摄像头行计数器row 备注0 0 每3行采集一行1 32 63 94 125 156 18 每4行采集一行7 228 269 3010 3411 3812 42 每5行采集一行………… ……n i*(3*i+15)+(i+3)*(n%6) 其中i=n/6每i+3行采集一行 图像采样基本思路是行中断服务程序开启行中断,在行中断中对每行的采集作计数,当达到预定的行数时表示一幅图像采集完,此时关闭行中断,置位图像缓冲区已满标志,并对各个技术器进行清零,以准备下一幅图像的采集。
具体流程如下图 图B-3 场中断流程图当黑线位于中心时,将采集到的数据通过串口发送至PC 并利用MA TLAB 还原,对应部分波形如下图,其中,星号表示一行的结束。
与示波器的波形对比,采集效果非常好。
图B-4 行中断服务程序流程图图B-5 采集到的数据(*号与*号之间表示一行)当车位于起跑线时,拍摄效果如图4所示。
图B-6 46行*47列时起跑线拍摄效果3.黑线提取考虑到赛道黑线是连续的一条线,我们采用邻近搜索法将有效黑线段搜索出来,以便对速度和转向进行控制。
该算法的最大优点是不易受干扰,只要黑线是连续的就能正确的提取出来。
此外其算法复杂度非常低,因为只对有效黑线及其附近的点进行识别,提取一幅图像黑线最大时间(全部有效时)为1.7ms,而采集一幅图像需20ms,除了1/6时间用来采集数据之外,还剩16ms 的时间,足以用来提取黑线及控制舵机和电机了。
本算法搜索方向是从底部到前方(即由近及远),其关键之处在底部第一个黑线中心的提取。
考虑到稳定性,底部第一个黑点的搜索以相邻3行作为考察对象,并从第二列开始,到倒数第二列,通过比较,找出其最小值,若最小值满足黑线对应的AD值,则第一个黑线的中心搜索完毕,否则重复上述步骤,直到搜索到黑线或图像的第一行。
找到底部第一个黑线中心后,接下来就是在该点的左右共7个点的范围内进行搜索,找出其中的最小值,并一该点作为新的黑线中心,然后重复搜索下去,直到发现所得最小值大于某个值(如50,这意味着最黑的点已不是黑点,即黑线结束),或者黑线的中心已到图像边沿(此也意味着黑线将要结束)。
在此过程中,将所得到的黑线中心坐标保存到path数组中,至此图像有效信息已全部提取出来了,详细提取流程图如图5.8所示:图B-7 黑线提取流程图原先没有采用三行每列相加,搜索示意图5.9所示,那么如果图像采集出现小问题,连续的黑线在某处断开,那么黑线搜索在该处就停止了,导致有上段黑线信息丢失。
为了防止这种情况,我们想到了,在黑线提取之前对图像进行滤波处理,三行每列相加求平均,思想等同于中值滤波。
但是如果这样,也就意味着要对图像处理两遍,效率太低了。
这样我们想到,不妨在对图像滤波处理的同时也对黑线进行提取,那么就有了现在的提取算法,示意图如图5.10。
图B-8 一行一行搜索的弊端图B-9 三行每列相加搜索的优点实践表明,该算法适应性强,不受外界干扰,做到了人眼能识别出来的黑线都能被它识别出来。
外界干扰主要有环境光,赛道污点,赛道交叉(包括非十字交叉),阴影,附近有其它赛道,接缝等等。
最糟糕的是,赛道背景也是黑的,但只要黑线比背景黑依然可以识别出来。
4.视觉调整摄像头由于视觉的缘故,所能拍摄的区域不是长方形,而是一个等腰梯形。
最前方拍摄的范围较宽(75cm ),最后方拍摄的范围则较窄(37cm ),其关系近似为2倍的现行比例关系。
如果拍出来的图像没有进行调整放大,则会造成图像失真,以致可能对弯道误判为直线。
故进行放大调整非常有必要,放大比例关系具体为第一行放大2倍,最后一行放大1倍,其余根据线性关系确定放大系数。
假设path[0..ROW]是各行黑线与图像中心的偏差,则第i 行的偏差应调整为][_2][i buffer path ROWi ROW i path −= ……公式B-1 调整后,path [0..ROW]真实体现出了道路的变化及趋势,为接下来对赛道类型的判断及转向、速度的控制奠定了基础。
对于0.8m 圆弧,调整前后对比效果如下图:图B-10 调整前和调整后的图图B-11 真实的图5.赛车转向控制5.1 赛车方向偏差计算(delta)赛车方向偏差可定义为delta=k1*(path[head]-path [tail]),其中k1为像素与长度单位的转换系数。
当赛车进入弯道,如图6.1所示,那么delta很好的反映了弯道的曲率,即弯道越急,delta就越大。
图B-12 方向偏差delta5.2 赛车位置偏差计算(offset)前面提到的方向偏差,反映了道路情况,反映道路的方向。
另外我们采用CCD图像最底部tail的黑线位置距离中心位置的大小,来反映当前赛车的位置偏差,如图6.2所示。
图B-13 位置偏差offset5.3 转弯半径计算(R )正常情况下,车是沿着黑线前进的,这也就是说,车的前进方向是与黑线相切的。
故任意时刻,车与黑线切点对应的转弯半径与车前进方向垂直。
如图5.10所示,由直角三角形的比例关系可得转弯半径近似为:deltah delta R 222+= ……公式B-2图B-14 转弯半径计算示意图其中delta 为有效黑线水平偏差,即上一节所提到的赛车偏差;h 为纵向偏差,即h=k2*(tail-head)。
这里k2为像素与长度单位的转换系数。
5.4 角度计算得到R 后,便可求得该点的曲率2221h delta delta R curve +==。
经验表明,直接用斜率hdelta k =也能很好地表征出赛道的弯曲程度,效果与用参数Curve 几乎一致,而对于S12单片机来说,计算斜率k 要比计算Curve 容易多。
下表是智能车在不同赛道类型时对应的斜率k 的值:图B-15 弯道类型 位置序列 ① ② ③ ④ ⑤ ⑥ 斜率k 0.2 0.9 1.5 2.0 1.0 0.2从上表可知,直线部分或小S 弯部分,斜率k 绝对值不超过0.2,进入转弯时,k 大小在0.2到1.0,处于转弯时,k 大小在1.0到2.0之间。
由于计算斜率k 时,考虑的是整幅图像,故斜率k 直接反映了当前转弯的整体紧急程度,在转向控制中可作为控制的输入量,而角度angle 则作为控制的输出量。
采用P 控制时,具体关系可如下定义:hdelta Kp angle *= ……公式B-3 考虑到斜率k 或方向偏差delta 仅仅反映了道路的趋势,却忽略了车与黑线的当前偏差offset ,我们重新对角度控制进行矫正,加上最近一行tail 的位置偏差offset ,那么公式就变成了:offset K hdelta K angle *2*1+= ……公式B-4 这里k1,k2为待定参数,k1越大,提前转弯量越大,走内线越明显。
而k2越大,则对当前量的看得越重,车沿着黑线跑越明显,走内线程度则相应被削减。
综合考虑了CCD 的拍摄范围及采集的行列数,我们取k1=20,k2=2/3。
这样实现了直线不抖,转弯走内线,S 弯与直线一样直接过。
赛车经过直线,delta=0或非常小,那么offset将发挥作用,控制赛车贴着黑线行驶,如图图B-16 直线段控制赛车经过弯道,delta和offset共同发挥作用,关键在于参数k1和k2的大小,这两个参数只能通过不断的调试获得,前面已经提到了,k1决定转弯大小,k2抑制或促进转弯,为的是将赛车尽量拉回黑线。