平衡车算法(平衡车的算法处理过程和难点分析)(1)

平衡原理

调皮的我在小时候玩过这样的一个动作:记得我小时候用的雨伞还是那种比较长的,大概有1m左右吧那种的,不像现在的雨伞都比较小了,不过现在长的也有,有时在拿雨伞的时候,总喜欢把它的一端放立在两个并排的手指上,让它不倒。

平衡车算法(平衡车的算法处理过程和难点分析)(2)

为了让它不倒,我们肯定要做一个动作,那就是观察雨伞的运动情况,然后我也运动起来。我们抽象一下这个模型:

其实要做到不倒,我们必须满足两个条件:

我相信应该没人可以蒙着眼睛(当然也不能通过其它感触),就可以直立雨伞,因为没有眼睛的负反馈,就不知道雨伞的倾斜角度和趋势。这就需要引出下面的内容了。

闭环控制

我把上面这整个过程用一个框图表示出来:

平衡车算法(平衡车的算法处理过程和难点分析)(3)

我们把这样的一个系统称之为闭环控制系统,通过眼睛来实时的反馈雨伞的运动趋势,再将这个偏差信号给到大脑在反馈到执行器上,实现实时的控制。使雨伞的倾角保持在0度,就可实现直立。和闭环控制系统对应的那当然是开环控制系统了,其实也就是没有了反馈回路,不能将结果再传输到控制系统的输入端做有差运算了。典型的例子就是我们打篮球,篮球出手后,就是一个开环控制,至于结果能不能投中我们是无能为力的。

小车平衡原理

平衡小车是通过两个电机运动下实现小车不倒下直立行走的的小车,在外力的推拉下,小车依然保持不倒下。这是我们的目标。

平衡小车也是上述这样的过程,通过负反馈实现平衡。与上面保持雨伞直立比较则相对简单,因为小车有两个轮子着地,车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。看图:

平衡车算法(平衡车的算法处理过程和难点分析)(4)

基本上就是这3种情况:

所以根据上述的原理,通过测量小车的倾角和倾角速度控制小车车轮的加速度来消除小车的倾角。因此,小车倾角以及倾角速度的测量成为控制小车直立的关键。

小车平衡的处理过程和难点

其实过程很简单,先是使用传感器获得当前小车倾斜角,然后根据此角度做PID调节,得到小车两个电机的PWM脉宽,调整轮子速度,使之回到倾角为0的状态,即保持平衡。然后就不停地重复采集->处理->调节->处理这一过程。在此基础上,附加两电机的PWM值,即可实现前进,倒退,左转,右转动作。

难点不外乎以下几点:

1.传感器的数据处理是小车的最大难点。一是传感器受震动影响很大,很容易超量程;二是传感器数据漂移比较厉害。而关键的小车倾角就来源于此传感器数据。这就是我们上一讲《卡尔曼滤波在最小惯性测量单元中的应用》的内容了采用卡尔曼滤波算法,融合陀螺仪和加速度传感器数据得出小车倾角。

2.单纯靠倾角做PID不能使小车平衡,因为当小车倾角接近0度时,改变的PWM值无法使小车越过平衡点,造成小车朝一边加速前进,所以要将速度也添加至PID调节中,做积分。

后面的内容我们将具体来实施了,下一章将讲解控制角度的PD算法

喜欢我文章的朋友,欢迎关注、分享、点赞、评论。谢谢!!!

,