智能车制作

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2849|回复: 22

[电磁] 三轮控制之串级pid(后续)——By 小学生

[复制链接]

13

主题

135

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2314
威望
1212
贡献
592
兑换币
594
注册时间
2016-12-19
在线时间
255 小时
毕业学校
发表于 2018-7-31 11:35:26 | 显示全部楼层 |阅读模式
        如同电路中的串并联一样,pid控制也可以被串并联,在这里我只讲串联。
        先说一下三轮中控制的流程吧,首先是感应电动势的ADC采集,然后分析这些值,得出一个偏差,再依据这个偏差和车期望的前进速度,算出左右轮的期望速度,以此来控制车的前进。其实在这里,就已经存在着第一级pid控制了(先假设没转速闭环):
        第一级pid控制:反馈量:电感值。进而算出偏差,也可以理解为反馈为车的偏差。
                                期望值:因为要车寻迹,因此期望车的偏差为0,所以期望值恒为0。
                                输出量:根据反馈与期望,经pid计算得到一个输出,这个输出直接和差速成正比,再和期望前进速度加减,得到左右                            轮的期望速度。
        在这里。通过电感的反馈,完成了第一级pid的控制,这里就一个pid控制,接下来再加进去一个pid控制,和它串起来,就形成了2个pid
控制串联起来的串级控制。如何再加呢?电机转速那里可以根据编码器的反馈再形成一个pid控制,这个时候控制流程变成这样:
        计算偏差->一级pid控制->得出一级pid输出->以此计算左右电机期望速度->二级pid控制->得出二级pid输出(也就是占空比)
        这里就形成了串级控制,它和单级pid控制相比起来,多了一路反馈,如果说单级pid是能使车逼近偏差为0的控制的话,串级pid就是在使车逼近偏差为0的的基础上,再使电机转速逼近我的期望的控制。串级相比单级,能控制的物理量变,使车的控制性能变得更好,相信大多数用了电机闭环的都感受得到和没闭环的天差地别吧。
         接下来再讲一讲角速度在串级控制中的引入,以形成三个pid控制的串级控制。
         首先是我这个pid控制该放在什么位置?我先给这三个控制编个号。偏差闭环为1,转速闭环为2,角速度闭环为3.既然是串级,那么我123,132,213,231,312,321都是串联啊,那么我随便串都行?答案肯定是否,在控制中,逻辑的先后非常重要,就如同直立的控制,肯定是角度外环角速度内环,而不能反着来。再举个比较粗鲁的例子,是先有你父母,再有你,而不能倒着来。在这里,我是用的132这样的串联方式,为什么?任何控制系统都得有一个输入,而与输入直接相关的,就是电感,所以把1偏差闭环放前面,而转速闭环2是在期望速度确认的情况下进行的pid控制,而角速度闭环3是根据角速度的反馈来调节差速,或者说调节左右电机的期望速度,所以应该放在2的前面.
          这个时候控制流程如下:
          计算偏差->控制1->一级pid输出->以此计算左右电机期望速度->控制3->二级pid输出(调整后的左右电机期望速度)->控制2->三级pid输出(也就是占空比)
           至此,就完成的3个pid的串联(串级控制)了,当然,在这过程中会遇到许多问题,比如我是角速度,如何调整左右电机的速度?
根据高中物理知识,差速=角速度*间距,便可将角速度与差速联系起来,进而控制左右轮的期望速度了。除此之外,还有许多细节,这里我就不一一细说了,毕竟自己探究出来的,才有成就感,才有自己学到了东西的感觉嘛。
            做了2年了,说实话并没有在论坛上学到什么,我这个老司机也快要下车了,希望走之前能用行动改变一下这里。毕竟这比赛都做了这么多年了,感觉强的还是那么些人,那么些学校。如果大家全民提速,百花齐放,思想多分享分享,也不至于这样吧。
            话不多说,闪人
回复

使用道具 举报

4

主题

24

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2093
QQ
威望
1030
贡献
657
兑换币
667
注册时间
2015-8-12
在线时间
203 小时
毕业学校
成都信息工程大学
发表于 2018-8-2 10:42:34 | 显示全部楼层
北一前三 发表于 2018-8-1 23:26
大佬 那我是不是可以 让内环执行几次之后再执行外环呢  这样串级的效果会不会好一点?

正确的做法是让内环频率提高,而不是为了让内环比外环快而去降低外环频率
回复 支持 0 反对 1

使用道具 举报

13

主题

135

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2314
威望
1212
贡献
592
兑换币
594
注册时间
2016-12-19
在线时间
255 小时
毕业学校
 楼主| 发表于 2018-8-9 14:17:01 | 显示全部楼层
