当前位置: 澳门新濠3559 > 操作系统 > 正文

二、黑白图像检测的硬件设计 ,激光雷达式能见

时间:2019-12-21 19:57来源:操作系统
项目大概:1、程序需要采集伺服电机A/B相脉冲信号(2500Hz),通过板卡IO口进行采集;2、IO板卡同步采集两个限位信号,常态为高,电机带动部件碰到限位时,为低。即低有效;3、另一板

项目大概:1、程序需要采集伺服电机A/B相脉冲信号(2500Hz),通过板卡IO口进行采集;2、IO板卡同步采集两个限位信号,常态为高,电机带动部件碰到限位时,为低。即低有效;3、另一板卡采集一信号,板卡AD,但是频率较慢,大概300Hz;4、另一计算机远程登录到本计算机进行远程监控,也可远程操作。采用双线程进行编程:线程1,采集IO信号,遇到上升沿进行脉冲计数,同时判断限位状态,以控制伺服电机转向;线程2,采集AD信号,根据线程1的脉冲计数进行位置甄别,计算、显示数据;遇到问题:1、程序运行时,CPU使用率大部分时间为100%;2、远程计算机登录后,由于CPU使用率过高,鼠标移动也会造成数据采集失误;3、2.5KHz的脉冲信号采集也会丢步。。。现在主要问题应该是如何减低CPU使用率?请做过此类项目的大侠们指点指点~~BTW:大年二十九了,给论坛的兄弟们拜个早年!!!

澳门新濠3559 1

澳门新濠3559 2

CCD图像检测<二>

激光雷达能见度仪是指利用激光雷达技术来测量空气能见度的一种仪器,具有体积小、精度高、结构紧凑、使用方便,性价比高的特点。

摘要:本文介绍的喷雾阀控制装置采用工业控制计算机作主控制器,PLC作辅控制器,并辅以数据采集、模拟量输出以及数字输入/输出DAS卡。在程序设计中采用了多种应用程序无缝连接技术和多线程编程技术,加以多种硬件和软件抗干扰措施,有效保证了装置的可靠性和实用性。 关键词:喷雾阀;系统设计;控制;多线程;抗干扰 前言在船舶动力工程设计中,有一个重要的装置,即油的喷雾阀,其性能的好坏直接影响着柴油发电机的发电效率和性能。本文在广泛分析喷雾阀喷吹过程的基础上,设计了喷雾阀性能监测装置。该装置借助压力变送器、加速度变送器等,通过计算机采集喷雾阀出口的压力、气包压力、标靶加速度信号,能实时在线评估喷雾阀的性能品质,适应各种不同结构与尺寸的喷雾阀监测需求。监测的状态量主要有:喷雾阀出口的压力波形及其上升速率();喷吹令标靶产生的加速度波形 ;稳压气包内压力变化波形;喷吹气量(△Q);电喷雾时间(te)。监测原理及监测过程的实现空压机为稳压气包提供压缩空气,通过调压阀调节至需要压力,由计算机向喷雾阀发出开启指令喷雾喷吹(延时设定时间关闭,电喷雾时间可调),在计算机向喷雾阀发送开启指令的同时启动采样程序,采集气包压力、喷雾阀出口的压力(全压)、标靶加速度信号,并将采样数据存入计算机,对采样数据进行处理分析,实时在线绘制喷雾阀出口压力、稳压气包内压力变化及标靶加速度波形图。通过分析以上图形,可评估喷雾阀性能品质的优劣。装置的主要功能如下:1)信号采集功能:主要完成包括喷雾阀出口的压力、气包压力、标靶加速度信号等在内的实时采集,且采样频率可调;2)屏幕显示功能:以曲线和数字方式分别显示各通道数据趋势曲线以及分析后的数据和谱线数据;3)存储和回放功能:完成采集数据和分析数据的存储、回放分析、信号分离并进行数据的时域和频域分析;4)喷雾阀性能评定功能:通过对输入标定数据的分段拟合进行数据修正。系统配置为满足检测装置对控制系统的设计要求,我们选用了Advantech的IPC-610P型工业控制计算机(PCA6180主板、256MSDRAM、PIII 1GH CPU)作为主控制器,完成人机交互、实时数据采集、分析、存贮、图形绘制与打印等任务;WP系列的一体化(传感器和变送器合二为一)压力变送器、CA-GT系列的一体化加速度变送器分别变送气包压力、喷雾阀出口压力和标靶加速度电信号;高性能、高采集速率的数据采集板卡PCL-818HD用来采集三个变送器的标准电信号,同时,由于要在电磁阀开启的同时启动采样线程,选用三菱PCL协助主控制器来控制电磁阀的开启、延时、关闭等动作,其驱动由继电器输出板卡PCL-725来完成。PCL-818HD 能保证在所有增益(x 1, 2, 4 或 8, 可编程)和输入范围内都有 100kHz 采样速率和转换速度。它有一个 1 K 的 FIFO(先进先出)缓冲器以获得更快的数据传输和 Windows 下更好的性能。这正是本系统选用该板卡的重要依据。同时为提高信号的抗共模干扰的能力,本系统采用差分模拟量输入方式。为了提高整个控制系统的抗干扰能力,选用继电器隔离的数字输入输出板卡PCL-725,其板上的八个 SPDT 继电器非常适合本系统电磁阀的开/关控制。每个继电器旁边的红色 LED 用来显示继电器的开/关状态。模拟量输出板卡PCL-728,能输出-10V~+10V的模拟信号,实时控制变频器的反、正转,PCL-728采用光隔离措施,提高系统的抗干扰能力。为保证喷雾阀动作的可靠性及获得喷雾阀不同开启时间,喷雾阀的开启延时采用日本三菱公司的FX2N系列的可编程控制器(PLC)进行控制。喷雾阀电磁阀的开启延时由PLC内部定时器自动延时,延时时段为20ms、30ms、50ms,延时时段的选择通过改变PLC的外部输入点的地址来实现。系统框图见图1所示。

