精品资料
1 路径识别算法
抛物插值法
拉格朗日插值多项式:
当n=2时,此公式称为抛物插值。设,且,代入拉格朗日插值多项式可得抛物线方程,并对抛物线方程求导数,令导数等于零,可得:
就是所要得到的车模偏离跑道中心的距离。
最小二乘法
为保持精度,令m=4,选择函数类型,上式可写成:
令,,
已知是偏移量,把上述式子的解代入化简得:
2 控制算法
PID控制规律:
比例环节。跟随性好,能即时成比例地反映控制系统的偏差信号e(t),Kp增大,系统动作灵敏。在系统稳定的情况下,增大Kp,有利于减小稳态误差,提高系统控制精度,但随着Kp过大时,系统趋于不稳定。
积分环节。由上式知,它是对误差e(t)进行积分,用于消除静差,提高系统的无差度。Ti过小,积分作用强,系统将不稳定,振荡次数增多;Ti过大,积分作用小,影响控制精度。
微分环节。反映偏差信号的变化速率,并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度。对于滞后时间长的系统应增大微分的作用。
流程图
增量式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<>
#include<>
main()
{
float a,b,c,u=1,u1;
int i;
float e0,e1,e2,v;
printf("input v: "); /*程序中所用的输入输出函数都只是用于调试*/
scanf("%f",&v);
a=;
b=0;
c=;
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=%-10d\n",i);
u=3*u+7;
e0=v-u;
}
}
显然,PID的参数是非常难以确定的(当模型是不精确的时候)。
积分分离PID算法
Y
N
N
N
Y
Y
Y
N
Y
N
入口
采样v(k)
v0=0?
e(k)=v(k)-v0(k)
\e(k)\<=ε1?
v(k)<=ε2?
输出u(k)=A0 v(k)
\e(k)\<=\e0\?
设置A、B、C
e(k-1)=e(k-2)=0
u(k)=u0(k)
Δu(k)=Ae(k)-Be(k-1)+Ce(k-2)
u(k)=u(k-1)+Δu(k)
u(k)=0
e(k-1)->e(k-2), e(k)->e(k-1)
设置A1、B1
e(k-1)=0
u(k)=A1e(k)+B1e(k-1)
e(k)->e(k-1)
\u(k)\<=\Umax\?
输出Umax
输出u(k)
关机
PID参数的整定:(常用方法)
扩充临界比例度法;
扩充
循迹算法 来自淘豆网m.daumloan.com转载请标明出处.