智能车制作

标题: 跪求卓晴老师、凤姐等牛人解答PI速度闭环疑惑 [打印本页]

作者: wsdyi100    时间: 2013-1-18 20:27
标题: 跪求卓晴老师、凤姐等牛人解答PI速度闭环疑惑
本帖最后由 wsdyi100 于 2013-1-18 20:40 编辑

最近把速度闭环控制加到直立控制上,无论怎么调PI参数都调不到官方视频的那种效果,那种感觉。
我的速度闭环是增量式PI;u0+= u; u = pd * (e-e0) + pi *e;让后把u化成20份在u0的基础上加到速度PWM上去;
先阐述下我对PI闭环的理解,不对的请纠正:角度控制输出的角度PWM是负责直立控制的,当只有直立控制,车模可能往一个方向越来越加速的运动,这是因为角度所产生的PWM总是欠缺一点,不足以将车模拉回到平衡位置;这时加上速度闭环控制,闭环控制会产生速度的PWM,将速度的PWM加上角度的PWM刚好可以将欠缺的PWM给补上,把小车拉回平衡位置。
于是在这种想法上我把小车的角度PWM和速度PWM每次采集回来看数据,如图[attach]39870[/attach]该图我设置的光设置了PI参数的P值为20;(I值也弄过,没什么效果,反而还不如直立)红色为角度PWM,黄色为速度PWM,蓝色为为速度(正为前,负为后),淡红色为角度PWM减去速度PWM;
这是两个PWM值减的值去控制电机,结果车的反应就是一放车车就很快的往后仰,加速跑,越跑越快,最后往后倒下;我觉得这是控制电机的PWM值不够大,本来角度控制的PWM就不够大,现在减了个闭环速度的平PWM,当然不能将小车拉回来了,车子一旦PWM不够,往后倾的就更厉害,角度检测到更大的倾角就会给更大的PWM,速就会有更大的速度,速度闭环一检测,也会产生更大(这里有点模糊);于是,我就想把两个PWM值加起来不久刚好可以有足够的PWM把小车拉回来了吗;于是我把程序里的两个PWM值该为相加;加上后如下图(也是值加了P值)相加后是这样,(颜色代表如上图)角度的PWM和速度的PWM极性竟然变相反了,这加起来不和上面的减一样么,我搞不懂是为啥? 这个只改了个加减怎么两个PWM[attach]39871[/attach]值极性相反了,我看这个图的角度PWM好像是错,应速度为正时,即前倾,角度PWM(红色)应该是为负的而上图却变为正。真不懂是为什么。

视频还在审核中,主要是车往前跑到速度为0的时候,车体后仰一点,往后加速,在推它一下,等到速度为0的时候又后仰一点,又往后加速,后仰是车的后倾角度越来越大





作者: sdlibin007@qq.c    时间: 2013-1-18 20:41
为何非要用PI调节,何不试试PD调节呢??
作者: wsdyi100    时间: 2013-1-18 20:43
本帖最后由 wsdyi100 于 2013-1-18 21:01 编辑
sdlibin007@qq.c 发表于 2013-1-18 20:41
为何非要用PI调节,何不试试PD调节呢??

听学长们说D参数会有较大的噪声加了没什么用,况且官方的也是PI控制

这个是测速的视频,感觉好僵硬http://www.tudou.com/programs/view/rwU0C3G3z4o/?watchlater=1

作者: sangxiaoran    时间: 2013-1-18 20:46

作者: 穆旦阿斗    时间: 2013-1-18 20:46
重大的高才,你TM光电的加电磁群干嘛!?
作者: sdlibin007@qq.c    时间: 2013-1-18 20:56
穆旦阿斗 发表于 2013-1-18 20:46
重大的高才,你TM光电的加电磁群干嘛!?

兄弟,光电的直立是去年电磁的产品,明白??去年做电磁的今年或许还做电磁,所以有些还是有共同点的
作者: sdlibin007@qq.c    时间: 2013-1-18 20:57
wsdyi100 发表于 2013-1-18 20:43
听学长们说D参数会有较大的噪声加了没什么用,况且官方的也是PI控制

