智能车制作

 找回密码
 注册

扫一扫,访问微社区

智能车制作 门户 精彩视频图片 查看内容

简谈自己对十字的处理

2016-7-8 00:57| 发布者: q987307161| 查看: 806| 评论: 132|原作者: lemon~cmc

摘要: 自己的飞思卡尔也告一段落了,不再太去在意结果了,还是很享受这其中的过程。 一直在论坛潜水,也没有贡献些什么,一直在学习,也是忙于调车,所以很少发帖子。技术这东西就应该在大家一起探讨下,才能取得更快得进 ...
自己的飞思卡尔也告一段落了,不再太去在意结果了,还是很享受这其中的过程。 一直在论坛潜水,也没有贡献些什么,一直在学习,也是忙于调车,所以很少发帖子。技术这东西就应该在大家一起探讨下,才能取得更快得进步。曾经很长一段时间都纠结在十字上的。也不大清楚大家是否有和我遇到同样的情况。这里发表一点自己的想法。希望对大家有一点启发,仅供参考,切入正题吧。
最让人纠心的情况:斜入十字 (说明)如果是时间充裕的话,可以考虑,通过比赛,才发现,其实曾经的担心是多余的,因为比赛的赛道基本进十字有一段直线,可以让车摆正的。当然如果想做到万无一失,精力又充足的情况下,就可以试着想想。 不废话了,看下情况吧。
QQ截图20120728122210.png
(图1)斜入十字看到的情况
不做处理的时候,提取中心

QQ截图20120728122552.png
(图2)中心提取
当然这也和大家的中心提取算法有关,我是通过寻找两边的黑线来计算中心。
显然在这里有一段中心是错误的,在没有处理的时候,我的车跑到这里,常当小S在跑了,直接跑左边了,进不了十字。
我想到的处理方式:
跳变+拐点
也就是跑道的边线应该是连续的。不应该出现跳变的情况,即使是一边丢线了,那么丢掉的边线出来的地方也应该是从左右极限的位置出来,而不是直接出现在中间或者其它的地方。出现跳变应该就在十字的地方了,当然寻找跳变大家要小心一点,左右边线要找对。其实在比赛的时候,干扰会更少一些,其实是更有利的。
                              
边线.png
                                          (图3)左右边线提取
在记录下左右边线的位置时,再通过计算如果边线相邻位置相差大于20我就认定为跳变了,我是采了145列(正常情况下,相邻行边线位置差也就1到3左右)。当然为了抗干扰,当发现跳变时,从跳变位置向上跳几行取边线值,向下跳几行取边线值,相减如果依然满足条件,就认定为跳变了,否则认定为杂点干扰。
                                                                     

边线跳变.png
(图4)提取边线跳变
如果赛道不存在太大干扰的话,基本是可以找准确的,再寻找拐点。拐点依然是根据边线,边线的变化趋势。比如说某点之前的左边趋势是向左的,而该点之后的趋势是向右的,那么就认定为一拐点(我这里用了比较简单的方式,就是用差相乘的方法,比如说该点是左拐点,该点左线位置减上一行左边线位置得到正值(即趋势向右),该拐点后一行左边线位置减该点左线位置得到负值(趋势向左),相乘得到就是负值)。这里同样做一些抗干扰处理,和跳变的处理差不多。
                                                                     
拐点.png
                                                                                 
                                  (图5)提取边线拐点
在跳变和拐点都找到的情况下,就可以认为是十字了,这个时候就只需要把错误的中心给补出来就可以了,车子就能走对了。
                                                                              
处理后的中心提取.png
                                                                                          (图6)提取后的中心
我们可以看到处理后的中心基本就是正确的了,这里偷了一点懒,其实可以补的更漂亮一些。但是只是为了看到效果,没有浪费算法时间了,直接将跳变行后的中心,直接补下来,一直补到拐点行。因为实际中,我们采集一幅图像,用到的数据只需要一两行而已,只要中心都是对的了,用一两行就可以了。
斜入十字到这里也就能正确进入了。如果想让车跑的更正一些,大家可以再把中心计算的更准确些。

更重要的:可能对大家更有意义的,以上的情况,其实是我们自己为难自己,比赛中基本是不会遇到这么斜入十字的。通常是有一小段直线。看下面更正常的情况.

