图十二 数字PID控制结构图 由图可知:
u?kp(e?1Ti?edt?Td?kp(1?dedt1Tis)D(s)?U(s)E(s)?Tds)
将模拟量转换为数字量:
t?kTe(t)?e(kT)?e(k)
kk?e(t)dt??e(jT)Tj?0?T?e(j)j?0
de(t)dt?e(kT)?e[(k?1)T]T?e(k)?e(k?1)T
则:
u(k)?Kp{e(k)?TTik?j?0e(j)?TdT[e(k)?e(k?1)]}
TdT[e(k?1)?e(k?2)]}u(k?1)?Kp{e(k?1)?TTik?1?j?0e(j)?
?u(k)?KP{e(k)?e(k?1)?TTie(k)?TdT[e(k)?2e(k?1)?e(k?2)]}
?KP[e(k)?e(k?1)]?KIe(k)?KD[e(k)?2e(k?1)?e(k?2)]TTi其中KI?KPKD?KPTdT
令u(k)?u(k?1)??u(k)实际的控制系统中,存在着饱和特性。当控制变量达到一定值后,系统的输出变量不再增长,系统进入饱和区。这就要求系统的控制变量必须限制在某个范围之内,即
采用积分分离法:
?u(k)?KP[e(k)?e(k?1)]?aKIe(k)?KD[e(k)?2e(k?1)?e(k?2)]
当e(k)?emax时,a?1;当e(k)?emax时,a?0.
有关比例系数Kp,积分系数Ti,微分系数Td的调节可参照以下口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线震荡很频繁,比例增益要减小 曲线漂浮绕大弯,比例增益要增大 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线震荡频率快,先把微分降下来 动差大来波动慢,微分时间应加长
当确定了全部参数后,可定义一个数字PID函数,如下:
unsigned int PID(unsigned int e1,unsigned int e2,unsigned int e3){
return P*(e3-e2)+I*e3+D*(e3-2*e2-e1); }
其中P=KP I=KI D=KD
该函数在下文介绍姿态纠正进程时会被用到。姿态纠正算法的实现可参照30页图十五。
(四)信息采集算法
要想使电脑鼠具备智能选路的本领,必须使其具备记忆迷宫信息的能力,除此之外电脑鼠还需记忆当前所在迷宫格和前进方向的信息,这些信息将随着电脑鼠在迷宫格中行走而不断被刷新。用CurDir存储当前方向,用CurPosition[1][1]存储当前坐标,用Cellshape[16][16]存储每个迷宫格的形状,用CurEye存储当前传感器采集到迷宫格墙壁情况。信息采集算法的核心是确定何时刷新信息以及输入参数。为此用三张表格来表示这三个刷新逻辑。
触发事件j件 参数 左转执行完 右转执行完 后转执行完 W E S E W N S N E N S W N S W E 表三 CurDir刷新逻辑
触发事件 参数 直行(N/2+Nc)+nN步 准备直行左转 准备直行右转 刚执行完左转 刚执行完右转 刚执行完后转 触发事件 参数
N,(X,Y) S,(X,Y) W,(X,Y) E,(X,Y) (X,Y+1) (X,Y-1) (X-1,Y) (X+1,Y) 表四 CurPosition刷新逻辑
N,(X,Y) CurEye S,(X,Y) CurEye W,(X,Y) CurEye E,(X,Y) CurEye CurPosition赋新值 CurEye直接赋CurEye顺时针旋CurEye顺时针CurEye逆时针给转180°赋给旋转90°赋给旋转90°赋给Cellshape[X][Y] Cellshape[X][Y] Cellshape[X][YCellshape[X][Y]
] 表五 Cellshape刷新逻辑
注:式中Nc表示当MicroMouse处在迷宫格中心位置时,其左右传感器发射头离该迷宫格前沿的距离所对应的步数,N表示迷宫格的边长所对应的步数,n取0,1,2,3...迷宫格的坐标系如图十三所示。 (0,3) (1,3) (2,3) (3,3) (0,2(1,2(2,2) (3,3) ) ) (0,1(1,1(2,1(3,1) ) ) ) (0,0(1,0(2,0(3,0) ) ) ) 图十 迷宫坐标系
由上述三个刷新逻辑表可知:Cellshape需要CurPosition作为触发事件,而CurPosition需要CurDir作为输入参数。因此当需要同时刷新三个变量的两个或三个时,应先刷新CurDir 再刷新CurPosition最后刷新Cellshape。
(五)连续转弯
转弯共有两种方式:一种是在前进中转弯,即一个电机快转,一个电机慢转。另外一种方式是在原地转弯,即车体先停在转弯口,然后一个轮正转,另一个轮反转。前进中转弯节约时间,效率高,原地转弯控制较为简单。由于原地转弯需要减速停下来,转完后再加速,非常浪费时间,严重影响比赛成绩,故选取连续转弯方法。R1表示内侧轮胎划出的轨道半径,R2表示外侧轮胎划出的轨道半径。当需要转弯时,外侧轮保持当前速度不变,而内测轮的速度降至外侧轮的K=R1/R2 倍,电脑鼠便开始转弯,直到走过一定步数或内侧传感器检测到有墙时,此次转弯便结束。由于摩擦和惯性,实际的K值可能不等于R1/R2,需要在实验中反复调试才能获得。连续转弯算法的实现可参照32页图十七。