好吧,那你要是什么都信学长、信官方,那你就有得玩了

作者: wsdyi100    时间: 2013-1-18 20:59
sdlibin007@qq.c 发表于 2013-1-18 20:57
好吧,那你要是什么都信学长、信官方,那你就有得玩了

不是我不信你,论坛上好多的是速度PI,速度PD确实没见过
作者: turf456    时间: 2013-1-18 21:01


貌似是反的。。。我只是大概了解。不精通这个。。。。
作者: wsdyi100    时间: 2013-1-18 21:02
turf456 发表于 2013-1-18 21:01
貌似是反的。。。我只是大概了解。不精通这个。。。。

那怎么办
作者: automate    时间: 2013-1-18 21:06
直立与速度pwm相减可以这样理解(官方说非最小相位特性,呵呵),  比如车现在加速往前, 编码器测出来的速度为正, 如果预设速度为0, 则速度偏差e为负,故经过PI后得到的输出pwm为负
作者: sdlibin007@qq.c    时间: 2013-1-18 21:14
wsdyi100 发表于 2013-1-18 20:59
不是我不信你,论坛上好多的是速度PI,速度PD确实没见过

我不是让你信我,我只是想让你试试其他的方法,不能总是人云亦云,呵呵
作者: wsdyi100    时间: 2013-1-18 21:15
automate 发表于 2013-1-18 21:06
直立与速度pwm相减可以这样理解(官方说非最小相位特性,呵呵),  比如车现在加速往前, 编码器测出来的速 ...

***实质是减吗?

作者: xiongcaifei    时间: 2013-1-18 23:10
同问,楼主解决了说下哈
作者: xiongcaifei    时间: 2013-1-18 23:21
楼主,你这个无线通信用的是什么模块啊??蓝牙吗?还有曲线分析用的是什么软件啊???看起来很好用啊。
作者: yukunlinykl    时间: 2013-1-18 23:28
本帖最后由 yukunlinykl 于 2013-1-18 23:58 编辑

你说: “角度控制输出的角度PWM是负责直立控制的,当只有直立控制,车模可能往一个方向越来越加速的运动,这是因为角度所产生的PWM总是欠缺一点,不足以将车模拉回到平衡位置” 。

对此我有不同看法:
1. 为什么车身往一个方向加速
角度控制输出的角度PWM是负责直立控制的,但是由于传感器测量的偏差,
直立控制算法仅将车身控制在传感器所认为的0度,而非真实的0度,此二者有小偏差。
故车身将保持一个倾角,该倾角即传感器偏差。此处暂且假设此偏差角恒定。
为了使得车身保持恒定偏角,小车必向一个方向保持恒定的加速度 a = tan(theta)g 。
2. 如何在没有额外传感器的基础上测出上述效应
上述测量误差导致小车有一个恒定的加速度,此加速度积分一次或两次得到速度或位移。
故只要我们能测出速度或位移,就能知道角度测量误差。
3.如何消除上述现象
理论上讲,我们测出小车加速度后,直接计算出误差的角度,加负号修正到测量的角度上,就能消除上述效应。但实际上这么做效果不好,原因有二:
3.1 小车如果仅有平衡控制的话就是是随遇平衡系统,意思是,小车就像一个放在平面上的小球,滚到哪里都可以平衡。这样,微小的扰动就可以使得小车在地面上到处乱跑(期间仍然保持平衡不会倒)。
3.2 实际上我们只能测出位移(光电编码器(当然要加正反计数,否则就是路程)),然后微分得速度,微两次得加速度。而光电编码器是离散变量,微分即相邻两项求差,这样最终得到的加速度在数值上很小,精度完全不可能达到有求(只有不到十来个取值)。这样的修正极其粗糙,完全无法体现效果。
综上,测量出加速度,并计算出误差,以修正测量值的方法,不采用。
4. 那该怎么办
我们选取两个相对来讲测得准的量来修正:位移,速度。
如果你将位移看成主项,那么速度就可看成对上述修正的修正,就是PD控制。
此时主项负责消除小车的位移(即消除随遇现象),但抖动较大,速度项可以看成前者的微分,负责消除前者在控制过程中的抖动。
如果你将速度看成主项,那么位移就是上述修正的辅助修正,就是PI控制。
此时主项负责消除小车的速度,让他定在一点,而其积分项负责使小车缓慢地回复初始位移。
总之不管怎么看,最终给出的算法是一样的: PWM = A*角度 + B*角速度 + C*速度 + D*位移
四个参数的符号大家自己看着办哈,懒得分析就试试就可以了。

