|
|
楼主 |
发表于 2016-2-5 17:52:35
|
显示全部楼层
" Q8 K. K, z6 d, |& p8 b
程序的主要思路是用反射光强度的差来赋给移动转向的幅度,我这里是用的反射光强度减去40,,我这边测量出来的黑线和白线的反射光强度分别是8的58,平常我的习惯是取两个数的平均值,也就是33,之所以用40是为了让车辆在快速行驶中突然遇到垂直黑线(直角转弯)的时候,能够更大幅度的进行拐弯,防止车辆还没来得及拐弯就冲过黑线。我的反射光强度减去40的值乘以了一个S和2,其中的S是一个辅助转向的变量。( {. J8 n0 `1 n: p* ?1 L# o
4 W/ b0 E' Q' P+ {4 t0 O( f7 l
我把寻线的图按照反射光强度分成了两个区域,反射光强度14-53以内是快速小幅度寻线区(A区),以外是低速大幅度寻线区(B区)
, L! \; y% f: @! Z: v当光感处于A区的时候,S设为0.8,转向幅度就是(当前反射光强度-40)*0.8*2,这是一个比较稳定的幅度,另外X开始增加,速度为每循环一次增加0.1,这样缓慢加速是为了小车在突然进入A区的时候,不会因为瞬间的速度过快而再次冲入B区,造成车辆一直大幅度摇摆。: {8 }& m6 J# E s* A
当光感处于B区的时候,S以每循环一次就增加0.1的速度递增,使车辆的转向幅度迅速增大,但是增大速度过快的话会造成车辆在本该高速寻线的时候如果扫到B区,会以很大的幅度进行回转,造成车辆大幅度摇摆。X会从当前速度开始递减,直到X=30,其实这个递减的必要性不是特别大,直接将X写成30也没问题。程序差不多就这么个情况啦。1 }1 f: t' B( Z# \! p
|
|