大家好,又见面了,我是你们的朋友全栈君。
▲ 李佳昊 王谢援 吴涛
简 介: 在研究基于电感的智能车方向控制时发现了弯道拟合度高的差比和差加权算法。本文从算法的发现、算法原理出发对差比和差算法进行描述,并使用MATLAB、Python建模对其弯道拟合度高的特点与其他优势进行证明。
关键词
: 智能车,电感,MATLAB,电磁组
01引言
在研究基于电感的智能车方向控制时,首先使用了较为普遍的电感差比和加权引导方案。调试过程中,发现小车对于弯道的敏感度不理想,故多次尝试修改横纵电感权重,或将代码推翻重写,寻求理想的结果。
进行数次代码推翻重写后,偶然产生了一次期望之外的结果,小车绕赛道逆时针行驶(在调方案)时,其对于弯道的敏感性和拟合程度都在预期之上,成功进行速度测试后,开始精调参数。针对小车对弯道敏感度超出预期的现象,初步采取了降低方向比例控制系数(P)的措施,调整后,发现小车在一些顺时针方向弯道上的行驶出现较大问题,针对问题进行排查、分析、数学论证后,产生了电感方向控制的差比和差加权算法。本文从问题的发现与解决出发,详细描述电感方向控制的差比和差加权算法的发现、原理、参数调试方法,并使用MATLAB建立模型解释其工作原理。
02发现与构造
1.1 算法的发现过程
电感差比和差加权算法是在进行电感差比和加权算法调试时发现的。在调试过程中,建立电感差比和算法公式:
公式C1中,LM、RM是左中、右中两个电感获取电流经硬件、软件放大后的输出值,L、R是左、右两个电感的输出值,LIMIT是一个限幅系数,A、B是加权参数,电感的排布方式参考图C1.1,由左到右分别是L,LM,M,RM,R。
▲ 图C1.1 电感排布图
将公式C1的输出误差输入智能车方向控制系统,发现小车对于弯道的拟合效果差,多次调节B参数、方向控制比例系数,弯道拟合效果有所上升,但仍然不理想。在当时初步判定是参数调节的思路错误,以及遍历程度有所不足,故多次重新进行数学推演、参数遍历,尝试获得更优的结果。
一次算法推倒后的参数遍历中偶然产生了逆时针行驶时弯道的敏感性、拟合程度高于预期的现象。为增强弯道拟合效果,适当的降低了比例系数,但调整后产生了顺时针行驶困难、S型弯道难以拟合、大半径弯道切外环行驶等问题。对问题进行排查,发现在复制、粘贴时偶然将算法公式写成:
公式C2的左右不对称性造成了小车于逆时针(LM>RM)赛道的适应性良好,却对顺时针赛道适应性差的现象。对于排查后产生的问题,没有立刻进行修复处理,而是先对其逆时针赛道的良好适应性进行了分析。
首先尝试对错误算法逆时针赛道良好适应性的产生进行理论假设,当小车入弯时,电感差比和加权算法中位于分子上加权的(LM+RM)增大,导致err产生减小趋势,该减小趋势导致电感差比和对于弯道的敏感度下降。而当把分母上的(LM+RM)改为(LM-RM)后,小车入弯时err的分母增大趋势显然下降,err产生的减小趋势更弱。因此,小车对逆时针赛道的适应性增强了。
此外,由于在长直道上,LM和RM的值趋近于0,所以更改后的式子对小车在长直道上行驶时几乎没有影响。
1.2 算法的构造
为进一步证实理论假设的合理性,对算法进一步的修改,更改后公式为:
使用公式C3,小车顺时针、逆时针分别发车,观察其差别以及对弯道的拟合程度。测试结果表明,使用公式C3进行测试的小车,在顺、逆时针行驶时效果几乎相同,并且对于弯道的拟合程度和敏感性皆高于使用公式C1时的测试结果。
由于算法的改变,分子与分母上(LM+RM)加权系数显然不再需要保持一致。对算法参数进行调整后得到了一套稳定的直道弯道行驶方案,使用公式C4。
公式C4即为差比和差加权算法的最终式,由于原LIMIT系数不再起限幅作用,改作比例系数P。
03算法优势的数学证明
2.1 构造小车过弯电感值变化模型
欲对算法进行建模证明,首先要对小车过弯时,左、右电感的变化函数进行建模。现将小车置于直道与弯道相接处,使其电感前瞻位于直道与弯道交线正上方,并将小车沿中线缓缓向前推,每隔相同距离记录电感数据,直到左、右电感数据无明显变化时为止。
测得小车四个电感值如下表:
▲ 表C2.1 电感采样表
分析、权衡,使用以下函数对四个电感数值变化进行拟合:
拟合效果如图C2.1.1,C2.1.2。
▲ 图C2.1.1 电感LM(左),RM(右)拟合效果
▲ 图C2.1.2 电感L(左),R(右)拟合效果
2.2 进行不同算法位于相同位置的内、外环反馈比较
由于采集电感值时,时刻保持小车位于赛道正中,故还需要研究小车位于内环与外环的差异。由于小车左、右水平电感(L,R)受到小车左、右位置影响不大,而受小车前、后位置影响较大,采取固定L、R值的方式来确认小车的位置,并研究输出误差err随LM、RM变化规律。
由采集得到电感值可以得到小车入弯程度相同时,不同位置(L+R)、(L-R)的值变化不大,而LM、RM变化较大,所以固定L、R的值来表征小车入弯的程度,根据公式建立以下函数模型:
分别取n=0情况下L-R=300,L+R=2400;L-R=500,L+R=2200;L-R=800,L+R=2000来表示小车刚刚开始入弯,小车基本进入弯道,小车完全进入弯道,并使用公式C5来计算(LM-RM),(LM+RM),使用MATLAB画出输出误差与小车位置关系。
▲ 图C2.2.1 入弯初期算法比较
▲ 图C2.2.2 入弯中期算法比较
由图2.2.1,2.2.2可以看出,小车刚刚入弯,虽然差比和差算法所带来的输出误差曲线的斜率较高,但是两曲线之间没有明显的区别。小车初步进入弯道后,差比和算法在内环的输出误差图像斜率骤降,系统缺乏鲁棒性。
▲ 图C2.2.3 弯道内算法比较
由图C2.2.3可以看出,小车基本进入弯道内,此时差比和在外环的输出曲线已经出现负斜率,难以维持负反馈,此时小车若是受到一定程度的扰动,很可能因超出算法承受阈值产生过调抖动甚至冲出赛道。相反的,差比和差算法的输出误差曲线和其他入弯阶段的趋势基本保持一致。
▲ 图C2.2.4 理想假设
若是LM-RM继续增大到一个实际难以达到的数值,可以看到差比和算法已经崩溃,但是差比和差算法仍然保持其原有特性不变。
由此可以证明,电感差比和差加权算法,相较电感差比和加权算法对弯道有着更高的拟合度,更加能够适应外界干扰。
2.3 进行不同算法动态入弯灵敏度比较
将公式C5变式,得:
代入入公式C6,C7,使用MATLAB对x,y,err进行三维建模,结果如图C2.3.1。
▲ 图C2.3.1 三维模型
在三维图像中,除差比和差加权算法没有差比和加权算法所产生的边缘上卷现象(对应图C2.2.3,C2.2.4中斜率翻转区域),没有发现明显特征,故尝试沿Y=X对三维图像抽样,进一步进行分析,抽样后如图C2.3.2。
▲ 图C2.3.2 抽样后曲线
抽样后即为小车持续沿中线走时的误差反馈,发现差比和加权算法与差比和差加权算法的灵敏度差异并不明显。结合C2.1的静态分析,推断差比和算法对弯道有更高灵敏度的原因是小车入弯时往往有切外环的趋势,差比和差算法能够提供更加稳定的负反馈所致。
C2.4 差比和差加权算法对比差比和中间电感偏置算法的优势
未加比例系数时,差比和算法会将输出误差限制在1以内,但是差比和差加权算法显然突破了这一限制,这也代表着差比和差加权算法损失了一定的赛道适应性,每次更新赛道,在参数上都要进行一定程度的修改。也就是说,差比和差加权算法不能像差比和一样,因为其对于各种赛道适应性高的优势规避与其他无此类优势算法的竞争。
这就不得不再谈一下公式C6:
可以看到,分子和分母上都有(LM-RM)参与运算,不难看出(L-R)是一定小于(L+R)的,那么理论上只要不出现k比k+n大到一定程度的情况下,该公式可以看作传统的左右水平电感差比和加权,再加上一部分(LM-RM)的加权,那么问题就产生了,为什么我选择电感差比和差加权算法,而不是直接在水平电感差比和算法后,加上一个带比例系数的(LM-RM)来偏置呢?
首先,通过观察可以得出第一个结论,公式C9的调试过于复杂,差比和加权算法在没有比例系数的情况下,输出是一个小于1的数,而(LM-RM)的值太大了,需要将其乘上一个非常小的数,或者将差比和运算后乘上一个非常大的数,才能使偏置项和差比和互相匹配。并且,这么做又会产生一个更大的问题,即哪怕信号源或赛道产生了一丝的变化,其影响都会在式子中被放大,算法的稳定性哪怕比上将(LM-RM)、(L-R)直接乘以比例系数作为误差输出的算法还要差得多。
其次,尝试对水平电感差比和偏置算法进行了建模,公式如下
将中间两纵向电感的差值乘以1/3000才得到一条不错的曲线。
▲ 图C2.4 曲线对比
图C2.4中,差比和偏置算法的内环区数据斜率要小于差比和差加权算法,而曲率又更大,小车更难切内环行驶。如果想让小车切内环行驶,就需要增加中间两纵电感的权值,但是如果算法的曲线出现了差比和加权算法的内环区反增的趋势,则会产生过调抖动,容易冲出赛道;若是出现了曲率过大的情况,那么小车就更难切内环行驶。
差比和所输出误差值曲线更加贴合一次曲线,能够支持小车入弯切内环行驶,而其他很多算法无法做到这一点,这也是差比和差算法出色的优势之一。
2.5 小结
本章从不同角度入手,用各种方式证明了电感差比和差算法对弯道道型有着良好的亲和度,同时也具有很高的稳定性;证明了电感差比和差加权算法相较于电感差比和加权算法,水平电感差比和偏置算法的优势。
除此之外,电感差比和差算法由于分母的减小,其输出误差所需的比例系数也有所下降,小车在长直道型上行驶时的抖动也会有所下降。需要注意的是电感差比和差相较于电感差比和加权算法,赛道适应性有所下降,需要对各项参数投入更多关注。
04算法调试
3.1 调节电感差比和加权算法
直接调节电感差比和差加权算法,可能会因无法直观的了解各参数而走弯路,故建议先调出一套相对稳定的电感差比和加权方案,然后将其改写为电感差比和差加权算法。这样做的理论依据有二,其一,长直道上,纵向电感值接近于零,两算法差距不会太大。第二,由第二章所建立的模型中可以看出,小车沿中线行驶时,两加权算法的输出误差曲线相似,差比和差加权算法的参数可由差比和加权算法参数微调获得。
3.2修复过调
以电感差比和加权算法调试出一套慢速稳定的方案后,将算式改写为差比和差加权算法,此时由于分子的下降,小车在弯道道型出现小幅度过调。此时轻微降低比例系数(约为差比和加权算法的0.7到0.8倍)即可完全拟合。
※ 参考文献
[1]殷剑宏,吴开亚.图论及其算法[M].中国科学技术大学出版社,2003.
[2]卓晴,黄开胜,邵贝贝.学做智能车:挑战”飞思卡尔”杯[M].北京:北京航空航天大学出版社,2007.
[3]王盼宝主编.智能车制作[M].北京:清华大学出版社,2017.
[4]谭浩强著.C程序设计[M].北京:清华大学出版社,2003.
[5]张文春.汽车理论[M].北京:机械工业出版社.2005.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146546.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...