正,校正的方法就是在不同的行乘以一个不同的系数,系数大小的确定是先进行理论粗略的计算,然后再在事物上进行校正。
4.1.2黑线的提取和中心的计算
由于智能汽车大赛在第八届对规则进行了改变,其中最为明显的就是在小S弯处设置了长为一米的虚线,这就为我们黑线的提取增加了难度。另外由于十字交叉也存在黑线不连续的特点,我们在黑线提取的过程中引入一次线性预测、黑线校验和一次线性插值等方法,这样可以将黑线不连续的边界也连接起来。 黑线提取算法的基本思想如下:
Step1:首先确定图像二值化的灰度级阈值THRESHOLD;对于左边界,如果左边两列灰度值均小于阈值并且右边一列大于等于阈值,则判断为左边界;同理,对于右边界,如果右边两列小于阈值并且左边一列大于等于阈值,则判断为右边界;
Step2:从图像的第0行开始遍历,直到连续三行找到图像的左右边界,置标志变量beginFlag为1;否者如果遍历到图像HEIGHT-1行,表明提取失败,退出;
Step3:当找到该行的左右边界时,同时记录下前三行已找到的边界(可以不连续),如果前一行已找到的边界所在行与当前行不相邻,则利用一次线性插值补全未找到边界的行;否者,搜索下一行的左右边缘;
Step4:利用前三行已找的边界信息,进行一次线性拟合出直线方程,并利用该直线方程预测改行边界的位置col,根据经验左右设定一个余量e,在[col-e,col+e]范围内搜索该行的黑线边缘,当搜索到边缘后,进行边缘校验,滤掉明显不是边缘的噪点; 赛道中心线提取:
由于智能车大赛在第八届赛道中心的黑线调成了赛道两边,而智能车想要在赛道上平稳的行驶,不冲出赛道,必须知道赛道的中心,为此,我们利用提取的左右两边的黑线坐标对赛道的中心进行了计算,基本思想如下:
(1)当该行左右黑线均已提取到时,则将左右黑线位置的平均值作为中心线的位置; (2)当只有单边黑线找到时,则根据找到的边界平移半个赛道宽度作为中心线的位
第 17 页
置;
(3)当左(右)边界的结束行小于右(左)边界的开始行时,如果按照步骤(2)来计算赛道中心线的位置会出现中心线不连续的情况。为了解决该问题,我们利用前半部分连续的中心线一次线性预测下半部分第一行的中心线位置,则下半部分的中心线位置以该部分第一行的位置来计算。
图4.1 十字交叉
图4.2 小S虚线
第 18 页
4.2方向控制方案
图4.3 方向控制流程图
起跑线的判断:
全国大学生智能车竞赛规定,智能车必须能够识别起跑线,并在跑完一圈以后能够自动停止在3米以内的赛道中,否则在本来的时间基础上加上1秒,如果加上1秒那必须将速度加大很多才能挽回。然而,当速度本来就较快时,由于智能车本身的结构原因,很难再进行提速,因为速度过快可能会导致翻车等一系列不利现象。因此,对于起跑线的精准
第 19 页
识别显得至关重要。观察图4.9可知,起跑线的颜色从左到右依次为“黑”→“白”→“黑”→“白”→“黑”→“白”→“黑”,对应于微控制器内的数字信号即是0→1→0→1→0→1→0,因此我们可以利用这个特征来识别起跑线。即当这部分图像中出现这样的颜色规律时就判定为是起跑线。当跑完第二圈,第三次检测到起跑线时,表明已经完成了比赛,要在冲过起跑线后刹车,在三米范围内停车。
4.3 分类进行方向控制算法
4.3.1 直道的方向控制算法
对于赛道中的直道,是方向控制中最好处理的一种情况,因为只要小车没有偏离赛道,就可以不进行偏转,而当智能车偏离赛道时也只需要一个较小的偏转,让智能车能缓慢回归赛道就可以了,具体的方法是计算扫描到黑线的偏离中心线的平均值和黑线的斜率,再将这两个数分别乘上各自的比例系数,加上舵机偏向中心位置时需要给出的高电平的值,作为PWM波的高电平送入给舵机,就可以实现直道上的智能车方向控制了。
4.3.2 大弯的方向控制算法
在道路中遇到大弯时需要转弯,转向角只受弯道的弯曲程度影响,但是距离大弯多远就开始转弯却需要受到当前速度的影响,因为舵机在转向时有一定的延时,舵机转60度大约需要110毫秒,而智能车的最快速度可以达到10米秒,如果智能车当时运行的速度就是10米秒,那么当舵机转过60度时智能车已经走过1米多了,所以不能等到了弯道才开始转弯,而是需要提前转弯,而且速度越快,越是要提前得多,所以智能车转弯提前多少就由速度控制,用比例控制就能收到很好的效果,而转弯时转多少却仅仅受弯道的弯曲程度控制,弯曲程度越大,转向角就也越大,弯曲程度越小,转向角也就越小。具体的对应关系通过实验获得,在此没有列举出具体的数据。
第 20 页
4.3.3 急弯的方向控制算法
急弯的方向控制算法与大弯的方向控制算法相似,也是需要提前转弯,而且提前多少转弯也要受当前速度的控制,速度越大,越要提前转弯,转向角也是用弯道的弯道程度来决定的,急弯比大弯的弯曲程度更加大,因此需要的转向角也要相应增大。急弯的方向控制比大弯更难,很可能出线,因此在急弯的方向控制时更应多加注意。
4.3.4 “大S型”道的方向控制算法
―大S型‖道一般是指―S型‖道最靠左的黑线和最靠右的黑线之间相差的距离大于60厘米,这是因为全国大学生智能车竞赛中的赛道为60厘米,冲出赛道就算违规,因此―大S型‖道是不能直接冲的,但是我们可以转尽量小的弯来使智能车通过的路线为最短,而且转更小的弯也可以使得速度不至于减少太多,实现转尽量小弯的方法是扫描最左边和最右边的点,并得出这两个点中离智能车最近的点是左边还是右边的,如果这个点是最右边的,那么智能车的最佳行驶方向就为这个点靠左30厘米的方向,如果这个点是最左边的,那么智能车的最佳行驶方向就为这个点靠右30厘米的方向。利用这种算法可以实现智能车走最少的路程,转最小的弯。但是用这种算法智能车有可能偏离赛道的距离超过30厘米,为保险起见,这个阈值最好设低一点,根据赛车的运行情况来看,将阈值设为25厘米就比较保险了。
4.3.5 “小S型”道的方向控制算法
―小S型‖道一般是指―S型‖道最靠左的黑线和最靠右的黑线之间相差的距离不大于60厘米,智能车过这种弯道时,基本可以从中间直接通过,而不需要转弯和减速。因此,找准―小S型‖道的正中心显得至关重要,因为只有找准了―小S型‖道的正中心,智能车才能不转弯不减速地通过―小S型‖道,如果―小S型‖道的正中心找得不准,那么智能车就很容易冲出赛道。找―小S型‖道的正中心的
第 21 页