赞
踩
本人是17届的参赛选手,是一个刚刚入门智能车的新手,想把我这半年的思路整理给大家,希望能帮助到大家,如果有什么不对的地方希望大家能够指出。
1.首先是边线的获取
我边线的获取方法是爬线法,通俗来讲就是从屏幕的最下面往上面寻找边线,以60行120列为例,如果我们要爬线,我们必需知道最底行的左右边线(在这里就是第60行的左右边线),所以我第60行的左右边线获取是从中间往左右两边找第一个跳变点作为最底行的左右边线。
在这里还有一种情况,如果我们遇到了斑马线,如果还是从中间往两边找的话就容易把斑马线判断成左右边线,所以我们要在识别到斑马线时重新确定最底行边线的获取方式,这里可以该成两边往中间找。
确定了最底行之后,我们就可以开始爬线
获取完左右边线之后我们先不着急得到中线 ,我的程序是在元素处理完之后获取中线的值,如果我们这里有一个中线的值,元素处理(补线或者单边操作)之后又一个中值会让舵机抖动(因为有两个中值)。
2.各个元素的识别
环岛:对于环岛的识别,我的方法是比较简单粗暴,左右边线的斜率加连续丢线行数大于一定值
leng为赛道前瞻(可以有效的防止弯道误判)
left1为20行到25行的左边线斜率
ring1为20行到25行的右边线斜率
这里左右边线的斜率获取时需要注意要把那些丢线和跳变的点给去掉不然会让斜率变得很大,看成曲线。
三叉:对于三叉的识别我是左右都丢线的行数过10行加上左右拐点(有1个就可以,这样斜入三叉时路径不好也可以识别)和上拐点。
拐点的判断我十分粗暴,基本就是上三行边线的值减去下三行边线的值大于一定值判断成拐点
这是三叉拐点的判断,值可以小一点10左右
这是三叉上拐点的判断,简单粗暴。
T字 :对于t字的识别同样也是左右有一个大拐点加上左右都丢线的行数过10行,然后没有上拐点。
可以看到t字可以通过上边线来判断是左T还是右T
这是十字拐点的判断,值变成了50。
斑马线:直接上代码,就是找跳变点的个数
这里可以通过我们上面记录的左右丢线行数来确定车库在车的左边还是右边
3.前瞻的获取
在我看来这个前瞻是非常好用,既可以帮助我们防止元素误判,也可以帮助我们变速和加速。
获取:我们从图像最下一行(距离车最近的一行)中心位置,向上搜索边界点,能得到一个前瞻距离,参考下图的红色直线,在直道时前瞻值会较大,弯道时前瞻值会较小,如下示意图所示:
这是zf老哥的思路,非常好用。
代码:
总结:
上面就是我的方法,可能一些地方过于简单粗暴,我在此只是做一个简单的分享,希望能给大家带来帮助,如果大家需要后期我会继续更新,也欢迎大家加我讨论学习一起进步。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。