请教:PID里面的“时间的积分”“dt”是什么
在自平衡小车的代码中经常能看到“dt”,请问这个dt是什么?怎样实现?实现卡尔曼滤波需要提供运行程序一遍所用的时间,请问包不包括运行setup的时间?
谢谢大家 dt是微分符号,高等数学里面有的,但是工程上应该讲的是一个极小的时间段,这一时间段内PID算法所控制调节的变量与设定值的差值除以时间段叫做微分(D),从0时间点开始累计到现在的变量与设定值的所有差值的加和叫做积分(I),变量与设定的差值就是(P)。每一项前面加一定的的系数,求出的数值就是下一个时间间隔内的执行的值。一般用PI调节较多,就是只用3个中的两个来调节,具体要看控制要求。详细的看看自动控制原理的资料就可以了 这个可以请教弘毅,他可是自动控制出身 看dt出现在什么地方了,如果在互补滤波中,dt是采样的时间,也就是程序运行一次的时间。
millis() 函数获取当前时间
黑马的代码中是这样计算的
unsigned long now = millis(); // 当前时间(ms)
float dt = (now - preTime) / 1000.0; // 微分时间(s)
preTime = now; // 记录本次时间(ms)
不过他这个时间(s)好像备注错了 /1000后应该是ms
系统提一次运行应该包括 setup,之后不包括
卡尔曼滤波没研究过,应该也差不多是这样的。
如有不对,请指正。
页:
[1]