循迹算法.doc_第1页
循迹算法.doc_第2页
循迹算法.doc_第3页
循迹算法.doc_第4页
循迹算法.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1 路径识别算法11 抛物插值法拉格朗日插值多项式:当n=2时,此公式称为抛物插值。设,且,代入拉格朗日插值多项式可得抛物线方程,并对抛物线方程求导数,令导数等于零,可得:就是所要得到的车模偏离跑道中心的距离。12 最小二乘法为保持精度,令m=4,选择函数类型,上式可写成:令,已知是偏移量,把上述式子的解代入化简得:2 控制算法21数字pid控制211 pid控制规律:比例环节。跟随性好,能即时成比例地反映控制系统的偏差信号e(t),kp增大,系统动作灵敏。在系统稳定的情况下,增大kp,有利于减小稳态误差,提高系统控制精度,但随着kp过大时,系统趋于不稳定。积分环节。由上式知,它是对误差e(t)进行积分,用于消除静差,提高系统的无差度。ti过小,积分作用强,系统将不稳定,振荡次数增多;ti过大,积分作用小,影响控制精度。微分环节。反映偏差信号的变化速率,并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度。对于滞后时间长的系统应增大微分的作用。212 流程图增量式pid算法流程图设置a、b、c、f(k)f(k)=ae(k)-be(k-1)+ce(k-2)设置 e(k-1)=e(k-2)=0输出f(k)=f(k-1)+f(k)e(k-1)-e(k-2), e(k)-e(k-1)出口入口#include#includemain()float a,b,c,u=1,u1;int i;float e0,e1,e2,v;printf(input v: ); /*程序中所用的输入输出函数都只是用于调试*/scanf(%f,&v);a=1.01;b=0;c=0.01;e1=e2=0;e0=v;for(i=0;i=20;i+) u1=a*e0+b*e1+c*e2; u=u+u1; e2=e1; e1=e0; printf(u=%-10f,u); printf(i=%-10dn,i); u=3*u+7; e0=v-u; 显然,pid的参数是非常难以确定的(当模型是不精确的时候)。积分分离pid算法ynnnyyynyn入口采样v(k)v0=0?e(k)=v(k)-v0(k)e(k)=1?v(k)=2?输出u(k)=a0 v(k)e(k)e(k-2), e(k)-e(k-1)设置a1、b1e(k-1)=0u(k)=a1e(k)+b1e(k-1)e(k)-e(k-1)u(k)=umax?输出umax输出u(k)关机213 pid参数的整定:(常用方法)1 扩充临界比例度法;2 扩充响应曲线法;3 归一参数整定法;利用人工智能方法将人工整定pid参数的调整经验作为知识和推理规则存入计算机系统中,从而自动实现对pid参数的最佳调整。pid控制参数的自动整定:1 初始确定pid控制参数;2在初定的pid控制参数上,根据系统的响应过程和控制目标期望值,自动修正初定的pid参数,直至系统的控制指标符合要求。22 模糊控制221 模糊化模糊化的主要功能是根据输入变量的隶属度函数,求出精确的输入值相对于输入变量各语言值的隶属度。简单地说,模糊化过程就是在隶属度图形中,已知x轴值求y轴值的过程。最后得到一个集合,将它作为推理机的输入。其中,重要的一点是如何去确定隶属度函数。通常有以下几种方法:(1) delphii法;(2)模糊统计法;(3)增量法;(4)因素加权法。222 模糊规则推理模糊规则推理是模糊控制器的核心,它的输入输出都是模糊量。模糊化后得到的集合作为输入,输出量是输出变量各语言值的隶属度。完成这一步骤的必要条件是确定输出模糊变量的隶属度函数及建立模糊规则库。通常把规则库做成表格的形式。模糊推理的方法有多种,常用的maxmin法:(1) 由于规则前件间用and操作符连接,因此,每一条规则的强度等于前件中的最小值。这个值就是此规则的强度。(2) 没有相同后件的规则强度就是由(1)所得到的强度;当有相同后件时,模糊输出取其最大值。223 反模糊化模糊规则推理的输出是集合,必需经反模糊化,将模糊的控制量变为精确的控制量。常用方法:最大隶属度法,重心法(加权平均法)。其中重心法能较多地反映有效信息。224 模糊规则推理的数学理论当输入是在某一范围内时,可把它离散化(输入将被压缩或扩大),并将输入输出隶属度函数制成表格的形式(矩阵)。如果推理规则的形式是if a and b then u , 推理过程:(1)。笛卡尔积求模糊矩阵d=ab;(2)。将d改写为d=d11,d12,.d1n,d21,d22,.dnm;(3)。求关系矩阵r=dc;若模糊化后得e,则输出的模糊量是e0c;如果论域较大,按这种形式编程,计算量将非常巨大。当硬件不高档时,实用性不强。所以要预先计算出控制表,以此减少计算量。由于输入输出都经过了离散化,控制较生硬。#includeint r35=60,60,60,60,20,40,40,40,20,20,20,20;struct ttfloat t;float u;main()int i,j,p=0;float a=0.0,b=0.0;float r35;float xt5;float xm3;struct tt t4;float g=0.0,x1,x2;for(i=0;i3;i+) for(j=0;j5;j+) rij=0;for(i=0;i5;i+) xti=0;for(i=0;i3;i+) xm1=0;for(i=0;i=0.0&x1=35.0&x1=40.0&x1=55.0&x1=60.0&x1=72.0&x1=75.0&x1=87.0&x1=90.0&x1=102.0)xt4=1.0;for(i=0;i0.0&x2=9.0&x2=10.0&x2=18.0&x2=26.0&x2=26.0&x2=40.0)xm2=1.0;for(i=0;i3;i+)printf(%-10f,xmi);printf(n);printf(n);for(i=0;i=2;i+) /*_max-min_*/ if(xmi!=0) for(j=0;j=xmi) rij=xmi; else rij=xtj; for(i=0;i3;i+) for(j=0;j5;j+) printf(%-10f,rij); printf(n); printf(n);for(i=0;i=2;i+) for(j=0;j=4;j+) if(rij!=0) tp.u=rij; tp.t=rij; p+; for(i=0;i4;i+) printf(%-10f,ti.u); printf(%-10f,ti.t); printf(n);for(i=0;i4;i+) if(ti.u!=0) for(j=0;jti.u) ti.u=0; for(i=0;i4;i+) printf(%-10f,ti.u); printf(%-10f,ti.t); printf(n);for(i=0;i4;i+) /*_defuzzy-interface_*/ a=a+ti.u*ti.t; b=b+ti.u; g=a/b;printf(g=%-10fn,g);用函数的方式进行模糊化,能得到连续的量,因此,输出也是连续的。缺点是计算量较大。23 基于单神经元的pid控制#include#includemain() int i=0; float k=0.8,ki=0.001,kd=0.00002,kp=3; float u=0,u0=0,e1=0,e0=0,e2; float p; float x1,x2,x3,a; float w1=0.01,w2=0.02,w3=0.01; printf(input p : ); /*程序中所用的输入输出函数都只是用于调试*/ scanf(%f,&p); e2=p-u; while(fabs(e2)=0.01) x1=e2; x2=e2-e1; x3=e2-2*e1+e0; a=fabs(w1+w2+w3); u=u0+k/a*(w1*x1+w2*x2+w3*x3); w1=w1+ki*x1*u*x1; w2=w2+kp*x1*u*x2; w3=w3+kd*x1*u*x3; u0=u; e0=e1; e1=e2; e2=p-u; i+; if(i=20) printf

温馨提示

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

评论

0/150

提交评论