作者:一点一滴的Beer   指导教师:Chen Zheng  单位:WHU

激光雷达式能见度仪的工作原理:

图1 系统框图

 

激光雷达能见度仪发射一定波长的激光束,通过单光子探测器将回波转换为电信号进行数据采集,从而得到回波功率随距离变化的曲线,进而进行大气消光系数的反演以及能见度计算。

监测系统中几项关键技术A/D触发方式的选择因为控制程序运行于Windows平台,而Windows是一多任务、多用户的而非实时操作系统,在高速数据采集时有可能会丢失数据,数据的丢失意味着测试数据不完整。为满足控制系统的高速数据采集的需要,保证采集数据的连续性、完整性,采用了定时器同步触发A/D与FIFO数据传输方式相结合的方法,大大提高了系统的采样频率和数据的可靠性,改善了在Windows环境下数据传输的性能。多种应用程序的无缝连接技术Visual C++是Windows平台下强大的应用程序开发环境,MATLAB是一个功能强大的数值计算和结果可视化的软件。假如将MATLAB和Visual C++结合起来,取长补短无疑是一个有效的途径。本设计利用MATLAB Compile (编译器),将MATLAB函数编译成可以脱离MATLAB环境使用的C函数,在Visual C++中将此C函数编译成动态连接库,在Visual C++中加载这个动态连接库,这种方法能实现两者之间的无缝连接,仅需利用相关的MATLAB应用程序接口(API)函数编写一个C语言的接口函数即可。多线程的数据采集软件设计由于整个应用程序需要在较短的时间内完成数据采集、去噪声、数据整理与分析、压力数据实时图表显示、数据分析计算以及数据存储与管理等任务,如果仅使用单线程模型来设计系统,就不能很好地完成数据采集和分析的任务,因此考虑采用多线程模型,利用多个线程分别完成各项任务。本系统通过并行设计充分利用Win32 操作系统的多任务特点将不同的任务分布到各个线程中,使各个任务同步进行而互不影响。系统中的主线程负责创建用户界面、接收消息等工作。另外,由于Win32 系统是抢先式系统,为了保证数据的采集不被其他线程中断就要开辟一个优先级较高的线程来采集数据。同时,为保证系统硬件相关部分和硬件不相关部分的相互独立,将采集模块做成动态链接库,采集到的数据存入内存池中,然后调用动态链接库中的相应函数定时获取内存池中的数据。由于数据的分析、存储和性能在线评估耗时较多,且各个任务所占用的时间段不同,故将其分别置于不同的线程中,在数据采集的同时进行数据的分析存储和各通道的巡回监视,各个线程(数据采集线程、数据分析与处理线程以及数据动态显示线程)中所要完成的工作并行进行,线程间的通信可以通过消息响应函数PostMessage 来实现。由于本系统是一个工业化的连续运行的实用系统,系统的可靠性非常重要,必须协调以下工作:1)注意释放内存, 在系统的调试过程中避免线程阻塞。在Windows环境下若有某个任务持续长时间运行时,会导致所占用的存储空间逐渐膨胀,因此有时会因内存自由空间的过少而出现有关线程阻塞的现象,甚至出现死机,故在开发程序的过程中,必须考虑有效措施使程序能自动释放内存。2)注意节约占用CPU的时间。系统规定数据采集线程和数据处理线程的优先级为最高,其余任务必须注意节约占用CPU的时间,否则会降低系统的运行效率。3)合理规划线程内容,控制线程个数。虽然系统采用多线程模型可以有效地提高采集和监控效率,但系统中所拥有的线程不能太多。因为可运行的线程越多,对所有线程轮询一次所需的时间越长,系统延时越大。同时系统的吞吐量将相对减少,当系统总的延时超过一定的限制时,系统将变得不可使用。4) 合理解决数据缓冲区的并发和同步。多线程应用程序基于优先级的可抢先调度和不可预测性,使得其同步问题变得非常重要。如何正确、高效地实现多线程系统中各个线程之间的通信,使得相关线程之间能够对临界区的访问达成同步,对提高多线程数据采集系统的效率有着重要的作用。在本系统中,采用事件Event方法,用于封锁对一个资源的访问直到出现了某些线程或进程的信号即指定一个指定事件的信号。使用事件同步一般用CreateEvent 创建事件,WaitForMultiObject等待事件的发生,SetEvent 标记一个事件的发生,ResetEvent 清除事件发生的标记。由于CPU的运行速度远高于采集卡采集数据的速度,因此,数据处理线程的大部分时间是在等待读取缓冲区的数据,不会因为来不及处理缓冲区的数据而使数据采集线程因等待缓冲区的释放造成采集数据的丢失。这样线程之间较好地实现了对数据缓冲区访问的并发和同步。控制系统软件设计整个控制系统软件基于Windows 9X操作系统平台,人机交互的应用程序采用编程功能强大的Visual C++,并辅以多线程编程技术以及和具有强大数值计算和处理功能的Matlab进行无线连接技术,完善和弥补了Visual C++的功能。程序采用面向对象的设计方法,增强了应用程序的实用性、可靠性。整个程序流程框图见图2所示。

