智能车制作

标题: (求助啊)一个人搞真的很难,增量式PID不懂 [打印本页]

作者: 方便面广告    时间: 2014-6-12 19:45
标题: (求助啊)一个人搞真的很难,增量式PID不懂
为什么我调增量式PID的P,根本达不到我的期望值,只有增加I项的时候才有值呢

P项不是乘以 (本次偏差-上次偏差)吗  I项不是乘以本次偏差

为什么啊?真心求教,希望各位能够帮一下忙!!!!!!

一个人做真的很累,我都不知道我还能坚持多久
作者: 方便面广告    时间: 2014-6-12 19:55
跌跌碰碰走到现在,我真的不想放弃,队友跑去考研了
作者: lixin101357    时间: 2014-6-12 19:58
加油、、、我也是当时啥都不懂一步一步过来的。就不给你源代码了,慢慢调试、、、  增量式PID每次改变的知识增量,所以你每次系统更新要进行在上一次的基础上变化,不知道你有木有这一句话、、、最好每个分开写KP  KI   KD,看起来比较清楚、、

作者: 方便面广告    时间: 2014-6-12 20:01
lixin101357 发表于 2014-6-12 19:58
加油、、、我也是当时啥都不懂一步一步过来的。就不给你源代码了,慢慢调试、、、  增量式PID每次改变的知识 ...

问别人要代码,我还是问不出口的,我只是请教下,我这个式子没错吧,为什么我调P不会达到我的期望值,只有调I的时候才有呢,是我存储的偏差有问题?
作者: Bandari    时间: 2014-6-12 20:06
的确有问题,P*error+I*sum_error+D*Derror   
  error是偏差  sum_error是偏差的积分  Derror是偏差的微分   
建议找一份文档研究一下
作者: lixin101357    时间: 2014-6-12 20:15
如果只有P的话肯定会存在超调量、、加了I的话会消除净差、、、你加了D的话会提高你系统的响应速度,但是会影响你电机的稳定性、、、参数慢慢调整达到合理的电机性能指标。
作者: 方便面广告    时间: 2014-6-12 20:15
Bandari 发表于 2014-6-12 20:06
的确有问题,P*error+I*sum_error+D*Derror   
  error是偏差  sum_error是偏差的积分  Derror是偏差的微 ...

公式我看过很多技术报告了,应该是没有错了,我现在只能想到的是存储的偏差有问题,有时候累了看看窗外想,其实一个人也蛮好的,一人一车,不求像大神们那样,但求无悔摆了
作者: slichee    时间: 2014-6-12 20:16
同样是一个人干活的帮顶了。。。。
作者: 方便面广告    时间: 2014-6-12 20:21
slichee 发表于 2014-6-12 20:16
同样是一个人干活的帮顶了。。。。

