激光循迹和随动探头智能小车控制系统的毕业论文.doc_第1页
激光循迹和随动探头智能小车控制系统的毕业论文.doc_第2页
激光循迹和随动探头智能小车控制系统的毕业论文.doc_第3页
激光循迹和随动探头智能小车控制系统的毕业论文.doc_第4页
激光循迹和随动探头智能小车控制系统的毕业论文.doc_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

激光循迹和随动探头智能小车控制系统的毕业论文目录摘 要I目录.II第一章 引言11.1 综述11.2 系统主要结构思想11.3 关联文献综述2第二章模型车的主要设计思路和技术方案概要32.1 车体结构32.2 硬件32.3 软件32.4 车模设计特色与创新4第三章B型车模的机械设计53.1 机械部分53.2 车模53.2.1 车体的重心53.2.2 传感器支架53.3 车模的参数调整63.3.1 Toe角度63.3.2 Camber link63.3.3 车身高度63.4 舵机位置改装73.5 传感器73.5.1 上排探头位置布局73.5.2 下排探头位置布局73.6 防撞装置83.7 模型车外观8第四章电路设计说明94.1 总体电路描述94.2 系统电源模块94.3 电机驱动模块104.4 数码管显示模块114.5 激光传感器及其电路设计114.5.1 激光探头的电路设计124.5.2 激光探头接收创新点124.6 测速电路134.7 核心控制板端口设置14第五章软件控制设计155.1 寻线策略155.2程序总框图155.3 程序运行方式155.4 速度控制165.5 激光探头路面信号的采集165.6 红外传感器的AD采集处理165.7 舵机摆头和转向子程序设计175.7.1 跟踪舵机控制程序设计175.7.2 车模转向控制程序设计175.7.3 双舵机的配合调试185.8 软件部分总结20第六章开发工具和制作调试过程226.1 开发工具226.2 Codewarrior IDE的安装与使用226.3 调试装置226.4 C语言的在线调试236.5 调试中遇到的问题及解决过程236.5.1 直线跑不直的问题236.5.2 跟踪舵机问题236.5.3 光点亮度问题24第七章结论257.1 模型汽车制作概述与技术指标257.1.1 车模最终可达到的速度257.1.2 车模主要技术指标257.1.3 机械部分其它参数257.2 智能车最终实物图267.3 总结26致谢28参考文献29附录A BJUT光电一队智能车C语言源代码IXXXIX第一章 引言1.1 综述全国大学生飞思卡尔智能汽车竞赛是由教育部高等自动化专业教学指导分委员会主办,以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,是以智能汽车为竞赛平台的多学科专业交叉的创意性科技竞赛。该竞赛以飞思卡尔半导体公司为协办方,如今已成功举办四届。 全国大学生“飞思卡尔”杯智能汽车竞赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司16位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。为准备第五届飞思卡尔智能车大赛,本小组从09年12月开始组队,历时8个月。经过不断的努力,在机械结构、硬件与软件方面均有所提高,并有创新。本篇论文主要介绍了“飞思卡尔”智能车比赛中的小车制作过程,论述了控制系统的软硬件设计和开发流程,涉及车模机械结构的设计与改装、电机驱动和激光发射接收电路设计及C语言控制算法等诸多方面,详细介绍了本队的特色及创新点,并着重分析了硬件电路中的激光头分时采点思想和半桥驱动的电机驱动方案。1.2 系统主要结构思想首先,赛车以竞速为主要目的,一切设计和控制均为竞速服务。在探头设计中,激光头用于检测赛道上的黑线信息,红外管为辅检测直线和停车线。上排探头架在舵机上便于跟踪黑线,下排探头固定,用于采集近处道路信息。上排激光管在赛道上打出一排整齐的光点,以3ms为一周期处理路况信息,并控制舵机摆头,使上排激光头的光点中心恰好在赛道黑线上,从而时刻跟紧黑线,及时控制模型车转向。 其次,单片机综合考虑上方跟踪舵机PWM值与光点检测的黑线位置,决定下方前轮舵机转向,再依照测速齿数加入速度因素。最终PWM波控制电机的运作。于此同时,红外传感器辅助检测赛道中的起停线,并做出相应处理。 最终,实现模型车智能化,以尽量快的速度在复杂赛道上自动按赛道轨迹前进。1.3 关联文献综述卓晴编辑的学做智能车挑战“Freescale杯”,对于刚接触智能车的我们来说,这是入门必修课程,里面有很多控制策略、路径识别算法、传感器控制等方面的介绍,这些前人参赛的经验对我们队在车体和电路设计上有很大的参考价值。其它参考书目作为辅助的资料,例如谭浩强著的C语言程序设计,主要参考了C程序的历程和一部分指令描述。剩下的参考文献资料全部来自于网络,我们参考了智能车论坛里的大量文献资料。第三章 B型车模的机械设计第二章 模型车的主要设计思路和技术方案概要智能车设计的总体思路上分为三部分,即车体结构、硬件设计和软件编程。其中车体机械结构是最基本的层次,在机械结构满足一定条件的前提下,设计硬件电路,配合软件编程,力求达到环还相扣,不出差错的效果。软件结构上的设计即描绘驾驶员的驾驶水平,硬件结构和车体结构的设计统称车辆的性能,分别反映在控制的稳定性能和竞速性能上。2.1 车体结构今年光电组采用了新的B型车模。虽然轮胎、驱动电机、舵机和电池等车模主要结构不允许改动,但是机械结构上的细节仍会对小车性能产生影响。所以本组制作智能车的首要步骤就是把车况调整得有利于加速,例如更改舵机位置,选择挄量小的轱辘等等,并制作防撞结构,避免小车在测试过程中冲出跑道而受到损伤。2.2 硬件本智能车的定位系统采用双排光电探头采集车辆前方的道路信息,上排为12个激光头,下排为6个激光头和2个红外管,其中上排探头通过舵机控制追踪黑线,下排探头固定用于检测停车线。电机驱动系统采用半桥驱动模式,既节省了空间,又提高了驱动电压。单片机核心板采用MC9S12XS128的最小系统板,体积小且使用方便。舵机采用PWM波控制,通过占空比来确定舵机转向角度。在电机齿轮上安装测速电路,通过码盘齿数实时检测智能车的当前速度。数码管用于显示时间、速度等。2.3 软件在符合大赛规则前提下,软件控制车模以最快的速度跑完整个赛道。不论哪种方案,软件的总体框架总是相似的,即路径识别舵机转向速度控制。 本队智能汽车竞赛的程序用C语言编写。在采集道路信息后,程序上以自动控制理论为基础,并加以具体处理,由速度传感器获知的当前信息对舵机和电机施以合适的控制。 2.4 车模设计特色与创新由于本届车模为四驱越野车模,与往届不同,所以在电池安装,舵机调整,电路设计等诸多方面进行了相对调整与创新。1.电池安装:由于本届车模没有明确的电池安放装置,且电池捆绑方式不许改变,本组队员为电池装上了一个自制金属架,不但方便拆卸,而且有很好固定作用。2.信息采集:对于黑线的探测,本组遵循采集点越密越好的原则,采用分时采集接收方式,解决了相邻的激光头互相干扰的问题,并减少接收管的个数达到省电的目的。3.电机驱动:通过实验,本组采用大功率CMOS管半桥驱动模式作为电机的驱动,在节省小车空间的同时减少了电压压降。4.舵机位置调整:原厂车模舵机位置卧躺于底盘前半部分右侧位置,扭力小,速度慢,本组队员将原舵机位置改变为前轮差速器上方,竖立安装,加长舵柄,相比原来,舵机扭力减小,但转向速度加快。5.跟踪探头:为了提高小车的速度,需激光探头时刻不偏离黑线,所以将道路检测的电路板固定连接在舵机上,并保证连杆的竖直与电路板的水平且左右对称。舵机固定的机械结构纯手工制作,选用质地轻的铝板制作。道路检测电路板的俯角可以根据金属韧性任意调节。第三章 B型车模的机械设计3.1 机械部分 从整个系统上考虑:软件驾驭硬件,硬件依赖于机械架构。提高小车速度,除了软件要调好,硬件与机械上的一些优化,可以在很大程度上简化软件的编写。本组同学首先着手的就是机械部分,以适合硬件的安装。机械调整是为了小车重量更轻,重心更低,结构更稳定更牢固。简化硬件电路,简化车模结架,这样一点点降低车模总重量,将车模向小、轻、快捷的方向优化。下面将从车模调整和传感器安装等方面详细介绍机械结构的调整过程。3.2 车模本次比赛以竞速为基本评判准则,车模由“飞思卡尔杯”智能车竞赛组统一提供,车模轮胎,后轮驱动电机,前轮转向舵机,电池等在竞赛规则的限制下,无法做进一步的改动。但是可以加强细节来提高小车的整体性能。由于今年光电组采用新的B型车模,车模是国内厂商生产的1:16的电动越野遥控车,其突出特点是四轮驱动,四轮独立悬挂,相比于往年比赛采用的A型车模结构复杂程度有所增加,同时可调整参数也有所增加。通过调整车模各处参数,可以优化车辆的性能。3.2.1 车体的重心作为竞速赛车,车辆的的重心要尽量低,尽量靠后。基于这个原则,在电路板的安装与制作时尽可能的做到小巧紧凑以降低车身高度。传感器支架不向前探出,固定在车底盘的前半部分,电池安装在车体后半部分。3.2.2 传感器支架支架的制作既要保证光电探头的前瞻性,又要兼顾检测的稳定性。本组同学将下排探头架在前轴的上方,随动舵机安装在车体的前半部分,高度适当,即保持车在转弯时的平稳性,又加强了接收的可靠性。3.3 车模的参数调整3.3.1 Toe角度Toe角度(束角)是描述从车的正上方看,车轮的前端和车辆纵线的夹角。车轮前端向内倾(内八字),称为Toe-in,车轮前端向外倾(外八字),称为Toe-out。不同的Toe角度会改变车辆的转向和直道行驶的稳定性。可以通过改变前万向节拉杆的长度来改变Toe角度。本组选用车轮前端向外倾(外八字)结构,使直线更加稳定,因为直线稳定是小车过弯良好的前提。3.3.2 Camber linkCamber link是指前上桥两端的固定位置。Camber link决定了车轮的Camber角度和悬挂移动时Camber角度的改变量,以及悬挂系统的几何特性。Camber link位置会影响车辆的稳定性和抓地力。可以通过调整前桥的拉杆长度来改变前轮的Camber link。同理,后轮也有Camber link,要将前轮和后轮之间的配合比调好,才能够整体优化小车的性能。3.3.3 车身高度车身高度指的是当车子满载的时候,底盘离地面的高度。可以通过旋转前、后桥中的内六角螺丝来调整车身高度。图3.1 前桥的内六角螺丝3.4 舵机位置改装在原厂车模中,前轮舵机是横放在底盘前半部分的右侧,扭力小,速度慢,而且它的传动结构抑制了轮胎的最大转向角。将舵机竖立放置在前轮差速器的上方,用简单的结构加以固定。,并增加舵机转动的力臂,这样,舵机的小角度转动就能够带动前轮旋转较大的角度。3.5 传感器传感器的布局与安装取决于系统方案,会影响到系统的稳定性与可靠性以及软件的编写。传感器支架的安装应该在前瞻性和车体稳定性之前权衡。3.5.1 上排探头位置布局由于选用激光头来识别路径,就可以不用像红外一样贴近地面,而是架高,这样有利于返回信号接收,以识别较远距离的路径。本组队员试验过多种激光头布局方案:用一排或两排激光管在赛道上打出一排或两排激光,激光头架在舵机上摆头或直接架在车模上不摆头。经过试验,激光头架在舵机上更有优势。小车能够根据黑线位置来调整转向角度以保证时刻跟踪黑线,这样就不会偏离道路,实现在弯道上加速。 对于电路板上所用到的激光头个数,本组也进行过多种试验。本组的第一版探头采用8个激光头对应8个接收的模式,发现激光探头的光点不够紧密,八个光点对于越来越复杂的路况略有不足。所以,第二版探头方案采用16个激光头对应4个接收管的模式,一个接收管接收4个激光头,结果表明,光点已经足够密集,但是整体电路的重量过大,转弯不够稳定。最终,上排探头为12个激光头对应4个激光接收管的模式相对较好,一个接收管可以接收三个探头的信息反馈。综合考虑,在安装过程中,舵机的高度,激光管的高度,激光管的俯角,整体的重量、重心及其在车模上的位置等都是需要仔细考虑的因素。 3.5.2 下排探头位置布局下排探头的主要设计目的是直线跑得直和检测停车线。小车直线稳定,不左右来回摇摆,需要中间探测黑线的激光点越密集越好,鉴于激光管本身尺寸规格的限制,无法制作地很密集,所以采用红外管探测路况更为适合。于是,下排探头的最终方案是中间两个红外管,两边各三个激光头,AD采集红外信号用于直线细微调整,激光管用于检测起停线。3.6 防撞装置小车在实验测试过程中难免多次冲出跑道,为了避免损伤,保护架在小车前端的下排探头,本组同学在探头前端用简单的材料制作了一个简易的防撞挡板,既保护了小车又不失美观。防撞装置如图所示:图3.2 防撞装置3.7 模型车外观对于车模机械结构的调整,本组同学经过反复实验,车模拆装次数不可胜数,不放过任何一个微小问题,改进车模的每一个细节,最终实现车模结构总体均衡,构架轻巧,结构牢固。改造终版车模如下图所示:图3.5 模型车外观第四章 电路设计说明第四章 电路设计说明4.1 总体电路描述 本组智能车的硬件电路分为以下几个模块:激光头信息采集、数码管显示、驱动电机、舵机以及测速装置。单片机选用freescale公司的16位单片MC9S12XS128,主频为8MHz。单片机与各模块的连接是通过IO、ECT、PWM端口,IO端口的连接有:12个激光头,数码管显示,以及驱动模块的使能控制端。ECT端口连接测速的信号线。PWM端口连接舵机模块和驱动电机模块的两根控制线。其中舵机模块的连接用到两个PWM端口的级联。电路系统的总框图如下图4.1所示。下排探头MC9S12XS128测速数码管显示前轮舵机大功率CMOS管电机上排激光头随动舵机图4.1 电路系统的总框图4.2 系统电源模块全部硬件电路的电源由7.2V可充电镍镉电池提供。其中一个+5V稳压为单片机供电,另一个+5V稳压供电至光电传感器,为避免干扰,本小组选择为核心单片机单独供电。电池7.2V电压除了为电机驱动供电外,它还通过一个二极管给舵机供电。具体供电模式图如下图4.2所示旋转舵机大功率CMOS管+5V稳压+5V稳压电机循迹电路MC9S12XS128测速电池电压 7.2V前轮舵机图4.2 系统电源模块4.3 电机驱动模块电机驱动模块通常为H桥驱动,由于考虑到小车的倒转刹车,所以一般采用全桥电路,但就本车而言,占空比给零刹车效果显著,所以无需倒转刹车。故采用大功率CMOS管连接成半桥驱动电路,不但满足了电路要求,节省了空间,而且减少了电压压降。电路模式如图4.3所示:N管P管电源地线电机单片机图4.3 电机驱动示意图4.4 数码管显示模块本组用三位的带小数点的数码管,共有11根管脚,8根数据线和3根选通控制线。在软件上实现动态扫描,同一时刻只有一位数码管点亮,利用数码管的余辉和人眼的视觉暂留特性,实现连续稳定的显示。点亮时间间隔越短,数码管亮度会越亮,间隔越长,会发生闪烁。图4.4为三位数码管的电路连接原理图。图4.4 数码管显示电路原理图4.5 激光传感器及其电路设计本组在寻线传感器采集方面共用到了两排探头,上排采用12个激光头用于道路检测。最中间四个探头用于细化中间黑线值的采集范围,高精度控制智能车模的直道寻线行驶。剩下的激光头接到CPU的数据IO端口,用于检测道路的弯曲程度,以便控制舵机调整前面转向轮的行驶角度。下排探头采用两个红外管和六个激光头用于控制直线和检测停车线。传感器的实物图见下图4.5:图4.5 传感器实物图4.5.1 激光探头的电路设计发射电路端,集成的调制芯片上电后,输出100kHz的方波,接入NPN三极管的基极,三极管处于100kHz的通断状态,这样,激光头以100kHz的频率发射激光信号。接收电路端,100kHz解调芯片,接收黑线信息时输出低电平。激光管具有检测距离长,方向性好,不受环境影响等优点。中间的传感器间距较小而靠外侧的间距较大,这样安排能更灵敏地检测到黑色路径的较小变化,及时改变模型车的弯道状态。两侧的传感器只有在曲率较大处才能检测到黑线信息,此时路径变化较大,由于车速较快,即使两侧传感器的间距相对较大,也不会影响到路径检测和及时调整。电路原理图见图4.6图4.6 激光发射电路原理图4.5.2 激光探头接收创新点经过大量实验,本组得出一些经验如下:1.激光头越多的越好,但在数量和重量之间权衡。2.激光头越密集越好,但要求相邻之间不允许有干扰。3.激光头数量可以多,但接收传感器数量有限,最好一个接收管接收多个激光头。4.激光头架高有利信号的反馈接收,但应在高度和车体平稳性之间权衡。5.普通激光头是玩具级配置,容易被损坏,工业级的激光管为最佳选择。依照经验,激光探头的发射点越密集,越有利于黑线信号的实时采集,但其相邻两个或三个激光管之间可能存在干扰,所以本组采用分时发射模式。其特点是,每一时刻只有不相邻的4个激光管在工作,如此,接收管在合适的角度上可以同时接收两个甚至三个激光头的反射信号。下面详细说明一个接收管接受多个激光头的原理:假设1个接收管覆盖5个(或其他数量,以下以5为例)发射的面积,使用透镜收集反射光,接收探头放在透镜焦点上。在程序上,控制发射头的使能,以分时采点的方式控制探头。在同一时刻只有1个发射头发射激光,其余4个关闭。这时,接收到的信号就是这个发射头正对面的跑道信息。在实际中,为了确保接收稳定,本组采用一个接收管接收3个激光信号,4个接收,一共12个激光管。此种方式的优点:透镜可聚光,所以理论上可以提高探测距离。每个接收覆盖3个发射,只使用4个接收就可以覆盖全部12个探头,如果假设透镜较轻,则可以降低探头的重量。4.6 测速电路小车需要不同的速度适应各种弯道,这需要程序对小车的速度进行严格的控制。本组同学将码盘安装在电机齿轮上,在底盘上安装光电对管,利用光电对管测量电机装置中的齿轮齿数,通过信号线接入单片机的ECT模块,进而间接的获知智能车的行驶速度。平均测速精度约为15齿/cm。测速电路原理如下图4.7。图4.7 测速电路原理图4.7 核心控制板端口设置各种控制端口具体管脚对应关系如下表4.1所示:表 4.1数码管部分PB0-PB7数码管8根数据线PH4-63个数码管位控激光头部分PH0-PH3、PE2-PE3探头控制6个PA0-PA3下排探头数据PA4-PA7上排探头数据电机部分PP7驱动电机PWMPP5方向舵机PWMPP1摆头伺服电机PWM按键部分PK0开关按键PK1-PK5DIP状态开关测速部分PT7 测速红外管部分AD0-AD12个AD头数据AD4AD电源第五章 软件控制设计第五章 软件控制设计5.1 寻线策略在寻线方面,基本思路是靠近外侧的探头检测到黑线,舵机转向角越大,越靠近中间的探头探测到黑线,舵机转向角越小。实现上述思想的主要策略是以探头采集信息作为偏移量,取得舵机占空比值,再配合上一些简单运算,控制舵机转向寻线。5.2程序总框图图5.1 程序总框图5.3 程序运行方式开机后,对所有硬件进行初始化,完成之后,单片机定时中断,对激光管分时导通,并对接收信号进行采样保存。扫描完12个点以后,处理采样数据,计算出当前黑线与车身的相对位置。单片机先根据当前位置决定上部舵机所打角度以保证紧跟黑线,再根据上部舵机PWM值与光点所得到的位置综合计算出下部舵机的PWM占空比。在速度控制上,单片机根据舵机的打舵角度,经过简单运算得到速度合理值,并结合当前速度值对电机控制,判断是加速、减速,还是刹车制动。 在软件编写上,本组以比例加增量的方法控制前轮舵机的转向,以简单速度控制算法形成闭环反馈模式。5.4 速度控制在控速方面,本车模是依据探头采集的路面状况选择当前应达到的速度,再由测速装置检测当前实际速度,如果大于所需速度就执行刹车,小于则加速。在刹车方面,根据路面情况一共有三种刹车方式可供选择。第一种是给很小的电机前进占空比,靠电机固有的阻力刹车,类似于开车时的“松油门”,主要用于直道的减速。第二种是倒转,类似于开车时的轻微刹车,主要用于S弯道的减速。由于我们采用半桥驱动,所以我们没有倒转刹车模式。第三种就是零刹,当给电机驱动的占空比为零时,靠电机瞬间反电势制动,相当于踩刹车踩到底,小车靠其地面摩擦力刹车。5.5 激光探头路面信号的采集将激光探头分为四组,分别标号为:L01L12。通过控制,可以让编号为L01,L04,L07,L10的激光头亮起,这样可以采集到4位信号。同理,下面分别控制L02,L05,L8,L11的激光头点亮,再采集到4位信号,依此类推,将数据填入表中,即可得到01排布的路面信息。白色为1,黑色为0,通过预判黑线位置,即控制小车进行下一步操作。5.6 红外传感器的AD采集处理在寻线传感器中,采用了两个红外传感器,以AD采集的方式提取信号。利用红外传感器的渐变过程,可精确地控制车模的微小调整,适合直道控制。由于红外传感器对现场光线要求较高,所以采用自动调节的方式。在车辆正常行驶前,对于AD采集数据进行自动校正。自动校正计算函数的公式如下:Standart1=(max-min)/2 公式1Standart2=(max-min)/4 公式2公式中的standart1、standart2是将AD采集的模拟量数字化的比对值, max为在搜索阶段AD采集到的最大值,min为搜索阶段AD采集到的最小值。本组使用两个bit位来描述1个AD采集到的红外探头的数据,具体bit位分配方式公式如下表:表5.5.1采集到的AD值bit1bit0ADstandart100Standart1ADstandart201Standart2ADstandart3115.7 舵机摆头和转向子程序设计 5.7.1 跟踪舵机控制程序设计 在车模整个行驶过程中,舵机不断选旋转使黑线处于一排激光点之中。舵机的转动以增量形式累加,程序上只需确定每个点照到黑线时对应的步进值,靠近中点的光点增量值越小,距中心最远的光点增量值最大。这种算法是一种比例算法。 舵机摆头的实际工作过程是:当小车接近弯道时,光点中心偏离黑线,由于程序控制,跟踪舵机随之转向,舵机会以一定的增量值累加使光点中心与黑线在同一位置。由于舵机的延时特性,在主函数一个执行周期之后,舵机只旋转较小角度而并没有转到稳定位置,此时可能第二个光点已照在黑线上,这样,舵机会在原来的基础上自增第二个光点所对应的增量值。主函数一直循环,在检测到弯道后,经过若干个执行周期舵机旋转至稳定位置。 5.7.2 车模转向控制程序设计 对于前轮舵机的转动角度,整体思路是:当跟踪舵机的PWM占空比值超过一定范围后,小车判定前面是一个弯道。先计算舵机值与中心值的偏差,将偏差量乘以一个系数后的计算值作为打舵的参考量,同时,根据当前黑线的相对激光点位置,每个位置被赋予一个偏量。即使跟踪舵机不转向,当不同的光点照到黑线,前轮舵机也能够正确转向,但幅度较小,将参考量与偏量之和直接赋予到前轮舵机PWM值,随即小车转向。 此种打舵方式是一个比例加上一个偏差,是简单的PD算法。如果参考量的系数与每个光点的偏量选择合理,那么,前轮舵机会在连续的小弯道上走近似直线,而在单侧大弯道上提前转向,切着内道跑。对于这些参数的设定,根据速度不同而略有变化。速度分为高速档与低速档,两档的参数不一样,以适应各种入弯情况。5.7.3 双舵机的配合调试显然,两个舵机具有两种不同的参数,只有将上下两个舵机的参数配合好,小车才能平稳的行进。下面给出了两个舵机之间的参数计算和调试过程。首先,定义变量。在程序中定义了12个常量和8个变量。如下表5.7.1和5.7.2所示:表5.7.1常量转向舵机左偏最大正中右偏最大舵机占空比实际值TURN_MIN_NTURN_MID_NTURN_MAX_N标准化值TURN_MIN_STURN_MID_STURN_MAX_S常量跟踪舵机左偏最大正中右偏最大舵机占空比实际值TRACK_MIN_NTRACK_MID_NTRACK_MAX_N标准化值TRACK_MIN_STRACK_MID_STRACK_MAX_S 表5.7.2变量转向舵机跟踪舵机标准化值turn_strack_s标准化值微分值dturn_sdtrack_s实际值turn_ntrack_n实际微分值dturn_ndtrack_n其次,程序的控制过程分为传输过程和转换过程。传输过程指跟踪舵机参数到转向舵机参数的传递过程,即由track_s和dtrack_s推导出turn_s的过程,其中track_s和dtrack_s在赛道信息采集时已知。转换过程是舵机的标准化值到实际值的换算过程,即由turn_s和track_s推导出turn_n和track_n的过程。1.传输过程直线计算公式如下: 公式3其中,A1 是修正系数,舵机旋转方向不同,系数不同。 P1 是传输系数,系数越大,直线回正速度越快。弯道计算公式如下: 公式4 公式5其中,C1和C2为两个相对系数。当C1大于C2时,适合连续变化的弯道;当C2大于C1时,适合曲率稳定不变的弯道。2. 转换过程(此处以转向舵机为例,跟踪舵机处理方式相同)换算关系如下式所示:当turn_s TURN_MID_S 时, 公式6 当turn_s TURN_MID_S 时, 公式7将所得数据整理成表,画出打舵曲线。如下图5.2所示,上图为追踪舵机追踪黑线的旋转角度,下图为前轮舵机随之转向角度。图5.2 上下舵机配合打舵曲线图在上图中,当舵机的转向角度为零时,小车处于直线状态并伴有幅度较小的微调,当舵机转向角度在1000时,表示舵机已经转至最大角度。从上图可看出,前轮舵机的确是随着上面的旋转舵机转向的,但由于时间延迟等原因,两条曲线又有微小差别,前轮舵机可能会跟不上旋转舵机的打舵速度,而导致左右来回调整,在曲线上就显示成一些小毛刺,只要不断调整上下舵机的比例系数,就能使两个舵机的配合原来越好。5.8 软件部分总结 软件部分是整个控制系统的核心。当机械结构和硬件电路确定后,实际决定成败与否的就是软件程序。软件编程者就像汽车驾驶员一样,一个好的赛车一定要有一个好的车手驾驶,所以软件部分是至关重要的,并且是可以灵活掌握的。本组的思路是运用最简单的算法,舍弃复杂运算,尽量控制小车沿着直线跑,小车能够稳定地适应各种弯道就是调试的最终目的。软件上主要有以下几个难点: 1)区分直线和弯道,且判别出弯道的不同2)怎样控制好两个舵机之间的配合; 3)怎样使速度控制配合好舵机转向。对于本车模的软件系统,本组充分发挥激光摆头的优势,激光的前瞻性和跟踪舵机的灵活性是本小组的创新点。对于车模来说,软件控制是核心,而对于软件来说,真正的核心是舵机转向和速度控制的相互配合,这点是决定小车能否跑得又快又稳的关键问题。第六章 开发工具和制作调试过程第六章 开发工具和制作调试过程6.1 开发工具整个系统完善主要在系统的现场调试。在细分的每个模块中,大部分涉及众多参数,这些参数的确定需要软硬件联合调试。而这过程需要一整套开发环境和调试工具,包括程序源代码的编辑以编译环境,参数调节与设定工具。 本组主要开发环境是Metrowerks公司专门为飞思卡尔S12系列芯片设计的Codewarrior IDE。可从飞思卡尔半导体公司相关网页上下载到CW_S12_v5.0_Special.exe。6.2 Codewarrior IDE的安装与使用 从网站上下载到的其实是一个压缩包,双击安装时它会先解压安装文件到C:Documents and SettingsAdministratorLocal SettingsTempCodeWarrior for S12(X) V5.0文件夹中,再运行其中的setup.exe文件。 本组的程序是用C语言代码来实现,Codewarrior IDE软件已集成好代码编辑工具,工程编译工具以及目标芯片下载与调试工具。 6.3 调试装置例如激光头、舵机、电机等装置在组装到小车上之前,都必须进行各项测试,得到相应的参数后,才能进一步的进行调试。本组调试工作如下:1.完成激光头调试工装及测试程序。2.完成舵机参数测试工装及测试程序。3.完成电机驱动电路及制动工装及测试程序。4.完成测速工装及测试程序。众多调试中,激光探头的调试最为频繁。虽然激光管受环境影响不大,但由于机械结构的不足,细小的变动会导致接收有误。试车前对于激光探头的调试很重要,所以每隔一段时间,本组队员都会对探头进行测试, 6.4 C语言的在线调试本组的调试主要依靠BDM,可以分为两部分。一是在部分程序编写完成后,检验程序的各个部分代码是否正常运行,能否得到预期的结果。这部分的检验主要依靠检查内存中变量的数值以及在程序中设置中断检验程序流程来完成的。二是在整体程序基本编写完成,可以基本实现寻线跟踪,控制速度后,调试程序运行中的各个参数,以尽可能提高速度和稳定度。在调试过程中,如果出现错误,本组队员都会按照以下步骤进行检查。首先确认所有的硬件和电路工作是否正常。其次认清错误现象,包括发生的时间、环境,是固定发生还是随机发生等等。然后对错误进行分析,判断错误可能产生的原因和位置,并对分析结果进行检验。最后确定程序产生错误时的执行路线,对错误区域进行仔细检查,排除错误,最后再用实验验证程序是否正确。6.5 调试中遇到的问题及解决过程 6.5.1 直线跑不直的问题自从本组制作小车以来,一直面临着一个严重的问题小车直线跑不直。我们曾经怀疑过是舵机的原因,更换舵机后的确有所改善,但并不能解决根本问题。一直到华北赛区比赛结束,本组队员都没有解决这个问题。首先,检查了车模的机械结构,发现轱辘有很大挄量,通过机械调整和软件补偿后,基本可以将轱辘的挄量忽略不计,但是直线时好时坏,没有解决其根本问题。最后,一次偶然的尝试,本组队员终于解决了直线抖动的问题,程序上将调整量的最小分度增大,并且调整参数满足合适的二次函数关系,至此,本组终于解决了直线跑不直的问题。6.5.2 跟踪舵机问题在本小组设计中,上排探头全部使用激光头,并且希望探头光点一直紧跟黑线,始终保持有光点在黑线上,这需要带动探头的舵机反应越快越好,为此本组选择使用了高速舵机。在使用中队员发现,高速舵机确实反应灵活,但是,当把激光管摆到中心之后,一直在中心位置附近左右颤动,导致激光点不稳定而影响采样结果。后来本组队员尝试增加一些外力来阻碍回正晃动,但效果并不明显。本组队员分析了上排头晃动的原因,一种是机械结构引起的晃动,这无法避免,另一种是程序上的原因。通过大量实验,结果发现小车在速度慢的情况下不会晃,而速度提高后产生不稳定的晃动,所以调整必须在稳定和速度之间做出权衡。6.5.3 光点亮度问题 在设计激光头信号发射接收电路时,激光探头应拥有较远的前瞻性,实验过程中,本组队员发现只要激光头的亮度再度提高,就能够接收到更远距离的路况信息。一般情况下,激光头是+5V供电,只要再提高0.1或0.2V电压,激光头就能够多接收5cm的黑线信息,但是,5V电压是固定不变的,于是,本组队员调节激光头上所串电阻,最终实验结果是串上66电阻最为合适。第七章 结论第七章 结论7.1 模型汽车制作概述与技术指标7.1.1 车模最终可达到的速度直道速度能达到3.0m/s,平均速度接近2.5m/s。7.1.2车模主要技术指标各种技术指标如下表7.1所示: 表7.1项目参数路径检测方法(赛题组)光电车模几何尺寸(长、宽、高)(毫米)300/175/200车模轴距/轮距(毫米)180/155车模平均电流(匀速行驶)(毫安)1500电路电容总量(微法)1700传感器种类及个数红外接收12/测速1新增加伺服电机个数1赛道信息检测空间精度(毫米)7-8赛道信息检测频率(次/秒)300-500主要集成电路种类/数量MC9S12XS128一块车模重量(带有电池)(千克)1.27.1.3 机械部分其它参数表7.2项目参数前轮距15.5cm后轮距15.5cm前后轮距18.5cm电机轴齿轮齿数14码盘齿数90激光最大前瞻距离(离前轮)40cm激光光点宽度2-3mm激光光点间距1cm红外最大前瞻距离(离前轮)5cm左右7.2 智能车最终实物图经过半年的制作,本组的最终版模型车完成了,如下图7.1所示,这也标志着本小组的“飞思卡尔”杯智能车竞赛也趋于尾声。图7.1 模型车终版实物图7.3 总结本报告详细介绍了本组为第五届全国大学生智能汽车大赛而准备的智能车系统方案。涉及激光传感器循迹方法,传感器随动舵机转向控制策略以及速度控制算法集实现。 纵观整个车模系统,本组在车模硬件及软件上都有许多改进与创新。主要分为以下几个方面:(1)采用激光管作为循迹传感器。相比红外而言,更加适应不同的赛场环境,同时可以增加前瞻性,由于大赛对车模长度的限制,使用红外传感器探测道路信息,最大前瞻也不超过20cm,而本组的激光前瞻最远可达50厘米,较远的前瞻距离有利于速度的提高。 (2)采用红外管作为辅助传感器。以红外管作为赛道辅助传感器,检测起跑线以及在坡道上辅助循迹。双重传感器方案,赛道信息检测更加准确、可靠。系统整体系能得以提高。 (3)使用跟踪舵机与前轮舵机配合的双舵机方案。使用舵机追踪黑线,能够保证黑线时刻在激光点的排布内。小车依靠双舵机转向保证不偏离黑线。配合激光管的较大前瞻,更加有利于速度的提升。 (4)以激光点在赛道上的返回信息和跟踪舵机的角度综合作为路况信息,配合速度参数,能够有效地控制小车的循迹路线,并且程序控制力求使路线最佳。(5)软件编写上,本组尽可能采用简单语句,简单算法,不追求复杂计算,尽可能简化程序,保持程序稳定。同时,采用简单算法控制前轮舵机转向,对路径进行了很好的优化,缩短了车模在赛道上的运行时间。总之,经过这半年多的努力,本组同学终于完成了智能小车的制作,这其中的酸甜苦辣我们体会最深,感触最深,这段时间将成为我们每一个人大学期间的永恒回忆。附录A BJUT 光电一队智能车C语言源代码参考文献1学做智能车挑战“飞思卡尔”杯卓晴 黄开胜 邵贝贝著 北京航空航天大学出版社2Freescale 9S12 十六位单片机原理及嵌入式开发技术孙同景 陈桂友著 机械工业出版社3 单片机嵌入式应用的在线开发方法 邵贝贝著 清华大学出版社4 大学生智能汽车设计 基础与实践 吴怀宇 程磊 章政著 电子工业出版社5 嵌入式系统使用HCS12微控制器的设计与应用王宜怀 刘晓升著 北京航天航空大学出版社6 C语言程序设计 谭浩强著 清华大学出版社附录A BJUT光电一队智能车C语言源代码#include /* common defines and macros */#include /* derivative information */#pragma LINK_INFO DERIVATIVE mc9s12xs128/*macrodefinition*/#define uint32 unsigned long int#define uint16 unsigned int#define uint8 unsigned char#define sint32 signed long int#define sint16 signed int#define sint8 signed char#define _0b00000000 0x00 #define _0b00000001 0x01 #define _0b00000010 0x02 #define _0b00000011 0x03 #define _0b00000100 0x04 #define _0b00000101 0x05 #define _0b00000110 0x06 #define _0b00000111 0x07 #define _0b00001000 0x08 #define _0b00001001 0x09 #define _0b00001010 0x0A #define _0b00001011 0x0B #define _0b00001100 0x0C #define _0b00001101 0x0D #define _0b00001110 0x0E #define _0b00001111 0x0F #define _0b00010000 0x10 #define _0b00010001 0x11 #define _0b00010010 0x12 #define _0b00010011 0x13 #define _0b00010100 0x14 #define _0b00010101 0x15 #define _0b00010110 0x16 #define _0b00010111 0x17 #define _0b00011000 0x18 #define _0b00011001 0x19 #define _0b00011010 0x1A #define _0b00011011 0x1B #define _0b00011100 0x1C #define _0b00011101 0x1D #define _0b00011110 0x1E #define _0b00011111 0x1F #define _0b00100000 0x20 #define _0b00100001 0x21 #define _0b00100010 0x22 #define _0b00100011 0x23 #define _0b00100100 0x24 #define _0b00100101 0x25 #define _0b00100110 0x26 #define _0b00100111 0x27 #define _0b00101000 0x28 #define _0b00101001 0x29 #define _0b00101010 0x2A #define _0b00101011 0x2B #define _0b00101100 0x2C #define _0b00101101 0x2D #define _0b00101110 0x2E #define _0b00101111 0x2F #define _0b00110000 0x30 #define _0b00110001 0x31 #define _0b00110010 0x32 #define _0b00110011 0x33 #define _0b00110100 0x34 #define _0b00110101 0x35 #define _0b00110110 0x36 #define _0b00110111 0x37 #define _0b00111000 0x38 #define _0b00111001 0x39 #define _0b00111010 0x3A #define _0b00111011 0x3B #define _0b00111100 0x3C #define _0b00111101 0x3D #define _0b00111110 0x3E #define _0b00111111 0x3F #define _0b01000000 0x40 #define _0b01000001 0x41 #define _0b01000010 0x42 #define _0b01000011 0x43 #define _0b01000100 0x44 #define _0b01000101 0x45 #define _0b01000110 0x46 #define _0b01000111 0x47 #define _0b01001000 0x48 #define _0b01001001 0x49 #define _0b01001010 0x4A #define _0b01001

温馨提示

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

评论

0/150

提交评论