二、黑白图像检测的硬件设计 

激光雷达式能见度仪的特点:

图2 程序流程框图

2.1 电源提供。** **

国内开发成功的首台激光雷达能见度仪,是为交通行业安全生产和人民群众的安全出行,提供了有效技术支撑的重大突破。该仪器的能见度监控范围可达50米到5000米,可实现每1~10分钟输出一组能见度值;可与高速公路现有的通讯系统实现无线和有线方式互联互通,达到全天候实时监测、预警。具有体积小、精度高、结构紧凑、使用方便,性价比高的特点。

系统抗干扰措施在本实时控制系统中,必须采用各种抗干扰手段来抑制干扰对测量结果的影响。其主要干扰有:部分电气的脉冲型干扰、继电器开断产生的随机型脉冲干扰、传感器以及变送器自身噪声等,这些干扰进入监测系统主要通过(1)从系统的工频电源进入,(2)通过电磁耦合,(3)通过监测元件进入。为获得较好的试验结果,本设计采取以下抗干扰措施:共模抑制技术为提高系统的抗干扰性能,系统采用差分输入方式,差分输入可使来自设备震动、以及变送器的白噪声干扰相互抵消,实现共模抑制电噪声。模拟地隔离技术为了使控制系统防止外界干扰,除了供电系统采用隔离变压器以外,在过程与过程通道之间也采取隔离方法,使其计算机系统与外界的过程控制器和变送仪表之间没有公共地线,而是采用继电器隔离方式,以提高系统的抗干扰能力。数字滤波处理技术在数据处理过程中,对于采样信号中的各类噪音和失真采取了软件滤波与硬件滤波相结合的方法,首先通过模拟低通滤波器(硬件滤波)滤去5Hz的噪音,对于低于5Hz的噪音则采取软件方法进行滤波。1)对采集到的数据实行五点三次平滑法滤波2)在信号采集中,常有系统误差,而这些误差主要是由系统噪音引起的,与当时实验的条件如温度、仪器老化时间等因素有关,所以在正式采样之前需进行全程背景噪音扣除,以消除系统噪音,在正式采样之前先进行一次与正式采样相同条件的空采样,得到的数据全部是背景噪音,在正式采样中将刚才的背景噪音全程扣除。3)在采集信号中,常有“毛刺”干扰,根据经验,确定出两次采样输入信号可能出现的最大偏差ΔH,两次采样值之差若超过此偏差值且又持续时间很短,则表明该输入信号是干扰“毛刺”,应该去掉,若小于此偏差值,可将信号作为本次采样值。经过以上软硬结合的滤波,微伏级的信号可正确分辨,大信号也不会失真,效果显著。结语系统设计采用了较为先进的设计方案,并加入了多种硬件和软件抗干扰措施,同时,在软件设计时,充分考虑了Windows操作系统的特点,应用了多种应用程序无缝连接以及多线程编程技术,保证了系统设计的先进性,提高了系统的稳定性以及自动化水平。参考文献1 吴道虎.高速数据采集可靠性的研究,电子技术应用.2002.62 Davis etc.学用Visual C++,北京:清华大学出版社.1999.63 徐士良.计算机算法方法,北京:清华大学出版社.1998.64 Advantech handbook.1999.7(end)

 澳门新濠3559 3

