四川大学1队技术报告最终版_第1页
四川大学1队技术报告最终版_第2页
四川大学1队技术报告最终版_第3页
四川大学1队技术报告最终版_第4页
四川大学1队技术报告最终版_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

第一届“飞思卡尔”杯全国大学生智能汽车邀请赛技术报告附件B智能移动小车的开发与研制学校四川大学队伍名称四川大学1队参赛队员杨承凯、钟鹏、陈果带队教师杨刚关于技术报告和研究论文使用授权的说明本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名杨承凯钟鹏陈果带队教师签名杨刚日期200685目录第一章前言1第二章模型车设计制作的主要思路以及实现的技术方案概要说明221检测机构2211普通红外对管2212带调制红外传感器2213CCD图像传感器322控制算法3第三章模型车机械部分安装及改造、传感器的设计安装、系统电路板的固定及连接等431机械改动及电路板安装432线阵CCD图像传感器的设计433速度检测传感器7第四章电路设计说明8第五章HS12控制软件主要理论、算法说明及代码设计介绍等1051模糊控制器的基本结构10511模糊集合的隶属函数11512论域11513模糊推理11第六章开发工具、制作、安装、调试过程说明19第七章模型车的主要技术参数说明20结论21参考文献22附录A源代码I附录B智能移动小车的开发与研制I第一章前言本智能车采用了红外光电开关作为速度检测单元,线阵CCD图像传感器作为引导线检测单元,模糊控制作为主要控制算法。红外光电开关发出的红外线受安装在驱动电机转轴上的扇页片切割,通过其两次跳变信号的时间间隔即可计算出车轮转速;CCD的驱动信号由外部独立数字电路产生,输出信号由放大比较电路处理后将空间上引导线的位置映射为时间上相应时刻的脉冲信号,MCU只需要向CCD发出帧同步信号然后检测输出脉冲发生的时间便可以判断出引导线的位置,软件消耗极小;模糊控制器以CCD视觉中心偏离引导线的误差和误差变化率作为输入量,以舵机转向角作为输出量,输入隶属函数采用三角形法,输出隶属函数采用脉冲法,由人的驾驶经验和智能车实际运行情况得到模糊规则,采用MAXMIN推理法则得到输出语言,通过重心法计算出转向角。报告的第一部分介绍模型车设计制作的主要思路以及实现的技术方案;第二部分介绍模型车的机械改装、电路板固定和传感器的设计;第三部分介绍模型车主控板的电路设计说明;第四部分介绍模糊控制的主要理论、算法说明和代码设计介绍;第五部分介绍开发工具、制作、安装、调试过程说明;第六部分介绍模型车的主要技术参数;第七部分是对设计的总结。第二章模型车设计制作的主要思路以及实现的技术方案概要说明智能车是一个集光、机、电于一体的综合性系统,主要包括执行机构、检测机构和控制器,系统结构如图21。执行机构由大赛统一规定,本设计未做任何改装,现主要考虑的是检测机构和控制算法。图2121检测机构检测白色背景上黑线的方法很多,主要分为普通红外对管,带调制红外传感器,CCD图像检测等。211普通红外对管普通红外对管使用简单、反应快、信号稳定、灵敏度好,在智能车前方安装一排这种对管可以较好的检测到地面上的引导线,但其检测距离近,一般有效距离为5MM20MM,不能探测到前方赛道信息,在小车高速时通过这种方式检测到赛道变化再做出反应一般来不及,很容易冲出赛道,本设计中没有采用此方案。212带调制红外传感器普通红外对管经过调制(调制频率一般为40K)后可以探测到更远的距离,但要求反射面垂直,智能车检测赛道时射线是倾斜反射的,探测距离大打折扣,不过仍然能达到30CM左右,本设计曾采用过此方案,实测中发现调制后不同对管之间容易产生干扰,若采用时分方式总体采样率又太低,故放弃了此方案。213CCD图像传感器CCD图像传感器分为线阵和面阵两种,由于智能小车只需要检测黑线的位置,可以不需要面信息,选用了线阵CCD比较合适。CCD图像传感器优点在于可以稳定的检测到较远距离的赛道信息(一般在30CM以上),并且检测分辨率高,帧采样频率也较高(100HZ以上),不过使用复杂,一般需要占用较多的MCU处理时间,并且需要稳定的环境光。考虑到比赛场地在室内,光线比较均匀,受环境光影响的这一缺点可以忽略。再考虑到本设计中实际上只需要区分出黑白两种颜色,完全可以直接通过外部放大、比较电路将CCD信号做二值化处理后再由MCU检测电平信息,而不必对其做A/D转换;同时CCD驱动信号也可以通过外部电路产生,MCU只需要给出帧同步信号,这样便大大降低了对MCU的消耗。本设计最终采用了这种方案。22控制算法智能车需要根据实际检测到的赛道信息对转向角做出自动调整,传统上一般使用PID算法作为控制算法,但本设计由于系统模型复杂,智能车的动力学模型与很多因素相关,如智能车重量、电机特性、机械系统传递效率、车轮弹性系数、轮与地之间摩擦系数、最大静摩擦力等等,所以决定采用模糊控制算法,因为其不依赖与精确的数学模型。本设计中以CCD图像传感器视觉中心相对与引导线的位置误差和误差变化率作为输入量,根据人的驾驶经验得到转向角输出,试验中取得了良好的效果。另外,智能车不仅需要转向控制,还需要速度控制,否则在高速转弯时将冲出赛道。不过本设计中并没有采用精确的速度控制,因为智能车本身对行驶速度不需要一个精确的定量,本文使用的方法是在转弯时采用了“点刹”控制,其他情况下以全速行驶,实践中完全满足预定需求,智能车在行驶时不会冲出跑道。第三章模型车机械部分安装及改造、传感器的设计安装、系统电路板的固定及连接等31机械改动及电路板安装模型车在按照厂家图纸完成车轮、舵机、连杆的正常装配后,需要解决主控电路板和CCD电路的安装。利用车身后架已有的两个支撑柱,再在车身中部打两个孔安上厂家原配的两根支撑柱完成对主控板的支撑;转速传感器由连在电机主轴上的扇页和光电开关构成,扇页直接插进电机主轴用胶固牢,光电开关也用胶粘在电机的梁架上;CCD传感器的安装稍微复杂点,先在车头部底架上打三个孔安装上结构铜柱,再把一个前端仰起的铝板安在结构铜柱上,最后再把CCD电路板安装在铝板前端仰起的部分;所有部分通过排线相连,安装完成后实物图如图31。图3132线阵CCD图像传感器的设计CCD电路由线阵CCD图像传感器芯片PD3575D、输出信号放大比较电路构成,由于图像传感器芯片对光线要求较高,所以本设计在其下面放置一个强光白色LED来调节照明。CCD的驱动信号主要由外部电路产生,MCU控制帧同步信号,CCD输出信号先经过放大然后通过比较器提取出赛道上的黑线信息,MCU通过测定黑线对应的脉冲在帧信号里的出现时刻来判断黑线的位置。PD3575D是NEC公司生产的一种高灵敏度、低暗电流、1024像元的内置采样保持电路和放大电路的线阵CCD图像传感器。它内部包含一列1024像元的光敏二极管和两列525位CCD电荷转移寄存器。该器件可工作在5V驱动脉冲和12V电源条件下。在使用PD3575D设计线阵CCD图像传感器的过程中有两个难点。一是驱动信号的产生,二是输出信号的处理。PD3575D的驱动需要四路脉冲,分别为转移栅时钟IO、复位时钟RO、采样保持时钟SHO和传输门时钟TG,它们的时序图如下图32在明确了CCD的驱动时序后,下面关心的便是如何产生这四路驱动信号。有两种方案由单片机程序产生四路时钟驱动信号,这种办法简单易行。但1实际上是不适用于智能小车系统的。因为驱动信号的频率相当高(8M),如果用单片机产生这个信号,那几乎将占用所有的单片机时间,导致无法对信号做出处理和响应其他操作。由外围电路直接产生CCD驱动时钟,这种办法比较2复杂,要用计数器和触发器专门设计一个时序电路(因为大赛规定另外不能用可编程器件),单片机只需要产生一个帧同步信号(传输门信号TG)与外围时续电路保持同步即可。这种方式虽然在操作上比较复杂,但给单片机留出了大量的空闲时间,以便能够对其他信息做处理,适合于实际,本设计就是采用的这种方式。图33CCD驱动信号电路CCD输出的是模拟信号,将图象采集进单片机,一般要对CCD信号做A/D转换,完成这些需要一个高速的A/D转换器和信号处理器件,这对单片机的性能要求显然是比较高的。考虑到本设计中实际上只需要区分黑色和白色,CCD对于这两者输出的信号差异较大,将CCD信号放大后直接使用一个比较器对信号进行二值化处理即可,由单片机检测二值信号的跳变时间,便可以计算出黑线的位置,这样便进一步缩短了单片机在CCD上消耗的时间。图34CCD输出信号处理电路图35UPD3575D33速度检测传感器速度检测传感器由连在电机主轴上的扇页和光电开关构成,电机旋转时带动扇页旋转遮挡光电开关产生脉冲。图36扇页和光电开关第四章电路设计说明主控电路板比较简单,主要由微控器MC9S12DB128、电机驱动芯片、光电开关接口、舵机接口、CCD信号接口、串口构成。微控器MC9S12DB128的周边小电路包括电源、晶振、复位电路和BDM调试接口,电机驱动芯片采用组委会提供的MC33996,电机和舵机的控制信号均是PWM波,所以电机控制芯片接PWM2,舵机接PWM1;光电开关接IC0,CPU通过测定光电开关两个相同跳变沿之间的时间来测定电机的转速;CCD接口由CPU的驱动信号和CCD返回的检测信号构成;串口电路就是标准MAX232接口电路。另外为了调试方便,我们引入了无线开关来启动和停止模型车。图41单片机最小系统电路图42直流电机驱动电路图43舵机控制电路图44红外光电检测电路第五章HS12控制软件主要理论、算法说明及代码设计介绍等本设计控制算法主要是模糊控制。模糊控制不需要被控对象的精确数学模型,而是基于专家知识和操作者的经验建立模糊控制模型,通过模糊逻辑推理完成控制决策过程,最后实现对被控对象的调节控制。调节经验即为模糊控制的模糊控制规则。模糊控制规则是模糊控制的数学模型,模糊控制规则的优劣直接关系到模糊控制性能的好坏。与PID控制相比,模糊控制有如下的优点1模糊控制不依赖于被控对象的精确数学模型,仅依赖专家知识和操作者的经验。2模糊控制具有较强的知识表达能力,可以将专家知识和操作者经验以规则的形式加以描述和提炼。3模糊控制具有较强的推理功能,经过模糊推理可以实现类似与人的决策过程。51模糊控制器的基本结构图51为基本模糊控制系统,其中T为采样周期;R为设定值;Y为被控过程的输出;E,EC和U分别为偏差、偏差变化率、控制增量的精确量;A、B和C分别为E,EC和U的模糊量;、和分别为E,EC和EQCUU的量化因子和比例因子。(51)UQ模糊化清晰化模糊推理被控过程输入输出隶属函数模糊控制规则RKTEKTEKTTEECQCQECABCUUKTQUT图51模糊控制器基本结构511模糊集合的隶属函数在人类的思维中,有许多模糊的概念,如大、小、冷、热等,都没有明确的内涵和外延。只能用模糊集合来描述;有的概念具有清晰的内涵和外延,如男人和女人。我们把前者叫做模糊集合,后者叫做普通集合(或经典集合)。如果把模糊集合的特征函数称为隶属函数。记作,则表示元素属XAXA于模糊集合A的程度。隶属函数是模糊数学中最基本的概念,我们用隶属函数来给出模糊集合在论域U上的模糊集合A,由隶属函数来表征,区间内连续取值。的大小反映了元素对于模糊集合A的隶属程XAXAX度。512论域所谓论域,即隶属函数输入量的的变化范围,一般分为离散论域和连续论域。离散论域即是说输入量的变化的离散的,不连续的,比如我们常说的年龄,通常是按整数来表示的,从0岁到120岁,那么它就是一个离散论域;连续论域即是说输入量的变化是连续的,如温度,从30到80。513模糊推理模糊逻辑主要研究模糊推理,模糊推理实际上是从模糊前提出发按照模糊规则进行推理,而后得出结论(也是模糊的)。模糊规则是模糊推理的依据,这些模糊规则是人们实际工作中的经验用语言的表达,因此也称为语言规则,基本上采用如下三种形式16。“如A则B型”。此种形式可以写成“IFATHENB”的条件语句,例如1“如果土壤干燥则洒水”。“如A则B否则C”型。此种形式可以写成“IFATHENBELSEC”,例2如“如果土壤干燥则洒水,否则就不洒水”。“如A且B则C”型。此种形式可以写成“IFAANDBTHENC”,例如3“如果土壤干且气温高,则洒水”。以上几种模糊规则中,第三种用得最多,尤其是在模糊控制中更是如此。因为在控制过程中,不但要考虑实测值与设定值之间所形成的误差,而且还要考虑这个误差的变化率,一般用A表示误差,B表示误差变化率,C表示控制量。514输出清晰化模糊推理的结果依然是模糊量,这种结论不能用来控制,因为系统依然不知道控制量到底是多少。因此,必须进行反模糊化,将模糊控制量变为精确控制量。反模糊的输入是前一步模糊规则的输出,即输出变量各语言值的隶属度,反模糊化的输出是系统输出变量的精确输出值。其过程就是根据输出变量的隶属函数,从输出变量各语言值的隶属度求出精确的输出值的过程。也就是说,反模糊化的过程是在输出变量隶属度函数的图形中,已知Y值求X值的过程。这一过程需要用户提供的数据是输出变量的隶属函数。反模糊化有多种方法,最常用的是最大隶属度法和重心法。最大隶属度法1最大隶属度法用于要求不高的系统,它是选取输出语言值中隶属度最大者作为最终语言值。该语言值变化范围的中心值就作为实际输出的精确值。重心法2在要求较高的系统,反模糊一般采用重心法(COG),即求所有模糊输出量的重心,计算公式如下(52)NIIIFSCOG1这里,代表的就是输出变量的隶属度,代表输出变量的语言值。IFIS52控制器设计本系统中,利用模糊控制器来控制智能移动小车的运动轨迹,首先需要得到控制器的输入量。上文中我们得出,在不打滑时,移动智能小车的运动轨迹与车速无关,只与前后轮距离和小车转向角度有关。根据这一结论,要使移动智能小车能够正确的寻迹,需要调整的只是转向角(前后轮距离是已知量),所以,传感器检测的重点也是转向角误差,考虑到当转向角误差相同时,不同的误差变化率可以反映出不同的轨道半径,因此,本设计中还检测了转向角误差变化率。通过CCD图象传感器来检测白色地面上的黑线,根据返回的信号便可以得出驾驶角误差和误差变化率,如图48引导线传感器检测区域T1T2E图52引导线检测原理图检测出T1,T2间的误差E,然后根据上一次误差计算误差变化率EC,由此得到控制器的误差输入量。当误差量E很小,且误差不变时,就可判定为智能小车正沿着引导线行驶,则机器人小车沿直线行进;若误差变化率比较大时,表明智能小车正在偏离引导线,此时,就需要对航向角做出相应的调整。前文已经给出移动智能小车的运动学模型和传感器的输入特征,需要指出的是,通过CCD传感器得到的检测信号是其视觉中心与引导线中心的位置差,设计中控制的目标是让视觉中心与引导线中心重合。基于这个模型的模糊控制如下。521模糊集与隶属函数将CCD图象传感器视觉中心的误差和误差变化率作为控制器的输入,以下用和表示,输出为驾驶角,用表示,模糊语言值分别选为ECLB,LM,LS,CE,RS,RM,RBPB,PM,PS,ZO,NS,NM,NBLB,LM,LS,CE,RS,RM,RB隶属度函数采用三角形,函数表达式如下式18。其他,0/误差变化率论域ENUMDFERRORNB,NM,NS,ZO,PS,PM,PB/驾驶角输出论域ENUMOREADLB,DLM,DLS,DCE,DRS,DRM,DRB/隶属函数参数结构STRUCTTRIANGLE_INTAINTBINTCTRIANGLE/ERROR隶属结构TYPEDEFSTRUCTFUNCERROR_ENUMERRORKEYTRIANGLEFUNCFUNCERROR/DFERROR隶属结构TYPEDEFSTRUCTFUNCDFERROR_ENUMDFERRORKEYTRIANGLEFUNCFUNCDFERROR/OREA隶属结构TYPEDEFSTRUCTFUNCOREA_ENUMOREAKEYCHARFUNCFUNCOREA/ERROR变量结构TYPEDEFSTRUCTVARIERROR_ENUMERRORKEYFLOATDATFLOATSUBVARIERROR/DFERROR变量结构TYPEDEFSTRUCTVARIDFERROR_ENUMDFERRORKEYFLOATDATFLOATSUBVARIDFERROR/OREA变量结构TYPEDEFSTRUCTVARIOREA_ENUMOREAKEYFLOATDATFLOATSUBVARIOREA模糊控制程序流程如下读取CCD视觉误差CCD_ERRORDATI0BUFF_ERRORLEN0CCD_ERRORDAT处于FUNC_ERRORIFUNCA与FUNC_ERRORIFUNCC之间计算隶属度SUBCCD_ERRORKEYFUNC_ERRORIKEYCCD_ERRORSUBSUBBUFF_ERRORARR_ERRORBUFF_ERRORLENCCD_ERRORBUFF_ERRORLENIIINCLUDE“DATATYPEH“INCLUDE/DEFINEBAUDRATE9600/DEFINEBUSCLOCK24000000VOIDUART_INIVOIDVOIDUART_SENDCHARUNSIGNEDCHARBVOIDUART_SENDSTRCHARPPRAGMACODE_SEG_NEAR_SEGNON_BANKEDVOIDINTERRUPTISR_RECUARTVOIDPRAGMACODE_SEGDEFAULTENDIFINCLUDE“DATATYPEH“INCLUDE“MOTORCONTROLH“INCLUDE“TIMERH“INCLUDE“PWMH“DEFINEMAXACC100DEFINEKVOT1DEFINEKP6DEFINEKI10DEFINEMAXDIVU5INT32CURREVINT32CURACCINT32PREERRACCINT32VISUALVOT/FREV/FACCVOIDSETREVINT32REFREVINT32REFACCINT32ERRREVINT32ERRACCINT32ERRVOTINT32OUTVOTCURREVFREV/CURACCFACCERRREVREFREVCURREVREFACCERRREV1000IFREFACCMAXACCREFACCMAXACCERRACCREFACCCURACCERRVOT80ERRACC78PREERRACCERRVOT/100VISUALVOTERRVOTOUTVOTVISUALVOT/KVOT/IFOUTVOT0ELSEOUTVOTOUTVOT/IFOUTVOT255OUTVOT255IFOUTVOTMAXDIVUDIVUMAXDIVUIFDIVU255SUMU255IFSUMU180A180IFAVOIDPWM_INIVOIDVOIDSTEERINGGEARANGLEUNSIGNEDCHARAVOIDMOTOSPEEDUNSIGNEDCHARSENDIF/COPYRIGHTC四川大学文件信息文件名TIMERC创建人陈果最后修改日期2006年4月15日描述TIMER主文件历史版本信息创建人陈果版本10日期2006年4月15日描述原始版本当前版本修订修改人日期描述/INCLUDE“TIMERH“DEFINETGPORTK_BIT0DEFINEPULSE_ENPORTK_BIT1DEFINE_8USASM“NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP“DEFINE_1USASM“NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP“DEFINEMAXPULSEWIDTH1200DEFINEMINPULSEWIDTH100UINT32NOFCOUNTER0UINT32NREVPERIOD0/UINT16CNT/CHARSTR20VOIDTIMER_INIVOIDMCCTL0XC6MCCNT30000/TSCR2_PR3TSCR2_TOI0TSCR1_TFFCA1TCTL4_EDG0A1TCTL4_EDG0B0TCTL4_EDG1A0TCTL4_EDG1B1TCTL4_EDG2A1TCTL4_EDG2B0TIE0X03TSCR1_TEN1/DDRK0X03TG1PULSE_EN0/ENABLEINTERRUPTSVOIDGETREVVOIDSTATICINT32ARRPREREV8/STATICFP32FPREREVSTATICUINT8NREVCOUNTER0/FP32NREVTEMP/NREVTEMPNREVPERIOD00750000/NREVPERIODARRPREREVNREVCOUNTERNREVPERIODNREVCOUNTERIFNREVCOUNTER8NREVCOUNTER0FREVARRPREREV0ARRPREREV1ARRPREREV2ARRPREREV3ARRPREREV4ARRPREREV5ARRPREREV6ARRPREREV7/8FREV/100/FACCFREVFPREREV/FPREREVFREVPRAGMACODE_SEG_NEAR_SEGNON_BANKEDVOIDINTERRUPTISR_TIMERVOID/STATICUINT16COUNTER0UINT16TEMP/TIE0X01/MCFLG_MCZF1TEMPMCCNTPULSE_EN0TG0_8USTG1_1USPULSE_EN1/GLINEINFOLLINEINFOLLINEINFONCOUNTER0CTRFLAG1NOFCOUNTERVOIDINTERRUPTISR_IC0VOIDSTATICUINT32NPREOFCOUNTER0STATICUINT16NPRETC00UINT32NPERIODUINT16NTEMPNTEMPTC0NTEMPMCCNTNPERIODNOFCOUNTERNPREOFCOUNTER0X7530NPRETC0NTEMPIFNPERIODMINPULSEWIDTHVOIDGETREVVOIDPRAGMACODE_SEG_NEAR_SEGNON_BANKEDVOIDINTERRUPTISR_TIMERVOIDVOIDINTERRUPTISR_IC0VOIDVOIDINTERRUPTISR_IC1VOIDVOIDINTERRUPTISR_IC2VOIDPRAGMACODE_SEGDEFAULTENDIF/COPYRIGHTC四川大学文件信息文件名UARTC创建人陈果最后修改日期2006年4月16日描述UATRT主文件,只提供发送功能用于程序调试历史版本信息创建人陈果版本10日期2006年4月15日描述原始版本当前版本修订修改人日期描述/INCLUDE“UARTH“VOIDUART_INIVOIDSCI0BD13/设置波特率寄存器SCI0CR2_TE1/使能发送SCI0CR2_RE1/使能接收/SCI0CR2_RIE1/接收中断使能ENABLEINTERRUPTSVOIDUART_SENDCHARUNSIGNEDCHARBWHILESCI0SR1_TDRE0SCI0DRLBVOIDUART_SENDSTRCHARPWHILEP0UART_SENDCHARPPRAGMACODE_SEG_NEAR_SEGNON_BANKEDVOIDINTERRUPTISR_RECUARTVOIDUINT8NTEMPSCI0SR1_RDRF0NTEMPSCI0DRLPORTBNTEMPPRAGMACODE_SEGDEFAULTINCLUDE/COMMONDEFINESANDMACROS/INCLUDE/DERIVATIVEINFORMATION/INCLUDE“DATATYPEH“INCLUDE“TIMERH“INCLUDE“UARTH“INCLUDE“PWMH“INCLUDE“MOTORCONTROLH“INCLUDE“FUZZYH“INCLUDE“E2PROMH“INCLUDE/INCLUDE“RTSXGATECXGATE“PRAGMALINK_INFODERIVATIVE“MC9S12DG128B“/EXTERNUINT32NOFCOUNTEREXTERNINT32NREVPERIOD/FLOATNREV/EXTERNUINT16CNTUINT8BRAKE0VOIDMAINVOID/STARTYOURCODEHERE/CHARSTR40/UINT8IINT16TEMPUINT16REV0/UINT8BRAKE0TIMER_INIUART_INIPWM_INIE2PROM_INI/PORTB0X00WHILEPORTA_BIT00/MOTOSPEED160WHILE1IFPORTA_BIT11MOTOSPEED0BRAKE1/WRITEE2PROMREV,0ELSEIFPORTA_BIT01BRAKE0ELSEIFCTRFLAG1/WAITFOREVERIFCPFLAG1FREV0/FACC0ELSECPFLAG0/IFBRAKE0/MOTOSPEED250/SPRINTFSTR,“LULD“,FREV,FACC/UART_SENDSTR“/FORI0IINCLUDE“DATATYPEH“INCLUDEVOIDE2PROM_INIVOIDVOIDWRITEE2PROMUINT16DATA,UINT16ADDRUINT16READE2PROMUINT16ADDRENDIF/FUZZYCINCLUDE“DATATYPEH“INCLUDEINCLUDEINCLUDE“UARTH“INCLUDE“E2PROMH“INCLUDE“PWMH“/MICRODEFINESDEFINEKEX0007936DEFINEKECX300/DEFINEKECX200/DEFINECEX13234DEFINECEX1236/MICRODEFINES/DEFINEKEX8/DEFINEKECX0001/DEFINECEX300/ENUMERRORLB,LM,LS,CE,RS,RM,RBENUMDFERRORNB,NM,NS,ZO,PS,PM,PBENUMOREADLB,DLM,DLS,DCE,DRS,DRM,DRBTYPEDEFSTRUCTINT8AINT8BINT8CTRIANGLETYPEDEFSTRUCTFUNCERROR_ENUMERRORKEYTRIANGLEFUNCFUNCERRORTYPEDEFSTRUCTFUNCDFERROR_ENUMDFERRORKEYTRIANGLEFUNCFUNCDFERRORTYPEDEFSTRUCTFUNCOREA_ENUMOREAKEYCHARFUNCFUNCOREATYPEDEFSTRUCTVARIERROR_ENUMERRORKEYFP32DATFP32SUBVARIERRORTYPEDEFSTRUCTVARIDFERROR_ENUMDFERRORKEYFP32DATFP32SUBVARIDFERRORTYPEDEFSTRUCTVARIOREA_ENUMOREAKEYFP32SUBVARIOREAFP32EX000000001FP32PRE_EX00000001FP32ECX00000001/ECXKEXPRE_EXFUNCERRORFUNC_ERROR7LB,100,9,6,LM,9,6,5,LS,6,5,3,CE,5,0,5,RS,3,5,6,RM,5,6,9,RB,6,9,100FUNCDFERRORFUNC_DFERROR7NB,100,9,6,NM,9,6,3,NS,6,3,1,ZO,2,0,2,PS,1,3,6,PM,3,6,9,PB,6,9,100FUNCOREAFUNC_OREA7DLB,25,DLM,15,DLS,10,DCE,0,DRS,10,DRM,15,DRB,25ENUMOREARULE77DRB,DRB,DRM,DRM,DRS,DCE,DCE,DRB,DRB,DRM,DRM,DRS,DCE,DCE,DRB,DRB,DRM,DRS,DCE,DLM,DLM,DRB,DRB,DRS,DCE,DLS,DLB,DLB,DRM,DRM,DCE,DLS,DLM,DLB,DLB,DCE,DCE,DLS,DLM,DLM,DLB,DLB,DCE,DCE,DLS,DLM,DLM,DLB,DLB/ENUMOREARULE77DRB,DRB,DRM,DRM,DRS,DCE,DCE,DRB,DRB,DRM,DRM,DRS,DCE,DCE,DRB,DRB,DRM,DRM,DCE,DLM,DLM,DRB,DRB,DRS,DCE,DLS,DLB,DLB,DRM,DRM,DCE,DLM,DLM,DLB,DLB,DCE,DCE,DLS,DLM,DLM,DLB,DLB,DCE,DCE,DLS,DLM,DLM,DLB,DLB/NWERULES/ENUMOREARULE77DRB,DRB,DRB,DRB,DRB,DRB,DRM,DRB,DRB,DRB,DRB,DRB,DRB,DRM,DRB,DRB,DRB,DRM,DRS,DRS,DRS,DRB,DRB,DRS,DCE,DLS,DLB,DLB,DLS,DLS,DLS,DLM,DLB,DLB,DLB,DLM,DLB,DLB,DLB,DLB,DLB,DLB,DLM,DLB,DLB,DLB,DLB,DLB,DLB/ENUMOREARULE77DRB,DRB,DRB,DRB,DRB,DRB,DRM,DRB,DRB,DRB,DRB,DRB,DRB,DRM,DRB,DRB,DRB,DRB,DRB,DRB,DRM,DRB,DRB,DRS,DCE,DLS,DLB,DLB,DLM,DLB,DLB,DLB,DLB,DLB,DLB,DLM,DLB,DLB,DLB,DLB,DLB,DLB,DLM,DLB,DLB,DLB,DLB,DLB,DLB/ENUMOREARULE77DLM,DLB,DLB,DLB,DLB,DLB,DLB,DLM,DLB,DLB,DLB,DLB,DLB,DLB,DLS,DLS,DLS,DLM,DLB,DLB,DLB,DRB,DRB,DRS,DCE,DLS,DLB,DLB,DRB,DRB,DRB,DRM,DRS,DRS,DRS,DRB,DRB,DRB,DRB,DRB,DRB,DRM,DRB,DRB,DRB,DRB,DRB,DRB,DRM/VARIERRORCCD_ERROR1,0,0VARIDFERRORCCD_DFERROR1,0,0STRUCTUINT8LENVARIERRORARR_ERROR2BUFF_ERRORSTRUCTUINT8LENVARIDFERRORARR_DFERROR2BUFF_DFERRORSTRUCTUINT8LENVARIOREAARR_OREA4BUFF_OREAFLOATRESULT_OREA/MAINFP32RESULTWHILE1CCD_ERRORDAT1CCD_DFERRORDAT1RESULTFUZZYCONTROL/UINT16ECOUNTER0UINT16IECXFP32FUZZYCONTROLUINT8I,J,NINT16TEMPCHARSTR30FP32FTEMP,TEMPSPEEDFP32SUBFP32RESULT_OREA,SUMENUMOREAKEYIFGLINEINFONCOUNTER0LOSING0EXFP32GLINEINFOARRLINE0CEX/TEMPEXPRE_EXECXEXPRE_EXCCD_ERRORDATEXCCD_DFERRORDATECXPRE_EXEXBUFF_ERRORLEN0FORI0IFUNC_ERRORIFUNCAELSECCD_DFERRORSUBCCD_DFERRORDATFUNC_DFERRORIFUNCC/FUNC_DFERRORIFUNCBFUNC_DFERRORIFUNCCBUFF_DFERRORARR_DFERRORBUFF_DFERRORLENCCD_DFERRORBUFF_DFERRORLENI0J0N0BUFF_OREALEN0FORI0IBUFF_DFERRORARR_DFERRORJSUBBUFF_ERRORARR_ERRORISUBBUFF_DFERRORARR_DFERRORJSUBKEYRULEBUFF_DFERRORARR_DFERRORJKEYBUFF_ERRORARR_ERRORIKEYFORN0NSUBBUFF_OREAARR_OREANSUBSUBBREAKELSECONTINUERESULT_OREA0SUM0FORN0N200KHZVOIDWRITEE2PROMUINT16DATA,UINT16ADDRUINT16PPUINT160X0800ADDRADDRWHILEESTAT_CBEIF0/WAITUNTILBUFFERISEMPTYPDATAECMD0X20ESTAT_CBEIF1WHILEESTAT_CCIF0UINT16READE2PROMUINT16ADDRUINT16PPUINT160X0800ADDRADDRRETURNP/FUZZYH/DEFINEUINT8UNSIGNEDCHARDEFINEINT8CHARDEFINEUINT16UNSIGNEDINTDEFINEINT16INTDEFINEUINT32UNSIGNEDLONGDEFINEINT32LONGDEFINEFP32FLOAT/FUNCTIONDECLAREFP32FUZZYCONTROLVOID附录B智能移动小车的开发与研制摘要本文设计并制作了一辆用于寻迹的轮式智能移动小车,提出了智能移动小车自动寻迹的一种解决办法,以FREESCALE16位单片机MC9S12DB128B作为唯一控制部件,采用PI控制实现了速度控制,模糊控制实现了航向控制;利用了红外光电传感器检测轮速,CCD图像传感器检测引导线,加速度传感器检测侧向加速度。实际控制结果表明,所使用方法的控制性能是相当出色的。关键词移动机器人;自动寻迹;模糊控制。ABSTRACTANINTELLIGENTVEHICLEUSINGMC9S12DB128BASTHEONLYCONTROLUNITFORPATHFOLLOWINGISDESIGNEDANDMADEINTHISPAPER,ANDTHENTRAJECTORYCONTROLMETHODISPRESENTEDANDDISCUSSEDTOSOLVETHEPROBLEM,PIDCONTROLERISUSEDFORSPEEDCONTROL,WHILEFUZZYCONTROLLERISUSEDFORTRAJECTORYCONTROLANDINFRAREDSENSOR,CCDIMAGESENSORANDACCELERATIONAREUSEDRESPECTIVELYTODETECTTHEWHEELREV,THETARGETTRAJECTORYANDTHESIDEACCELERATIONTHEEXPERIMENTRESULTSHOWTHEADVANTAGEOFTHEPRESENTEDMETHORDKEYWORDSWHEELMOBILEROBOTAUTONOMOUSPATHFOLLOWINGFUZZYCONTROL1引言轨迹控制在机器人领域是一个很重要的研究方向1,它有很多实际用途比如工业机器人在工作场所里按预定路线运送物料,焊接机器人的焊缝跟踪,自主移动机器人的道路跟随等2。智能车轨迹控制中,主要有两个量需要控制,速度与航向角。本文中智能小车的驱动部件是直流电机,所以速度控制及是对直流电机的转速进行控制。传统中直流电机的转速控制多采用转速、电流双闭环PI控制系统,但本设计中由于车体小,不便使用电流互感器来检测电流,采用了转速P、加速度PI双闭环控制的办法,取得优良的性能。传统的机器人航向角控制常采用的是PID控制器3。将机器人的航向角误差和误差变化率作为控制器的输入,控制器的输出作为机器人的驾驶角。而在实际的系统中,机器人的航向角还与其速度、转动惯量、重心位置、前后轮侧偏系数由于轮不是严格垂直于地而造成,两个驱动轮直径和摩擦力的差别、实际道路情况等诸多变化因素有关,这就使P1D控制器的参数的全局整定极为困难,在小角度转弯实验中整定的系数在大角度转弯实验中就变得不适用,反之亦然。本文针对这个问题,采用了模糊控制,实验结果表明了所用方法的有效性。2智能移动小车运动学模型在移动智能小车运动系统中,我们能够控制的只有小车的速度与转向角度,为了得到在一定速度和转向角度下小车的运动规律,须建立其运动学方程,得出小车的姿位与速度,转向角度之间的关系14。VORLXY图21智能车运动学模型图21中,建立了直角坐标系,以X,Y代表小车位置,代表小车与X轴的夹角,代表转向角(前轮与车身的夹角),V代表小车的行使速度,代表前轮转向速度。根据本设计的特点,令移动智能小车的状态为(X,Y,),输入激励为(V,),在不打滑时,容易得到(2LVYXTANSICO1)由此得,运动轨迹方程为(2TLVLTLYVXANACOSNIT2)设小车的转弯半径为R,则(2TAN2LYX3)由此我们可以看出,在小车不打滑的情况下,转弯半径仅仅与车身前后轮轴距有关,与车速无关。3控制器设计31控制器设计控制系统是智能移动小车的核心部分,它决定着控制性能的优劣,本设计的总体控制结构如图31所示,其中,寻迹控制采用了模糊控制算法,速度控制采用了PI算法。整个控制任务由一片FREESCALE公司生产的16为单片机MC9S12DB128B实现。图31控制结构图32调速控制系统321控制器设计调速控制系统的任务是根据传感器返回的实际信息,将车轮速度控制在上层系统给定的数值,直流电机的传递函数为12STKSUNMLED能移动小车要求小车能够快速的启动和制动,传统中直流电机的控制采取转速、电流双闭环控制器,不过采用这种设计需要配备直流电流互感器,但是直流电流互感器相对智能移动小车系统体积大,质量重,不适合与本设计应用。分析整个系统,其特点在于在移动智能小车的启动制动过程中,需要保持恒定的加速度(所允许的最大加速度)。根据这一特点,本设计直接使用了加速度反馈,在直流电机转速闭环控制系统中,引入了加速度环,建立了直流电机转速比例调节器、加速度PI调节器模型,因为有加速度环节在,速度环节是不存在稳态误差的。仿真与实验证明这种方法是非常有效的。直流电机控制模型如图32图32调速系统结构图在MATLAB下仿真,得到阶跃输入为5000R/MIN的速度,加速度响应曲线如图33,图34图33转速启动曲线图34加速度启动曲线可以看出,调节器效果是相当理想的。322软件实现在连续控制模型中,PI控制器的传递函数为(31)1STKSEUDIP相应的数字增量型PI差分方程为(32)10KEQKU其中(33)10TKQDIP(34)211TKQDPT为采样周期,本设计中,取T1MS,根据图32,加速度调节器,根据上式,容易得到AAR的差分方程为0SAR(35)105KEKEKUAA(36)IAAI0为加速度调节器的误差输入,为加速度调节器的输出。KEKUA速度调节器为比例调节器,易得差分方程为10KEUSS为转速调节器的误差输入,为转速调节器的输出11。KEKS调速控制系统的程序是在定时器0的中断服务中执行的,定时周期为10MS,根据以上设计,可得程序流程如图35捕捉中断服务程序返回读取记数脉冲计算速度和加速度读取参考速度计算速度误差根据得到10KEUSS参考加速度10000KUS10000KS计算加速度误差根据1005KEKUAAA误差电压输出计算PWM占空比将PWM参数写入PWM控制器的参数寄存器记数脉冲清零更新寄存器1KEA根据KIAAU0计算电压输出72KUA72KAYNYN开始图35调速系统流程图33寻迹控制系统331模糊控制模糊控制不需要被控对象的精确数学模型,而是基于专家知识和操作者的经验建立模糊控制模型,通过模糊逻辑推理完成控制决策过程,最后实现对被控对象的调节控制。调节经验即为模糊控制的模糊控制规则。332模糊控制器的基本结构图36为基本模糊控制系统,其中T为采样周期;R为设定值;Y为被控过程的输出;E,EC和U分别为偏差、偏差变化率、控制增量的精确量;A、B和C分别为E,EC和U的模糊量;、和分别为E,EC和U的量EQCU化因子和比例因子。模糊化清晰化模糊推理被控过程输入输出隶属函数模糊控制规则RKTEKTEKTTEECQCQECABCUUKTQUT图36模糊控制器基本结构333控制器设计通

温馨提示

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

评论

0/150

提交评论