温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
集美大学诚毅学院
星翼队
大学
学院
I第十届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告技 术 报 告学校:集美大学诚毅学院队伍名称:星翼队参赛队员:陈建福、苏昱、李健带队教师:郑新旺、李颖II关于技术报告和研究论文使用授权的说明本人完全了解第十届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日期:第十届全国大学生智能汽车邀请赛技术报告III摘要本文以第十届全国大学生智能车竞赛为背景,介绍了智能赛车控制系统的软硬件结构和开发流程。该竞赛采用大赛组委会统一指定的型车模,以Freescale 半导体公司生产的 16 位 MC9S12X128 单片机作为核心控制单元,通过TLSL1401CL 模块线阵 CCD 检测图像采集获取赛道图像信息;使用软件二值化,提取白色赛道的中心线作为引导线,用于赛道路径判断;通过陀螺仪和加速度计对车模的倾角进行采集,并将采得的模拟量送给主控芯片,由主控芯片对车模的电机进行控制;通过 OME 编码器检测模型车的实时速度,使用 PID 控制算法调节驱动电机的转速和差速,实现了对模型车运动速度和运动方向的闭环控制。为了提高模型车的速度和稳定性,使用 VC+6.0、MATLAB 仿真平台、液晶屏模块、键盘模块、蓝牙串口等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案可行。关键字:MC9S12X128,CCD,PID 控制,直立第十届全国大学生智能汽车邀请赛技术报告IV目录目录第一章引言11.1 背景介绍11.2 直立平衡车总体设计思路21.3 章节安排2第二章智能车的总体系统框架4第三章机械结构的设计与实现63.1 车模机械结构的安装63.2 汽车模型的选择73.3CCD 的安装与调试73.4 加速度计与陀螺仪的安装73.5 速度传感器的安装83.6 系统板的固定与连接93.7 电池的安装与组建10第四章硬件系统的设计与实现124.1 电源部分124.2 电机驱动模块134.3 坡道检测模块144.4 灯塔检测模块144.5 测速部分的选择15第五章软件系统的设计与实现165.1 程序结构流程图165.2 线性 ccd 信息采集部分175.3 图像信息处理部分175.4 光电编码器的采集与信息处理部分18第六章系统调试206.1 调试工具介绍206.2 调试方法介绍21第七章智能车主要技术参数介绍23第八章总结24第九章致谢26附录:部分程序源代I第十届全国大学生智能汽车邀请赛技术报告1第一章 引言1.1 背景介绍全国大学生“飞思卡尔”杯智能汽车竞赛起源于韩国,是韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下举办的以 HCS12 单片机为核心的大学生课外科技竞赛。组委会提供一个标准的汽车模型、直流电机和可充电式电池,参赛队伍要制作一个能够自主识别路径的智能车,在专门设计的跑道上自动识别道路行驶,最快跑完全程而没有冲出跑道并且技术报告评分较高为获胜者。其设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械、能源等多个学科的知识,对学生的知识融合和实践动手能力的培养,具有良好的推动作用。为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,受教育部高等教育司委托(教高司函2005201 号文,附件 1),由教育部高等学校自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智能汽车竞赛。该竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。全国大学生智能汽车竞赛原则上由全国有自动化专业的高等学校(包括港、澳地区的高校)参赛。竞赛首先在各个分赛区进行报名、预赛,各分赛区的优胜队将参加全国总决赛。每届比赛根据参赛队伍和队员情况,分别设立光电组、摄像头组、电磁组、创意组等多个赛题组别。每个学校可以根据竞赛规则选报不同组别的参赛队伍。全国大学生智能汽车竞赛组织运行模式贯彻“政府倡导、专家主办、学生主体、社会参与”的 16 字方针,充分调动各方面参与的积极性。第十届全国大学生智能汽车邀请赛技术报告21.2直立平衡车的总体设计思路根据比赛规则要求,参考了前几届的光电直立车的方案,吸取各种有利因素,产生对车模直立的维持的多种设计方案,本车参考方案是假设维持车模直立、运行的动力都来自于车模的两个后车轮。后轮转动由两个直流电机驱动。因此从控制角度来看,车模作为一个控制对象,它的控制输入量是两个电极的转动速度。车模运动控制任务可以分解成以下三个基本控制任务。(1)控制车模平衡:通过控制两个电机正反向运动保持车模直立平衡状态;(2)控制车模速度:通过调节车模的倾角来实现车模速度控制,实际上最后还是演变成通过控制电机的转速来实现车轮速度的控制;(3)控制车模方向:通过控制两个电机之间的转动差速实现车模转向控制;1.3章节安排本文分为七个章节:第一章 引言:主要介绍了智能车的发展意义、发展历程和本届比赛对平衡组的要求,以及本次 CCD 平衡车的总体设计思路,本文结构安排。第二章 系统设计方案概要:介绍本智能小车的总体系统框架。第三章 智能车机械结构设计:本章详细介绍了智能车机械结构设计以及传感器的安装。第四章 硬件电路设计:介绍智能车系统的硬件电路组成,并具体分析各电路模块的设计思路及原理,及电路总功耗和电容总容量。第五章说明方向控制和速度控制算法设计第六章系统调试:调试工具的介绍以及对各个调试过程的说明。第七章模型车的主要技术参数:简单介绍模型车的主要技术参数。第十届全国大学生智能汽车邀请赛技术报告3第八章总结:在设计过程中遇到的问题和相应的解决办法,和存在的不足。附录:本智能小车核心算法子程序。第十届全国大学生智能汽车邀请赛技术报告4第二章智能车总体系统框架按照本届竞赛规则规定,模型车利用 TLSL1401CL 模块线阵 CCD 采集赛道信息,采用飞思卡尔公司的 16 位微控制器 MC9S12X128 作为核心控制器用于智能小车系统的控制,实现车体能够准确沿着预设路径寻迹。利用 MMA7361 模拟加速度计返回的车身角度值和ENC-03MB模拟陀螺仪的返回的角速度值作为保持车身直立的根本元素,利用保持车身平衡的基本原理,进而实现车身直立。本次智能小车需要对左右轮进行差速控制来实现转弯,因此,我们采用光电编码器作为速度传感器,对编码器返回的信号进行速度闭环控制,利用 PID 控制电机的转速,使得本次小车更加稳定。系统硬件电路部分需要包括单片机控制单元、电机驱动电路、CCD 传感器电路、车模姿态传感器电路等部分,例如编码器测速、直流电机驱动车体、OLED显示路况信息、按键调试参数等。综上所述,本智能车系统包含以下几个模块:(1)电源模块(2)电机驱动模块(3)单片机最小系统板模块(4)传感器模块(5)显示模块(6)测速模块(7)人机交换模块系统总体框架模块如图 2.1 所示:第十届全国大学生智能汽车邀请赛技术报告5图 2.1系统总框架图单片机最小系统模块MC9S12X128电机驱动模块显示模块传感器模块测速模块电机电源模块人机交换模块第十届全国大学生智能汽车邀请赛技术报告6第三章机械结构的设计与实现3.1车模机械结构的安装硬件是软件的基础,软件是硬件的灵魂。所以说车模的机械结构是智能车重中之重,也是今后智能车性能提升的保障。所以在一开始我们就加强对机械结构的硬度与韧性的选择。对于平衡车来说,重心的位置的选择是至关重要的,考虑到智能车上质量最重的是电池,所以我们将电池放在电机靠后的位置使重心降低,让智能车在赛道的行驶更加稳定。而且将电池放在电机后面可以使小车在过弯的时候更加的流畅与稳定,不会产生跳轮的现象;而且减小了转动惯量,增强了智能车在赛道上稳定性、高效性、灵动型。按照以上机械结构设计思想,对智能小车模型进行了相应的改造,并对各传感器模块进行安装。智能车整体结构如图 3.1 所示:图 3.1智能车整体结构图第十届全国大学生智能汽车邀请赛技术报告73.2汽车模型的选择本次竞赛中光电平衡组可以允许选择不同的 D、E 车模进行比赛,通过对电机性能测试比较,发现 D 车模的电机转速比 E 车模电机的转速快,而 E 车模的转动的力度更大,并且 E 车模的转向比 D 车模的更加流畅。综合考虑对模型车的电机参数、车模轮胎摩擦力等因素,最终选择北京科宇通博科技有限公司生产的 E 型车模为本次智能小车汽车模型,其中电机型号为 RS-380。3.3CCD 的安装与调试CCD 传感器安放原则:视角宽大、扫点清晰、质量轻。我们选择碳纤维管作为传感器的固定支架。碳纤维管质量轻,硬度高,可降低车模的重心。在放置CCD 传感器的高度时,要根据小车的速度和 CCD 前瞻的距离,做出调整与变化以适应参数的变化。主 CCD 是有畸变,辅 CCD 是无畸变的。CCD 传感器安装位置如图 3.2 所示:图 3.2CCD 传感器图3.4加速度计与陀螺仪的安装车模在运行过程中会有强烈的晃动,如果安放太高将会对陀螺仪产生较大的偏差,从而引起采集回来的数值的不稳定,因此我们选择将其安放在车模的中心偏上的位置,这样振动小,灵敏度也较高。而加速度计我们将它放在车轴第十届全国大学生智能汽车邀请赛技术报告8中心处,以保证加速度采集的数值更加精确。加速度计和陀螺仪安装位置分别如图 3.3 和如图 3.4 所示:图 3.3陀螺仪安装示意图图 3.4加速度计安装图3.5 速度传感器的安装测速模块我们采用 OME 编码器,OME 编码器安装在车模后部,编码器的安装需要卡紧齿轮,既不能太松,又不能太紧。太松会使编码器传回的数值不准确,而太紧会使车产生前进的阻尼,所以在安装编码器时,需要不断调整位置,如第十届全国大学生智能汽车邀请赛技术报告9果感觉到很顺滑,但又不卡齿,说明安装到位了。左右轮编码器安装的位置如图 3.5 和如图 3.6 所示:图 3.5右编码器图图 3.6左编码器图3.6 系统电路板固定与连接为了使各电路板能够较为牢固的固定在模型车上,从而使模型车有较好的稳定性以及转向性能,我们的主控制板通过胶枪将其四角固定,然后使用 3D 打印机打印出固定部件进行加固,来保证车子的稳定性、坚硬性、韧性的强度。主控板安装如图 3.7 和图 3.8 所示:第十届全国大学生智能汽车邀请赛技术报告10图 3.7主控板安装示意图图 3.8支架固定安装示意图3.7 电池的安装与组建为了降低重心,本次智能小车电池安装我们选择用铝合金制作的支架,用电池扎带将电池固定在支架的合适位置上,使电池更加的稳固,不会因为小车在赛道上的行驶而松动,同时还能让小车的重心进一步降低。电池安装如图 3.9 所示第十届全国大学生智能汽车邀请赛技术报告11图 3.9 电池安装示意图第十届全国大学生智能汽车邀请赛技术报告12第四章 硬件系统设计与实现硬件是整辆车的载体,而电源模块就是整辆车的能源站。因此,硬件的稳定性成为小车最关键的一个环节。MC9S12X128 最小系统、TLSL1401CL 模块线阵CCD、MMA7361 加速度计、陀螺仪需要的电源是 5V;OLED、蓝牙模块需要的电源是 3.3V。因此,我们选择了 LM2940、ASM117 进行稳压,来保证整个系统能源供给的充足。其次电路板在排板的过程,注意对模拟信号与数字信号的隔离,来确保小车在运行过程中的稳定性和高效性。4.1 电源部分4.1.1 5V 稳压将 7.2v电池电源经过 LM2940 稳压电路后产生的5V 电源提供给以下模块提供电源:CCD 模块、编码器、MC9S12X128 最小系统、灯塔检测传感器模块。图 4.1 5V 稳压电路原理图4.1.2 3.3V 稳压将 LM2940 稳压后的 5V 电源再经过 ASM1117 稳压电路后产生的 3.3V 电源提供给以下模块提供电源:OLED 显示模块、蓝牙模块、按键模块。第十届全国大学生智能汽车邀请赛技术报告13图 4.2 3.3v 稳压电路原理图4.2电机驱动模块我们选择 BTS7971 芯片作为电机驱动的芯片,BTS7971 其为高强度电流的半桥电机驱动芯片。具有集成度高、外接电路少、内阻小等特点。因此,我们采用 4 片 BTS7971 芯片组成全桥驱动电路进行驱动。BTS7971 驱动电路图如图 4.3 所示:图 4.3BTS7971 驱动原理图第十届全国大学生智能汽车邀请赛技术报告144.3坡道检测模块由于赛道有坡道的存在,我们采用了红外对管对坡道进行检测,以保证小车顺利地顺利通过坡道。红外对管原理图如图 4.4 所示:图 4.4红外对管原理图4.4灯塔检测模块由于比赛规则的要求,起跑线和终点线需要检测灯塔。考虑到红外光比红色光有更好的抗干扰能力,我们采用了 IRM138S-6 的一体接收管检测灯塔发出的红外光,该接收管性能好、抗干扰能力强。灯塔检测模块原理图如图 4.5 所示:图 4.5 灯塔检测模块图第十届全国大学生智能汽车邀请赛技术报告154.5 测速部分选择在智能车行驶的过程中,必不可少的一环,就是对小车的速度进行监测和调整,想要小车跑得更快,却又不能脱离程序的控制范围,我们必须加入编码器进行速度的反馈,这种控制方式我们称之为“闭环控制”。简单来说就是小车被编码器监视着,小车的一举一动都在编码器的掌控之中,一旦小车超出我们预期的行驶速度,编码器马上把小车的速度反馈给单片机,从而单片机对车速进行调整。车速检测可用光电码盘、编码器、透射式光电检测和霍尔传感器检测等。在实际运用中我们对这几种方式进行了比较发现编码器的精确度更高,因此最后我们采用了OME500线的光电编码器对电机进行测速。第十届全国大学生智能汽车邀请赛技术报告16第五章 软件系统设计与实现5.1 程序结构流程图程序主要采用顺序结构,参考第七届直立平衡车的 1ms 中断的处理方法在一个控制周期里只处理某几个任务,减小任务之间的相互影响提高软件的稳定性和执行效率。否是是否开始系统初始化灯塔检测起跑传感器数据采集电机输出结束标志是否为 1直立停止结束图 5.1 程序结构流程图第十届全国大学生智能汽车邀请赛技术报告175.2 线性 CCD 信息采集部分TSL1401 线性 CCD 传感器包含 128 个线性排列的光电二极管。每个光电二极管都有各自的积分电路,我们将此电路统称为像素。每个像素所采集的图像灰度值与它所感知的光强和积分时间成正比。5.3 图像信息处理部分5.3.1 边界提取边界提取算法的基本思想:(1)边界提取采取的是直接从虚拟中心向左右两边逐行搜索,判断是否有跳变。(2)赛道的宽度是固定的,在一定范围内提取有效的赛道边界线,保证提取的 边界的有效性。(3)采取的逐行扫描罚,根据前一行的中点推算下一行的虚拟中点。5.3.2 普通路径处理普通弯道通过将实时提取的边界线值返回,算出中线,比较与设定中线的偏差,通过 PID 算法控制,输出弯道控制量。5.3.3 单线处理规则要求在赛道中会存在若干段以中心线为引导的路段。中心引导线为 255mm 的黑线。每段中心的长度不超过 2 米。中心引导线只会出现在直道或者弯道上,距离四道中的十字路口、坡道、直角弯道、路障有一米以上的距离。针对上述规则,我们采用的方案是主要是用主 CCD 扫值,120广角 CCD 辅助消除对赛道的误判。策略中辅 CCD 优先级高于 120广角 CCD,辅 CCD 通过提取黑点的中心,来判断单线循迹。单线处理效果如图 5.2 所示:第十届全国大学生智能汽车邀请赛技术报告18图 5.2单线处理效果图5.3.4 障碍处理赛道障碍是对称的楔形体,长、宽、高分别为 30、10、5 厘米。障碍内侧边缘距离赛道中心线距离是 5 厘米。首先,辅 CCD 在看到障碍时扫到黑点的数量与白点的数量区别于在普通赛道。为了不与其他赛道元素混淆产生误判,加入主 CCD 进行精确扫描。由于规则要求障碍位于直道上,所以加入了直道判断处理。障碍处理效果如图 5.3 所示:图 5.3障碍处理效果图5.3.5 直角处理在直角弯道两边距离 1 米处路面上有宽度为 10 厘米,长度等于路宽的黑色标识,用于光电平衡组和摄像头组检测直角弯并提前减速。当CCD检测到黑线时平均AD值会产生跳变然后进入直角标识位,等待主CCD是否单边掉线然后将左右轮进行差速放大,当再遇到黑线是平均 AD 又会产生一次跳变然后清除直角标识位。第十届全国大学生智能汽车邀请赛技术报告19直角处理效果如图 5.4 所示:图 5.4直角处理效果图5.3.6 灯塔检测利用红外一体化接收管将 40KHz 灯塔发射的红外信号解调成 1KH 的方波信号,利用芯片的外部中断检测下降沿个数,设定阈值。当下降沿个数为 0 时说明灯塔已经熄灭,小车开始起跑。当再次检测到连续的方波信号达到预先设定的阈值数时进入准备停车状态,当灯塔熄灭后停车。5.4 光电编码器信息采集与处理部分小车的测速是利用 XS128 单片机的一个外部中断和一个脉冲累加器,进行脉冲计数,将返回的脉冲数作为速度控制的值。第十届全国大学生智能汽车邀请赛技术报告20第六章 系统调试6.1 调试工具介绍6.1.1CodeWarrior IDE 环境介绍CodeWarrior Development Studio(开发工作室)是完整的用于编程应用中硬件 bring-up 的集成开发环境。采用 CodeWarrior IDE,开发人员可以得益于采用各种处理器和平台(从 Motorola 到 TI 到 Intel)间的通用功能性。根据Gartner Dataquest 的报告,CodeWarrior 编译器和调试器在商用嵌入式软件开发工具的使用率方面排名第一。而这只是流行的 CodeWarrior 软件开发工具中的两个。CodeWarrior IDE 如图 6.1 所示:图 6.1.CodeWarrior IDE 界面第十届全国大学生智能汽车邀请赛技术报告216.1.2OLED 显示屏介绍为了方便调试,我们给小车加装了一块液晶 OLED 屏和 4 个按键。在液晶屏上可以显示系统的关键参数,例如 AD 采集的值、小车车轮转速等,这些参数在对于小车的调试十分有帮助;按键模块可以用于设置参数,配合液晶屏就可以现场随时调节任一参数,并将修改后的参数值写入单片机内的 flash 储存,而不必因为修改一个参数需要重新下载一次程序。6.2 调试方法介绍6.2.1 车模直立调试方法直立车调试的方法是利用车模姿态传感器返回车身角度和角速度经过拟合后,通过 PD 控制来算出平衡的控制量,最后输出到两个电机,实现平衡控制。6.2.2 互补滤波的参数调整在互补滤波的时候需要有几个重要参数调节:陀螺仪的角度积分时间、陀螺仪角度。在理论上讲应该为两次采集的时间间隔,即控制周期的间隔。但是具体上在角度转化和放大倍数的不准确以及其他的干扰,需要在动态的参数进行调节。为此可以使用虚拟示波器来观察。摆动车子,然后观察波形。这里需要对比两个参数值,第一个是由 Z 轴计算出来的角度的准确测量值,第二个是融合后的角度。如果融合后的角度的绝对值总是大于加速度计得到的角度,则说明陀螺仪的积分时间取大了,反之则取小了。第十届全国大学生智能汽车邀请赛技术报告226.2.3 直立 PD 调试直立参数范围确定。对于直立调节我们首先取了一个大概的估计 P 值,然后将 D 值设为零。观察小车运行情况,如果出现来回的振荡则说明 P 值比较小,可以逐渐增大 P 值,直到能够单独靠 P 就可以维持直立状态一小段时间,然后开始振动此时说明 P 基本上进入合适的参数范围了。此时开始加 D 把振动消去。这样 PD 均进入了合适的范围。直立参数的进一步调整。在刚刚的基础上观察抗干扰能力,给小车一个外力,如果出现快速的往某一个方向倒下,说明 P 的直立还不够硬,需要继续加 P,反之如果能在某一个方向保持直立,往另外一个方向出现轻微的振动,则说明 P有点过大了,需要减小 P。如果对于任何一个方向推一下都出现抖动则说明 D的取值很大。6.2.4 车模调试方法前瞻如何确定?对于 CCD 的调试前瞻的方式,我一直以不切内道不切外道的方式进行前瞻调试。如何确定 CCD 是否摆正?启动小车,然后用手拉住小车让车模缓缓前进,然后看车模中心是否与赛道中心一致。如何调试车模方向?在基本的思路上是 P 不断增加,转向能快速恢复。如果出现过冲现象则需要增加 D 来消除。在具体运行过程中还需仔细观察,根据具体情况来解决问题。也可以借助蓝牙模块来辅助调节。车速如何控速?首先看 PI 的方向是否正确,在静止时用力推车模会震荡,然后停在原点附近。起跑时要先将 I 的幅值限住。如果 P 太大车模在行驶的过程中角度变化很明显,这样就导致 CCD 的前瞻一直在变化,如果 I 太大了会出现加减速比较明显。第十届全国大学生智能汽车邀请赛技术报告23第七章智能车的主要技术参数车模主要参数名称参数车模基本参数重量1kg长度21cm宽度21cm高度44cm传感器种类及数量陀螺仪1 个加速度1 个TLSL1401CL 模块线阵 CCD2 个编码器2 个电路电容总容量1640uf赛道信息检测频率前瞻18cm赛道信息检测精度精度50Hz电路总功耗10W第十届全国大学生智能汽车邀请赛技术报告24第八章总结不知不觉中已经一年多过去了,在做飞思卡尔智能车的一年时间里,我与队友们面临太多的困难,但是最后幸运之神的眷顾,我们最终闯进了飞思卡尔的总决赛。在知道自己能进入总决赛的时候,内心不知道是开心,还是忧伤。因为我与队友们承载了太多的回忆。还记得一开始的搭车,那时候没有新的车模,我们只好向实验室队友借个已经破旧不堪的 D 车模。几经周拆周折才与队友用胶枪、洞洞板等材料拼接,终于将车模的结构搭好了,那时候还不知道如何让车直立,我们只能一次又一次的学习清华大学的直立车方案,不断尝试让车立起来,但是还是失败了,一次次的想把车立起来,但是一次次的失败,最后把小车的电机、电机驱动等模块全部烧坏了。就这样一个月的时间过去了,当拿到新的 D 车模时,我们小心翼翼的呵护它,由于上次的经验教训,让我们懂得了如果 PID 没有调节好,那么会烧坏车模的电机。最后在学长的帮助与指导下,我们终于能将小车稳定的立下来,当时真的好开心,后面开始让车行进,这段过程是痛苦的回忆,从 OLED 屏幕花屏引起芯片单片机的不正常反映工作、不知道为什么在拐弯的时候两个轮子速度不一样等等问题。我们不断的摸索、不断改进,当速度提不上去无法提高的时候,我们又不断的该更改车模的架构,一次次的拆车,一次次装车。但是无论我们如何改进架构与或者优化程序上的优化,我们的车速永远一直停留在 1.9m/s。那时我们产生了迷茫与困惑,经过总结发现 E 车模的性能会更好,队友问我要不要换车模,因为距离比赛还有 3 个月,如果现在换车模,不仅是对这辆车模不熟悉,还是对新参数的改变,我们都一无所知。最后我们咬紧牙关,决定奋力一拼。后来现在回想这次个决定发现是对正确的。之后我们又遇到了各种的问题与困难,从厦大邀请赛的惨败、车模齿轮的卡合、轮胎的摩擦力、重心位置的改变、滤波等等困难。但是我们最后顽强的挺了过来,一步一个脚印的走下来了。目前,小车尚存在许多问题有待改进。例如:小车在机械结构的安装与固定、驱动模块的驱动能力、重心位置选择等诸多问题。今后第十届全国大学生智能汽车邀请赛技术报告25设计中,还可以进行更大的改进和优化,可以搭建起更加完善的结构,控制算法的编写还可以进行更多的优化,令小车的性能进一步提升。在这次竞赛里,最为重要的是,让我们更加懂得团队合作精神的意义。第十届全国大学生智能汽车邀请赛技术报告26第九章 致谢首先我们要感谢飞思卡尔智能汽车竞赛的组委会为我们提供了一个锻炼自身能力展示自身风采的平台,使我们的大学生活更加的丰富多彩,也留下了更多的值得回忆的经历。我们要感谢我们的学院的领导和指导老师,感谢学院对竞赛的大力的支持,特别感谢郑新旺老师对智能车竞赛的大力推进和支持,在我们受挫的时候鼓励我们不断向前。同时要感谢实验室的学长学姐,在对我们初期学习智能车制作时候的支持,在我们遇到困难的时候给予我们很大的帮助,最后要感谢我们实验室所有成员对比赛的帮忙和支持,因为有了你们,所以我们走得更远。第十届全国大学生智能汽车邀请赛技术报告27参考文献1 卓晴,黄开胜,邵贝贝学做智能车:挑战“飞思卡尔”杯M北京:北京航空航天大出版社,2007.32 谭浩强 C 语言程序设计M,北京:清华大学出版社.2005 年 7 月第三版3 郭天祥.51 单片机 C 语言教程入门、提高、开发、拓展全攻略.电子工业出版社 20094 孙同景,陈贵友著.Freescale 9S12 十六位单片机原理及嵌入式开发技术.机械工业出版社 20085 童诗白,华成英模拟电子技术基础M北京.高等教育出版社20006 谢凯 赵健编著.MSP430 系列单片机系统工程设计与实践.机械工业出版社.20107 邵贝贝单片机嵌入式应用的在线开发方法 M北京清华大学出版社2004.8 刘金琨先进 PID 控制 MATLAB 仿真(第 3 版)M北京电子工业出版社20119 陶永华 新型 PID 控制及其应用,机械工业出版社,200210 仇慎谦,PID 调节规律和过程控制,江苏科学技术出版社,1987.12第十届全国大学生智能汽车邀请赛技术报告28附录:部分程序源代码void main(void)EnableInterrupts;/开启总中断init();/寄存器初始化key_init();/按键初始化LCD_P6x8Str(32,0,waiting.);delay_1(1000);Gyroscopeint();/陀螺仪初始化LCD_CLS();for(;)if(Timer2msFlag=2)/定时中断 2ms 进入一次PWM();ttt=0;if(Timer20msFlag=1)/20ms 进入一次ImageCapture(Pixel);/采集主 CCD 数据CalculateIntegrationTime();/曝光时间ImageCapture_1(Pixel_1);/采集辅 CCD 数据CalculateIntegrationTime_1();/曝光时间sendDataToCCDViewer(0,Pixel);/上位机发送数据第十届全国大学生智能汽车邀请赛技术报告29sendDataToCCDViewer(1,Pixel_1);/上位机发送数据ccd_pwm();/左右轮差速输出speedcontrol();/速度控制fanye_all();/OLED 显示Timer20msFlag=0;void speedcontrol()speed_left=PACNT;/读取左轮的脉冲数speed_right=(speed_ right _next+speed_right)/2;/读取右轮的脉冲数if(abs(speed_ left-speed_ left _next)50)/对左轮进行滤波speed_ left=speed_ left _next*0.9+speed_ left*0.1;if(abs(speed_ right-speed_ right _next)50)/对右轮进行滤波speed_ right=speed_ right _next*0.9+speed_ right*0.1;if(fanye=0|fanye=1|fanye=2|fanye=3)speed_ left=0;car_speed=speed_ right+speed_ left;elsecar_speed_next=car_speed;car_speed=(speed_ left+speed_ right)/2;第十届全国大学生智能汽车邀请赛技术报告30speed_ right _next=speed_ right;/保留右轮的脉冲数speed_ left _next=speed_ left;/保留左轮的脉冲数speed_left=0;/左轮清零PACNT=0;/脉冲计数器清零speed_ right=0;/左轮清零if(fanye=4&(run_flag=1)speed_start=500+speed_int_start;/开始起跑 elsespeed_start=0;/准备起跑fDelta=speed_start-car_speed;/计算编码器实际测值与设定值的偏差fP=fDelta*speed_P;/计算 PfI+=fDelta*speed_I;/计算 IfDelta_next=fDelta;if(fIfI_limit)/限制 I 的幅值fI=fI_limit;if(fIfI_limit_1)fI=fI_limit_1;g_fSpeedcontro10utNew=(fP+fD+fI)*0.9+g_fSpeedcontro10utold*0.1)/10;/对编码器采集的脉冲进行滤波进行滤波