继上一篇规则分析贴之后一直没来得及聊聊对传感器的一些拙见,这一次聊聊线性CCD选型、应用。(楼下有样车视频)
首先还是回到比赛规则,采用线性CCD的组别基本在光电和双车两个组别,其中光电组绝大多数应该还是采用线性CCD作为获得赛道信息的传感器,双车追逐应该也会有部分队伍选择线性CCD作为获得赛道信息的传感器,缺点是信息量偏少,但信息量少也有好处,减少数据处理难度,换个角度看就优点。超车也不会有太大问题,比如以前的光电车避障都能妥妥的,那超车基本也能妥妥的,所以个人觉得用线性CCD做双车没准儿还能更稳定,效果应该不错。关于比赛规则的其他部分有不清楚的车迷们可以多读几遍规则。 关于线性CCD的原理就不再赘述了,智能车赛场上也已经用了这么多年,度娘一下,资料一大把,其实TSL1401CL的原理是128个光电二极管组成的感光阵列,阵列后面有一排积分电容,光电二极管在光能量冲击下产生光电流,构成有源积分电路,那么积分电容就是用来存储光能转化后的电荷。积分电容存储的电荷越多,说明前方对应的那个感光二极管采集的光强越大。反映在像素点上就是,像素灰度低,光强接近饱和,像素点灰度趋近于全白,则呈白电平。 关于线性CCD的选择,有几个要素(无论你是购买还是自己制作都应该至少考虑到这几个要素,当然还有更多的细节考虑需要自己多琢磨): 1、 个头:因为得架高,所以个头轻巧很重要,尤其今年光电组和双车组都是四轮竞速,这个因素就更为重要,架高的传感器不能太重,不利于高速过弯; 2、 工艺:制作工艺最主要的就是传感器及器件的焊接,首先不能有虚焊,更重要的是感光芯片的焊接是否焊正,关于什么沉金工艺除了利于焊接,表面防氧化,导电性好一点,然而对于智能车的这种应用并没有什么卵用,更多的是为了好看,为了提升逼格; 3、 镜头:在焊接都妥当的前提下,镜头的搭配是最重要的一部分,首先,8mm的感光靶面长度并不是随便找一个镜头就能满足其需求,需要靶面为1/2的镜头。这也是很多人做的线性CCD两边有黑点的直接原因,光线都没过去,当然是黑的咯。其次,镜头需要是广角无畸变,当然一点畸变都没有的广角是不现实的,准确的说广角小畸变,畸变量≤5%,广角要广到什么程度呢,个人认为120°广角刚好,且足以满足智能车的需求。再就是镜头的对焦,很多车迷可能往往会忽略这一点,对焦这个过程得结合上位机实时查看镜头拧到哪一个位置才最清晰,有人会问线性CCD又没有图像,怎么知道清晰没清晰?答案是这样的,以逐飞科技的上位机为例,当你看到黑白跳变的边缘过度点最少的时候,就是焦点对准了。说到镜头,不得不提一下线性CCD的成像效果为什么在全白的时候仍然是一条略微凸起的弧线而不是理想化的一条直线,其实道理很简单,因为镜头的进光从中间洒往两边的强度逐渐减弱,传感器感知到的光线强度当然就是从中间往两边逐渐减弱。同时还和镜头的畸变有关系,这都取决于镜头的参数和品质,和什么运放没关系。 4、 运放:关于线性CCD是否需要运放个人觉得这基本没有必要,加上运放还会增加外部干扰,运放的作用更多的是一种使用方式的不同,比如可以调节放大倍数去适应自己的程序,然而并没有什么好坏和优劣之分,因为那仅仅只是一个放大,除非你调车环境的光线特别弱,但是你总归要去适应比赛现场的光线,这就是正式比赛前一天试车环节的作用。也就是说你的程序都会为了适应赛场而做出一些微调,当然也就包含曝光时间等的调节来适应现场的光线就好了,并且历届比赛都证明现场的光线很强,值都偏大,普遍需要减少曝光时间来将值统一减小,那还加一个运放来放大做什么呢。个人认为非必要的东西越少,系统越简洁,越能减少出意外的概率,整个系统越复杂,非必要的东西越多,越容易有BUG。
下面开始聊线性CCD的应用:(注意:前方有广告植入) 线性CCD的应用以“逐飞科技”做的“红孩儿线性CCD”为例,当然首先得看时序图(时序图请自行查看Datasheet),我们的方法用一句话来总结线性CCD的数据采集就是“SI发出一个脉冲信号,然后送出CLK信号,每当CLK下降沿的时候进行AD采集”一个曝光周期内采集完128个像素点的信息,值的大小反应了被采集赛道的颜色深浅,深色的反光较弱,浅色的反光较强,根据赛道的特征可以区分出赛道的边界,从而通过采集到的数据计算出当前位置和中心位置的偏差,控制的目的就是减小这偏差。 当然这中间还涉及到二值化和对比度两种方法,二值化(方便找条边沿也就是赛道边界)方法也是多种多样,可以算平均,可以根据自己观察数据特点设定固定阀值,可以最大最小值求平均等等。所以的方法都只为达到一个目的,让阀值更合理,找到真正的边界,阀值不合理当然后面的一切控制也就失去意义了,因为依据都是错误的。 个人更喜欢,也更推荐对比度的方法,因为阀值的选取不一定科学,适应性不算最好,不如使用相邻点对比度好,使用相邻点对比度即使不对图像畸变做处理也没多大影响。比如CCD看到全白的图像虽然图像是畸变的,但是相邻的点都是连续的。这样的话相邻点对比度就很小。这样直接搜索边界反而更准确。 如果有精力和条件的话,可以处理一下之前提到的关于因为进光不同和畸变造成的数据一定是不那么理想的问题,可以根据自己的数据算出一个畸变系数,根据畸变系数和128个点的位置加权一个量到对应的点上去,可以弥补一下数据的不理想,但是一定算好了,不然还是别算了,因为不处理基本也够用了,并且在对比对方法里面也说到采用对比度算法找边界基本回避了这种小畸变造成的影响。 具体怎么操作可以参考逐飞科技的入门例程。
1、2、3楼上逐飞科技线性CCD样车视频(这是花5天断断续续时间用红孩儿线性CCD+100脚K60小系统板+洞洞板做的一个临时样车,后面会整理出整车器件清单,可照着清单、原理图、例程做一辆真正能先跑起来的车做参考,后面自己在慢慢改进,优化),楼下依次放一些改装细节图。
对规则不明了的多看看规则,也可以看看这篇帖子:http://www.znczz.com/thread-238732-1-1.html 对智能车还不知从何下手的多看看技术报告,多逛逛此论坛,基础知识欠缺的多看看书! 水平有限,大神亲拍,欢迎交流指导! 依旧附上逐飞科技座右铭分享给大家:永远不要轻视行动的力量!
线性CCD样车,先睹为快。。。
补充内容 (2015-12-31 17:04):
红孩儿线性CCD使用手册附件见44楼 |