电磁循迹作为智能车相对简单的入门循迹方式,一直都是大部分人刚开始接触时所使用的方案。而对于电磁处理的方法,主要有差比和处理以及归一化处理。最近在看吴恩达老师的人工智能课程时,在一节课程中讲解了关于归一化的一些好处,由此联想到自己在做智能车比赛时所采用的电磁循迹算法。
   在当时我也对电磁同时进行了差比和以及归一化的处理,后来发现在对中间电感进行差比和处理之后,实际产生的数值与原先差比和所产生的数值并无太大区别,遂放弃了继续归一化,全部采用了差比和的处理。也没有去想过为什么好多学校都采用了归一化处理的方式的原因。

  所谓归一化,最简单的理解就是将你所需要的数据限制到一个很小的范围之内,方便之后的处理。而同时,归一化其实也有多种的表达方式:

1.最大最小值归一化:将采集的数值缩放到[0,1]之间

   

//该代码为网上所找的历程
Sensor_Left =   analogRead(1);    //左边电感采集值
Sensor_Middle = analogRead(2);    //中间电感采集值
Sensor_Right =  analogRead(3);    //右边电感采集值
if (Sensor_Left + Sensor_Middle + Sensor_Right > 25)
{
	sum = Sensor_Left * 1 + Sensor_Middle * 50 + Sensor_Right * 99; //归一化处理
	Sensor = sum / (Sensor_Left + Sensor_Middle + Sensor_Right);    //求偏差
}
Velocity = 35;                                                    //电磁巡线模式下的速度
Bias = Sensor - 50;                                               //提取偏差
Angle =Bias * 0.65 + (Bias - Last_Bias) * 0.1;                    //方向PID
//Angle = abs(Bias)*Bias * 0.02 + Bias * 0.074 + (Bias - Last_Bias) * 1;
Last_Bias = Bias; //上一次的偏差

 2.均值归一化:将你所采集的数值缩放到[-1,1]之间,使数据的均值变为0

 3.标准值归一化:将数值缩放到0附近,且数据的分布变为均值为0,标准差为1的标准正态分布。

 σ(x)是x xx的标准差,计算公式为:

其实以上的方法,也可以归做特征缩放,它对基于距离的算法特别重要。运用到智能车电感循迹上就显现在了不同位置的,不同摆放形式的电感在磁场线中的相对距离位置。

而对于归一化处理的优点,就在于:

1.可以消除特征间单位和尺度差异的影响 (电感在采集电磁信号值时,最大值和最小值之间的差距较大)

2.能提高梯度下降法求解最优解的速度(收敛所需的迭代次数更少)

关于第二点,以下图为例,左图为未进行归一化处理的损失函数,右图是进行归一化后处理的损失函数。红线可以简单理解为找到最优解的方式。不理解上面的一些术语没关系,但是我们可以很明显的看出,在进行归一化处理后,右图红线部分可以很快的找到最优解。

以上仅为我个人对电磁为什么要用归一化处理的理解, 如有错误,还望指正。