5.最后玩味一下这个简单的公式:PWM = A*角度 + B*角速度 + C*速度 + D*位移
它又可以看成这样写:PWM = A*(角度+C1*速度+D1*位移)+ B*角速度
其中 C1 == C/A, D1 == D/A
这样速度项和位移项就可以看成是角度的修正。
其中,B 看成对 A 的抖动的消除,C1可以看成对D1抖动的消除。

哈哈,很有意思,总之怎么看都都行。

P.S.抱歉,忘了你的问题。
对于你所遇到的问题,如果你用的公式就是:PWM = A*角度 + B*角速度 + C*速度 + D*位移
或者是与其等价的别的表达方式(我扫了一眼你的式子,没太看懂,但感觉貌似是等价的)
如果老是效果不好,就不要纠结算法啦,很有可能是传感器精度不好。
具体要看抖动的效果。
直立控制造成高频抖动,速度和位移项造成低频抖动。
一般高频抖动忽略不计(因为陀螺仪的精度一般比光电编码器高)
主要问题是低频抖动。这个低频抖动其实就是陀螺仪的累积误差的增长,和,速度位移项对此增长误差的修正,
上述二者的较量,此消彼长的过程。
如果误差增长得很快,那么两者较量的拉锯战就很大,抖动剧烈。
如果误差增长慢,较量就轻微,抖动微小。
所以从两方面入手:
1. 提高陀螺仪精度,减小其误差的累积速度。
2. 提高编码器线数,减小“修正的误差”(注意咯!修正也是有误差的哟!如果修正错了咋办呀!)
根据我的经验,如果两方面精度都是够的,上面ABCD参数10分钟以内可以调好。

~~~~我勒个去,口水废了好多,我喝口水去。
P.P.S 喝完水了
关于参数的调节,我留意到楼主说你的参数是20什么什么的。
我想说,参数的绝对大小是没有意义的,因为参数是带量纲的。
量纲选取的不同,绝对大小是会有很大变化的。
一个参数的最优值,可能是20,可能是20万,可能是20亿,可能是20万分之一。
所以要注意,调节参数时,不要线性地修改其值,要指数地修改。
例如,试试20行不行,再试试100,再试试500,再试试5,再试试0.3

作者: lx1122334    时间: 2013-1-19 11:06
凤姐霸气  
作者: lx1122334    时间: 2013-1-19 11:06
turf456 发表于 2013-1-18 21:01
貌似是反的。。。我只是大概了解。不精通这个。。。。

凤姐霸气 求加好友 教教小弟  小弟新手
作者: wsdyi100    时间: 2013-1-19 11:12
yukunlinykl 发表于 2013-1-18 23:28
你说: “角度控制输出的角度PWM是负责直立控制的,当只有直立控制,车模可能往一个方向越来越加速的运动, ...

嗯,说得真好,以前就是这些原理搞不清楚,不知道是为什么,现在终于弄明白了,谢谢

作者: yukunlinykl    时间: 2013-1-19 11:26
wsdyi100 发表于 2013-1-19 11:12
嗯,说得真好,以前就是这些原理搞不清楚,不知道是为什么,现在终于弄明白了,谢谢

手留余香。

