基于线阵CCD的环岛识别与环岛路径规划浅析
前言
在第十九届全国大学生智能汽车室内赛道竞速组中,依然保留有环岛这一个元素,一直以来逐飞的演示车模都只讲了基本赛道的循迹思路,并未对特殊元素进行分析,近期,还是有一些初次参赛的车友们在咨询如何处理环岛的思路,于是想着干脆做一期环岛的思路分享吧,这样第一次参赛的同学们能有个基本的参考,老司机们应该是不需要了,有需要的同学可以阅读参考一下,同时本文确实会讲得比较基础,因为是基于线阵CCD来进行分析的,摄像头如何识别可以以次思路来展开,摄像头的数据更丰富,依据更多,如果你能实现CCD对环岛的识别,那摄像头就更不在话下了,举一反三的过程就留给同学们自己去多尝试啦。
一、基于线阵CCD的环岛识别
1.1、入环岛前
根据赛道特点,在入环岛之前,首先会是一条直道(或长或短),如下图所示,橙色为小车位置,红线为CCD视野范围,从状态①可以明显看到,CCD识别到了左边线值为39,识别到了右边线值为89。这个时候,我们可以通过右边线减左边线得到赛道宽度(89-39=50)。我们就可以以这个值作为基本赛道宽度标准。
1.2、左边界突然丢线
随着小车继续往前直行,就会到状态②,可以看到,小车因为一直走的直线,所以右边界的值理论上依旧是89,实际值在89附近波动,而左边界搜索不到边线。根据环岛的特点,左边界突然丢线,右边界的值变化不大的情况会持续一段路程。这时我们就可以认为识别到了环岛。
虽然,左弯道也会出现左边突然丢线的情况,但是左弯道搜索到的右边线会发生很大的变化。
从上图中,就可以明显看到,环岛右边线的值几乎不变,而弯道右边界的值发生巨大变化。可以以此条件来避免误识别。
1.3、左边界补线
从状态②到状态③的过程中,CCD识别未找到左边线,此时,我们可以使用右边线减赛道宽度来补左边线(89-50=39),如上图绿色虚线所示。补线后的左边线值为39,右边线值为89,此时小车继续直行。
1.4、左边界找到边线
小车继续前进,从状态③到状态⑤,可以看到,能搜索到左边线,且紫色的虚线部分左边线正在逐渐增大。蓝色的虚线部分左边线正在逐渐减小。在状态③到状态⑤之间,我们可以通过左边线的最大值来确定状态④。
从图中可以看到左边线的趋势为逐渐增大到逐渐减小,当左边线一直在增大,突然减小的时候,我们就可以确认为左边线最大值,标记为状态④,通过状态④把逐渐增大和逐渐减小分割开。
1.5、左边界补线
从状态③到状态④,可以看到,能搜索到左边线,且左边线正在渐渐增大。这个时候,我们同样需要使用右边界减赛道宽度去补左边线,才能保证小车的行进姿态稳定。
1.6、右边界补线
从状态④到状态⑤,左边线正在逐渐减小。我们就需要通过左边线加赛道宽度去补右边线,如上图绿色虚线所示,来入环岛,这样入环岛的姿态就会比较流畅。
二、入环岛路径规划
2.1、右边界补线
在入环的时候,首先是状态⑥能搜索到左右边线,然后是状态⑦左边线能识别到,右边线丢失,最后是状态⑧能搜索到左右边线。此时,我们可以通过右边线能否找到线来判断是状态几。实际上在我们小车速度较快的情况下或者形势姿态不好的时候,可能搜索不到右边线丢线的情况。这个时候,我们在状态④前进,可以通过左边线补右边线,行驶一段距离后,再去判断右边线是否找到,找到了此时一定到了状态⑧。
2.2、左边界补线
在状态⑧,我们需要通过右边线去补左边线,因为在环岛中,可能会存在左边线会丢线,如状态⑨所示。假设红色的虚线代表CCD视野范围,可以看出右边线识别到了,但左边线未识别。
三、出环岛路径规划
3.1、等待出环
在出环岛的时候,首先是未找到右边线,如状态⑩所示,在状态⑨的时候,一直是通过右边线去补左边线,然后获得赛道偏差,到了状态⑩,右边线未寻找到,此时,就可以通过右边线丢线前的赛道偏差来锁定一段路程,然后再来搜索右边线。
3.2、左边界补线
当找到了右边线,如状态⑪所示。这个时候,为了保证小车的进行姿态。就需要使用右边线去补左边线,让小车保持直线行驶完成出环岛动作。
继续前行的过程,还是通过右边线去补左边线来完成小车流畅的出环岛姿态。
在左边界丢失的过程,按照补线保持继续前行,如状态⑬所示。
3.3、出环完成
一直运行到到最后状态⑭这里,CCD能再次搜索到左右边界,至此整个环岛识别与环岛路径规划就此结束。
四、陀螺仪环岛出环判断
对于出环岛的识别,除了3.1章节的右边界丢线以外,还可以使用陀螺仪进行出环判断。在入环的时候,使用陀螺仪进行角度积分,积分的角度可以用来辅助判断是否可以出环,就可以结合第三章节的条件来继续出环岛。
例如,角度积分在300度到400度之间,判断到出环条件,就直接出环。这样就可以避免在环岛内误判,也可以避免无法出环岛。
五、CCD循迹的演示车模运行视频
此演示车模只为验证上述方法是真实可行且不影响其他路段的运行,新手朋友们可以参考这个思路去试试效果,当然,这个方法不一定好,但可以当做一个参考,对于摄像头识别环岛,就如同前言所说,信息更多,一定可以做的更可靠,思路也可以以此来展开,方法就更多了。这些就同学们自己多琢磨吧。
结束语
此篇环岛识别与环岛内路径规划浅析就到这里了,希望能帮助到一些新手朋友们去理清楚思路,也感谢各位的支持。本次环岛识别演示车模基于逐飞红孩儿线性CCD进行的验证,或许能对新手入门有些许帮助,仅供思路探讨。演示车模上所有电路板的PCB及演示车模的程序软件,均不公开,不出售,不赠送,只做验证后的思路分享。这些内容并不复杂,是完全符合大学生能力定位的,如果一些新手朋友还比较迷茫,可以尝试根据本文分享的思路行动起来,编写代码去验证,希望每个参赛的同学都能知其然并知其所以然,不偷懒,不走捷径,理解到,自己亲自动手做一遍,知识才是自己的。行动是最好的老师!
最后,为方便大家翻阅今年逐飞分享的智能车竞赛演示推文,下面对今年相关的推文做一次汇总整理,点击标题可跳转至相关推文:
镜头组(NXP-MicroPython赛道)逐飞演示车模浅析
更多第十九届相关的推文、资料、视频及开源项目汇总可以通过这篇推文进行查找:
欢迎持续关注“逐飞科技”微信公众号,逐飞的开源项目、技术分享及智能车竞赛的相关信息更新都会在该公众号上发布,点击下方通道或识别下方二维码即可关注。