激光雷达式能见度仪的结构组成:

图6: CC的D12V电源电压源 

系统由3 部分组成:激光发射系统、接收光学系统、信号采集和控制系统。系统采用轻小型全固化结构和模块化结构,结构紧凑,轻便稳定。激光雷达能见度仪的设计探测能见度范围为50~2 000 m,每30 s 输出一组能见度值。

   因为小车的电池电压为7.2V,而CCD摄像头的工作电压为12V,故需要利用芯片搭建升压电路,如图6所示。

激光器采用脉冲半导体激光器,发射波长为905 nm,脉冲能量为1.2~22 μJ,脉冲重复频率为5 000 Hz。低脉冲能量,高重复频率的激光器可以满足人眼安全考虑。半导体激光器体积仅有火柴盒大小,轻小方便。发射望远镜与接收望远镜口径仅有50mm,接收视场角大于发射发散角,可以更好地接收激光后向散射信号。接收望远镜后有窄带滤光片和窗口玻璃,起保护作用。由于发射系统与接收系统不共轴,导致一部分光无法进入接收望远镜。

2.2 视频信号行场同步信号分离。** **

光电探测器为光电倍增管PMT,采用模拟探测模式。接收信号由光纤从光学天线的焦点处传至光电探测器的光敏面,传给AD 数据采集卡。控制系统主要由嵌入式工业计算机组成,计算机与AD 数据采集卡采用堆叠式连接。激光雷达的全部系统组件集成封装在方盒中,方盒尺寸为207 mm×167 mm×140 mm,封装好的激光雷达系统会固定在支架上,可进行探测角度的调节,实现多仰角测量。

 

激光雷达数据采集系统:

澳门新濠3559 4

激光雷达数据采集系统,大多采用通用数据采集卡来实现,功能繁冗,使用多有不便,且无法进行软硬件的修改和升级以适应采集需求的变化。数据采集卡一般为PCI 接口, 须在工控计算机上使用,系统复杂、庞大,且功耗较高,无法在功耗要求严格的场合使用。为了克服上述问题, 研制了一套基于FPGA 的激光雷达专用数据采集系统, 主要特点有:系统功能完全按照激光雷达能见度仪的需求进行设计;软硬件可按照采集需求进行升级;采用USB2.0 接口,传输速率快;整机功耗仅0.56W,适合有低功耗要求的场合。

图7:视频信号行场同步信号分离电路 

