极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18351|回复: 3

请教:PID里面的“时间的积分”“dt”是什么

[复制链接]
发表于 2012-6-10 20:17:41 | 显示全部楼层 |阅读模式
在自平衡小车的代码中经常能看到“dt”,请问这个dt是什么?怎样实现?
实现卡尔曼滤波需要提供运行程序一遍所用的时间,请问包不包括运行setup的时间?
谢谢大家
回复

使用道具 举报

发表于 2012-7-7 14:47:37 | 显示全部楼层
dt是微分符号,高等数学里面有的,但是工程上应该讲的是一个极小的时间段,这一时间段内PID算法所控制调节的变量与设定值的差值除以时间段叫做微分(D),从0时间点开始累计到现在的变量与设定值的所有差值的加和叫做积分(I),变量与设定的差值就是(P)。每一项前面加一定的的系数,求出的数值就是下一个时间间隔内的执行的值。一般用PI调节较多,就是只用3个中的两个来调节,具体要看控制要求。详细的看看自动控制原理的资料就可以了
回复 支持 反对

使用道具 举报

发表于 2012-7-7 15:57:25 | 显示全部楼层
这个可以请教弘毅,他可是自动控制出身
回复 支持 反对

使用道具 举报

发表于 2012-7-7 22:35:33 | 显示全部楼层
看dt出现在什么地方了,如果在互补滤波中,dt是采样的时间,也就是程序运行一次的时间。
millis() 函数获取当前时间

黑马的代码中是这样计算的
  1.     unsigned long now = millis();                           // 当前时间(ms)
  2.     float dt = (now - preTime) / 1000.0;                    // 微分时间(s)
  3.     preTime = now;                                          // 记录本次时间(ms)
复制代码


不过他这个时间(s)好像备注错了 /1000后应该是ms

系统提一次运行应该包括 setup,之后不包括

卡尔曼滤波没研究过,应该也差不多是这样的。

如有不对,请指正。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-5 06:03 , Processed in 0.055714 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表