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