作者: a3914925    时间: 2013-1-19 14:27
求教了
作者: zyj    时间: 2013-1-19 15:05
你往后是倒的吧
作者: wsdyi100    时间: 2013-1-19 16:24
zyj 发表于 2013-1-19 15:05
你往后是倒的吧

嗯 月跑越快  最后倒下
作者: zyj    时间: 2013-1-19 17:23
wsdyi100 发表于 2013-1-19 16:24
嗯 月跑越快  最后倒下

我貌似也有过

作者: wsdyi100    时间: 2013-1-19 17:49
zyj 发表于 2013-1-19 17:23
我貌似也有过

解决没?
作者: zyj    时间: 2013-1-19 17:53
wsdyi100 发表于 2013-1-19 17:49
解决没?

ok啦~

作者: wsdyi100    时间: 2013-1-19 17:55
zyj 发表于 2013-1-19 17:53
ok啦~

怎么解决的,兄台,愿加我QQ1032609816畅聊,或加你的也行

作者: homehehe123    时间: 2013-2-12 17:06
速度反馈的应该是当没达到设定速度的时候 使轮子跑的更快还是减慢
作者: 急速小子    时间: 2013-3-15 08:32
学习了!
作者: zanran8    时间: 2013-3-31 10:16
讲的不错哦!
作者: houyuangui    时间: 2013-3-31 16:50
楼主的问题有没有解决啊
作者: Θ﹏_年少、    时间: 2013-3-31 17:55
yukunlinykl 发表于 2013-1-18 23:28
你说: “角度控制输出的角度PWM是负责直立控制的,当只有直立控制,车模可能往一个方向越来越加速的运动, ...

问一下,车高频抖动主要调哪??我的车换了驱动不管怎么调一直抖在平衡位置有些抖
作者: kido    时间: 2013-4-22 21:33
学习一下哈:D
作者: LIUGUOMING    时间: 2013-4-23 12:34
你的车子感觉趋势是往后的,把零偏值稍微改一点点试试,可能不合理,但是不妨试试
作者: sky源鸣    时间: 2013-4-24 00:50
学习了
作者: 凤羽    时间: 2013-4-24 03:12
Θ﹏_年少、 发表于 2013-3-31 17:55
问一下,车高频抖动主要调哪??我的车换了驱动不管怎么调一直抖在平衡位置有些抖

首先要确定你那个是抖···如果现象真是都的话,那就是平衡PD,D加大了。或者是死区电压加大了···

作者: 一棵小草    时间: 2013-4-24 20:43
turf456 发表于 2013-1-18 21:01
貌似是反的。。。我只是大概了解。不精通这个。。。。

什么是反的?
作者: turf456    时间: 2013-4-25 09:01
一棵小草 发表于 2013-4-24 20:43
什么是反的?

这么早的回复就不要往出翻了。
好像是速度控制和直立控制,当然算法不是唯一的。不代表所有情况。

作者: lcy_lb128    时间: 2013-4-26 21:07
sdlibin007@qq.c 发表于 2013-1-18 20:57
好吧,那你要是什么都信学长、信官方,那你就有得玩了

官方的上速度控制框图看的很纠结,怎么那个D控制加在测速之后的???看不懂啊??给解释下吧!

作者: 红杏爱蓝颜    时间: 2013-4-30 10:52
精彩!!!
作者: lyb    时间: 2013-5-8 16:19
楼主问题解决没啊
作者: _limingliang    时间: 2013-5-8 18:18
速度的控制最终就会归结到车模运动时对直立的控制!
作者: 飞鸿印雪    时间: 2013-5-20 16:23
yukunlinykl 发表于 2013-1-18 23:28
你说: “角度控制输出的角度PWM是负责直立控制的,当只有直立控制,车模可能往一个方向越来越加速的运动, ...