数据采集系统的输入包括激光雷达所接收到的大气后向散射回波信号和门控触发信号,其中回波信号是TTL 电平脉冲输入,脉冲宽度为20 ns,死时间为50 ns,每个脉冲代表一个光子。门控信号是一个周期为200μm, 占空比为80%的方波,低电平表示雷达正在工作,下降沿作为采集系统工作的起始点。由于门控触发信号并非标准的TTL 电平,上升沿晃动较大,会导致采集的初始点产生晃动,而且信号的振铃容易产生误触发,因此,需设定阈值对门控触发信号进行甄别。

    视频信号每场是是不同的行组成,如图5所示,场与场之间,行与行之间都存在同步信号,单片机通过对这些同步信号的捕捉,来控制图像采集的时序,保证图像采集的正确性。视频信号分离芯片LM1881能将视频信号中的行同步脉冲、消隐脉冲和场同步脉冲提取出来,并将它们转换成数字信号交给单片机的I/O 口。视频信号分离电路如图7所示。

系统工作流程如下:系统由门控触发后,对信号脉冲进行计数,每隔一定时间宽度(简称“BIN 宽度”),将计数保存,并将计数器清零重新计数,从而得到脉冲计数随时间的变化曲线。脉冲计数可折算为回波强度,时间可折算为传输距离, 最终得到回波强度随传输距离的变化曲线。

2.3 行视频信号数字化。** **

由于回波信号较弱,单独一次计数结果无法进行计算,需要将多次计数结果进行叠加,分析其统计规律。系统运行所需参数,如门控阈值、BIN 宽度、存储深度、累加次数等,可以从上位机设定,因此,需要接收和保存上位机传递过来的参数。

    由于模拟摄像头采集的图像信号为模拟信号,而计算机系统为离散的数字系统,故需要转换为数字信号才能交付MCU处理。大赛组委会所推荐的芯片XS系列片内集成了8路AD口,同时还具有丰富的IO接口资源,而且大赛中小车赛道色彩构成的简单性,使得视频信号数字化方案变得多样化。小车以模拟CCD摄像头为传感器,模拟式的采集先将一路视频信号引用图2电路,通过其可以将摄像头输出的复合视频信号进行分离,得到独立的同步信号和视频模拟量信号,然后通过逐行采样来完成整幅图像的采集。下面主要介绍三种对行信号的数字化的方法。

2.3.1片内AD模块。 

    由于XS128本身就含有8路AD,故只需引入一路视频信号至任意一个AD口,然后软件上,先对AD口进行相应的初始化,再在行同步中断函数中执行以下代码即可完成数字化:

for(i=0;i<column;i++)

{

while(ATD0STAT0_SCF!=1);//AD转换等待

*g_video--=ATD0DR0L;//寄存器读取

}

    此方法的优点在于,不需要进行额外的外围电路设计,直接引入视频信号,利用XS128的片内资源进行AD转换即可得到图片灰度数据。XS128在超频到64M的情况下,能每行采集96个点,如果对图片横向精度要求不高,选择此方法最为简单。但如果CCD看得比较远,由于图像的几何畸变,会造成远方的黑线最后AD结果只有一个黑点,这样在黑线提取时造成了较高的误判率,此时此方法就不再适用。

  

2.3.2基于TLC5510的8位并行AD。 

    为了每行信号得到更高的采样精度,在XS128还有多余的IO口前提下,我们可以考虑用片外A/D法。TCL5510为一款8位并行高速AD转换芯片,如果采用独立时钟其AD速度能达到20MSPS,然后将数字信号通过8位数据总线并行输出,直接引入到XS128的一组IO口上,在软件设计上只需对此IO口进行读取即可获得数字信号。相应AD转换电路如图8。

澳门新濠3559 5

图8:片外AD转换电路 

    芯片对端口进行读取时,为了防止读取到AD转换的跳变沿,故需要进行时钟同步,XS128含有8路PWM输出,通过对一路PWM进行翻转输出一定频率的脉冲,即可模拟一个同步时钟信号至片外AD模块,较方便地解决了时钟同步问题。在实际情况下,XS128超频到80M时每行能采集240个点,从而远方黑线消失的现象能得到很好的解决。

    除了采样精度高,更重要的是此方法保存的是灰度信息,能极大程度上防止了图像信息丢失,但是外围电路比较复杂,而且占用了较多的IO口资源(需要XS128额外提供一组8位的IO口进行数字信号读取)。

    如果采集的点比较多,对RAM资源不丰富的XS128来说是个灾难。

 

