基于摄像头的智能车系统设计(单驱动寻白线)_第1页
基于摄像头的智能车系统设计(单驱动寻白线)_第2页
基于摄像头的智能车系统设计(单驱动寻白线)_第3页
基于摄像头的智能车系统设计(单驱动寻白线)_第4页
基于摄像头的智能车系统设计(单驱动寻白线)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕 业 论 文(设 计)题 目: 基于摄像头的智能车系统设计 (单 驱 动 寻白线) (英 文): Design of Intelligent vehicle car Based on camera (Single drive to find the white line) 院 别: 机电学院 专 业: 机械电子工程 姓 名: 学 号: 指导教师: 日 期: 基于摄像头的智能车系统设计(单驱动寻白线)摘要该智能车控制系统采用MC9S12XS128 的16位单片机作为的核心控制单元, 通过CCD模拟摄像头采集道路图像,将处理的信号输入核心控制单元,控制单驱动的模型小车沿着白底黑线的跑道自动寻迹。在控制策略上,根据采集到的数据分析行驶路径以及对起跑线进行检测,采用PID 算法对赛车的直流电机进行闭环控制,并判断跑道的弯曲程度采用PD的转向控制策略。在机械结构方面,通过对模型小车参数的优化,和对舵机输出力臂的改造,进一步提高了赛车的性能。智能车的控制系统需要硬件、软件以及机械等方面相互协调,更需要借助一些调试工具才能不断的调整与完善。关键字:CCD摄像头;智能车;自动寻迹;MC9S12XSDesign of Intelligent vehicle Car Based on camera (Single drive to find white line)AbstractThe intelligent vehicle control system adopts MC9S12XS128 16 bit single chip microcomputer as the core control unit, is simulated by CCD camera capture images of the road, will deal with the signal input core control unit, to control the single driving model car along the white line track automatic tracing.In the control strategy, according to the collected data analysis route and on the starting line detection, using PID algorithm on the car for DC motor closed-loop control, and determine the degree of bending of the runway by PD steering control strategy.In the mechanical structure, based on the parameter optimization model car, and the actuator output lever arm of the transformation, to further improve the performance of the car. Intelligent vehicle control system hardware, software and mechanical aspects of coordination, more needs some debugging tool can continuously adjust and perfect.Keywords: CCD camera; Smart Car; Auto Tracing; MC9S12XS目 录第一章 绪论111智能车的发展112智能车应用前景和意义1第二章 机械安装321 智能车总体构造32.1.1 车模底盘调整32.1.2 前轮的调整32.1.3 后轮的调整42.2其它的安装52.2.1 舵机的安装52.2.2 测速传感器的安装52.2.3 摄像头的安装6第三章 智能车硬件电路设计73.1 主控芯片MC9S12XS12873.1.1 MC9S12XS128芯片介绍73.1.2 最小系统73.2 摄像头传感器93.2.1 摄像头传感器的选择93.2.2 传感器的工作方式93.3 电源模块113.4其余的电路133.4.1 直流驱动电机控制133.4.2 舵机控制单元133.4.3 拨码开关电路143.4.4 LM1881视频分离模块143.4.5 车速检测模块153.4.6 串口调试模块163.4.7 二值化转换模块16第四章 软件设计和实现174.1软件系统主流程174.2系统的初始化184.2.1 时钟模块184.2.2 PWM输出模块194.2.3 A/D转换模块204.2.4 定时模块204.2.5 串口初始化214.3 图像采集和黑线提取算法设计214.3.1 图像采集214.3.2 黑线提取234.4 舵机的控制234.4.1弯道的判断234.4.2 PD策略244.5 电机转动控制254.5.1 PID控制算法254.5.2 速度控制策略264.6 起跑线的检测26第五章 系统调试285.1 开发环境的使用285.2 BDM调试器的使用325.2.1 Hiwave初始参数设置325.2.2 程序下载335.2.3 程序调试34第六章 智能车技术参数说明35参考文献36致谢37附录A38附录B55基于摄像头的智能车系统设计(单驱动寻白线)第一章 绪论11智能车的发展最近十年汽车行业在世界各地都有着迅猛发展,无论从数量上还是从技术上都有了突飞猛进的革新。工程师们描绘了未来汽车的发展方向:智能化、多能源、高效清洁。未来的智能车辆系统利用安装在汽车上的感应器和通讯设施来辅助车辆的安全驾驶,从而预防交通事故的发生或减轻事故的严重性。智能车的发展得益于半导体技术日渐发展,电子技术在汽车中的应用越来广泛,汽车电子化已成为行业发展的必然趋势。汽车电子化被认为是汽车技术发展进程中的一次革命,汽车电子化的程度被看作是衡量现代汽车水平的重要标志,是用来开发新车型,改进汽车性能最重要的技术措施。汽车制造商认为增加汽车电子设备的数量、促进汽车电子化是夺取未来汽车市场的重要的有效手段。随着经济的发展和汽车行业的改变,各国都在研究智能车。智能汽车的研究始于1953年,美国Barrett Electric公司制造了世界上第1台采用埋线电磁感应方式跟踪路径的自动导向车,也被称作“无人驾驶牵引车”(Automated Guided Vehicle, AGV)。随着生产技术的发展和自动化程度的提高,传统制造业的生产方式发生了深刻的变化。为节约成本、缩短生产周期,柔性生产系统和工厂自动化等先进的生产方式逐渐发展起来。美国俄亥俄州立大学和加州大学以及其他一些研究机构正在进行全自动车辆的研制与改进工作,美国交通部已开始一项五年计划 ,投入3500万美元 ,与通用汽车公司合作开发一种前后防撞系统。我国的相关研究也已展开。清华大学成立了国内最早的研究智能汽车和智能交通的汽车研究所,在汽车导航、主动避撞、车载微机等方面进行了广泛而深入的研究,2000年6月,国防科技大学研制的第4代无人驾驶汽车试验成功,最高时速达76km,创下国内最高纪录。2003年7月,国防科技大学和中国一汽联合研发的红旗无人驾驶轿车高速公路试验成功,自主驾驶最高稳定时速13Okm,其总体技术性能和指标已经达到世界先进水平。12智能车应用前景和意义智能车系统是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,是典型的、多学科的、综合性的高科技和高新技术的结合体,涉及传感器技术、信息融合技术、微电子技术、计算机技术、智能自动控制技术、人工智能技术、网络技术、通信技术等,在一定程度上代表了一个国家自动化智能的水平。目前它已成为世界众多发达国家重点发展的智能交通体系中的重要组成部分,也是世界车辆工程领域研究的热点和汽车工业增长的新动力。智能车有着极为广泛的应用前景。结合传感器技术和自动驾驶技术可以实现汽车的自适应巡航并把车开得又快又稳、安全可靠;汽车夜间行驶时,如果装上红外摄像头,就能实现夜晚汽车的安全辅助驾驶;它也可以工作在仓库、码头、工厂或危险、有毒、有害的工作环境里,此外它还能担当起无人值守的巡逻监视、物料的运输、消防灭火等任务。在普通家庭轿车消费中,智能车的研发也是很有价值的,比如雾天能见度差,人工驾驶经常发生碰撞,如果用上这种设备,激光雷达会自动探测前方的障碍物,电脑会控制车辆自动停下来,撞车就不会发生了。对于研究智能车,越来越发现的它的价值和真实的意义:通过对车辆智能化技术的研究和开发,可以提高车辆的控制与驾驶水平,保障车辆行驶的安全畅通、高效。在实际应用中,驾驶员对车体外面的环境的变化、不确定多的干扰因素的控制,会对驾驶员有很大的难度,会比较容易产生交通意外。那么我们就是需要借用计算机、现代传感器、信息融合、通信、人工智能化等智能控制技术来帮助我们车辆在各种环境下能够帮助驾驶员做出更好的判断和行走,挺高汽车的安全性、舒适性,以及提供最好的人车交互界面,防止出现交通意外。对智能化的车辆控制系统的不断研究完善,相当于延伸扩展了驾驶员的控制、视觉和感官功能,能极大地促进道路交通的安全性。智能车辆的主要特点是以技术弥补人为因素的缺陷,使得即便在很复杂的道路情况下,也能自动地操纵和驾驶车辆绕开障碍物,沿着预定的道路轨迹行驶。这样会对我们在驾驶车时,生命会得到很高的保障。智能车涉及到的专业知识有自动控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科,对控制及汽车电子学科水平的提高,具有良好的长期推动作用。现在我现在的课题正是立足在这个研究的基础上,而对现在是基于CCD摄像头的单驱动寻黑线的研究。使用飞思卡尔公司的 MC9S12XS128 单片机作为控制核心,自行设计并制作了相关电路以实现 CCD 图像采集和处理以及对舵机、电机的控制,而且我们还可以使用串口调试、VC、VB等做上位机方便我们对项目的调试和研究。第二章 机械安装21 智能车总体构造 智能车的主要部件有摄像头传感器模块、舵机、电机、测速模块、电路板和车体。各部件的安装位置对智能车的性能有很大的影响,特别是车体重心的控制是非常重要的,如果重心太高,智能车在高速行走时会出现跳动,跳动会影响前面摄像头传感器的信号采集的稳定性,同时重心太高在智能车高速转向时可能会出现翻车;并且重心的位置与前轮和后轮的距离也可以影响智能车的性能,重心太前会影响前轮舵机的转向机构,增加转向的力矩,使转向沉重、不灵敏,同时后轮与地面的附着力不够,从而影响驱动性能;重心太后,使前轮与地面的附着力减少,会有一种飘得感觉,舵机转向时会出现前轮与地面产生相对的滑动,影响智能车的转向性能。对于摄像头传感器模块,有特殊的要求,因为对道路的判断距离越远,越能提前得到路况信息,使智能车可以提前做好各种情况和处理有足够的时间来提前转向和减速,对智能车的行驶速度提高有很大的帮助。经过分析之后,我们使用摄像头所看到的距离大约为1.2m的长度,而且又不要让摄像头的仰角角度大,以免会受到光线的影响。大约为45还有所看的有1.2m远信号稳定就可以安装摄像头的支架。前轮是使用前轮主销后倾、内倾。2.1.1 车模底盘调整对于行走的车来说一般来说底盘越低,车模重心越低,重心移动速度越快,所以底盘越低,车模行驶越稳定,反应速度越快。而且我们又要考虑到车本身传感器安装的高度而引起的重心,故要尽量的把车体重心放低点。因此我们将车体的底盘高度设为前5mm、后6mm,以这样低的水平高度方能使得智能车在行走中很平稳。2.1.2 前轮的调整 前轮的安装对车体高速行走有着很高的作用,能提高车体行走的稳定性和快速性。在前轮的调整有主销内倾、主销后倾、前轮外倾和前轮前束等4个项目决定,反映了转向轮、主销和前轴等三者在车架上的位置关系。在实际调试中,我们发现适当增大内倾角的确可以增大转弯时车轮和地面的接触面积,从而增大车了地面的摩擦程度,使车转向更灵活,减小因摩擦不够而引起的转向不足的情况。主销后倾角越大,车速越高,前轮稳定性也愈好,而且对于高速时后倾的回正作用大,低速时内倾的回正作用大。经过我们的多次的实验,觉得我们是使用主销内倾和主销后倾这两种方式能够作为提高车体的稳定性和快速性。 图2.1 主销后倾 图2.2 主销内倾2.1.3 后轮的调整当赛车在正常过弯时 ,4个轮子的转速皆不相同,依序为:外侧前轮外侧后轮内侧前轮内侧后轮。而差速机构的作用是在车模转弯的时候,降低后轮与地面之间的滑动,并且还可以保证在轮胎抱死的情况下不会损害到电机。差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低,转弯时阻力小的车轮会打滑,从而影响车模的过弯性能。好的差速机构,应该在电机不转的情况下,右轮向前转过的角度与左轮向后转过的角度近似相等,不会有迟滞或者过转动的情况发生。此次所使用车模配备的是后轮差速机构。差速器的特性是:阻力越大的一侧,驱动齿轮的转速越低;而阻力越小的一侧,驱动齿轮的转速越高。以此次使用的后轮差速器为例,在过弯时,因外侧后轮轮胎所遇的阻力较小,轮速便较高;而内侧后轮轮胎所遇的阻力较大,轮速便较低。2.2其它的安装 2.2.1 舵机的安装舵机的安装方式有很多种,通过大量的试验表明舵机竖着安装,在受力还是在转向方面都是比较有优势。还有车在直线行驶状态下的车轮定位参数尤其是前束值会发生变化,这时需要稍微调整两根转向拉杆的长度,我们的拉杆的长度调为将近等长的,有利于转角对称性,并将前束值调整至合理的范围内。摆臂加长后,舵机空行程会明显减小,但是差别不大,通过程序微调舵机最大转角能够修正,所以可以忽略。 图2.3 舵机安装2.2.2 测速传感器的安装测速传感器则是使用光电式传感器,在受到可见光照射后即产生光电效应,将光信号转换成电信号输出。光电式传感器特点:非接触、响应快、性能可靠。在实际应用中为了减少可见光的影响,光电门一般使用红外光来传递信号。由于光电式传感器在获取信号的时候不需要与被测对象直接接触,不会对被测对象产生干扰,获取信号途径与霍尔传感器类似,需要经过比较器整形后方可由单片机采集速度信息。根据车体的情况,而在电机输出轴中安装100线的码盘即可满足系统的需要。 图2.4 测速传感器2.2.3 摄像头的安装 摄像头支架的固定在智能车机械机构调整中有极为重要的作用。1、摄像头支架的安装高度及角度决定了视场范围,该视场范围应保证有足够大的前瞻距离和尽可能小的失真,所以角度大概为45,前瞻的距离为1.2m。2、使用质量比较轻的枝干支撑起传感器,这主要是因为由于枝干太重会使得重心向上移动,这不利于车速的提高,所以会使用较轻的炭纤维杆。3、还应考虑到采集到的图像的分辨率,即应保证视场最前端黑线宽度在采集到的图像中占至少23个像素,否则,很容易出现干扰导致黑线提取错误。4、摄像头安装的位置与车模的前瞻量以及视野宽度也有直接关系,所以摄像头安装的位置应同时考虑到机械性能的需要和图像的要求。5、为了让摄像头可以看到更宽,尽量能够采集整个赛道宽的信息,故经过我们的测试,决定是使用2.6mm 广角镜头来增大看的范围。所以在这使用上面,我们使用了较轻的碳纤维管作为支架,高度为30cm。这个高度是根据摄像头视频的突变性来定的,这也能最大程度可以得到更好的图像数据。下图是我们小车的支架。图2.5摄像头的安装示意图 图2.6 摄像头的安装与视野的关系第三章 智能车硬件电路设计3.1 主控芯片MC9S12XS1283.1.1 MC9S12XS128芯片介绍S12XS系列单片机是在S12XE系列基础上去掉XGate协处理器的单片机。该系列单片机采用S12X V2 CPU内核;拥有112、80和64引脚3种封装形式,80-pinLQFP贴片封装已经可以满足系统的需要,因此选用80-pin引脚封装器件,芯片如图3.1所示。图3.1 芯片封装图3.1.2 最小系统 以MC9S12XS128B芯片为核心的最小系统,如图1-3所示。该系统主要包括以下几个部分:时钟电路、串口电路、BDM接口、供电电路、复位电路和调试用LED灯。 图3.2 最小系统图1、晶振及锁相环芯片外部使用16MHZ无源晶振,通过锁相环将总线时钟倍频到64MHZ。晶振电路如图3.2所示。图3.3晶振电路图2 复位电路本系统采用了一般的复位电路对CPU进行复位。复位电路如图3.4所示。图3.4 复位电路图3.2 摄像头传感器 3.2.1 摄像头传感器的选择 1、CMOS摄像头CMOS的缺点是图像质量较CCD差,动态性能不是很好。但CMOS的优点是体积小,像素阵列可以和信号处理器集成在一起,由于集成了内部信号处理器,所以可以设置参数,故CMOS芯片一般可以直接同步输出数字信号和时序信号。 CMOS图像传感器的图像质量虽然较CCD的差,像素较低,但是对于智能车控制已经完全足够了。 2、CCD摄像头 CCD摄像头寻迹方案的优点是图像质量高,动态性能好,可以更远更早地感知赛道的变化,分辨率高,识别路径参数多;缺点是数据量大,需要较大的存储空间,数据处理时间比较长,信号处理比较复杂,另外CCD工作电压为12V,需用斩波升压电路或DC-DC升压得到12V电源。且体积大,能耗高无法和外围信号处理电路集成。根据两者的比较决定使用CCD摄像头。虽然CCD会数据量大而且耗电大,但是排除影响不会太大的因素选择CCD,其在高速运动中成像质量较好的,黑白压差比较大,摄像头丰富的信息量为小车的最佳控制提供了保证。而我们这次的系统是使用索尼牌彩色CCD摄像头。3.2.2 传感器的工作方式摄像头有一定的分辨率,摄像头是以每秒扫描25帧图像,没帧又分奇、偶两场,每场扫描周期20ms。以隔行扫描的方式采集环境上的点,每幅图像都可以通过传感器对该点的图像灰度值与灰度值一一对应的电压值,都是通过视频信号输出此电压值,其中所看到的电压值白板的会比黑板的高。摄像头的视频同步信号是通过LM1881后,分离出场同步信号、行同步信号和视频信号。行同步脉冲是扫描换行的标志,场同步脉冲式扫描换场的标志,标志着先得一场的到来,一场信号的开始包含一场消隐区,有25个无效的同步信号,之后是285个有效行。视频信号可以通过单片机的A/D口来读值。 图 3.5 视频信号的分离 图 3.6 摄像头示波器上视频信号3.3 电源模块7.2V2000mAh Ni-cd稳压电路单片机LCD编码器电机舵机5V6V7.2VDA模块摄像头12VV电源管理单元是本系统硬件设计中的一个重要组成单元。图3.7 电源的管理其主要用于以下三个方面: (1)、常用的电源有串联型线性稳压电源(LM2940 、7805 、S7350等)。电路图如图3.8所示图3.8 LM2940 、 TPS7350电路图(2)、使用稳压管LM7806将电池7.2伏稳压到6伏后给转向舵机供电,电路图如图3.6所示。图3.9 LM7806电路图(3)摄像头传感器12v。 图3.10 12V电源3.4其余的电路 3.4.1 直流驱动电机控制 图 3.11 电机驱动电路图在电机驱动上,我们的要求是尽量使电机可以通过最大的电流,而且内阻小。经过我们反复试用,最后使用英飞凌的BTS7970B的半桥驱动芯片。芯片的负载电流可以达到43A,而内阻只有16m。BTS7960是应用于电机驱动的大电流半桥高集成芯片,它是 NovalithICTM 系列的成员之一,它的一个封装中集成了一个 P 通道场效应管 在上桥臂和一个 N 通道场效应管在下桥臂以及一个控制集成电路。由于上桥臂采用的是 P 通道开关。它带有一个P沟道的 高边MOSFET、一个N沟道的低边MOSFET和一个驱动IC。P沟道高边开关省去了电荷泵的需求, 因而减小了EMI。集成的驱动IC具有逻辑电平输入、电流诊断、 斜率调节、死区时间产生和过温、过压、欠压、过流及短路保护的功能。 3.4.2 舵机控制单元本系统舵机控制单元采用组委会提供的Futaba公司S3010型舵机作为智能车转向控制部件。舵机采用PWM信号开环控制,实验证明:舵机的开环转向力矩足够,可以满足给定PWM信号与角度的一一对应,控制电路简单且能满足控制要求。其硬件电路如图3.12所示。舵机的工作电压为6伏左右,输出一定占空比的PWM信号,舵机相应输出一定转角。图3.12转向伺服舵机控制电路舵机的控制信号线与MC9S12XS128的PWM2和PWM3合并口即将2个8位PWM信号寄存器合并作为一个16位的寄存器进行输出相连,加大PWM信号控制范围,精度加大。本系统采用当作PWM23给舵机作控制信号输入口。3.4.3 拨码开关电路 图 3.12 拨码开关电路 在单片机中使用拨码开关,可以方便我们不需要在线改变数据就可以改变一些数据量的输入,这样是为了可以调整速度、寄存器的量等等可以改变的差数。3.4.4 LM1881视频分离模块 LM1881芯片的电路也经过我们的测试和电路不断地改进,通过在示波器上观察所分离的信号。终于是可以得到最稳定的场、行信号。图 3.13 LM1881视频分离 引脚2 :视频信号输入 引脚1:行同步信号输出端 引脚3:场同步信号输出端 引脚7:奇偶场同步信号输出端3.4.5 车速检测模块本系统车速检测单元采用日本OMRON公司的E6A2-CS100型旋转编码器作为车速检测元件。其精度达到车轮每旋转一周,旋转编码器产生200个脉冲, 不仅硬件电路简单,而且信号采集速度快、精度高,满足速度控制精度要求。旋转编码器的工作电压为524伏,输出为一系列脉冲。速度传感器用螺钉固定在塑料片上,塑料片固定在后轮支架上,这样固定好之后,就有了较高的稳定性。速度传感器通过后轮轴上的齿轮与电机相连,车轮每转一圈,速度传感器转过2.75圈。 因为E6A2-CW3C型旋转编码器的输出方式为电平输出,所以本系统将旋转编码器的输出接一个8K上拉电阻再与MC9S12XS128的PT7口相连。PT7采用16位输入脉冲累加模式对旋转编码器的输出脉冲进行累加计数。在旋转编码器的中轴上安装一个直径为4cm,齿数76,传动比1:1的齿轮,并将该齿轮与电机输出轴的传动齿轮咬合。如此一来电机旋转的同时将通过传动齿轮带动旋转编码器一同旋转。此时只需要测量一定时间(5ms)旋转编码器输出的脉冲数就能准确计算出车速。 图3.14 测速内部的电路原理3.4.6 串口调试模块串行通讯接口电路的作用是使得ECU可以与PC机的RS-232串行接口连接并进行通讯。RS-232是异步串行通信中应用最早,也是目前应用最为广泛的标准串行总线接口之一,它有多个版本,其中应用最广的是修订版C,即 RS-232C。串口的模块最主要是用在静态调试的时候使用,可以把想要看到单片机实时的数据变化可以通过串口的发送。比如:摄像头的采集数据、黑线的提取情况。图3.15 串口电路模块3.4.7 二值化转换模块用模拟信号转换为数字信号,最主要的将我们采集的摄像头信号(模拟信号)通过比较器转为数字信号,简称二值化。比较器的输入信号为摄像头的原始信号,而比较的信号就是来源于这个DA的转换的电压值,这样通过调节比较电压就可以得到相应的二值化数据。 方便单片机在程序上是可以读取和判断。图3.16 波形转换效果第四章 软件设计和实现4.1软件系统主流程本系统控制软件采用飞思卡尔公司提供的CodeWarrior4.7软件及BDM作为调试工具,此外,厂家提供的编程环境支持C语言和汇编语言的程序设计,以及C语言与汇编语言的混合编程,提高了系统开发效率。本系统程序代码使用C语言编写。控制系统中,为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。即应使小车在直道上以最快的速度行驶。在进入弯道的时刻尽快减速,且角度的转向要适合弯道的曲率,确保小车平滑地转弯。从弯道进入直道时,小车的舵机要转向至中间,速度应该立即得到提升。为实现上述控制思想,我们需要采集车体的实际反馈回来现实的情况和数据,在通过不同情况的分析,并采用不同的控制方法来控制小车的转角和速度。图像采集图像处理模块数据处理速度采集模块转向控制模块速度控制模块 舵机 驱动 电机MCU起跑线 检测 图4.1 系统软件流程图4.2系统的初始化 4.2.1 时钟模块时钟基本脉冲是CPU工作的基础。MC9S12XS128微控制器的系统时钟信号, 由时钟振荡电路或专用时序脉冲信号提供。MCU 内部的所有时钟信号都来源于 EXTAL引脚,也为MUC与其他外接芯片之间的通信提供了可靠的同步时钟信号。S12的总线时钟是整个MCU系统的定时基准和工作同步脉冲,其频率固定为晶体频率的 1/2。由于MC9S12XS128的最高可达到的总线频率为64MHZ,所以采用了16MHZ的晶体晶振器作为外时钟。而锁相产生的时钟频率fPLLCLK=2*fOSCCLK*(SYNR+1)/(REFDV+1),设计中将 SYNR 设为 7,REFDV设为 1,因此锁相环时钟为64MHz,总线时钟为32MHz。时钟模块的初始化设置过程如下所示: CLKSEL=0x00; /64mhz PLLCTL_PLLON=1; SYNR=0XC0 | 0X07; REFDV=0XC0 | 0X01; POSTDIV=0X00; _asm(nop); _asm(nop); while(0=CRGFLG_LOCK);/锁相环锁定 CLKSEL_PLLSEL=1;/选定外部时钟4.2.2 PWM输出模块脉宽调制(PWM)模块有8路独立的可设置周期和占空比的8位PWM通道,每个通道配有专门的计数器。该模块有4个时钟源,能分别控制8路信号。通过配置寄存器可设置PWM的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(单独输出还是合并输出)。 为了提高控制精度,将PWM0、PWM1两路8位通道合并为一个16位通道来控制舵机,这样可使舵机的控制精度从1/255提高到1/65536。PWM模块的初始化设置过程为:PWMPRCLK=0X55; /总线时钟16分频,得到2MHZ/A和B PWMSCLA=0x03; / PWMSCLB=0x01; / PWMCLK=0x22; / PWMPOL=0xFF; /起始为高电平 PWMCAE=0x00; /全部中心对齐 PWMCTL=0xF0; / PWMDTY23=steer_mid;/ PWMPER23=25000; /PWMPER01=1000; PWMDTY01=0; / PWMPER45=1000; PWMDTY45=0;/PWME_PWME3=1; PWME_PWME5=0; /正转 PWME_PWME1=0; /反转4.2.3 A/D转换模块AD 转换模块由模拟量前端的8选1多路转换开关,采样缓冲器及放大器,逐次逼近式模拟量转换、控制部分及转换结果存储部分等组成。AD转换所需要的时间周期是固定不变的,但采样时间和时钟频率可以通过寄存器ATDxCTL4(x为0或 1)在一定范围内选择,其公式为: ATDClock=BusClock*0.5/(PRS+1) 从公式和总线频率的取值范围可以得出A/D时钟频率范围满足:500kHzATDClock2MHz 通过寄存器ATDxCTL2(x为0或1)控制ATDx的启动、状态标志以及上电模式;寄存器ATDxCTL3(x为0或1)用于控制结果寄存器的影射,设置转换长度;寄存器ATDxCTL5(x为0或1)用于选择转换方式,选择转换通道,设置单/多通道转换和单次/连续转换模式以及选择对齐方式,写寄存器ATDxCTL5将会启动一次新的转换,如果写该寄存器时ATD正在进行转换,则转换操作将被中止。AD转换模块的初始化程序如下所示:ATD0CTL1=0x00; /ATD0CTL2=0X60; / ATD0CTL3=0XD8; / ATD0CTL4=0X29; / 4*ATD_clock,ATD_CLOCK=40/(PRS+1)*0.5=2MHZ ATD0CTL5=0X30; / ATD0DIEN=0x00;/ AD 转换结果存放在寄存器 ATD0DRxL 和 ATD1DRxL,通过这些寄存器将结果传送到数组h,用来检测道路信息。4.2.4 定时模块增强型捕捉定时器模块,顾名思义,通过一系列可供设置的控制寄存器和可供读写的数据寄存器对端口功能进行了扩展。总的来说,ECT 模块能实现输入捕捉和输出波形产生两大功能。PACTL=0X50;PACNT=0X0000;TIOS =0x00;/ TSCR1=0x80;/ TCTL4=0x18;/ TIE=0x06; / TFLG1=0xFF;/ PITCFLMT_PITE=0; /PITCE_PCE0=1; /PITMTLD0=40-1; /PITMUX=0X00; / PITLD0=8000-1; / PITINTE_PINTE0=1; /PITCFLMT_PITE=1; / 4.2.5 串口初始化 S12有两个串行通信接口SCI0和SCI1,均为TTL电平输出。使用时,可以对波特率、数据格式(8 位或9 位)、发送输出极性、接收唤醒方式等进行选择。另外,发送和接收可分开使能,模块中还提供了多种避免传输错误的选项。在系统调试时,利用其中一个串口SCI0和上位PC通信,其初始化过程如下: SCI0BD=130; / SCI0CR1=0x00; / SCI0CR2=0x0c; / 4.3 图像采集和黑线提取算法设计4.3.1 图像采集 单片机是以中断采集的方式赛道上的信息,摄像头以所分离的奇偶场的信息都可以通过单片机的所获取。我们设置场、行的中断优先级来确定采集的先后,我们先安排场中断为最高优先,行次级。当场中断来的时候,通过计数的方式来确定场数和清除行数的累积,当行中断来的时候,也是通过计数的方式计算行的数目,当遇到我们想要的行数时我就用IO口把当行二值化后的数值用二维数组存储起来,当把奇偶场的数据存储起来的时候就是我们所看到的一幅整的梯形的图像。这样的存储可以帮我们看到现场的环境,以利于我们作分析。以下是中断采集流程图:等待行信号中断行计数变量+是否满足采样条件?连续采集110个点交换缓存并标记一帧图像完成禁止行中断行计数变量279?进入中断否是否是等待场信号中断清除中断标志进入中断行计数变量清零调整采样数组指针开启行中断图4.2 图像采集流程图4.3.2 黑线提取边沿提取法,即通过程序检测到上述图形的上升沿和下降沿,然后通过上升沿和下降沿的位置求出黑线的位置。边沿提取算法流程:通过i 控制循环语句不断检测上升沿或下降沿。当第i 个点的A/ D值与第i +2个点的A/ D值之差大于设定的阈值时,表明出现了下降沿,这时读取i 的值。一旦出现了下降沿,就开始不断地判断第i +2个点的A/ D值与第i 个点的A/ D值之差是否大于设定的阈值。如果大于则表明检测到了上升沿,这时也读取i 的值。通过2次i 的值,便能够求得黑线对应的点是第几个点,进而求出黑线与小车轴线的相对位置。按照这种算法的思想,每一行都是这样提取改行的点,而且又可以通过这种算法可以知道线的宽度,可是当某一行没有搜寻到黑线,我们就设定在搜寻两行,如果还没搜寻到的就判断后面是没有黑线的延续了,程序上就不在对搜寻黑线。图4.3边缘检测算法4.4 舵机的控制 4.4.1弯道的判断在复杂多变的跑道中有着不同的变化,但是只是看这些比赛中的赛道,可以分为直道、弯道两大类。直道包括单纯的直道、起始线、十字交叉线,对于弯道,我们则将其分为单向弯(左弯,右弯)、可直冲S弯,不可直冲S弯。要想让赛车在不同类型的赛道上都能有最好的走线和速度,就要对这几种路况进行区分,对赛道的不同的变化可以用程序把这些路况给判断出来,并且依照不同的路况选择相应的控制参数。首先,把我们所获得行数划分三到四个部分,这里我使用的是48行,在黑线提取出来后,要进行的是道路的识别。由于 CCD 的梯形失真,提取回来的黑线跟实际会有一些区别,特别是图像的远端。由于运算量大,我们没有对图像进行校正,直接用来控制转向。首先用黑线的长度来对道路进行大概的范围划分。初始划为直道或者小 S,普通弯道,急弯和图像丢失四种情况。经过多次实验,在采集行数为 48行时候,我们测得直道或小 S 黑线长度为 42 以上,普通弯道为 28 到 41,急弯为 13 到 28,13 以下为图形快要丢失或者已经丢失了的情况。这种方法比较简单,但不能作为单一的转向控制的标准。我们一直采用的都是这种方法。分析上几届报告,有很多队伍采用三点确定曲率的方法,该方法比较准确。但我们主要是先用来进行大概的划分,所以后面的控制算法占了很大决定因素。 4.4.2 PD策略 对于舵机的控制,使用的位置式的PID算法。因为积分I会使车体产生震荡比较大,所以只是使用PD的算法。1、对于P的值,我们没有使用固定的比例值,是根据我们摄像头所看到的行数即摄像头所看到有多远。即之前对赛道的判断所划分的范围而制定P的值。但是P的变化是以抛物线的变化规律来定大小。我们是使用二次函数曲线,KP随黑线的位置与中心值的偏差呈二次函数关系增大。 KP=(error*error)/2+50; 其中,error是黑线位置与中心值的偏差。图4.4 黑线位置和KP值的关系2、微分系数Kd。由于舵机在一般赛道中都需要较好的动态响应能力,则使用定值。4.5 电机转动控制4.5.1 PID控制算法PID控制算法是控制系统中技术比较成熟,应用最广泛的一种控制算法,它的结构简单、相比来说,参数容易调整,不一定需要系统的确切数学模型,因此在各个领域内都有广泛应用。PID控制算法即将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,用这一控制量对被控对象进行控制。在PID控制算法中有四个比较重要的参量:采样周期、比例系数、积分系数和微分系数。 采样周期T 在计算机控制系统中是一个很重要参量,从信号的保真来考虑,采样周期T不宜太长,从控制性能来考虑,采样周期T 应尽可能的短,也就是采样角频率s应尽可能的高,但采样频率越高,对单片机的运算速度要求越快,存储器的容量要求越大,计算机的工作时间和工作量随之增加。另外采样频率高到一定的程度,对系统性能的改善已经不显著了。本系统限于赛道图像的采集频率的限制,采用20ms的控制周期,从控制效果来说,也已经足够。 比例调节是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。 积分调节是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。 微分调节反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。 PID 控制可以分为位置式 PID,增量式 PID 和速度 PID 控制。位置式PID数字调节器的输出u(kT)是全量输出,是执行机构所应到达的位置,数字调节器的输出u(kT)跟过去的状态有关,运算工作量大,需要对e(kT)作累加。现在增量式 PID 控制有着广泛的应用,其数字调节器的输出只是增量。增量式算法的优点有:数字调节器只输出增量,计算机误动作时造成的影响比较小;手动-自动切换冲击小;算式中不需要累加,增量只跟最近的几次采样值有关,容易获得较好的控制效果。由于式中无累加,消除了当偏差存在时发生饱和的危险。 增量式PID控制的算法为: u (n)= kp e(n)- e(n-1)+ kIe(n)+ kD e(n)-2 e(n-1) +e(n-2) u (n)为n时刻的输出量,kp为比例放大系数,kI为积分放大系数,kD为微分放大系数,e(n)为n时刻的偏差量,e(n-1)为n 1时刻的偏差量,e(n-2)为n 2时刻的偏差量。4.5.2 速度控制策略 智能车的速度控制策略是选择了经典的PID控制策略。在速度控制中,首先,我们在程序中给出一我们设定的理想速度值,设定了几组不同的理想速度值,通过拔码开关来选择不同的速度来适应不同的环境。理想速度是根据行数的远近和黑线位置与中心的偏差。行数的越远速度理想越大,反之,则速度理想值越小。黑线位置与中心的偏差相差越远则理想速度越小,反之,则越大。在设置速度理想值的时候,我们可以结合两者的作为判断依据。这样可以确定车体在不同的情景下会有不同的速度值,而且要速度分配要均匀,奏减奏加的速度分配是会对车运转的总体速度反而会拖慢。我们通过摄像头的所看到范围的广远的优势来设定速度,可以会得到直道速度、普通弯道、急弯速度。还有我们结合pid的控制算法,在pid算法上可以当我们设定的理想值大于设定值一定范围时,数值会不断增加,也就是在说车体会在加速,而且会很快调整到我们设定好的速度值;当我们设定的理想值小于设定值一定范围时,数值会马上减小,已达到减速的作用。4.6 起跑线的检测赛道有一个长为1m的出发区,如图4.5所示图4.5 起跑线示意图由于赛车跑完一圈后必须在起始线后三米内停下,这就要求赛车必须具有稳定可靠提取起始线作为停车标志的功能。提取起始线的具体方法有很多种。这里我们不考虑外加光电管的判别方法,仅就依靠单一图像传感器的方法进行讨论。常见的判断起始线的方法包括数黑点法,三段黑线法等。我这里使用另外比较严谨的判断方法。这种方法是在其他的方法基础上的改进,经过长期的试验成功率高,故用之。以下几种为智能车在正对、斜着过起跑线的情况.(FF为黑线,00为白色,密集的FF为一些干扰)图4.6 为车正对着过起跑线图4.7 为十字架的情况判断起跑线最大的区别就是在于起跑线和十字架的混绕,是最容易出错的,所以只要把这两种情况分清楚就可以准确的在起跑线上停下来。我们从串口所传输回来的数据可以看到,两者的一些区别。在起跑线上,中间是经过一些白色的点,而且左右两边都是有这样的白色在到黑色的特点;而在十字架上都是连贯的黑色的一行,无论是正着过,还是斜着过。所以我们都是可以利用这样的特点来作为判断,是通过数点数的方式来判断起跑线还是十字架。最后,就是对这些黑白点数进行判断,黑白点数在某个范围上就可以确定这条线起跑线。第五章 系统调试本章将对开发和调试工具以及测试环境作相关说明。本车在开发和调试中所使用的开发环境为Metrowerks 公司的集成开发环境 Metrowerks Corewarrior IDE4.5,调试器为清华大学工程物理系开发的BDM,辅助调试工具有电脑、电压表和刻度尺等。通过以上各种工具的配合使用,再加上良好的测试环境,使得小车的开发和调试能够顺利而快速地完成。5.1 开发环境的使用Corewarrior IDE是Metrowerks为其DSP和微处理芯片所推出的专用可视化集成开发环境,功能强大,除了能编译代码外还具有芯片仿真等功能。下面以一个简单的实例来说明使用Corewarrior IDE开发的全过程。建立工程文件:1、 安装好CodeWarrior 后,打开如图5.1 所示的CodeWarrior 窗口; 图5.1 建立工程文件2、 在其中执行File|New 命令,弹出如图5.2 所示的New 对话框;选择HC(S)12 New Project Wizard,并输入工程的名字。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论