赞
踩
电感排布方案可参考:学做智能车–电磁探究篇
岔路的处理很大程度上影响着电磁车的整体速度,它无法做到像环岛一样有一个预环岛判定,它只能做到判定到即入岔路。处理方法就是在物理层面上加长电感前瞻,让他提前预判。
三叉判定思路如上图所示,当车身前瞻没有抵达岔路时,第一排的M电感和第二排的M_2电感的差值等于零或者在一个很小的范围,当车身前瞻抵达岔路时,第一排的M电感大于第二排的M_2电感,并且它们二者之间有一个差值,当这个二者电感差值大于一个阈值时,及判定到三叉。当然最终的判定条件不能只写这一个条件,还要加上左右两路电感值在一个范围作为判定条件。`
if(M>180&&M<500&&M_2>350&&M_2<600&&L>100&&L<250&&R>100&&R<250&&(M_2-M>150)&&Statu==1){ //岔路
CHALU_FLAG1=1;
Statu=7;
Record_Angle=1;
chalu_running_flag = 1;
判定到岔路之后,进行舵机打角,这里我手动给差比和误差一个固定的值,让舵机进行固定打角,固定打角之后,要判定车身是否进入三叉,这里我用到了陀螺仪对角度进行积分,当向左或向右偏移一个角度后,多陀螺仪积分的数据进行一个判定,大于一个阈值代表车身已进入三叉内,然后切换成三叉内寻迹。`
if((Angle>100 || Angle<-100)){
// BeeOff;
CHALU_DELAY_FLAG1=0;
Angle=0;
Record_Angle=0;
Statu=1;
岔路内的赛道下面因为只有一根电磁线,电感所能读出来的数值相比其他元素地方要小很多,所以在岔路内的差比和计算方法和其他地方一样,车身会极其不稳,影响最终的速度。这里我的解决方法是对差比和的计算结果进行了一个加倍。当你进入岔路之后,你的方向环也需要去重新细调。
if(chalu_running_flag)
{
cha_1 = my_sqrt(a_L*1.8)-my_sqrt(a_R*1.8);
he_1 = my_sqrt(a_L*1.8)+my_sqrt(a_M*1.8)+my_sqrt(a_R*1.8);
bi_1 = cha_1/he_1;
poserror = (int16)(bi_1*100);
}
这里出岔路我没有对舵机进行控制,因为电磁车只要你的车身姿态够稳,它是一定能在寻迹的状态下出岔路的。!!!车身姿态要稳!!!
因为我岔路内的差比和计算公式和正常赛道不同,所以要对电感值总和进行判定,当电感值总和大于一个阈值,代表电磁车已经从出岔路进入元素外的赛道。
if(chalu_running_flag)
{
BeeOn;
ele_sum = L+M+R;//第一排总的电感值
if(ele_sum>1000)
{
chalu_running_flag=0;
ele_sum=0;
BeeOff;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。