参加第二十届的车友们大家好,今天给大家分享第二十届平衡轮腿组浅析。关于轮腿组的规则卓老师已在CSDN上发布两三个月了,大家应该都有阅读,今年轮腿组是第一年加入智能车竞赛。相较于以往组别,轮腿组的灵活性更强,但同时任务量有所增加,除了轮腿的平衡控制以外,任务还集中在腿部的控制和硬件驱动两个方面。相较于以往平衡车,其实轮腿带来的变化并不太大,同时轮腿因为可以变化腿部,控制上限更高,更容易发挥出大家的创意,难点应该在如何做好腿部运动下的平衡控制,硬件设计和竞速这三件事上。
提到轮腿,大家首先想到的是车模可以跳跃了,但其实对于轮腿组别的车模,并非能跳的就是越好。首先,因为还是要把平衡做完美,智能车竞赛终究还是竞速赛,想要在目前设定的赛道上跑出好的速度,车模的平衡性一定要良好,否则可能遇到半路摔跤等问题,反而不行;其次因为主板、驱动板、舵机板、电池、陀螺仪等关键部件必不可少,将这些部件安装在车模上,要考虑好车子重心,否则反而会给平衡增加难度。而且车模的重心不宜偏高,不利于转向控制,容易出现侧翻情况。
对于硬件来说,将板子的集成度很高,会增加负责硬件同学的压力,但同时提升了硬件同学的竞赛参与感。车模作品的临场适应能力很重要,想要稳定的发挥出小车平时训练的速度,需要各位更深入细致的考究和打磨硬件电路,防止出现跟本鸭去年同样的硬件问题。车友们需根据自身实际情况来挑选适合自己的方案。
虽然以前就引入了平衡车模,但是针对今年的新变化,对于刚参加比赛的同学来说,想要做好且能在比赛中脱颖而出依然是一项具有一定难度的挑战。所以本文将针对这一组别进行简单的赛题分析和备赛思路浅析,为新老车友提供一点备赛思路上的参考,愿可达鸭能够陪伴大家一起成长。
第二十届全国大学生智能汽车竞赛的比赛规则可以在卓老师CSDN的博客找到,跳转链接:https://blog.csdn.net/zhuoqingjoking97298/article/details/143673441
轮腿组无非是平衡车加基础四轮摄像头的组合,虽然作为新组别,但其循迹算法已经繁衍的五花八门了,但究其实质无非就是通过摄像头来识别赛道,获取小车偏离赛道中心的偏差值和方向。
两轮直立平衡车大家一贯都是采用一阶互补滤波方案加串级PID算法,当然,也有不少同学采用四元数方案,直接获得欧拉角用作车模姿态角度。推进大家使用马戏团开源的拓展卡尔曼滤波方案。(https://www.bilibili.com/video/BV1vYfZYkEDP?vd_source=d04b6440b9bfa42cefad742730c63075)
首先,默认大家都已经得到车模姿态角度情况下,我们推荐大家使用LQR控制,下面来聊聊传统的PID算法较LQR的的缺陷:LQR能够将角度、角速度、速度、位置一起线性组合作为力矩输出量,响应快的同时避免引入微分和积分环节,有效规避PID经常出现的过调问题。
LQR在小车上就是两个并级PD,其实和PID形式一样,不过参数计算的过程还是有区别,PID一般是单输入单输出,所以一般用串级,先实现一个环,再实现另一个环。当然只有一个控制输入,控制器没有积分环节,则串并无所谓。
理论上LQR只要参数调整,总能模拟PID的所有表现。但是PID好调,你想要什么效果可以慢慢加,LQR则是牵一发而动全身。参数互相影响。需要对矩阵调整。
LQR需要基于模型建立出状态空间方程,下面来做一下分析。
平衡车的运动是通过车轮转动来实现的,我们选用的是一对同轴安装,参数(质量、转动惯量、半径)相同的车轮。现在,以右轮为例进行受力分析。
▲ 图1 车轮受力分析
图 1 车轮的受力分析图
车轮的运动可分解为平动和转动,则 由牛顿第二定律可得
由刚体定轴转动定律可得
其中:
联立(1)和(2),消去 ,可得
在车轮不打滑的情况下,车轮移动速度的大小和转动速度的大小成比例关系,即
将方程(4)代入(3)中,可得
由于左右轮的参数相同,则对左轮也可以得到相似的结果,即
与车轮的运动类似,车体的运动也可以分解为正向运动(前向、俯仰)和侧 向运动(转向、偏航)。其中,偏航运动可以看成是转向运动的特殊情况,因此 下面主要分析车体的正向运动和转向运动。
1)正向运动
为了易于分析,不妨对车体模型进行简化。
▲ 图2 正向运动模型
小车的正向运动可以分解为前向运动和绕车体质心 P 的相对转动(俯仰)。小车底盘中心 O 的水平位移为
将方程(5)和(6)相加后,等式两边除以2可得
联立方程(7)(8)可得
对车体,由牛顿第二定律可得 在水平方向上,有
在竖直方向上,有
对车体,由刚体定轴转动定律可得
其中
联立方程(9)(10)可得
因为该方程含有非线性项,因此,要进行线性化。考虑到车体的倾角比较小(通常情况下,−10°≤ ≤10°),则可以认为
故方程(13)变为
将方程(10)和(11)代入方程(12)中,可得
类似的,对方程(15)进行线性化可得
将方程(16)代入方程(14)中,消去 ,可得
式中
将方程(14)代入方程(16)中,消去 ,可得
式中
综上所述,对于正向运动有
式中
2) 转向运动
与正向运动类似,我们也可以建立简化后的转向运动模型,如图 1-4 所示。
▲ 图3 转向运动模型
转向运动是由于左右两车轮从水平方向上施加给车体的反作用力的大小H_L和H_R不相等引起的,则由刚体定轴转动定律可得
其中
将方程(5)和(6)相减后可得
▲ 图4 小车转向是示意图
当左右两轮运动速度不相等时,小车身转向,如图 1-5 所示。由几何关系可得
解得
由式(23)进一步可得
联立方程(20)(21)(24)可得
由方程(19)和(25)可得系统的状态方程为
状态变量分别表示小车的位移、前进速度、车体的倾角、车体的角速度、小车的转向角以及转向速度。由于电机输出转矩的大小不好直接控制,则由刚体定轴转动定律将其转化为两个车轮的加速度。
其中
:左轮无摩擦时线速度的大小 (rad s) :右轮无摩擦时线速度的大小 (rad s)
故系统的状态空间表达式变为
式中
矩阵中的元素为
其中
LQR(Linear Quadratic Regulator),即线性二次型调节器。LQR 可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。LQR最优控制利用廉价成本可以使原系统达到较好的性能指标且易于实现,是现代控制理论中发展较为成熟的一部分。下面对其原理做一个简单的概述后给出一个实际应用的例子。
设系统(要求系统完全能控)的状态空间表达式为
在现代控制理论中,最基本的控制系统就是全状态反馈控制系统,其目标是设计一个状态反馈控制器u = -Kx来控制系统的表现。
▲ 图5 全状态反馈控制系统
现在的问题是这样的K不是唯一的,那么,怎么样的K才是最优的呢?这里有个简单的量化评估方法,对于控制系统,我们引入代价函数(Quadratic Cost Function)
式中,Q为n×n维半正定的状态加权矩阵,R为n×n维正定的控制加权矩阵。
在工程实际中,Q和R是对称矩阵且常取对角阵。Q中对角线上的元素q_i表示对相应误差分量x_i(最终的目标是让每一个状态变量的值都变为0,所以每一个状态变量的值又称为误差值)的重视程度,越被重视的误差分量,希望它越快的变小,相应地,其权重系数就取得越大。类似的,R中对角线上的元素r_i表示对相应输入分量u_i的限制,让其不要太大。LQR控制器的设计思路就是设计一个状态反馈控制器u = -Kx,使得代价函数最小min J,从而达到利用廉价成本使原系统达到较好的性能指标的目的。至于状态反馈矩阵K怎么计算,这里只给出相应结论:
其中,P是 Riccati 方程 的解。
有了上述对 LQR 控制器定性的说明后,接下来以两轮自平衡小车为实例说明 LQR 控制器的设计。通常情况下,我们并不会手算状态反馈矩阵K,而是借用 MATLAB 的 lqr 函数进行计算。
注意,加权矩阵R不能太小,否则会导致控制量的急剧增大以至于超过系统的执行能力,另一方面,矩阵R也不能太大,否则控制作用太小会影响控制性能。
一般而言,矩阵R中对角线上的元素选为 1 比较合适(可以根据实际情况再进行合理的修改)。
程序的运行结果如下所示:
▲ 图6 示例矩阵K
然后,利用 SIMULINK 对其进行仿真:
▲ 图7 simulink仿真
仿真结果如下:
▲ 图8 MATLAB 仿真结果
以上仅可作为思路逻辑分析,并不能直接将这个矩阵放入工程中进行编译,可能会出现错误,建议各位小伙伴将思路梳理清楚后自行编写代码。
见视频:【没时间再为PID哀悼了,接下来登场的是LQR。太好了是LQR,智能车轮腿组有救了!】
https://www.bilibili.com/video/BV1diPmetE5W?vd_source=d04b6440b9bfa42cefad742730c63075
最后,感谢各位的支持。平衡轮腿组赛道可达鸭演示车模的大致介绍就到这里了。演示车模的方案可能对新手入门能有一点帮助,借此机会对知识应用做一个简单的梳理,提供一个车模制作的基础参考。演示车模上所有电路板的PCB及演示车模的整车程序软件,均不公开,不出售,不赠送,只做验证后的思路分享。这些内容并不复杂,是完全符合大学生能力定位的,如果一些新手朋友还比较迷茫,可以尝试根据分享的思路来做自己的小车,编写自己的代码,这些都是可以实现的,希望每个参赛的同学都能知其然并知其所以然,不偷懒,不走捷径,理解到,自己亲自动手做一遍,知识才是自己的。行动是最好的老师!
并且我们的演示车模一定不是最优方案,更好的方法、算法等都需要车友们去思考和发现,这样你才能成为一名合格的工程师,将来才能有一技之长。所谓的工程实践活动,就是需要你去实践,根据比赛要求设计制作小车,才会有收获,最后,祝愿车友们制作出让自己满意的小车,最终能在竞赛中取得自己满意的成绩,玩的开心!
感谢来自重庆交通大学的西凉马戏团车友的支持。欢迎交流共创,如有疑问可通过QQ:2737102209留言进行交流互动。欢迎各位持续关注可达鸭的Gitee、立创开源平台和GitHub的开源项目、技术分享。