767124048 发表于 2018-8-8 15:56
我理解的  3  2后面窜起来作用有点雷同,我一直用的1 3窜,一直想用132窜 。 如果3 2都是进行差速调整。3 ...

你可以这样理解,每个pid控制都对应一个指标的具体控制3 角速度闭环,也就是使车的加速度能达到我的期望
2 轮子转速闭环,也就是使车轮的转速能达到我的期望
所以32雷同,不是很准确的。只能说他们具体表现出来的结果都是使车的差速达到我的期望。但是他们的途径是不一样的
一个是强行使轮子速度达到我的期望速度,它们之间的差也就是差速,可控了。
一个是强行使车的角速度达到期望,角速度和差速成正比,也就是差速可控了。
既然都能使差速可控,为什么还要串呢? 首先是3 和 2对应的物理量不一样,你在控制某个东西时,是从单一面控制好还是从多个方面都控制好?粗略理解的话大概就是这个道理吧。
3  2  作用都是和1 相减?不是很理解这句
132 一起串,2 不应再特殊情况用(参考上面我的分析),
pid间如何串联的话, 就是 吧一个pid的输出作为另一个pid 的输入,这样pid就串起来了
1 输出 作为3 输入  3 输出作为 2 输入   2 输出作为电机pwm波  就这样
回复 支持 1 反对 0

使用道具 举报

5

主题

140

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2686

优秀会员奖章活跃会员奖章

QQ
威望
1335
贡献
811
兑换币
896
注册时间
2017-10-13
在线时间
270 小时
毕业学校
太原工业学院
发表于 2018-7-31 15:40:41 | 显示全部楼层
顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1908
威望
898
贡献
572
兑换币
593
注册时间
2017-4-5
在线时间
219 小时
发表于 2018-7-31 16:46:07 | 显示全部楼层
大佬优秀
回复 支持 反对

使用道具 举报

4

主题

24

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2093
QQ
威望
1030
贡献
657
兑换币
667
注册时间
2015-8-12
在线时间
203 小时
毕业学校
成都信息工程大学
发表于 2018-7-31 17:09:00 | 显示全部楼层
通常内环频率要大于等于外环,编码器采样通常使用10ms,那么内环控制频率仅有100Hz,即使是5ms也只是200Hz,远低于最外环传感器和中间环角速度,这样的串级控制效果就被大打折扣,甚至可能还不如直接用传感器单环控制的效果。串级的方案不止一种,各有优缺点。比如将传感器数据拟合成期望转向半径R,根据当前速度就可以直接计算出期望转向角速度,直接控制角速度环即可,6050最高可以8KHz。也可以使用当前角速度和当前速度直接计算出当前转向半径,直接控制转向半径环,频率同样可以做到很高
回复 支持 反对

使用道具 举报

13

主题

135

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2314
威望
1212
贡献
592
兑换币
594
注册时间
2016-12-19
在线时间
255 小时
毕业学校
 楼主| 发表于 2018-7-31 17:42:19 | 显示全部楼层

感谢顶贴
回复 支持 反对

使用道具 举报

13

主题

135

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2314
威望
1212
贡献
592
兑换币
594
注册时间
2016-12-19
在线时间
255 小时
毕业学校
 楼主| 发表于 2018-7-31 17:53:27 | 显示全部楼层
c767831092 发表于 2018-7-31 17:09
通常内环频率要大于等于外环,编码器采样通常使用10ms,那么内环控制频率仅有100Hz,即使是5ms也只是200Hz ...

再控制周期上我确实如你所说,内环不过5ms的周期。控制周期对控制带来的影响我确实没有探究过,感谢提供思路
回复 支持 反对

使用道具 举报

10

主题

423

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4319

在线王奖章活跃会员奖章优秀会员奖章论坛元老奖章

威望
1897
贡献
1260
兑换币
1320
注册时间
2017-7-20
在线时间
581 小时
发表于 2018-7-31 17:53:49 | 显示全部楼层
给大佬顶帖
回复 支持 反对

使用道具 举报

4

主题

117

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1536
威望
758
贡献
534
兑换币
551
注册时间
2017-12-31
在线时间
122 小时
发表于 2018-7-31 22:48:44 | 显示全部楼层
给大佬顶贴
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
QQ
威望
133
贡献
78
兑换币
92
注册时间
2017-11-5
在线时间
22 小时
发表于 2018-8-1 23:26:49 | 显示全部楼层
c767831092 发表于 2018-7-31 17:09
通常内环频率要大于等于外环,编码器采样通常使用10ms,那么内环控制频率仅有100Hz,即使是5ms也只是200Hz ...

大佬 那我是不是可以 让内环执行几次之后再执行外环呢  这样串级的效果会不会好一点?
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 京ICP备14023231号-8

GMT+8, 2019-4-20 20:23 , Processed in 0.425879 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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