2.3.3基于电压比较器的硬件二值。 

    以上两种方法最后得到的都是图像的灰度数据,能够比较逼真地反应CCD所见情景。但是由于大赛中,赛道仅由黑白两色组成(如图9),所以即使是灰度数据,我们最后处理时也一般要在软件上进行二值化将图像分割成黑白二色图片。所以,我们可以考虑直接用硬件进行图像二值化,将视频信号转换为一组方波信号,然后直接输入到一位I/O口中,对这一位的端口进行读取,高电平表示1,低电平表示0。

2.3.3.1硬件二值电路 

    在软件上对灰度图片进行黑白分割时,有两种方法:

    固定阈值法,即高于此阈值电压,即认为是1,否则是0,然后再通过软件进行黑线边缘检测。

   直接通过边沿跳变法来检测黑线边缘,即两个相邻点之间灰度值相差一定时,表示到了黑线边缘。

   以上两种方法都能通过电压比较器电路实现。分别如图10和图11。

澳门新濠3559 6

图9:智能车赛道色彩构成 

澳门新濠3559 7

图10:固定参考电压二值电路 

澳门新濠3559 8

图11:边沿检测的二值电路 

采用固定参考电压的二值电路设计起来比较简单,对参考阈值电压调结也比较方便-只需调结一个电位器阻值即可(为系统增加一个LCD,可直接在调结电位器后采集到的图像),故具有一定的场地适应性。但在实际使用过程中,我们发现采用固定参考电压的二值电路在CCD视野比较远时,仍然会出现图像无法分割的现象,此时该方法不再适用,故可以考虑采用边沿检测的二值电路。边沿检测二值电路中,将原始视频信号和滞后处理的视频信号输入到电压比较器两端,在视频信号跳变边沿会在两路输入产生幅度差(如图12),然后当幅度相差到一定程度(由滞回电路控制)时,电压比较器输出端便发生电平翻转,最后以方波形式输出视频信号(如图13,注:第一个低电平区为行同步区,第二个为黑线区)。

 

图12.原始视频信号(绿色)

和滞后处理的视频信号(黄色)

图13.原始视频信号(绿色)

和输出方波信号(黄色)

 

 

 

2.3.3.2电路中元件参数的整定。 

    首先我们对一般的RC电路的时间常数进行了解,如下面所陈述:

澳门新濠3559 9

图14:普通的RC电路 

澳门新濠3559 10

   电容两端的输出电压和电源电压的关系如下:

澳门新濠3559 11

    电压上升幅度和上升时间(滞后时间)对应关系如下:

T(/RC)

1

2

3

4

5

UC/US

0.632

0.865

0.95

0.98

0.993

表一:滞后时间表

    黑线的视频信号时间为3~4µs(R2=1.3K)

澳门新濠3559 12

图15:赛道中央黑线产生的视频信号

    一般为了获得两组视频信号在同样的时间轴点时获得最大的电压差,就要求,滞后信号尽量滞后。 但也不能太滞后。比如以下情况:(R2=6.4k)

澳门新濠3559 13

图16:当R2比较大时的滞后输出信号 

    下面是几张不同滞后电阻时的视频信号输出图:

 

1.3K的滞后电阻

3K滞后电阻

6.4的滞后电阻

 

图17:电路在不同滞后电阻下的输出波形 

    那么我们计算出一个大致R2 的参考值。

    我们要求在黑线区,滞后信号时间刚好为一个黑线视频信号的时间,也就是大概3~4µs,在保证在下一次上升沿到来前已经达低谷,以保证上升沿的电压差。

    如表一,大概 t=3~5倍RC,我们就可以认为电压已经到了最值。那么,要求滞后视频信号能在T0 = 3~5个RC内能够达到最值,而T0<3~4µs.大致算一下:

3*10-6 = 4*R2*510*10-12

   得到R2=1.47K 能在3µs时间后,电压达到 原始跳变点的0.98

   得到R2=1.96K 能在4µs(刚好是一个近处的黑线视频信号的宽度)时间后,电压达到原始跳变点的0.98

    所以,一般 R2就取其中的某个值。在实际中,配合LCD,调节R2电位器,结果发现R2=1.85K时有比较好的效果,符合理论计算结果。

   关于R4参数的确定方法。参考:

澳门新濠3559 14