你好  看了你的见解  在下有两个问题不懂
其一:一般高频抖动忽略不计(因为陀螺仪的精度一般比光电编码器高
         你的意思是有抖动不需要调节么   还是。。。
        还有我发现人为的增加死区   所谓的高频抖动好像会好一点
其二:所以要注意,调节参数时,不要线性地修改其值,要指数地修改。
例如,试试20行不行,再试试100,再试试500,再试试5,再试试0.3
你说要指数的修改  但是你举得例子 不是线性的修改么    20*5=100   100*5=500   (后面两个数就不知是怎么个规律了)


P.S.在求教个问题   你觉得在速度偏差小于某个范围内  清除积分的值  可不可取啊

作者: 飞鸿印雪    时间: 2013-5-20 17:36
yukunlinykl 发表于 2013-1-18 23:28
你说: “角度控制输出的角度PWM是负责直立控制的,当只有直立控制,车模可能往一个方向越来越加速的运动, ...

额  不好意思  又想了一会     现一维坐标的在假设小车起始位置是零点   那么小车在pi控制(官方方案)下   会回到零点(理想情况下) 假设他在坐标为一的时候速度是零 也就是小车的位置从零到一再到零   所以说这其实就是位置控制  当小车的回到零点时 平均速度是零        这样说的话所谓的速度控制就变成了位移控制  或者说平均速度控制      理想的速度控制是不是这样的啊   比如说到了坐标为一的时候(车的瞬时速度为零) 这个时候如果小车速度稳定下来了(或者说最后速度为零时不在坐标零点)  这个才是理想的速度看控制吧    如果这是理想的速度控制    控制的算法是不是也该改成 p*速度偏差+d*加速度(这个式子的符号问题暂时不考虑了)啊
以上是小弟的一点愚见    请大神给指导下   

作者: yukunlinykl    时间: 2013-5-22 21:21
飞鸿印雪 发表于 2013-5-20 16:23
你好  看了你的见解  在下有两个问题不懂
其一:一般高频抖动忽略不计(因为陀螺仪的精度一般比光电编码 ...

其一,高频的抖动,(一般在10Hz左右)非常容易消除,甚至许多同学根本没见过,随便凑个系数就消除了其二,尝试参数时,如果每个尝试的参数构成等比数列,例如
0.01 0.1 1 10 100 1000
等比数列是指数增长的
而不要构成等差数列,例如
20 40 60 70 80
因为一开始不确定系数的最优值的数量级
如果你发现20小了,改成40,还小了,就这么一直该下去,
而最优值可能是三千万,你要改到何年何月去啊。

P.S. 我明白你的意思,那是不可取的。你可以自己想想

作者: yukunlinykl    时间: 2013-5-22 21:22
飞鸿印雪 发表于 2013-5-20 17:36
额  不好意思  又想了一会     现一维坐标的在假设小车起始位置是零点   那么小车在pi控制(官方方案)下 ...

是那个意思,思路是对的,你再整理整理吧。

作者: hotsauce1861    时间: 2013-8-12 18:50
好贴,学习了
作者: 名字要正经    时间: 2013-9-15 02:01
:victory:
作者: zhangqingpei    时间: 2014-1-14 20:40
两个PWM值相加时,我的车能站起来,而且能微弱抗干扰,真不知道官方程序对吗
作者: 秒针儿    时间: 2014-2-26 17:24
wsdyi100 发表于 2013-1-18 20:43
听学长们说D参数会有较大的噪声加了没什么用,况且官方的也是PI控制

这个是测速的视频,感觉好僵硬

我们的车现在也这样 貌似遇到了同样的状况  求指点

作者: 左岸天空    时间: 2014-2-26 17:34
秒针儿 发表于 2014-2-26 17:24
我们的车现在也这样 貌似遇到了同样的状况  求指点

加速度计中值变了,你把速度环去了看是不是会往一边走。

作者: 小布的梦    时间: 2014-3-8 21:30
好帖

作者: wsxz-zyq    时间: 2014-3-8 22:07
mark一下
作者: 追梦dream    时间: 2014-3-9 00:17
高手在论坛,菜鸟领悟到了




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