握手
作者: lm342794214    时间: 2014-6-12 21:01
纯比例调节一般是达不到期望值的,因为即使没达到期望值,系统也能够稳定(这个稳定不是你所期望的稳定,至于为什么稳定,可以把稳定时的数据代入式子一算便知)。这时候期望值与实际值的偏差叫做稳态误差,要引入积分项KI才能有效的消除稳态误差,使系统重新达到你所期望的系统稳定,当你期望值变化的时候,可能又会使实际值在期望值附近有小的波动(这个可以叫动态误差),这时候引入微分项KD可以有效的减弱动态误差的影响。
我们的舵机就是比例控制,所以车子能够稳定运行,如果舵机也引入积分项的情况下,假如车子放直道不动,偏移中心一点点,由于积分作用,小车渴望消除误差,那么舵机打角将会越来越大,越来越大。同样跑起来了,由于舵机控制的滞后,积分项也会带来麻烦,所以一般舵机只用PD控制:victory:
作者: yyyzrxh    时间: 2014-6-12 21:19
5楼说的是位置式,楼主的确是增量式,Kp调节有静差,加入Ki就能达到期望值
作者: 金刚才才    时间: 2014-6-12 21:44
同样顶了加油
作者: 方便面广告    时间: 2014-6-12 22:00
lm342794214 发表于 2014-6-12 21:01
纯比例调节一般是达不到期望值的,因为即使没达到期望值,系统也能够稳定(这个稳定不是你所期望的稳定,至 ...

舵机的位置式PID能理解,P*偏差可以理解成直接给予舵机PWM,I是一个累加项,会把一些不必要的偏差累加进去,D项式D*(本次偏差-上次偏差),可以起到稳定和预测的作用,但是增量式就理解不过来了。先调P吧,加的很大都到不了期望值(相差非常大啊),加了一点点I进去就能达到
作者: 麦籽小立    时间: 2014-6-12 22:00
方便面广告 发表于 2014-6-12 20:01
问别人要代码,我还是问不出口的,我只是请教下,我这个式子没错吧,为什么我调P不会达到我的期望值,只有 ...

你稍微算一算偏差就知道大概每个值该加多少了

作者: 方便面广告    时间: 2014-6-12 22:02
lixin101357 发表于 2014-6-12 20:15
如果只有P的话肯定会存在超调量、、加了I的话会消除净差、、、你加了D的话会提高你系统的响应速度,但是会影 ...

空载和负载调节相差很大啊,怎么调节负载,能点拨一下吗
作者: iazyooo    时间: 2014-6-12 22:10
方便面广告 发表于 2014-6-12 20:01
问别人要代码,我还是问不出口的,我只是请教下,我这个式子没错吧,为什么我调P不会达到我的期望值,只有 ...

P调节本身就会有偏差   简单来说,当前稳定状态下   输入0设定0状态0 p=1   如果设定变成1了,等到稳定的时候 输入会增大到0.5 这个时候设定1 状态0.5 输入0.5   而积分I的作用是,每次看一下 如果还没达到设定值就改一下输入  直到达到设定值为止。。简单来说就是这个样子


作者: ※失舵    时间: 2014-6-12 22:10
同样问题多多,但是为兴趣而来,考研都是浮云,是男人所以我坚挺
作者: 开灰机的灰机    时间: 2014-6-12 22:13
没有I  会有  稳态误差
作者: Dark_Knight    时间: 2014-6-12 22:35
状态负反馈,飘过
作者: afd    时间: 2014-6-12 22:57
顶了
作者: 板正的    时间: 2014-6-12 22:59
楼主   P不是偏差的系数么?
作者: 綿婲/ka餹    时间: 2014-6-12 23:01
你的p和i位置反了
作者: 心夜    时间: 2014-6-12 23:11
lm342794214 发表于 2014-6-12 21:01
纯比例调节一般是达不到期望值的,因为即使没达到期望值,系统也能够稳定(这个稳定不是你所期望的稳定,至 ...

分析的好到位。。。。

作者: xshenpan    时间: 2014-6-12 23:49
我的也是这样,要加I值
我想应该是这样的原因,第一次 轮子没动时 Err0-Err1 有大偏差,当轮子转动时偏差逐渐减小(I,D都为0) ,算出的PWM增量值也逐渐减小,最后稳定在某个转速后, Err1 == Err0 不在有偏差(或偏差非常微小),输出增量值总是为0(或很小很小,不足以影响转速);则实际输出PWM不在改变(但不一定停在期望值附近)。
所以应该加I值消除静态误差,不知道真正原因是不是这样的。
跟楼主一样,我也是一个人做啊,累!

作者: 麦田里的守望者    时间: 2014-6-13 00:08
加油,我们差不多
作者: 蛋蛋不孤单    时间: 2014-6-13 11:12
我也是调不好,顶楼主
作者: lm342794214    时间: 2014-6-13 11:23
方便面广告 发表于 2014-6-12 22:00
舵机的位置式PID能理解,P*偏差可以理解成直接给予舵机PWM,I是一个累加项,会把一些不必要的偏差累加进去 ...

增量式PID理解简单点就是  算本次和前一次的位置式PID的输出,然后本次和前一次做差得到一个增量,然后本次的实际输出=上次实际输出+得出的增量;
作者: majorfog    时间: 2014-6-13 11:28
我一直是觉得增量式和位置式对直流电机来说是一模一样的,因为增量式最后的结果是要累加的,你可以推一下公式,反正我推出来对于单次的输出量来说是一样的式子
作者: 方便面广告    时间: 2014-6-13 14:42
綿婲/ka餹 发表于 2014-6-12 23:01
你的p和i位置反了

没有反啊,我这个是增量式的,你说的可能是位置式
作者: 方便面广告    时间: 2014-6-13 14:43
板正的 发表于 2014-6-12 22:59
楼主   P不是偏差的系数么?

要是P是偏差的系数,貌似写法就是位置式了,

位置式PD=P*偏差+D*(偏差-上次偏差)

作者: 方便面广告    时间: 2014-6-13 14:44
majorfog 发表于 2014-6-13 11:28
我一直是觉得增量式和位置式对直流电机来说是一模一样的,因为增量式最后的结果是要累加的,你可以推一下公 ...

要是这么说的话,位置式与增量式都能推出PID最基本的表达,不知道这样说正不正确
作者: jieyingxiao    时间: 2014-6-13 15:23
同样一个人,顶
楼主测没测量过没有PID时wnat_speed为定值时,pulse 的返回值?
如果没有的话,建议测一下。目的是让want_speed和pulse乘除一个数后大约相等的样子。这样调节PID比较好调一些。
作者: 165709    时间: 2014-6-13 15:35
加油,
作者: free_ai/Scal    时间: 2014-6-13 17:07
更具楼主的情况,建议楼主先把p和d都关掉,然后在线看一下你能不能得到当次偏差值和俩次偏差值得变化情况,然后再先加P,后加D。
作者: 世界领袖2013    时间: 2014-6-13 19:11
lixin101357 发表于 2014-6-12 20:15
如果只有P的话肯定会存在超调量、、加了I的话会消除净差、、、你加了D的话会提高你系统的响应速度,但是会影 ...

虽然三个人,但目前看包括我在内俩人酱油

作者: hcy1993    时间: 2014-6-13 19:46
表示太能理解楼主的感受了!!!加油吧!!!
作者: zkm123    时间: 2014-6-13 19:47
顶啦!!!
作者: 板正的    时间: 2014-6-13 20:45
方便面广告 发表于 2014-6-13 14:43
要是P是偏差的系数,貌似写法就是位置式了,

位置式PD=P*偏差+D*(偏差-上次偏差)

哦哦   这样啊

作者: robby    时间: 2014-6-13 21:26
哥们 只有p是永远达不到期望值的
作者: zhuimengA2012    时间: 2014-6-13 21:31
一样的情况,顶楼主,一起加油!
作者: zhangtaotao717    时间: 2014-6-16 19:28
方便面广告 发表于 2014-6-12 20:15
公式我看过很多技术报告了,应该是没有错了,我现在只能想到的是存储的偏差有问题,有时候累了看看窗外想 ...

我也是啊,我不求速度了,只要自已能坚持到底就行了!加油!

作者: wucheng_an    时间: 2014-6-16 22:23
加油,都是一个人在做,曾经想哭,但是就是不想放弃,现在突然想放弃了,但是想想自己一个人走过来的艰辛,不管结果如何,我还是想去大赛赛场上走一圈,算是真真的无悔吧
作者: 炒炒    时间: 2014-6-17 00:59
wucheng_an 发表于 2014-6-16 22:23
加油,都是一个人在做,曾经想哭,但是就是不想放弃,现在突然想放弃了,但是想想自己一个人走过来的艰辛, ...

加油↖(^ω^)↗,,顶住
作者: 爱之车    时间: 2014-6-19 02:40
是在调试恒定的速度嘛? 你的这个式子没写错 但是调试速度一般就用增量式pi  先把 kp 给0  然后 Ki 值给大点  让电机速度在一个范围内稳定的抖动 可以明显的区分出来。到了这样之后在给Kp 由小增到大 慢慢的 电机就会稳定下来 在一个很小的范围内抖动  可以这样调试  哈哈 这是今天刚刚学习的  我的这样基本可以调到恒速   
作者: 迷路在未来    时间: 2014-7-4 02:01
爱之车 发表于 2014-6-19 02:40
是在调试恒定的速度嘛? 你的这个式子没写错 但是调试速度一般就用增量式pi  先把 kp 给0  然后 Ki 值给大点 ...

那D值呢?

作者: 重生    时间: 2014-7-4 02:51
方便面广告 发表于 2014-6-13 14:44
要是这么说的话,位置式与增量式都能推出PID最基本的表达,不知道这样说正不正确

PID就是PID 位置式只是数字式PID而已,相当于是PID的一种计算机算法,而增量式本来就是用位置式的公式推导而来的
作者: 一粒尘埃    时间: 2014-7-4 10:07
可以看下这份文档
作者: qylqh2012    时间: 2014-7-4 11:16
一定要加油· 我们连半米的速度都没有的~   

作者: 中泽赤那    时间: 2014-7-4 20:00
jieyingxiao 发表于 2014-6-13 15:23
同样一个人,顶
楼主测没测量过没有PID时wnat_speed为定值时,pulse 的返回值?
如果没有的话,建议测一下 ...

没有PID时wnat_speed为定值时,pulse 的返回值。pulse 和wnat_speed会有关系吗?没有PIDdling意思是P、I、D都等于0吗。谢谢!

作者: jieyingxiao    时间: 2014-7-5 20:55
中泽赤那 发表于 2014-7-4 20:00
没有PID时wnat_speed为定值时,pulse 的返回值。pulse 和wnat_speed会有关系吗?没有PIDdling意思是P、I、 ...

就是先固定占空比让电机转,用编码器测量这时的周期性反馈值是多少,这样测出来后,方便PID运算。如果不这样的话,只有随便试参数了,那就太麻烦,浪费时间。
作者: 中泽赤那    时间: 2014-7-6 23:48
jieyingxiao 发表于 2014-7-5 20:55
就是先固定占空比让电机转,用编码器测量这时的周期性反馈值是多少,这样测出来后,方便PID运算。如果不这 ...

还是不懂,1,如果把小车的轮子拿开地面,测出来的pulse和放在地上不一样,;2,找出关系后,怎么去调小车?方便的话,加个QQ,1227201118,谢谢

作者: wijop    时间: 2014-7-7 00:27
楼主赞一个~加油
作者: super殺手?    时间: 2014-7-7 09:32
其实感觉增量式的增量不是累加,而是测量值加上增量
作者: 爱之车    时间: 2014-7-7 16:58
迷路在未来 发表于 2014-7-4 02:01
那D值呢?

一般调速不懂D  给0

作者: 空有一人    时间: 2015-4-15 18:41
学习了
作者: 吟咏    时间: 2015-4-15 19:36
:):)
作者: 迷失在拐角    时间: 2015-4-15 19:41
楼主加油,虽然我对增量式也不是很懂,没有什么可以说的,但是还是想回复下楼主,鼓励下你,坚持下来就是有收获的
作者: 暗夜不光明    时间: 2015-4-18 09:58
现在也在看书脑补位置式pid,感觉公式简单,套到自己的程序就问题多多
作者: xsbdkxj    时间: 2015-5-14 00:30
不知学长是否解决了这个问题,小弟也来学习一下

