【《具备自主循迹功能的智能车控制系统软件设计案例综述》2400字】_第1页
【《具备自主循迹功能的智能车控制系统软件设计案例综述》2400字】_第2页
【《具备自主循迹功能的智能车控制系统软件设计案例综述》2400字】_第3页
【《具备自主循迹功能的智能车控制系统软件设计案例综述》2400字】_第4页
【《具备自主循迹功能的智能车控制系统软件设计案例综述》2400字】_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

具备自主循迹功能的智能车控制系统软件设计案例目录TOC\o"1-3"\h\u8397具备自主循迹功能的智能车控制系统软件设计案例 [13]。具有高效的代码执行能力和效率,支持在线模拟调试。1.2程序总体框架设计本设计的程序部分首先包括主程序部分和各个模块的程序控制部分。其中主程序主要包括对主控芯片的时钟、GPIO、寄存器、定时器、片内外设、芯片的Flash以及智能车的各个模块进行初始化,同时主程序根据芯片的时间片轮转调度法进行程序的执行。而子程序的初始化包括按键部分、电机驱动部分、AD电磁检测部分、舵机驱动部分以及无线通信模块的串口配置和定时器的初始化部分。根据智能车软件部分程序功能的设计,程序执行的主流程图如图16所示图16智能车主程序流程图其中主控芯片上的通用定时器在每5ms、10ms、100ms,而本设计选用的是让定时器每10ms采集一次电感数据,然后通过无线传输模块把采集到的电感信息发送到主控芯片。主控芯片通过对电感数据的加权递推平均滤波和卡尔曼滤波两种算法得到处理后更平滑稳定的数据。然后根据处理过后的原始数据,判断智能车所在的位置和环境,然后主控芯片输出相对应的PWM波,进而控制舵机来使智能车转向,控制电机来调节智能车的速度,智能车的整体控制程序周期为100ms。1.3数据信息采集和处理算法电磁检测的产生的感应电流经过运算放大电路后会变成电压,然后经过主控芯片的AD转化模块变成可以被主控芯片识别的数字信号,信号的采集框图17如图17智能车数据处理流程图采集原始数据的代码如下AD_data[0]=adc_mean_filter(ADC_0,ADC0_CH0_A0,ADC_12BIT,5);AD_data[1]=adc_mean_filter(ADC_0,ADC0_CH1_A1,ADC_12BIT,5);AD_data[2]=adc_mean_filter(ADC_0,ADC0_CH2_A2,ADC_12BIT,5);AD_data[3]=adc_mean_filter(ADC_0,ADC0_CH10_A10,ADC_12BIT,5);AD_data[4]=adc_mean_filter(ADC_0,ADC0_CH11_A11,ADC_12BIT,5);在上面代码中,ADC_0是采集原始数据的具体通道,ADC_12BIT为采集数据的精度,5为采集5次求一次平均值。采集得到的数据经过归一化滤波处理,并且进行限幅把数据大小规定到0到100之间,这样可以避免外来噪音的干扰。此部分的算法如下:for(uint8i=0;i<7;i++){AD_G[i]=(float)(100*(AD_data[i]-hellomin[i])if(AD_G[i]>100)AD_G[i]=100;elseif(AD_G[i]<1)AD_G[i]=1;}经过归一化处理后的数据然后再经过滑动滤波和卡尔曼虑波,具体程序入下for(uint8j=0;j<5;j++){for(uint8i=0;i<7;i++)AD_temp[i][j]=AD_temp[i+1][j];}AD_temp={{00,01,02,03,04},{10,11,12,13,14},{20,21,22,23,24},{30,31,32,33,34},{40,41,42,43,44},{50,51,52,53,54},{60,61,62,63,64}}j0j1j2j3j4i=00001020304i=11011121314i=22021222324i=33031323334i=44041424344i=55051525354i=66061626364Foresight_Data(*(AD_temp+6));array_sort(AD_temp,5,7);原始数据经过滑动滤波处理后,是原始数据图像在上位机上显示的图像也能更加平滑,也去除了大量的噪音和环境中其他因素的影响。1.4速度算法设计智能车的速度是根据编码器传回的脉冲数计算出来的,然后再根据传统的控制方式对速度进行控制,然后通过编码器传回来的反馈信息和电感对小车道路元素的判断,使智能车判断自己所处的位置并根据不同的位置设定不同的速度。其速度控制的核心代码为:Speed=Proportion*IError+Integral*SUMError+DError*Error_LIST1.5方向控制算法1.5.1PID算法框图由于智能车运行的环境中有坡道、草坪、沙地、苯环、连续直道等多种路况,而且为了使越野小车能够快速地完成路况的各个元素,采用了让智能车经过不同的元素使用不同的速度运行,比如在直道上提速,在连续直角的时候就降速行驶,所以智能车的方向控制就非常重要。用平常的PID算法会由于智能车在运行过程中由于产生颠簸,使智能车的判断变得迟钝和误判导致智能车不能正常的按照赛道运行。本设计在方向控制方面使用了模糊PID算法。完成该算法主要是完成数据的模糊化、进行数据知识库的查询、对处理后的数据进行模糊推理、对最终数据的反模糊化处理这四个部分,在这四个部分中最重要的部分就是模糊推理,尤其是模糊规则的制定。1.5.2模糊规则的建立在使用的模糊PID控制中有两种情况,一种是当检测到的系统偏差比较大时,这时候就要大幅度调节,另一种是如果反馈采集到的系统偏差较小,此时只需要微调。在整个方向控制算法中最重要的是利用模糊PID中的三个参数进行多次调节,使越野小车能在各种运行速度下,稳定的经过所模拟的各种环境和道路元素。通过根据小车赛道的实际路况设计模糊规则其中KP和KD的模糊控制联系如表1和表2所示;表1KP模糊控制表ECENBNMNSZOPSPMPBNBPBPBPMPMPSZOZONMPBPBPMPSPSZONSNSPMPMPMPSZONSNSZOPMPMPSZONSNMNMPSPSPSZONSNSNMNMPMPSZONSNMNMNMNBPBZOZONMNMNMNBNB表2KD模糊控制表ECENBNMNSZOPSPMPBNBPSNSNBNBNBNMPSNMPSNSNBNMNMNSZONSZONSNMNMNMNSZOZOZONSNSNSNSNSZOPSZOZOZOZOZOZOZOPMPBNSPSPSPSPSPBPBPBPMPMPMPSPSPBintrule[7][7]={//误差变化-3,-2,-1,0,1,2,3{-6,-6,-6,-6,-5,-5,-4,},//-30{-5,-5,-5,-4,-4,-3,-1,},//-21{-4,-4,-3,-1,0,1,2,},//-12{-4,-3,-1,0,1,3,4,},//03{-2,-1,0,1,3,4,4,},//14{1,3,4,4,5,5,5,},//25{4,5,5,6,6,6,6}1.5.3模糊推理机对于隐含算子的选择可以直接影响模糊推理,特别是伴随三角模和隐含算子的选择。从编码器检测和发送过来的数据我们可以计算出来智能车实时的数度变化和加速度变化。然后再根据上面的KP、KD的模糊表来确定这两个变量。具体查询参数KP代码如下:if(Pe<(RANK-1)&&PECL<(RANK-1)){Nn=Rule_kp[PECL][Pe];U2FUZZY_kp[Nn]+=EFuzzy[0]*ECFuzzy[0];Nn=Rule_kp[PECL][Pe+1];U2FUZZY_kp[Nn]+=EFuzzy[1]*ECFuzzy[0];Nn=Rule_kp[PECL+1][Pe]; U2FUZZY_kp[Nn]+=EFuzzy[0]*ECFuzzy[1];Nn=Rule_kp[PECL+1][Pe+1];U2FUZZY_kp[Nn]+=EFuzzy[1]*ECFuzzy[1];}elseif(pe==(RANK-1)&&PECL<(RANK-1)){Nn=Rule_kp[PECL][Pe];U2FUZZY_kp[Nn]+=EFuzzy[0]*ECFuzzy[0];Nn=Rule_kp[PECL+1][Pe];U2FUZZY_kp[Nn]+=EFuzzy[0]*ECFuzzy[1];}elseif(pe<(RANK-1)&&pec==(RANK-1)){Nn=Rule_kp[PECL][Pe];U2FUZZY_kp[Nn]+=EFuzzy[0]*ECFuzzy[0];Nn=Rule_kp[PECL][Pe+1];U2FUZZY_kp[Nn]+=EFuzzy[1]*ECFuzzy[0];}else{Nn=Rule_kp[PECL][Pe];U2FUZZY_kp[Nn]+=EFuzzy[0]*ECFuzzy[0];}1.5.4去模糊化我们使用的控制数据在模糊化处理后使用,我们经常使用以下反模糊化方法;(1)最大隶属法:最大隶属法的输出值就是模糊集合里面的最大值,该方法最大的缺点就是使用该方法的时候控制精度不高会出现元素误判的情况,最大隶属法的控制公式为;(1.1)(1.2)(2)重心法:重心法的输出表达公式为(1.3)当具有m个输出量化级数的离散阈情况(1.4)与最大隶属方法相对比,重心法具有精度高、控制度灵敏、反应迅速、数据处理更平滑的优势,由于本设计是在室外环境中运行的影响因素比较多故采用的使重心法反模糊化。(3)加权平均法:加权平均法多用于工业控制上来进行反模糊控制,其输出值由以下公式确定(1.5)设计中的具体代码如下:if(Un[0]>=0)Un[0]=UFF[Un[0]];elseUn[0]=-UFF[-Un[0]];if(Un[1]>=0)Un[1]=UFF[Un[1]];elseUn[1]=-UFF[-Un[1]];if(Un[2]>=0)Un[2]=UFF[Un[2]];else

温馨提示

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

评论

0/150

提交评论