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