前言
截止目前,初代小车已经调试完毕,功能上只能直立,后期还会加上更多功能。
前面关于pid的内容也已经更新完毕,如果你是跟着我的教程走的话,那么现在的你最起码对PID已经有所了解了,那么后面我就主要讲解一下平衡小车的控制原理。结合理论和实践,彻底学会PID。
一、平衡小车为什么会倒?
说到这,那就不得不复习一下高中的物理知识-----受力分析。先看看下面一张图–单摆,来个受力分析:
受力分析说明:如图所示,单摆摆长为L,摆球质量为m,从平衡位置О运动到某点A(不是最高点)时的速度为V,此时摆线拉力为T,摆角为θ。对摆球所受重力和拉力进行受力分析,此时小球应该只受两个力,一个是重力mg,一个是线的拉力T。把重力进行分解为径向分力F’( = mgcosθ)和切向分力F( = mgsinθ):
径向:T - mgcosθ = mv’/L(径向合力充当物体做圆周运动的向心力)切向:F= mgsinθ (切向合力充当物体做简谐运动的回复力)
径向力我们不用管,我们来分析一下切向力。1.假设空气没有阻力由于小球一直受到一个切向力,那么小球会一直做自有震荡运动2.假设空气阻力很小空气阻力会慢慢消耗切向力,小球会停下来,但是时间会很长3.假设空气阻力很大空气阻力会慢慢消耗切向力,小球也会停下来,但是时间先对与2会缩短
因为在空气中运动的单摆,由于受到空气的阻尼力,单摆最终会停止在垂直平衡位置。空气的阻尼力与单摆运动速度成正比,方向相反。阻尼力越大,单摆越会尽快在垂直位置稳定下来。
看到这里,我们在联想一下平衡小车,看看有什么区别。下图是平衡小车倾斜时上方某一点的受力分析:
平衡小车有个现象,当你没有上电时,小车如果机械结构比较好的情况下,在垂直的时候是可以单独直立不到的。但是只要稍微有点角度,他就会顺着这个角度加速倒下。因为在垂直的时候,小车受到的回复力=mgsinθ,而θ=0,因此回复力等于0,。此时只有一个mg和地面对小车的支撑力,两者相抵消,受力平衡,从而直立不到。但是稍微有点角度就会打破这一受力平衡。因为在它偏离平衡位置的时候,所受到的回复力与位移方向相同,而单摆却相反!因此,平衡小车便会加速偏离垂直位置,直到倒下。如何通过控制使得平衡小车能够像单摆一样,稳定在垂直位置呢?要达到这一目的,只有两个办法:一个是改变重力的方向;另一个是增加额外的受力,使得回复力与位移方向相反才行。显然能够做到的只有第二种方法。
二、平衡小车直立原理
怎么增加一个额外力使得回复力与位移方向相反呢?看下图:
让电机旋转,使得小车运动方向和倾倒方向一致。这样就能产生一个力F1,使得小车保持平衡。
那么问题来了,新手都会遇到一个问题,为啥让电机旋转,会使得小车保持平衡?知其然,更要知其所以然
解决这一问题只有一个办法----还是受力分析、在这之前呢,先给大家说一个现象,帮助大家理解。
老司机当然还是要开车呀,当你坐在车里,脚踩油门加速的时候,你会发现,你的上半身会向后仰,仿佛有个人坐在你的大腿上想放倒你。不巧的是后面有个座椅支撑着你,座椅对你产生推背感。
这一现象从物理的角度怎么解释呢?汽车发动的瞬间你的身体因为惯性会保持静止状态,但因为你的下半身腰部以下(坐立时)都直接接触汽车,因为摩擦力的缘故会伴随车子向前移动。于是见证奇迹的时刻到了,你下半身随着车子移动,上半身因为惯性保持不动,结果就变成了下身拉动上身即出现了你所谓的身体后仰状态。类比我们的平衡小车,当电机旋转时,会产生一个力使得小车下半身向倾倒方向加速,这个力会使得上半身产生一个回复力与位移方向相反,这样就能保持平衡了。
下图为受力分析图,图中省略一部分受力,比如摩檫力、轮子对上半身的支持力等等,主要是F和-F1COSθ。
受力分析之后就能列出回复力Y的关系式了:
又因为在实际运用当中,平衡小车摆动角度很小,因此进行线性化简化。并假设负反馈控制是车轮加速度 a 与偏角 θ 成正比,比例为 k。代入公式得出:
如果比例k>g ,( g是重力加速度)那么回复力的方向便于位移方向相反了,这样就能使小车直立了。
为了使得倒立摆能够尽快地在垂直位置稳定下来,还需要增加阻尼力。虽然存在着空气和摩擦力等阻尼力,相对阻尼力比较小。因此需要另外增加控制阻尼力。增加的阻尼力与偏角的速度成正比,方向相反。最终得出下图公式:
综上所述可得控制车轮加速度的控制算法:式中 θ 为小车倾角,θ’ 为角速度,k 、k1 均为比例系数。
这就是小车直立环的推导过程,乍一看这个公式其实就是PD控制器。
三、速度环的引入
平衡小车的最高境界是什么?一个字:稳怎么稳?立在那不动。怎么不动?保持直立并且速度为0(保持直立也有可能是匀速运动)。怎么速度为0?加入速度环。加入速度环的原因还有以下两点:1.配合直立环,让小车更加稳定2.为后面远程遥控做基础
四、串级PID
由于速度环和直立环都是控制小车电机的转速,因此两者需串在一起。又因为平衡小车最主要的是直立,因为速度环的输出作为直立环的输入,直立环的输出最终作用到小车电机上。最终形成下图框图的形式:
总结
重点理解直立原理,受力分析图。知识点都不难,回忆回忆高中物理就能分析出来了。至此,理论部分已经差不多了,把理论部分理解透彻,代码部分也就好理解了。代码实现见下一节。
|