作者: 凌轩翼    时间: 2015-5-16 13:06
麦籽小立 发表于 2014-6-12 22:00
你稍微算一算偏差就知道大概每个值该加多少了

偏差怎么算,我现在就是调不出震荡波

作者: 小卡    时间: 2015-8-5 21:02
一年之后,我看到了这个PID,现在我也很苦恼这个,很有LZ的心情,虽然LZ不一定看到我说的话,但是说出来共勉吧 。
作者: 我小时候可白呢    时间: 2015-11-7 14:29
jieyingxiao 发表于 2014-7-5 20:55
就是先固定占空比让电机转,用编码器测量这时的周期性反馈值是多少,这样测出来后,方便PID运算。如果不 ...

这样测出来实际脉冲,然后呢?她和目标脉冲有什么关系啊?又和P,I,D,这几个参数有什么关系呢??是不是差不多就是P啊???真的是不太能搞懂PID。。。望指导。。。

作者: YMH_smartcar    时间: 2015-11-9 19:24
我小时候可白呢 发表于 2015-11-7 14:29
这样测出来实际脉冲,然后呢?她和目标脉冲有什么关系啊?又和P,I,D,这几个参数有什么关系呢??是不 ...

同新手,请问PID的输出为脉冲偏差,怎么转换成PWM??谢谢了

作者: 飞思卡尔——梦    时间: 2016-7-20 19:45
我想问你一个问题,加入你的车放在地上没有动,你加入了PID,执行一次,开始是PWm太小,车还是没有动,那么下次算法的P*(两次error之差)就是0啊,所以一直不懂,得加I




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2