您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 一种光电传感器精确定位的方法
研究论文一种使用光电管对赛道精确定位的方法刘建旭,高晗,谭吉来(哈尔滨工程大学自动化学院,黑龙江哈尔滨150001)文摘:在飞思卡尔杯全国大学生智能车比赛中,控制车模运行需要检测赛道参数。本文提出了一种使用光电管进行赛道精确定位的方法。该方法充分利用了MC9S12DG128单片机内部硬件资源,采集各光电探头输出的模拟信号,并据此分析计算出精确的赛道位置,可以为控制系统提供足够精确的信息,使系统稳定可靠。实验证明该方法简便、有效。关键词:飞思卡尔;MC9S12DG128;CMOS摄像头;二值化Abstract:IntheFreescaleCupSmartcarcompetitionofNationalUndergraduate,thepatchcontrollingrequirestestingfortheoperationofthecircuitparameters.ThispaperproposestheuseofCMOScircuitcameraparametersforthedetectionmethod.ThemethodmakesfulluseofSCMMC9S12DG128`sinternalhardwareresourcestomeetthehardwarebinarycircuit,andthecollectingCMOSanalogoutputsignaldetectioncanmeettheparameters.Theinformationcanthencalculatethecircuitparameters.Experimentsshowthatthemethodissimpleandeffective.Keywords:Freescale;MC9S12DG128;CMOS;Binary在第三届飞思卡尔杯全国大学生智能车比赛中,需要制作一个以MC9S12DG128单片机(下文简称S12)为核心控制单元的并可以自主识别路径的模型赛车进行比赛。赛道底色为白色,标有黑色中心线。本文介绍了基于S12单片机,为保证系统在稳定的前提下追求行驶时间最短,设计了具有较高精度的赛道定位系统。该模块先使用硬件对光电信号进行模数转换,将赛道的灰度级采集到内存中,然后根据灰度级的变化规律来对赛道位置进行精确定位,精度达到0.5mm。精度高的同时,采集速度也足够高,定位周期很短,频率可达8kHz,甚至更高,应用在该控制系统各控制环节中都十分富余,实时性非常高。一、历史方案介绍:利用光电管采集赛道信息,在白色的背景上分析出黑色的赛道,出现过许多方案。最简单的方案是,每个时刻有且只有一个光电管正对黑线,且通过比较器产生相应的高或低的数字信号,其软件编写也较为简单。其缺点是精度差,硬件资源利用率低,在比赛允许的范围内,最多能分析出16个赛道位置。另有一种该方案的改进版本,每个时刻有一个或两个光电管正对黑线,从位置上看光电管正对黑线的个数是一个与两个交替出现,将前一种方案的硬件资源利用率提高了约1倍,但也不过是几十个分度的定位精度而已。比方说在该控制系统中要使用PID控制,倘若在位置环中只有几十个定位分度,那么首先比例项不够精确,其次微分项的作用大打折扣,积分项精度相对好很多,但是因为探测的前瞻距离很有限,要达到很高的车速,就不能依赖于积分项。因此提高光电定位系统的精度便是制约光电组车速的瓶颈。二、本方案设计思想:本文将提出一种方案,定位分度可达到1mm以下。1、硬件简介:图1是单个光电管的电路图,整个探测设备由十几个这种单元构成。模数采样将各个光电管的灰度级量化采集回来。常规的是接比较器而该方案是接电压跟随器。2、数据预处理:图2图2是8个对光电管所采集的原始电压值模拟显示,将该数据直接绘成折线和灰度级色块,如上图人可以感觉到黑线的大致位置,但显然该数据不能直接用于精确定位分析。各个光电管的性能差异、机械安装差异和其所附带的发光管和运放的性能差异造成了该数据不能足够真实地反映光电管视野中的灰度级。因此必要对该数据做处理。处理的目的效果如图3所示,黄线为定位位置。图3相比之下,用处理后的数据绘制的折线与灰度级方块非常清楚明了,差别很大。数据处理原理是,将原始数据配合各个光电管预先采集到最大值和最小值来计算灰度级,程序表达式如下:intgray[8],adc[8],min[8],max[8];gray[i]=(adc[i]-min[i])*250/(max[i]-min[i]);最终的灰度级取为整型量。图4图4为所有光电传感器视野全为白板时处理前后的数据对比。3、定位计算图5以图5中的数据为例,赛道黑线定位计算式为:dgray1=174-58=116dgray2=139-58=81Postion=6+(dgray12-dgray22)/(dgray12+dgray22)/2*K=6.1722(K为若传感器间距相等时的距离,若间距不等,公式有待讨论)解说:首先起泡找到亮度最低的点6,其亮度为58,然后与其相临两点的亮度做差得dgray1和dgray2,然后代入postion计算式。postion的值分两项:一项是6,直接取亮度最低点的位置编号;后一项是对偏差量的计算,其值域是[-0.5,0.5]。如果有两点的亮度值相等,无论取哪个为最暗点,其定位结果相同,都是两点的正中间。用BASIC语言描述如下:black=0Atd(black)=255Fori=1To8IfAtd(i)=Atd(black)Thenblack=iNextidAtdl=Atd(black-1)-Atd(black)dAtdr=Atd(black+1)-Atd(black)Pstn=(dAtdl^2-dAtdr^2)^1/(dAtdl^2+dAtdr^2)^1/2+black三、实验结果3.1实验方法将光电定位系统采集并计算出的赛道位置用串口传送到上位机,数据更新频率100Hz,将赛道位置按照时间先后绘制成图象。将车固定好,取一块赛道板在光电探头视野中移动,观察在单向运动时有没有位置回跳的点,实验方法较为简陋但能说明问题。图6——图9是上位机根据定位系统上传的数据所绘图象。图6图7图8图93.2实验结论与常规策略相比,其定位精度有显著的提高,可达0.5mm,而且其采样与计算分析的时间也非常短,优势显而易见。在智能车比赛中,也验证了这种方案的可靠性和稳定性。四、结束语本文提出了一种使用光电管进行赛道精确的方法,对硬件电路和软件流程进行了详细说明。最后由试验结果可知:采取这种方案解决了光电传感器数量有限定位精度差的瓶颈,能够使智能车系统有足够高的控制精度。参考文献[1]卓晴,黄开胜,邵贝贝.学做智能车――挑战“飞思卡尔”杯.北京:北京航空航天大学出版社,2007.3.[2]谭浩强.C程序设计(第三版).北京:清华大学出版,2007.
本文标题:一种光电传感器精确定位的方法
链接地址:https://www.777doc.com/doc-2825812 .html