1.png
这是车子进十字的时候还有一点点不正。其实这处理起来应该就比较容易了。有拐点,并且拐点以上存在两边丢线的情况。如果两边丢线行数达到一定数量,就认定为十字。那么就利用拐点以内的中心值来控制舵机,让车子摆正。
(注)一般情况下,存在两边都丢线只有十字的地方,不过是保证在正确赛道以内,不要在赛道以外了,还去做这样的处理。顺便提一下,我保证有效赛道的方法,是首先用三条纵向扫描线纵向扫来确定有效行,其实也就是动态前瞻的意思了。如下图:

扫描线.png
最中间的是图像的中心,也理解成车子的中间值,左右两条线实际是左右轮的位置。因为没有对图像进行梯形校正,所以左右轮扫描线也以失真的方式扫上去,车子如果直跑的话,两轮走过的位置也就是这左右两对红线的位置了。这样可以保证车是一直在赛道内的。

(2)当不存在拐点的情况:

2.png
近端左右均丢线,连续丢线行大于某个值,认定为十字,取远端有效的数据。从中心向两边扫描,计算中心,取远端的中心值来控制舵机(具体想取那一行,就看你自己觉得哪 一行更可靠就取哪一行吧)。
其实只要在进十字之前将车子摆正了,那么基正十字就不会有太大问题了。这是本人的一些粗略的想法。仅供大家参考吧。希望大家都好好努力,取得更好的成绩。也快走入社会了,想起曾经日日夜夜奋斗的情景,还是会有莫大的感触的。


边线跳变.png

鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 tujunjie 2012-7-28 14:03
沙发,好好学习
引用 1228463834 2012-7-28 14:20
如果是边缘提取算法,十字好像不是很严重吧,我的车过十字不是很严重呢
引用 广陵F3 2012-7-28 15:10
标注下
引用 harmony_china 2012-7-28 15:12
楼主起跑线怎么识别的呀
引用 lemon~cmc 2012-7-28 15:33
harmony_china 发表于 2012-7-28 15:12
楼主起跑线怎么识别的呀

用的红外对管,可惜调试的时候撞掉了,所以起跑线检测悲剧了。
引用 睿之星 2012-7-28 17:13
我用的方法是远方行的最亮的那些点的中心点(数字摄像头)。而遇到斜着入十字的话,我用的是,识别那个直角。(带符号的当前行的横坐标与上下两行的横坐标的差值之和大于某个值。则该行以上采到的边沿数据都舍去)
引用 睿之星 2012-7-28 17:15
哦,说错了,不是上下两行,而且间隔3行。因为间隔1行的差值并不明显。
引用 月下听蝉 2012-7-28 20:25
十字路口,小弟表示毫无压力{:soso_e113:}
引用 一毛钱~~~~~~ 2012-7-28 20:36
马克
引用 840149319 2012-7-28 22:12
{:soso__16984349925490629196_1:}
引用 筱明 2012-7-28 22:33
楼主说的不错的,我是做图像分析的:我提供一种算法思路的,十字的两条线拐点前后实际上是垂直的,但是由于图像失真的缘故,可能采集的到的线不是那么垂直的,至少也是左右变化趋势有的,检测到拐点两边的斜率大于某一个数值的时候就认为是十字 这样能解决部分问题,重要的是采集的图像的视野大小问题,我们摄像头十字时候图片可以完全看到整个十字圆弧的 有时候不好处理的  关于那个起跑线检测  起跑线只是在直道路上,检测到直线的时候才开启起跑线检测 能避免检测错误
引用 Goolloo 2012-7-28 22:41
觉得可以做边缘的斜率提取和中心线的斜率做比较,理论上应该是一样的
引用 bluered 2012-7-28 22:54
学习ing~
引用 陌路樱花泪 2012-7-28 23:06
楼主强大,确实遇到过这种情况……受教……
引用 Smile_Sun 2012-7-29 17:42
引用 丁香花 2012-7-29 20:29
值得收藏!谢谢分享!
引用 lemon~cmc 2012-7-30 10:11
筱明 发表于 2012-7-28 22:33
楼主说的不错的,我是做图像分析的:我提供一种算法思路的,十字的两条线拐点前后实际上是垂直的,但是由于 ...

你的起跑线这种方式防误检应该是有一点效果的。前提是车入直线也必须快速摆正。要跑出好成绩也必须做到这一点。
引用 流星所欲 2012-8-1 08:42
引用 蜈蚁蝗 2012-12-7 22:25

查看全部评论(132)

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-5-3 07:25 , Processed in 0.211372 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部