基于MPU6050六轴陀螺仪在单车平衡上的研究

(整期优先)网络出版时间:2023-01-07
/ 2

基于MPU6050六轴陀螺仪在单车平衡上的研究

张少祖1,罗强强1

(1.湖北汽车工业学院 汽车工程学院,湖北 十堰 442002)

摘要:在Keil uVision5开发平台下利用STC16F单片机基于MPU6050六轴陀螺仪实现单车自平衡的功能,同时结合电磁寻迹方法完成单车的自主循迹功能。本文提出了电单车的自平衡方案,循迹方案,转向方案,通过一种PID算法以及差比和差加权算法调试完成一辆可以自主循迹的自平衡单车的制作。

关键字:自平衡;MPU6050;自主寻迹。

0.引言:

电动自行车是人们日常生活中一种重要的交通工具,随着自动驾驶行业的发展,电平衡单车或将也是一种主流趋势。合理的电单车平衡方案不仅能提高使用人在驾驶电单车时的安全性,还能够为电单车自主巡航提供可能,在人工智能和5G物联网引领的时代有广泛的运用前景。结合共享单车可以提供电单车自动寻找用户,自动定点还车,人车跟随等功能。

本文利用MPU6050六轴陀螺仪在模型电单车上实现了自平衡和自主寻迹的功能。

  1. 整体方案设计:

使用MPU6050作为车体姿态传感器,使用S3010舵机实现平衡的同时控制转向。利用一种PID算法结合MPU6050六轴陀螺仪采集到的信息设置平衡环对单车进行平衡控制。安装有MPU6050单车驶向具有20kHz的交变电流信号的电磁线通过车位于电磁线中的位置来计算模型车的位置状态,作为方向和速度的控制依据,从而实现小车的自主循迹。

C:/Users/31055/AppData/Local/Temp/picturecompress_20210519230118/output_1.jpgoutput_1

图1 单车成品图

  1. 自平衡方案:

自行车可以看做是一个倒立摆(左右方向不稳定),这个倒立摆受重力作用是一个不稳定系统,需要额外的回复力维持平衡,而提供回复力的正是自行车转向时的”离心力”。离心力是速度和把手转向角的函数,在一个固定的速度下,可以认为控制把手转向角度就是控制回复力。维持自行车平衡,需要通过一种合适的算法控制把手角度才能使自行车稳定平衡。对于电单车的平衡环控制,需要实时监测电单车的车身姿态。对MPU6050采集到的原始数据使用卡尔曼滤波进行角度融合,能够获得较为准确的实时角度。通过位置式PID控制算法来维持单车平衡。比例项为方向倾角(横滚角),积分项为比例项的和,微分项为左右方向的陀螺仪读数。输出控制舵机的PWM占空比从而改变舵机的转角,最后实现平衡。

具体算法:


图2自平衡系统流程图

BalancePID = Balance_Kp * Bias + Balance_Ki*Integration + Balance_Kd*Gyro

其中BalancePID 为输出PWM的占空比控制量;Balance_Kp为PID比例系数;Balance_Ki 为PID积分系数;Balance_Kd为PID微分系数;Bias 是平衡时的角度中值与此时翻滚交的偏差;Integration 是偏差积分;Gyro是陀螺仪左右角的读数。

横滚角是指单车在水平方向上的左右倾角,横滚角的确定是保证平衡的基础,由于电单车本身的结构因素:车身左右重量不可能完全相等,往往会使小车在竖直静止状态下向一个方向偏倒,即存在静态误差,在计算横滚角时,需要在计算结果的基础上加一个常数来消除这一静态误差。

积分量直接关系到电单车倾角能否达到目标倾角。目标倾角越大则静态误差也会越大,在积分系数ki不够大的情况下静态误差过大,很可能会导致电单车倒地。按照单车的T-S模型,电单车后轮电机速度对单车的平衡环也会产生影响。

单车速度越快会导致向心力更大,则相对应的相同的单车姿态下,维持平衡所需要的舵机打角也不同。假设单车以匀速行驶,在过弯时可以用加减速来辅助平衡环,达到更好的过弯效果。即在过弯时减速,在过弯后加速辅助回正。通过此方案可以让单车在没有电磁线的情况下保持自平衡,直线行驶。

  1. 循迹方案:

循迹方面采用四联电感收集赛道信息,根据电感位置对赛道元素的敏感性不同,使用两横两竖电感。使用修改过后的电感差比和差加权算法对四个电感采到的数据进行处理,再将处理DZIY2022091900G_197
后的值传给舵机,通过舵机打角使单车自平衡的同时进行循迹。其中用到四个参数:P、A、B、C,通过对四个参数的调节,使单车做到完美循迹。

修改过后的电感差比和差加权算法:

Zhongzhi = (H_diff*Weight_A + S_diff*Weight_B)*Turn_Kp/(H_sum*Weight_A +y_diff*Weight_C)

其中Zhongzhi 为单车虚拟的角度中值 ;H_diff为横电感值的偏差;S_diff为竖电感值的偏差;H_sum为横电感值的和;y_diff为竖电感值差的绝对值。

通过这套算法不断改变单车的虚拟角度中值,结合平衡环PID的控制,输出相应的PWM占空比来改变S3010舵机的转角,通过舵机的打角来控制平衡的同时,实现自主循迹。

图3 MPU6050翻滚角姿态解算图

  1. 转向方案:

在摩托车界有一种“推把”原理,它是两轮车驾驶的技巧,也是两轮车转向的“定理”。“推把”就是驾驶两轮车时,若令前轮的指向向左偏移,则车接下来会向右侧倾倒,反之亦然。

按照常人的思路,汽车要向左转,那么前轮就应该指向左边,起到导向的作用。然而“推把”却是“如果要令车子向右转,那么应该令前轮向左偏”。当汽车向某个方向转向时,由于惯性,车内的人会向相反方向甩。 如果汽车过弯速度过快,车身则会侧翻。而令车子以更快的速度过弯而不侧翻则需要降低车身重心并且增加轮距或轮胎宽度。相反,要令让车子更容易侧翻 则需要增高车身重心并且减小轮距和轮胎宽度。

若令车的重心高度保持在离地70cm,不断减小轮距和轮胎宽度,显然,重心不变轮距减小,车子转向就越容易侧翻。运用极限思想,将轮距从常见的2500mm减小到150mm,车子显然一转向就侧翻。此时两轮车对应上述重心离地70cm而轮距150mm的情况,根据“一转向就侧翻”,当二轮车前轮向左侧偏移指向时,车子就会向右侧翻,也即向右倾倒,即“如果要令车子向右转,那么应该令前轮向左偏”。

应用到单车上“推把”就是“要让车身向右倾斜,就将右手向前推,反之亦然”。推把并不仅仅适用于将车身从直立变为倾斜,也适用于将车身从倾斜变回直立:车身右倾时,左手向前推动车把,即令车轮偏向右侧,则车身可以直立起来。

在设计程序算法时,根据“推把”原理,当车识别到弯道时,要先令舵机向相反方向打角,使车身倾斜,进而达到转向目的的同时,不使车身摔倒。

  1. 结论:

利用卡尔曼滤波融合MPU6050的角度获得较为准确地实时角度,研究出一种合适的PID算法,得到电单车的平衡环。通过修改电感差比和差加权算法与平衡环联系起来得到循迹方案,根据摩托车“推把”原理得出电单车转向方案,在在Keil uVision5开发平台下利用STC16F单片机整合几种方案,最终实现电单车自平衡控制。

参考文献:

[1]蒋鑫源,李以卓,朱磬鼎,沈世斌.电单车的平衡运动控制研究[J].电子制作,2022,30(13):7-10.

[2]郭磊,黄用华,廖启征,魏世民.自平衡自行车机器人的运动学分析[J].北京邮电大学学

报,2011,34(06):99-102.

[3]王路斌,葛瑜,胡德文.基于T-S模型的无人自行车平衡控制[J].控制工程,2008,(S1):109-112.

[4]刘春,何敏,戴雷.基于Mahony与改进Kalman融合的姿态解算方法[J].电子测量与仪器学报:1-8.

支撑项目:湖北汽车工业学院大学生创新创业训练计划项目(No.DC2021069)(No.DC2022060