图18:滞回电压比较器I/O电压图 

    滞回电压Vh = R4/ (R4+R5) * (Vo_max - Vo_min)

   因为黑线边缘产生约400mV跳变(由示波器上很容易看出),

   所以,滞回电压选择为100-400mV

   实验中,将R4设置为4.5K,产生215mV的滞回电压,一方面能比较好的搞干扰,一方面,使黑线不至于过细

2.3.3.3硬件二值的特点。

    采用边沿检测电路,通过对两个电位器大小的调整,便能适应不同比赛场地光线,而且能适应CCD的不同视野,具有较强的图片分割能力,具有更强的场地适应性。而对比片外AD,此方案具有以下优点:

1.电路设计更简单。

2.占用芯片IO口只有一位,为片外AD的1/8。

3.不用考虑时钟同步的问题。

4.横向精度可以视为无限(因为直接以模拟电平信号输入,由MCU的一位端口对电平读取),在满足要求的情况下,MCU不用超频甚至还需要分频,8M频率读端口便能每行采集120多个点,所以不会存在当视野比较远时出现黑线断开的现象。

5.采用硬件二值,直接对图片进行了正确有效的分割,减少了CPU的运算量,增加了分割的可靠性。

澳门新濠3559,    显然,因为以上优点使得硬件二值的检测方案对于色彩简单的赛道环境拥有极大的优势。但是此方案的检测方式也存在局限性,对纵向的黑线检测具有比较高的准确性,但是在小车运动时对于横向黑线检测会出现不稳定现象(即有检测方式问题,也有CCD本身问题,也和采样行的选择有关系),最明显的是对十字交叉线和起跑线的区分,在检测十字交叉线时,因为CCD摄像头安装方式和球面镜头本身原故就会存在一定的失真,使十字线横向线呈弓形(远处为外弓箭形,近处为内弓箭形)

 

 

图19:用AD模块采集到的正常的十字线和起跑线

澳门新濠3559 15

图20:十字交叉线的检测问题

澳门新濠3559 16

图21:起跑线的检测问题

    如果出现以上状况,那么起跑线的检测就变得相当困难(基本没法正常检测):一方面有来自十字交叉线的干扰,另外一方面也因为起跑线本身检测的不稳定。于是我们为了解决起跑线问题,额外用AD采集了近处的10行(因为是近处,所以对行的精度要求不高,可以占用较少的内存),单独作为起跑线判断依据。

2.3.3.4硬件二值的应用展望。

    硬件二值最大的特点是:输出的是模拟TTL电平信号,而这种信号是MCU所能处理和识别的电平信号,这就给硬件处理图像提供了很大的发展空间。图像采集的主要问题就是精度和保真度。保真度和采集方法有关,而精度的提高则很大程度上受到芯片RAM资源的限制。在采用硬件二值进行采集时,图片会无法避免的造成一定失真,但是却基本能满足用户需求,故展望之处可以从提高采集精度上着手。当摄像头视野比较广时,如果采样行比较稀疏,那么,会造成数据的大量丢失,严重时甚至会出现同一图片中黑色引导线不连续的情况,这对黑线提取是极其不利的。下面介绍两种方法来提高精度,分别是硬件层面和软件层面,供大家参考。

硬件层面:

(1)将硬件二值后的视频信号直接进入单片机的输入捕捉模块,用硬件来提取我们关心的一些信息,然后再对这些数据分析计算出对自己有用的信息,这样一方面硬件为我们承担了一部分的数据处理,另外一方面,使记录一行视频信号所用的数据变得很少,这对高主频但是却低RAM的XS128芯片来说是个很好的消息,这样我们可以在RAM一定时可以极大提高采集的图像的纵向精度。

用HCS12单片机输入捕捉来对 微分电路视频输出进行捕捉, 检测到跳变时,就计录当前的TCNT,然后存储在一个数组中,显然,这样一行在理想智能汽车赛道中,最多10个, 就如以下情况(而且发生的可能极小----三条赛道并行,而且不还有一条起跑线,而且CCD的视角把它们全部拍摄进去了)。

澳门新濠3559 17

图22:理想赛道环境时的极限情况

澳门新濠3559 18

