1、研究论文一种使用光电管对赛道精确定位的方法刘建旭,高晗,谭吉来(哈尔滨工程大学 自动化学院,黑龙江 哈尔滨 150001)文摘:在飞思卡尔杯全国大学生智能车比赛中,控制车模运行需要检测赛道参数。本文提出了一种使用光电管进行赛道精确定位的方法。该方法充分利用了 MC9S12DG128 单片机内部硬件资源,采集各光电探头输出的模拟信号,并据此分析计算出精确的赛道位置,可以为控制系统提供足够精确的信息,使系统稳定可靠。实验证明该方法简便、有效。关键词:飞思卡尔;MC9S12DG128; CMOS 摄像头;二值化Abstract:In the Freescale Cup Smart car compe
2、tition of National Undergraduate , the patch controlling requires testing for the operation of the circuit parameters. This paper proposes the use of CMOS circuit camera parameters for the detection method. The method makes full use of SCM MC9S12DG128s internal hardware resources to meet the hardwar
3、e binary circuit, and the collecting CMOS analog output signal detection can meet the parameters. The information can then calculate the circuit parameters. Experiments show that the method is simple and effective.Keywords: Freescale; MC9S12DG128; CMOS; Binary在第三届飞思卡尔杯全国大学生智能车比赛中,需要制作一个以 MC9S12DG128
4、 单片机(下文简称 S12)为核心控制单元的并可以自主识别路径的模型赛车进行比赛。赛道底色为白色,标有黑色中心线。本文介绍了基于 S12 单片机,为保证系统在稳定的前提下追求行驶时间最短,设计了具有较高精度的赛道定位系统。该模块先使用硬件对光电信号进行模数转换,将赛道的灰度级采集到内存中,然后根据灰度级的变化规律来对赛道位置进行精确定位,精度达到0.5mm。精度高的同时,采集速度也足够高,定位周期很短,频率可达 8kHz,甚至更高,应用在该控制系统各控制环节中都十分富余,实时性非常高。一、历史方案介绍:利用光电管采集赛道信息,在白色的背景上分析出黑色的赛道,出现过许多方案。最简单的方案是,每个
5、时刻有且只有一个光电管正对黑线,且通过比较器产生相应的高或低的数字信号,其软件编写也较为简单。其缺点是精度差,硬件资源利用率低,在比赛允许的范围内,最多能分析出 16 个赛道位置。另有一种该方案的改进版本,每个时刻有一个或两个光电管正对黑线,从位置上看光电管正对黑线的个数是一个与两个交替出现,将前一种方案的硬件资源利用率提高了约 1 倍,但也不过是几十个分度的定位精度而已。比方说在该控制系统中要使用 PID 控制,倘若在位置环中只有几十个定位分度,那么首先比例项不够精确,其次微分项的作用大打折扣,积分项精度相对好很多,但是因为探测的前瞻距离很有限,要达到很高的车速,就不能依赖于积分项。因此提高
6、光电定位系统的精度便是制约光电组车速的瓶颈。二、本方案设计思想:本文将提出一种方案,定位分度可达到 1mm 以下。1、硬件简介:图 1 是单个光电管的电路图,整个探测设备由十几个这种单元构成。模数采样将各个光电管的灰度级量化采集回来。常规的是接比较器而该方案是接电压跟随器。2、数据预处理:图 2图 2 是 8 个对光电管所采集的原始电压值模拟显示,将该数据直接绘成折线和灰度级色块,如上图人可以感觉到黑线的大致位置,但显然该数据不能直接用于精确定位分析。各个光电管的性能差异、机械安装差异和其所附带的发光管和运放的性能差异造成了该数据不能足够真实地反映光电管视野中的灰度级。因此必要对该数据做处理。
7、处理的目的效果如图 3 所示,黄线为定位位置。图 3相比之下,用处理后的数据绘制的折线与灰度级方块非常清楚明了,差别很大。数据处理原理是,将原始数据配合各个光电管预先采集到最大值和最小值来计算灰度级,程序表达式如下:int gray8,adc8,min8,max8;grayi=(adci-mini)*250/(maxi-mini);最终的灰度级取为整型量。图 4图 4 为所有光电传感器视野全为白板时处理前后的数据对比。3、定位计算图 5以图 5 中的数据为例,赛道黑线定位计算式为:dgray1=174-58=116dgray2=139-58=81Postion=6+(dgray12 -dgra
8、y22)/ (dgray12+dgray22)/2*K=6.1722(K 为若传感器间距相等时的距离,若间距不等,公式有待讨论)解说:首先起泡找到亮度最低的点 6,其亮度为 58,然后与其相临两点的亮度做差得 dgray1 和 dgray2,然后代入 postion 计算式。postion 的值分两项:一项是 6,直接取亮度最低点的位置编号;后一项是对偏差量的计算,其值域是-0.5,0.5。如果有两点的亮度值相等,无论取哪个为最暗点,其定位结果相同,都是两点的正中间。用 BASIC 语言描述如下:black = 0Atd(black) = 255For i = 1 To 8If Atd(i)
9、= Atd(black) Then black = iNext idAtdl = 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
10、 是上位机根据定位系统上传的数据所绘图象。图 6图 7图 8图 93.2 实验结论与常规策略相比,其定位精度有显著的提高,可达 0.5mm,而且其采样与计算分析的时间也非常短,优势显而易见。在智能车比赛中,也验证了这种方案的可靠性和稳定性。四、结束语本文提出了一种使用光电管进行赛道精确的方法,对硬件电路和软件流程进行了详细说明。最后由试验结果可知:采取这种方案解决了光电传感器数量有限定位精度差的瓶颈,能够使智能车系统有足够高的控制精度。参考文献1 卓晴,黄开胜,邵贝贝.学做智能车挑战“飞思卡尔”杯.北京:北京航空航天大学出版社,2007.3.2 谭浩强.C 程序设计(第三版). 北京:清华大学出版,2007.