图23:实际赛道环境

    在实际的赛道中,一方面有来自交叉赛道的黑线正常干扰,另外一方面有来自光线的干扰,特别是赛道边缘地带,会有些杂乱的干扰信号,这个对硬件边缘检测计数是极其不利的。在用软件处理时也同样有这样的问题,这个问题是用部分搜索来解决的。因为在近处,CCD因为视野原因,正常情意下基本上不太可能看到赛道外部,于是这样就能确定起始搜索列的位置,然后逐步递推上去在一个小范围内搜索,当然还有些其它容错的思想在此不再赘述。在硬件层面上,同样也能实现逐步搜索:在第一行信号进入时,根据上一行的中心,来对视频信号检测时机进行适当延时,跳过干扰地带后,再对跳变点进行检测。当本行信号检测完毕后,或者,检测的跳变点超过一定数目后,就停止本行检测,再对下一行检测。

    一行只而要以一个大小为10左右的数组就能存储到此极限情况下的有用(边缘跳变)的信息,对于一般存在边缘干扰的情况,通过局部搜索的做法,用10个数据也能存储本行的有用信息。这样,受储存空间限制而无法提高图像精度的矛盾就解决了,以前4K只能存储横向96列的点列40行,现在可以存储新的点列的行数 甚至可以达到320行以上,而CCD的行视频信号只有320行,所以采集多少行已经没有多少意义了。更重要的是,它能把中心用硬件提取出来,我们要做的只是在软件上进行容错和判断即可。而且,这样做,横向的分辨率也没有了意义了,因为16位的TCNT计数,远方的黑线不论有多细,只要CCD能在CRT显示器上看到,用TCNT也一定能记录下来,所以,基本上不存在远方黑线的宽度过小甚至消失的现象.

软件层面:

(2)利用新的数据结构,用时间换空间,这样在不采用计数器也能利用有限的空间存储更多的数据,这样就自然提高了图像采集的精度。

将开关量存储在一个位结构数组中,每8个开关量可以存储在一个位中,于是横向存储空间节省了7/8,这样,可以提高纵身精度和横向精度,但这是以牺牲MCU的计算量为代价的,因为XS128不支持位寻址,所以对图片bit的存取效率会变为原来直接对byte存取的1/3,就是不知道这个牺牲能不能忍受。如果能忍受,图片在4K的空间下,可以存储 160 横向分辨率的图片200多行。

这个是以时间换取空间,以前片内AD也试过,当时受限于XS128内部的AD频率,而导致 图片bit的存储大大影响了AD转换,所以一行还是采集不到96个点。但是用硬件二值,就不存在AD等待时间,目前8M的频率读取,可以每行采集120个点,如果将频率提高一些,就能够弥补位结构存储时所占用的时间了。所以采集上理论上不会存在问题。

位结构数据类型如下:

 

澳门新濠3559 19澳门新濠3559 20代码

typedef unsigned char byte;
//二值图片 位结构----节省MCU的内存开销(8位的像素值)
typedef union {
byte Byte;
struct {
byte B0 :1; /* Bit 0 */
byte B1 :1; /* Bit 1 */
byte B2 :1; /* Bit 2 */
byte B3 :1; /* Bit 3 */
byte B4 :1; /* Bit 4 */
byte B5 :1; /* Bit 5 */
byte B6 :1; /* Bit 6 */
byte B7 :1; /* Bit 7 */
} Bits;
} BYTE;

 

 

    像操作结构体一样去操作位,然后逐位存储开关量。此方法有一个缺点:运算效率低。因为HCS12系列芯片都不支持位寻址,所以,在对位进行存取时,实际操作还是先读一字节8位,然后再和相应的数据进行位运算提取某一位的数据,这样,数据读取的效率就变得很低了。所以这是一个以时间换取空间的方法,具体在实际中能否应用,就要看它实际应用时的优和劣的对比了。

2.3.4几种方案比较。

采集方法

优点

缺点

片内AD

电路设计简单,直接利用芯片内部集成模块,采集到的图像失真度小。

图像横向精度难以提高,在处理时会有图像阈值分割的困难。

片外并行AD

采集图像失真度小,而且精度可以满足用户需求。

占用I/O资源过多,电路设计比较繁琐,而且最终也会有图像分割的问题。

硬件二值

采用硬件将图片分割,输出为TTL电平,精度可认为是无限的。

将外界信息直接二值化后交付芯片处理,意味着图片的很多信息的丢失。同时,在小车运动状态下,采集横向黑线会出现不稳定的现象。

编辑:操作系统 本文来源:二、黑白图像检测的硬件设计 ,激光雷达式能见

关键词: