基于图像传感器的小车循迹控制

合集下载

智能小车循迹原理

智能小车循迹原理

智能小车循迹原理
智能小车循迹技术是指通过传感器和控制系统实现小车在特定轨迹上行驶的技术。

循迹技术在无人驾驶、物流运输、工业自动化等领域有着广泛的应用。

下面我们将介绍智能小车循迹原理及其实现方式。

首先,智能小车循迹的原理是基于传感器检测地面轨迹,通过控制系统对小车
进行精确的控制,使其沿着特定轨迹行驶。

常用的循迹传感器包括红外线传感器、光电传感器和摄像头等。

这些传感器能够检测地面上的标志线或者其他特定的标记,从而确定小车需要行驶的路径。

其次,实现智能小车循迹的方式主要包括两种,一种是基于预先编程的路径,
另一种是基于实时检测的路径。

基于预先编程的路径是指在小车行驶之前,通过对地面轨迹进行扫描和记录,然后将路径信息编程到控制系统中,使小车能够按照预先设定的路径行驶。

而基于实时检测的路径则是通过传感器实时检测地面轨迹,然后根据检测到的路径信息对小车进行实时控制,使其能够跟随着地面轨迹行驶。

另外,智能小车循迹技术的实现还需要考虑控制算法和执行器。

控制算法是指
对传感器检测到的路径信息进行处理和分析,然后产生相应的控制指令,控制小车进行行驶。

执行器则是指根据控制指令对小车的驱动系统进行控制,使其按照指令进行行驶。

总的来说,智能小车循迹技术是通过传感器检测地面轨迹,控制系统进行路径
分析和控制指令生成,以及执行器对小车进行实时控制,从而实现小车在特定轨迹上行驶的技术。

这项技术在自动化领域有着广泛的应用前景,可以提高物流运输效率,减少人力成本,同时也为无人驾驶技术的发展提供了重要支持。

随着传感器和控制系统技术的不断进步,相信智能小车循迹技术将会得到更加广泛的应用和发展。

毕业设计基于图像传感器的自动循迹智能车

毕业设计基于图像传感器的自动循迹智能车

系统软件流程图
软件的开发工具和系统的调试
• 1.CodewarriorV4.7软件及其应用 • Codewarrior软件是Metrowerks公司开发的软件集 成开发环境及IDE(intergrated develop inviroment),Freescale的单片机都可以在 codewarior IDE软件下进行开发,codewarrior IDE 为软件开发提供了一系列的工具
智能车系统的分析
• 1.系统模型总体框图
• 2.系统控制电源模块分析
• 3.系统软件模块的分析
• 从该结构图中可以看出,系统的软件模块主要有: • 1. 单片机系统的初始化,包括单片机系统时钟的初始化、 ATD模块的初始化、PWM模块的初始化、增强型时钟模 块的初始化,还有一些输入输出口的初始化; • 2. 图像信号的采集:通过对图像信号波形的学习,根据图 像信号的特点,采集有效图像信号; • 3. 图像信号的处理:将采集到的信号存储在单片机中,通 过对图像信号的分析和判断来识别路径,判断黑线中间位 置,判断道路是直线还是曲线,以及通过计算判断出曲线 的斜率,从而进一步的控制舵机的转角和驱动电机的转速。 • 4. 舵机转角的控制和电机转速的控制:通过控制PWM口 的信号输出可以实现对舵机转角和轮速的控制
研究课题:基于图像传感器的自 动循迹智能车系统设置
指导老师: 学生: 专业:车辆工程
智能车概述
• 智能车是一种轮式移动机器人,它能够自主进行路径识别、 决策规划以选择最佳的行驶状态,智能车集中运用了自动 控制、传感器技术、汽车电子、电气、计算机、机械等多 个学科的知识。随着控制技术、计算机技术和信息技术的 发展,智能车在工业生产和日常生活中已扮演了非常重要 的角色。车辆智能化是汽车工业今后的发展趋势,也是人 们对安全性、智能化要求越来越高未来汽车的发展方向。 随着计算机技术和信息技术为代表的高新技术的发展,智 能车辆技术的研究将会有突破性的进展。智能车辆系统的 实用化是智能车辆发展的前进方向,适应性强、环境适应 性好的智能车辆将是研究的重点。

基于光电传感器的循迹避障小车控制系统

基于光电传感器的循迹避障小车控制系统

0引言近年来光电传感技术在智能小车上应用普遍,但光电管发射功率及各管间相互干扰会导致小车在路径识别时发生故障,影响行驶[1]。

目前智能小车在自动行驶过程中识别、避开障碍物的措施基本上是采用摄像头来采集道路信息[2]。

此方法中,不仅信号采集速度慢、受外界电磁干扰严重,影响小车行驶路线,且易出现信号处理中断,造成智能小车在快速行驶时无法及时有效避开障碍物。

为了有效避开障碍物,小车需降低速度,行驶效率大大降低,应用一直受到制约[3]。

为解决以上问题,本文提出基于激光测距的循迹避障小车控制系统,实现小车快速寻找到点亮的信标灯所在之处的目标,识别到信标灯后,小车第一时间向其前进,在前进过程中需防止与其他车辆发生碰撞,到达点亮的信标灯规定范围。

待其灭灯后,小车停止前行,继续寻找下一个点亮的信标灯。

1系统方案的选择与描述循迹避障小车从指定位置出发,快速搜寻场地内随机点亮的信标灯,向其前进,待其熄灭后继续寻找下一个信标灯。

信标采用半球全向灯座,内部安装有红色高亮度发光二极管阵列,可以通过系统控制信标闪烁或者熄灭,智能小车识别信标的红光进行定位。

控制系统框由以下六个模块构成:灯光识别模块、电源管理模块、控制核心模块、电机驱动模块、方向识别模块、防碰撞模块。

控制系统框如图1所示。

系统分为控制系统和数据采集部分。

控制系统由控制核心模块、电源管理模块和电机驱动模块组基金项目:重庆市教委科学技术资助项目(编号KJ1601704、KJ20180198344)基于光电传感器的循迹避障小车控制系统钟馨怡1,李成勇2(1.重庆公共运输职业学院,重庆市402247;2.重庆工程学院电子信息学院,重庆市400056)摘要由于普通红外发射管具有漫反射效应,影响对应的接收管对传输信息的接收,应用在快速行驶循迹避障小车控制系统中,识别障碍物误差大。

选用发射与接收一体化的激光测距传感器采集道路信息,可以克服发、接两者之间的互相干扰。

设计一辆循迹避障小车控制系统,根据图像颜色比对算法,快速搜寻场地内随机点亮的信标灯的位置和坐标,并按照特定算法驱动小车向其前进,待其熄灭后继续自旋转寻找下一个信标灯。

基于光电传感器自动循迹的智能车系统设计

基于光电传感器自动循迹的智能车系统设计

第一章绪论1.1智能小车的意义和作用自第一台工业机器人诞生以来,机器人的开展已经普及机械、电子、冶金、交通、宇航、国防等领域。

近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。

人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。

随着科学技术的开展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。

视觉的典型应用领域为自主式智能导航系统,对于视觉的各种技术而言图像处理技术已相当兴旺,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些构造化环境简单的目标。

视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。

但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是一种实用有效的方法。

机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。

避障控制系统是基于自动导引小车〔AVG—auto-guide vehicle〕系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。

使用传感器感知路线和障碍并作出判断和相应的执行动作。

该智能小车可以作为机器人的典型代表。

它可以分为三大组成局部:传感器检测局部、执行局部、CPU。

机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。

可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。

基于上述要求,传感检测局部考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可,所以可以舍弃昂贵的CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。

智能小车的执行局部,是由直流电机来充当的,主要控制小车的行进方向和速度。

单片机驱动直流电机一般有两种方案:第一,勿需占用单片机资源,直接选择有PWM功能的单片机,这样可以实现准确调速;第二,可以由软件模拟PWM输出调制,需要占用单片机资源,难以准确调速,但单片机型号的选择余地较大。

循迹小车的原理

循迹小车的原理

循迹小车的原理循迹小车是一种基于传感器的智能机器人,它能够自动地在预设的路径上行驶,并根据环境的变化进行自我调整。

循迹小车的原理主要涉及到传感器、控制电路和电机三个方面。

首先,循迹小车依靠传感器来感知环境的变化,其中最常用的传感器是红外线传感器。

红外线传感器主要由发射器和接收器组成,其中发射器发射红外线信号,接收器接收反射回来的红外线信号。

当循迹小车在行驶过程中,传感器能够感知到路径上的黑线或者其他颜色差异,然后将这些信号转化为电信号,传递给控制电路。

其次,控制电路是循迹小车的核心部分,它根据传感器接收到的信号,进行相应的逻辑判断和处理,来控制电机的运动。

控制电路一般由集成电路组成,可以通过编程或者硬连线的方式来实现逻辑控制。

当传感器感知到黑线时,控制电路会判断是否需要转弯,根据不同的判断结果,向电机提供不同的控制信号,控制电机的转向和速度。

这样循迹小车就可以根据黑线的走向,做出适当的转弯和速度调整,从而沿着预设的路径行驶。

第三,电机是循迹小车的动力源,它负责驱动车轮的转动。

一般来说,循迹小车采用两个驱动轮,每个驱动轮都有一个电机来驱动。

电机接收控制电路输出的控制信号,根据信号的不同进行相应的运转,从而驱动车轮转动。

当循迹小车需要转弯时,控制电路会向电机提供不同的信号,使得其中一个电机停止或者反向运转,从而实现转弯动作。

通过控制电路对电机的控制,循迹小车可以根据需要改变行进速度和转弯半径,以实现在预设路径上的准确行驶。

综上所述,循迹小车的原理主要包括传感器的感知、控制电路的处理和电机的运转。

通过传感器感知路径上的黑线或其他有色标记,控制电路进行逻辑判断和处理,再通过控制信号控制电机的运动,循迹小车就可以自动地在预设的路径上行驶。

循迹小车的原理简单实用,可以通过调整控制电路和传感器的设置,实现不同场景下的行驶需求,因此在教育、娱乐和实验等领域都有广泛的应用。

基于图像传感器的智能循迹小车研究与实现

基于图像传感器的智能循迹小车研究与实现

基于图像传感器的智能循迹小车研究与实现作者:薄晓宁来源:《山东工业技术》2016年第24期摘要:随着经济的快速发展,车辆的数量大幅提升,而交通事故发生的频率也随之增加,为降低交通事故发生的概率,保证人民群众的生命安全,智能化交通系统设计思路出现并引起广泛关注,而以图像传感器为基础的智能循迹小车是智能化交通系统设计的重要方面。

在此背景下,本文针对基于图像传感器的智能循迹小车研究与实现问题展开研究,为智能交通系统的设计工作提供参考。

关键词:图像传感器;智能循迹小车;研究与实现DOI:10.16640/ki.37-1222/t.2016.24.1110 前言循迹即小车在白色地板上形式的过程中,可以通过红外探测方法,在感知黑色和白色地板对光线反射系数差异的基础上,自动、智能的在黑色线路中行驶的技术,但由于在现实环境中,白色地板和黑色线路的反射光线会受到多方面因素的影响,红外探测的难度大幅提升,所以要将对环境判断更加准确的图像传感器应用于智能循迹小车中。

1 基于图像传感器的智能循迹小车实现的基本原理分析由于图像传感器的分辨率相比传统红外探测方法更加理想,所以以图像传感器为基础进行智能循迹小车设计,可以更理想的保证循迹运行效果。

在图像传感器应用的过程中,智能小车一方面通过红外光电管和摄像头对前方的道路颜色进行采样,结合采样数据识别具体的路径,在此过程中为使检测精度达到预期效果,光电管的安装位置与地面之间的距离应得到较严格的控制,但两者间的距离缩减或使高速运行的智能小车过弯能力下降,此时利用摄像头在前瞻距离方面的优势可以弥补光电管的缺陷,完成过弯、抄近道等智能操作[1]。

另外,面阵式布局的摄像头在图像采集的过程中所获取的数据点多达上千,使智能小车判断车道的依据更加丰富,进一步提升了小车运行的安全性。

但由于摄像头数据处理难度大,而且图像采集效果受道路环境的影响非常大,所以在光电管和摄像头结合应用的过程中,仍存在图像处理等问题。

基于某光电传感器自动循迹小车设计.doc

基于某光电传感器自动循迹小车设计.doc

摘要制作自动寻迹小车所涉及的专业知识包括控制、模式识别、传感技术、汽车电子、电气、计算机、机械等诸多学科。

为了使小车能够快速稳定的行驶,设计制作了小车控制系统。

在整个小车控制系统中,如何准确地识别路径及实时地对智能车的速度和方向进行控制是整个控制系统的关键。

由于此小车能够自动寻迹,加速,减速.故又被称作为智能车.本智能车控制系统设计以MC9S12XS128微控制器为核心,通过两排光电传感器检测小车的位置和运动方向来获取轨道信息,根据轨道信息判断出相应的轨道类型,并分配不同的速度给硬件电路加以控制,完成了在变负荷条件下对速度的快速稳定调节。

红外对射传感器用于检测智能车的速度,以脉宽调制控制方式(PWM)控制电机和舵机以达到控制智能车的行驶速度和偏转方向。

软件是在CodeWarrior 5.0的环境下用C语言编写的,用PID控制算法调节驱动电机的转速和舵机的方向,完成对模型车运动速度和运动方向的闭环控制。

智能车能够准确迅速地识别特定的轨道,并沿着引导线以较高的速度稳定行驶。

整个智能车系统涉及车模机械结构的改装、传感器电路设计及控制算法等多个方面。

经过多次反复的测试,最终确定了现有的智能车模型和各项控制参数。

关键词:MC9S12XS128;PID;PWM;光电传感器;智能车ABSTRACTMaking automatic tracing car involved the professional knowledge including control, pattern recognition, sensing technology, automobile electronics, electrical, computer, machinery and so on many subjects. According to the technical requirements of the contest, we design the intelligent vehicle control system. In the entire control system of the smart car, how to accurately identify the road and real-time control the speed and direction of the Smart Car is the key to the whole control system.Because this car can automatic tracing, accelerate, slowing down. So it is also known as intelligent car this intelligent vehicle control system design take the MC9S12XS128 micro controller as a core, examines car's position and the heading through two row of photoelectric sensors gains the racecourse information, judges the corresponding racecourse type according to the racecourse information, and assigned the different speed to control for the hardware circuit, has completed in changes under the load condition to the speed fast stable adjustment. The infrared correlation sensor uses in examining the intelligent vehicle's speed, (PWM) controls the electrical machinery and the servo by the pulse-duration modulation control mode achieves the control intelligence vehicle's moving velocity and the deflection direction.The software is under the CodeWarrior 5.0 environment with the C language compilation, actuates electrical machinery's rotational speed and servo's direction with the PID control algorithm adjustment, completes to the model vehicle velocity of movement and the heading closed-loop control. The intelligent vehicle can distinguish the specific racecourse rapidly accurately, and along inlet line by the high speed control travel.The entire intelligent vehicle system involves the vehicle mold mechanism the re-equipping, the sensor circuit design and the control algorithm and so on many aspects. After the repeated test, has determined the existing intelligent vehicle model and each controlled variable finally many times.Keywords:MC9S12XS128; PID;PWM;photoelectric sensor; smart car目录第一章绪论 (1)1.1引言 (1)1.2本文设计方案概述 (1)1.2.1总体设计 (1)1.2.2传感器设计方案 (2)1.2.3控制算法设计方案 (4)第二章机械结构设计 (5)2.1前轮倾角的调整 (5)2.2齿轮传动机构调整 (5)2.3后轮差速机构调整 (6)2.4红外传感器的固定 (6)2.5小车重心的调整 (6)2.6齿轮啮合间隙的调整 (7)第三章硬件电路的设计 (8)3.1系统硬件概述 (8)3.2电源模块的设计 (9)3.2.1 LM2940供电电路 (10)3.2.2 LM2596供电电路 (11)3.3电机驱动模块 (12)3.3.1模块介绍 (12)3.3.2使用说明 (13)3.3.3电压电流测试结果 (14)3.4舵机控制模块 (15)3.5路径识别模块 (16)3.7单片机模块的设计 (18)3.8硬件电路部分总结 (18)第四章软件系统设计 (20)4.1智能车控制算法监测平台 (20)4.2主程序流程图 (20)4.3系统的模块化结构 (21)4.3.1时钟初始化 (21)4.3.2串口初始化 (22)4.3.3 PWM初始化 (23)4.4中断处理流程 (25)4.5小车控制算法 (25)4.5.1舵机控制 (26)4.5.2速度控制 (27)4.6坡道的处理 (29)4.7弯道策略分析 (29)第五章开发与调试 (31)5.1软件开发环境介绍 (31)5.2智能车整体调试 (34)5.2.1 舵机调试 (34)5.2.2 电机调试 (34)5.2.3 动静态调试 (34)第六章结论 (36)6.1智能车的主要技术参数说明 (36)6.2总结 (36)6.3不足与展望 (36)参考文献 (37)致 (38)附录1 (39)附录2 (47)附录3 (60)第一章绪论1.1引言思路及技术方案是一个工程项目的灵魂。

循迹小车原理

循迹小车原理

循迹小车原理
循迹小车是一种智能机器人,通过感应地面上的黑线来实现自主导航。

它具有一组红外线传感器,安装在车体底部。

这些传感器能够感知地面上的线路情况,判断车子应该如何行驶。

循迹小车的工作原理是基于光电传感技术。

当小车上的传感器感受到黑线时,光电传感器就会产生信号。

这些信号通过控制系统进行处理,确定小车的行驶方向。

如果传感器感受到较亮的地面,即没有黑线的区域,控制系统会判断小车偏离了轨迹,并做出相应的调整。

为了确保精确的导航,循迹小车的传感器通常安装在车体的前部和底部,使其能够更好地感知地面上的线路。

此外,传感器之间的距离也很重要,它们应该能够覆盖整个车体宽度,以确保车子能够准确地行驶在黑线上。

循迹小车的控制系统通过对传感器信号的分析来判断车子的行驶方向。

当传感器感知到线路时,控制系统会发出信号,控制电机转动,使车子朝着正确的方向行驶。

如果传感器感知不到线路,或者线路出现了间断,控制系统会做出相应的调整,使车子重新找到正确的线路。

循迹小车是一种简单而有效的机器人,它在许多领域都有广泛的应用。

例如,它可以用于仓库自动化,实现货物的自动运输;也可以用于工业生产线,实现物品的自动装配。

总的来说,循迹小车通过光电传感技术,能够自主导航,实现精确的线路行驶。

基于CMOS图像传感器的视觉导航智能小车设计

基于CMOS图像传感器的视觉导航智能小车设计

基于CMOS图像传感器的视觉导航小车设计摘要89C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。

这里介绍的是如何用89C51单片机来实现兰州理工大学的毕业设计,该设计是结合科研项目而确定的设计类课题。

本系统以设计题目的要求为目的,采用89C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。

整个系统的电路结构简单,可靠性能高。

实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)CMOS图像传感器关键词:80C51单片机、光电检测器、PWM调速、电动小车An intelligence electricity motive small carbased on CMOS image sensrAbstract89C51 is a 8 bit single chip computer. Its easily using and multi-function suffer large users. This article introduces the LUT graduation design with the 89C51 single chip computer. This design combines with scientific research object. This system regards the request of the topic, adopting 89C51 for controlling core, super sonic sensor for test the hinder. It can run in a high and a low speed or stop automatically. It also can record the time, distance and the speed or searching light and mark automatically the electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyze.The adoption of technique as:(1)Reduce the speed by program the engine;(2)Efficient application of the sensor;(3)CMOS image sensor.Keywords:89C51 MCU, light electricity detector, PWM speed adjusting, Electricity motive small car目录一、系统设计要求................................................ - 1 -1.1 任务.................................................... - 1 -1.2设计相关要求............................................. - 1 -1.2.1 基本要求........................................... - 1 -1.2.2 主要技术指标....................................... - 1 -二、系统方案论证与选择.......................................... - 1 -2.1 系统基本方案............................................ - 2 -2.2系统各模块的最终方案..................................... - 7 -三、系统的硬件设计与实现........................................ - 8 -3.1系统硬件的基本组成部分................................... - 8 -3.2主要单元电路的设计....................................... - 9 -3.2.1电源电路........................................... - 9 -3.2.2控制电路.......................................... - 10 -3.2.3循迹探测电路...................................... - 13 -3.2.4边缘检测电路...................................... - 17 -3.2.5电机驱动电路...................................... - 19 -3.2.6 PWM调速.......................................... - 20 -3.2.7舵机控制电路........................... 错误!未定义书签。

基于摄像头的智能循迹小车控制算法设计

基于摄像头的智能循迹小车控制算法设计

基于摄像头的智能循迹小车控制算法设计智能循迹小车的设计包括车的机械结构设计,硬件电路设计和控制算法设计三个方面。

文章采用模糊控制和PID算法进行电机和舵机的控制,完成智能循迹小车的控制算法设计。

该控制算法能够使得智能循迹小车在指定赛道内完成自动行驶的功能,达到设计要求。

标签:算法设计;智能循迹小车;行驶控制引言随着人工智能技术的发展,智能行车软件开发已成为计算机科学领域的研究热点之一,许多的实验平台和驾驶辅助系统已经开发出来。

自动驾驶的实现需要依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作,让电脑可以在没有任何人类主动的操作下,自动安全地操作机动车辆。

基于摄像头的智能循迹小车的设计与控制软件研发是探索自动驾驶技术的一种有效途径,它以摄像头为路况监测传感器,完成在指定道路上的不同任务。

智能循迹小车的设计与控制软件研发主要包含三个基本方面[1-3]:机械结构的设计、硬件系统的搭建、软件系统的编写。

机械结构调整模仿汽车的机械结构,包括重心调整,前轮定位等。

硬件电路的设计遵从可靠性,稳定性和完整性,设计出一套符合要求的硬件电路。

软件设计通过道路识别算法和控制算法完成控制,同时以大量的赛道数据为基础保证了智能车的稳定性。

1 智能循迹小车的机械结构小车的机械结构主要由电机,底盘,舵机和摄像头四个部分构成。

在智能车底板与后驱动模块之间增加垫片可以降低底盘离地的间隙,为了保证智能车在弯道行驶时不发生侧滑,底盘离地的间隙应该是越小越好,但还要考虑车模在坡道处底盘不会碰到赛道,经过实验设置底盘离地间隙为8mm。

舵机采用前置悬置方式安装,使摆臂和舵机始终处于同一个水平面,有利于转向的灵活性,缩短舵机反应时间。

智能车CMOS摄像头的安装主要考虑了三个因素[4-5]:首先,保证摄像头的位置绝对居中且正对前方;其次,在安装高度上要尽量高,获取足够多的路况信息;最后,近瞻距离智能车20CM之内,用来保证智能车不偏离赛道。

基于图像传感器的小车循迹控制

基于图像传感器的小车循迹控制

基于图像传感器的小车循迹控制常州工学院制作学生:杨义鹏,杨锟,高星宇指导老师:肖闽进,蔡纪鹤,马金祥一、设计方案工作原理1、摄像头图像识别的循迹小车设计背景当前,实用的图像处理系统都要求高速处理。

目前广泛采用软件进行处理,但软件处理存在速度、成本的问题。

近年来,随着现成可编程门阵列FPGA的发展,为提高图像处理系统的性能提供了新的思路和方法。

FPGA的并行特性所带来的高速性,以及低成本低功耗等特性,都是计算机无法比拟的。

摄像头循迹小车的FPGA以及PCB部分采用digilent公司Basys3 FPGA开发板作为控制核心,此款开发板采用xilinx 7系列芯片,板卡设计小巧,同时片上资源也足以满足大多教学应用场合。

2、预期实现目标定位设计并制作基于basys3的FPGA运用ov7725摄像头进行图像识别的循迹小车,能够拍摄画面并经行捕捉,在小车偏离赛道时进行控制使其能够完成循迹的目的。

3、技术方案分析比较方案1:采用带fifo的ov7670摄像头做二值化循迹图1-1带fifo的ov7670摄像头该摄像头自带fifo模块,是针对慢速的MCU能够实现图像采集控制推出的带有缓冲存储空间的一种模块,自带的fifo(先进先出)存储芯片使得处理图像拍摄数据存储时避免了SDRAM、DDR的使用,包含30w像素的图像感光芯片,操作和使用很方便,对读出的数据进行二值化处理,加上阈值后可以进行循迹使用。

方案2:采用带硬件二值化的ov7725摄像头做二值化循迹图1-2 带硬件二值化的ov7725摄像头此摄像头自带硬件二值化可以直接输出二值化后的0和1黑白图像,并且采样和输出速度要高于ov7670,在进行黑线循迹时优化二值化算法使得循迹变得简单。

方案3:采用ov7725摄像头进行图像捕捉此摄像头相对于ov7670的优点仍为高速的采样和输出速度,相对于带有硬件二值化摄像头丧失了二值化的优势但是可以摒弃二值化单纯只能循迹黑线的问题,进行图像识别而可以直接对物体进行图像捕捉,增加了使用的范围。

基于摄像头传感器的智能车循迹算法设计方案

基于摄像头传感器的智能车循迹算法设计方案

基于摄像头传感器的智能车循迹算法设计方案智能车循迹算法设计是一个面向摄像头传感器的重要问题。

在该设计方案中,我们将使用摄像头传感器获取实时图像,并通过算法对车辆的行驶轨迹进行识别和监控。

1.硬件配置首先,我们需要准备一辆小型车辆,安装上摄像头传感器,以便获取行驶过程中的实时图像。

摄像头传感器应具备高清晰度、广角和长距离拍摄等特点,以确保获得准确的图像信息。

2.图像采集和处理摄像头传感器将连续获取车辆行驶过程中的实时图像,这些图像将用于车辆循迹算法的识别和处理。

在图像采集过程中,需要优化传感器的曝光、对焦和白平衡等参数,以确保图像的清晰度和准确性。

在图像处理方面,我们可以借助计算机视觉技术,使用图像处理算法对采集到的图像进行预处理。

预处理的目标是提取图像中的目标物体,并将其转换为二值图像,以便后续的轨迹识别和分析。

3.循迹算法设计循迹算法是整个智能车循迹系统的核心。

其主要任务是通过分析图像中的车道线信息,实现车辆的自动循迹。

在循迹算法的设计中,我们可以采用以下步骤:步骤1:车道线检测步骤2:车道线跟踪检测到车道线后,接下来需要对其进行跟踪。

可以使用基于Hough变换或RANSAC算法的直线拟合方法,通过拟合检测到的车道线点集,得到车道线的方程参数。

步骤3:车辆偏离检测根据车道线的方程参数,可以计算出车辆与车道线之间的距离,进而判断车辆是否偏离了轨迹。

如果车辆偏离了轨迹,可以通过调整车辆的方向盘或驱动电机,使车辆重新回到正确的行驶轨迹上。

4.实时控制和反馈在循迹算法的实现中,需要实时控制车辆的转向和行驶速度。

可以通过与车辆的控制系统进行接口设计,将算法计算得到的转向角度和速度信息传递给车辆控制系统。

总结基于摄像头传感器的智能车循迹算法设计方案,包括硬件配置、图像采集和处理、循迹算法设计和实时控制与反馈等关键步骤。

通过对摄像头传感器获取到的图像进行车道线检测、跟踪和车辆偏离检测,可以实现智能车的自动循迹和行驶控制,提高行驶的准确性和安全性。

基于视觉传感器的自主循迹智能车的设计与实现

基于视觉传感器的自主循迹智能车的设计与实现

收稿日期:2010-06-04基金项目:西安交通大学国家级大学生创新性实验计划项目(081069822)作者简介:王建(1987),男,江苏南通人,毕业于西安交通大学自动化专业,工学学士,现为硕士研究生,研究方向为模式识别与智能系统。

基于视觉传感器的自主循迹智能车的设计与实现王 建1,张晓炜2a,杨 锦2b,昝 鑫2c,刘小勇2c(1.中国科学技术大学自动化系,合肥230027;2.西安交通大学a .人工智能与机器人研究所;b.金禾经济研究中心;c .电子与信息工程学院,西安710049)摘要:介绍了一种基于视觉传感器的智能车控制系统。

首先对系统硬件设计方案进行介绍,然后介绍了其软件设计,包括图像预处理、畸变校正以及小车控制策略,分为巡线控制和路径规划,其中巡线控制使用最优曲率算法,最后介绍了基于SD 卡的调试手段。

实验结果表明,该小车能在白底黑线的跑道上稳定快速地行驶,其均速可达3.3m /s 。

关键词:智能车;视觉传感器;畸变校正;巡线控制;路径规划中图分类号:TP273 文献标志码:A 文章编号:1000-0682(2010)06-0034-04D esign and i m ple m entation of a self-tracking s m art car based on vis ual sensorWANG Ji an 1,ZHANG X iaow e i 2a ,YANG J i n 2b ,ZAN X i n 2c ,L I U X i aoyong 2c(1.D e part m ent o f Au t o m a ti on,Un i v e rsit y of Science and Technol ogy of China,H e fei 230027,Ch i na;2a.In stitu t e of Ar ti fici a l Intelli gence and R obots ;b .Jinh e Center for E cono m ic R esearc h;c .S c hool of E le c t ron i c and Informa tion Eng i neeri ng,X i an Jiaotong Un i ve rsit y,X i an 710049,C hina )Abstract :This paper describes a con tro l syste m o f a v ision sensor-based s m art car .Firs,t the hardw are design o f the syste m is described ,and then it i n troduces its so ft w are design,incl u di n g i m age prepr ocessi n g ,d istortion correction ,and car contro l strategy wh ich is d i v i d ed into line-tracking contro l and path plann i n g ,and t h e opti m al curvature a l g orithm is used i n the li n e-tracki n g contro,l fina ll y in troduced the debugg i n g too ls -SD card on li n e store .Experi m enta l results sho w t h at the car can ran steady and rap i d on the r unw ay ,the average rate up to 3.3m /s .K ey w ords :s m art car ;visua l sensor ;d istortion correction;li n e-track i n g con tro;l path plann i n g0 引言该文的背景是第四届全国大学生 飞思卡尔!杯智能车比赛。

循迹小车设计方案

循迹小车设计方案

循迹小车设计方案1. 引言循迹小车是一种基于图像处理和电机控制的智能机器人,它可以通过感知地面上的黑色轨迹线来自动移动。

本文档将详细介绍循迹小车的设计方案,包括硬件组件、电路连接和代码实现等。

2. 硬件组件循迹小车的硬件组件主要包括以下几个部分:2.1 微控制器微控制器是循迹小车的核心控制单元,负责接收和处理传感器的数据,并控制电机的运动。

常用的微控制器有Arduino、Raspberry Pi等。

本设计方案以Arduino为例进行介绍。

2.2 循迹模块循迹模块是用于感知地面上的黑色轨迹线的传感器,它通常由多个红外线传感器阵列组成。

传感器阵列会发射红外线向地面照射,当光线被黑色轨迹线吸收时,传感器会检测到光线的变化。

通过检测多个传感器的输出,可以确定小车当前位置的偏移量。

常用的循迹模块有TCRT5000、QTR-8A等。

2.3 电机驱动模块电机驱动模块用于控制小车的电机,使其能够前进、后退和转向。

常用的电机驱动模块有L298N、TB6612FNG等。

2.4 电源模块电源模块为循迹小车提供电能,通常使用锂电池或者干电池。

3. 电路连接循迹小车的电路连接如下图所示:┌───────────┐│ Arduino │└─────┬─────┘│▼┌───────────┐│ 循迹模块│└─────┬─────┘│▼┌───────────┐│ 电机驱动│└─────┬─────┘│┌─────────────────────────┐│ 左电机右电机│└─────────────────────────┘连接步骤如下:1.将循迹模块的信号引脚连接到Arduino的数字引脚上。

2.将电机驱动模块与Arduino的数字引脚连接,用于控制电机的运动。

3.将左电机的正极和负极分别连接到电机驱动模块的输出端口。

4.将右电机的正极和负极分别连接到电机驱动模块的输出端口。

5.将Arduino和电机驱动模块连接到同一个电源模块上。

智能小车循迹原理

智能小车循迹原理

智能小车循迹原理智能小车循迹技术是一种基于光电传感器的自动导航技术,通过对地面反射光的检测和分析,实现小车在指定轨迹上行驶的能力。

本文将从传感器原理、信号处理和控制系统三个方面详细介绍智能小车循迹的工作原理。

一、传感器原理智能小车循迹系统主要依靠光电传感器来感知环境,其中常用的光电传感器有红外线传感器和光敏电阻传感器。

红外线传感器是最常见的一种传感器,其工作原理是通过发射和接收红外线来检测地面上的黑线或白线。

当传感器上方是黑线时,地面会吸收红外线,传感器接收到的光强较低;当传感器上方是白线时,地面会反射红外线,传感器接收到的光强较高。

通过检测光强的变化,系统可以确定小车当前位置,以便进行相应的控制。

光敏电阻传感器则是通过光敏电阻的电阻值随光照强度变化来实现检测。

当地面上有黑线时,光敏电阻接收到的光照较强,电阻值较低;当地面上是白线时,光敏电阻接收到的光照较弱,电阻值较高。

通过检测电阻值的变化,系统可以判断小车当前所在位置。

二、信号处理传感器感知到的光信号需要经过一系列的处理和分析,以提取有用的信息。

首先,传感器采集到的光信号需要进行放大和滤波处理,以提高信号的稳定性和可靠性。

接着,通过比较传感器输出信号与设定的阈值,判断当前检测到的是黑线还是白线。

最后,根据检测结果,系统会输出相应的电信号给控制系统,以实现对小车运动的控制。

三、控制系统智能小车循迹系统的控制系统通常由微控制器或单片机来实现。

控制系统根据传感器感知到的信号,判断小车当前位置及偏离轨迹的程度,并根据预设的算法进行相应的控制。

当小车偏离轨迹时,系统会根据传感器的输出信号控制电机的转速和方向,使小车重新回到指定轨迹上。

同时,控制系统还可以实现其他功能,如避障、避免碰撞等。

总结:智能小车循迹原理是基于光电传感器的自动导航技术,通过对地面反射光的检测和分析,实现小车在指定轨迹上行驶的能力。

传感器原理主要是利用红外线传感器或光敏电阻传感器来感知地面上的黑线或白线。

基于摄像头的智能车循迹方法[权威资料]

基于摄像头的智能车循迹方法[权威资料]

基于摄像头的智能车循迹方法【摘要】本文基于摄像头传感器设计并实现智能车自主循迹行驶。

采用摄像头传感器的信号采样模块获取赛道黑线信息,高效稳定的循迹算法使小车能够自主识别黑色引导线并根据黑色引导线实现快速稳定的寻线行驶。

【关键词】智能;传感器;PID一、前言智能车辆(Intellignt Vehicle-Iv),又叫轮式移动机器人,是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统[1],它体现了自动控制、人工智能、传感技术、机械技术、计算机技术等多个学科领域理论技术的交叉和综合。

自主导航技术是智能车辆最为核心的技术;而基于视觉的自主导航技术是针对城市环境的智能车辆研究中极具前景的方向,是典型的高新技术综合体。

智能车辆致力于提高汽车的安全性、舒适性和提供优良的人车交互界面,是世界车辆工程领域研究的热点和汽车工业增长的新动力。

美国交通部已开始一项五年计划,与美国通用汽车公司合作研发一种智能防撞系统。

1995年6月,NabLab5进行了穿越美国陆地的实验NHA,从美国宾州的匹兹堡到美国加州的圣地亚哥城市,其路程4587公里,其中自主驾驶部分占百分之九十七。

2003年,中国清华大学计算机系智能技术与系统国家重点实验室在中国科学院院士张钹带领下研究制作的智能移动车辆清华THMR-V [2]型智能车,具备面向全国高速公路与一般道路的功能。

车辆采用的是道奇7座车改装而成,装有激光测距仪器和彩色摄影机组成的路径与障碍物检测系统;由GPS、光码盘和磁罗盘组成的组合GPS导航系统等。

计算机系统进行视觉处理,完成路径规划、信息融合、决策与行为控制等诸多功能。

二、“飞思卡尔”智能车的发展(1)国外发展现状“飞思卡尔”杯智能车竞赛于2000年在韩国首次举办,韩国大学生智能模型车竞赛是韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司赞助下成立举办的以飞思卡尔单片机为核心的学生科技竞赛。

由主办方提供标准的智能小车模型、直流驱动电机、舵机、可充电锂离子电池,参赛的队伍要制作一辆可以自主识别道路的智能车辆,在固定设计的道路上自动识别道路和自主行驶,跑完赛程用的时间最短,并结合技术论文评分名次较高的参赛队伍就是胜利队伍。

基于STM32的智能小车摄像头循迹系统_毕业设计论文精品

基于STM32的智能小车摄像头循迹系统_毕业设计论文精品

基于STM32的智能小车摄像头循迹系统_毕业设计论文精品智能小车摄像头循迹系统是基于STM32单片机开发的一种智能控制系统,在汽车行驶过程中利用摄像头采集车辆所在位置信息,并根据此信息实现车辆的自动导航。

本文将介绍该系统的设计流程、硬件架构和软件开发。

一、设计流程1.系统需求分析:确定系统的功能需求,包括摄像头采集图像、图像处理和车辆导航等。

2.系统设计:根据需求确定系统的硬件和软件设计方案。

3.摄像头选型与接口设计:选择合适的摄像头模块,并实现与STM32的接口设计。

4.图像采集与处理:利用摄像头采集图像,并通过图像处理算法提取车辆所在位置信息。

5.车辆导航算法设计:根据图像处理的结果,设计车辆导航的控制算法。

6.系统实现与调试:将各个模块进行集成,完成系统的硬件搭建和软件编程,并进行调试和测试。

二、硬件架构该系统主要包括STM32单片机、摄像头模块、电机驱动模块和车辆控制模块。

1.STM32单片机:负责系统的整体控制和图像处理,并根据图像处理的结果发送控制信号给电机驱动模块。

2.摄像头模块:通过图像传感器采集图像,并将图像数据传输给STM32单片机进行处理。

3.电机驱动模块:根据STM32单片机发送的控制信号,控制车辆的运动方向和速度。

4.车辆控制模块:用于接收电机驱动模块发送的控制信号,并控制车辆的运动。

三、软件开发1. 嵌入式软件开发:使用Keil或IAR等开发工具,编写STM32单片机的软件程序,实现图像采集、图像处理和车辆导航等功能。

2.图像处理算法设计:根据摄像头采集到的图像,设计图像处理算法,提取车辆所在位置信息。

3.车辆导航算法设计:根据图像处理的结果,设计车辆导航的控制算法,计算控制信号发送给电机驱动模块。

4.系统集成与调试:将上述软件程序上传到STM32单片机,并将各个硬件模块进行连接和调试,确保系统能够正常工作。

综上所述,基于STM32的智能小车摄像头循迹系统是一种基于图像处理的智能控制系统,通过摄像头采集车辆位置信息并实现自动导航。

基于摄像头传感器的智能车循迹算法设计方案

基于摄像头传感器的智能车循迹算法设计方案

基于摄像头传感器的智能车循迹算法设计 方案Design of intelligent car tracking algorithm based on camera sensor熊中华 (山东理工大学交通与车辆工程学院,山东淄博 255000)摘 要:本方案通过DMA进行摄像头与单片机之间的信息传输,采用大津法确定二值化阀值,进行图像分割,极大提高图像处理速度。

本文主要介绍了中心线拟合、最小二乘法补边界线、特征点提取、十字元素与车库元素识别与处理等算法,使智能车更平稳快速通过多种赛道元素。

关键词:DMA;大津法;最小二乘法;特征点;十字元素;随着汽车保有量的不断攀升,交通拥堵、交通事故不断频发,越来越多的国家投入到智能网联汽车的研发,智能网联汽车多采用传感器融合方案,视觉传感器作为其中一种重要的传感器,进行图像采集。

本文采用摄像头传感器进行图像采集,进行赛道元素特征识别,辅助智能车快速通过多种赛道元素,对于提高城市交通智能化有着重要意义。

1 摄像头传感器选取与安装1.1 摄像头传感器选取摄像头传感器是视觉检测的核心器件,信息量丰富,相较于电磁传感器,扫描距离更远,有利于提前进行路径规划。

本方案采用龙邱神眼摄像头MT9V034作为图像传感器,为灰度数字摄像头,只需3.3V供电,分辨率为120×188,具有高动态成像、超低功耗等多种优点,该摄像头采用8位并行输出,故像素点灰度值范围为0~255。

结合智能小车循迹特点,一般会将分辨率设置为80×60,即可获取赛道图像处理所需数据。

高分辨率,图像会更清晰,但数据量增加,传输时间延长,影响图像处理效率,如果再打开串口使用上位机,有机发光半导体(organic electroluminescence display, OLED)屏上图像会延迟,帧率降低,也不便于调试。

一般会降低分辨率提高帧率,但也会考虑算法性能,应注重单片机处理速度与图像刷新速度协调。

基于图像传感器的智能循迹小车研究与实现

基于图像传感器的智能循迹小车研究与实现
关键词 :图像传感 器;智能循迹 小车;研 究与 实现
D O T: 1 0 . 1 6 6 4 0 / j . c n k i . 3 7 — 1 2 2 2 / t . 2 0 1 6 . 2 4 . 1 1 1
0 ‘ 前言
循 迹 即小车在 白色 地板上 形式 的过程 中 ,可 以通过红 外探 测方 在直道和弯道 中均处 于最佳 大运行状态的车速检测模块 ,目前 ,主要 法 ,在 感知 黑色 和 白色 地板对 光线反 射系 数差异 的基 础上 , 自动 、 应用霍尔传感器 、光 电传感 器和光电编码器实现 ,在具体选择的过程 智能 的在黑 色线 路中行 驶的技 术 ,但 由于在 现实环 境 中, 白色地 板 中 ,结合具体传感器 的特 点进 行灵活的选择。另外 ,直接实现舵机转 和黑 色线路 的反射 光线 会受 到多方面 因素 的影 响,红外探 测的难 度 向的舵 机转 向模块 ,笔者 认为将 MC 9 S 1 2 X S 1 2 8 中的 P WM2 和P WM3 大幅 提升 ,所 以要 将对环 境判 断更加准 确 的图像传感 器应 用于智 能 级联基础上利用 P WM 2 进行脉冲调控信号 的输 出,可 以进一步提升智 循迹小车 中。 能小车舵机的反应速度 。除此之外 ,由数字 图像传 感器对 小车前路径
负载实现驱动 , 所 以通常在 电机和控制器之间设计驱动 电路 ,保证单 片机功 能的实现 。然后 ,对智能小车行车速度进 行调节 ,保证小车
1 基于图像传感器 的智能循迹小车实现的基本原 理分析 信息进行采集并利用单 片机对采集数 据进 行信息挖掘 ,引导小 车进行
由于图像传感器 的分辨率 相比传统红外探测方法更加理想 ,所 以 感 器和单 片机型号 分别是 0 V 7 6 2 0 和¥ 1 2 ,在具 体应用 中可结合 实际 以图像传感器为基础进行智 能循迹 小车设计 ,可以更理想 的保证循迹
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于图像传感器的小车循迹控制常州工学院制作学生:杨义鹏,杨锟,高星宇指导老师:肖闽进,蔡纪鹤,马金祥一、设计方案工作原理1、摄像头图像识别的循迹小车设计背景当前,实用的图像处理系统都要求高速处理。

目前广泛采用软件进行处理,但软件处理存在速度、成本的问题。

近年来,随着现成可编程门阵列FPGA的发展,为提高图像处理系统的性能提供了新的思路和方法。

FPGA的并行特性所带来的高速性,以及低成本低功耗等特性,都是计算机无法比拟的。

摄像头循迹小车的FPGA以及PCB部分采用digilent公司Basys3 FPGA开发板作为控制核心,此款开发板采用xilinx 7系列芯片,板卡设计小巧,同时片上资源也足以满足大多教学应用场合。

2、预期实现目标定位设计并制作基于basys3的FPGA运用ov7725摄像头进行图像识别的循迹小车,能够拍摄画面并经行捕捉,在小车偏离赛道时进行控制使其能够完成循迹的目的。

3、技术方案分析比较方案1:采用带fifo的ov7670摄像头做二值化循迹图1-1带fifo的ov7670摄像头该摄像头自带fifo模块,是针对慢速的MCU能够实现图像采集控制推出的带有缓冲存储空间的一种模块,自带的fifo(先进先出)存储芯片使得处理图像拍摄数据存储时避免了SDRAM、DDR的使用,包含30w像素的图像感光芯片,操作和使用很方便,对读出的数据进行二值化处理,加上阈值后可以进行循迹使用。

方案2:采用带硬件二值化的ov7725摄像头做二值化循迹图1-2 带硬件二值化的ov7725摄像头此摄像头自带硬件二值化可以直接输出二值化后的0和1黑白图像,并且采样和输出速度要高于ov7670,在进行黑线循迹时优化二值化算法使得循迹变得简单。

方案3:采用ov7725摄像头进行图像捕捉此摄像头相对于ov7670的优点仍为高速的采样和输出速度,相对于带有硬件二值化摄像头丧失了二值化的优势但是可以摒弃二值化单纯只能循迹黑线的问题,进行图像识别而可以直接对物体进行图像捕捉,增加了使用的范围。

最后选用方案及理由:采用带fifo的ov7725摄像头,原因为相比于ov7670摄像头,其处理速度更加快,相比于带硬件二值化的摄像头其可以做的不仅仅为简单的二值化循迹,可以上升到图像识别和捕捉的层面从而可以满足更多的需要。

4、系统结构工作原理系统的总体框图如图所示图1-3 系统结构工作原理5、功能指标和实现方法(1)通过ov7725摄像头拍摄画面采用ov7725摄像头,对画面进行初步处理,检测能否拍到数据为后续的图像处理和控制打下基础。

(2)对ov7725捕捉到的画面进行像素转换首先将采集到的RGB像素,转换成HSV像素,由于RGB色空间和HSV空间之间的转换为非线性的,硬件实现需要考虑时钟同步、算法优化、实时性等问题。

采用了低延迟的除法器实现Hue分量与Saturation分量的高速计算,从而实现了RGB转换成HSV。

(3)进行色彩提取和坐标计算原理是应用了色彩方面的理论,寻找类似黑线色彩的区域,然后计算这个区域的中心。

首先需要人为提取黑线的HSV分量(只提取一次);之后的每一帧都进行如下操作:遍历图像每个像素,对HSV分量和黑线相近的像素进行标注,然后对标注后的区域去噪,去噪后,对此区域进行中心点的计算。

每一帧结束都会将计算所得的中心坐标发送给舵机控制模块。

在标注过程中,假如背景有黑色区域,就会产生噪声。

本系统去噪、降噪的策略有两个方面:1.形态学处理,直接去除面积较小的噪点;2.设置权值的概念,降低较大噪点影响。

对于权值降噪,运用一个权值计算算法,中心点的计算会和权值相关。

对于每一个标注像素,都计算此像素和上一帧得到的中心点的距离,根据距离远近设定不同大小的权值,越接近中心的标注像素,权值越大,否则越小。

这样就会降低和捕捉物体距离较远,但面积较大的噪点的影响。

二、核心部件电路设计1、关键器件性能分析ov7725摄像头捕捉测试拍摄测试路线的图像通过VGA接口接显示器显示图像如2-1图所示图2-1 摄像头捕捉图像2、关键电路驱动接口(1)ov7725摄像头电路如图2-2所示图2-2 摄像头电路图(2)模数转换模块电路如图2-3所示图2-3 ADC电路图三、系统软件设计分析1、系统总体设计主程序流程图如图3-1所示图3-1 主程序流程图系统分为FPGA主控制器、摄像头采集、数据缓存机构、图像捕捉识别机构、图像追踪机构、VGA显示模块、舵机驱动模块以及反馈模块。

(1)FPGA主控制器:完成采集和信号处理等核心计算。

(2)摄像头采集机构:完成摄像头的数据采集。

(3)数据缓存机构:通过双扣ram来缓存采集到的数据。

(4)图像捕捉识别机构:捕捉特定区间的画面用来对比(5)图像追踪机构:与图像捕捉的特定区间进行比较,以此来追踪图像(6)VGA显示模块:现实摄像头拍摄和捕捉到的画面(7)舵机驱动模块:生成pwm波控制舵机和电机(8)反馈模块:反馈舵机的角度和当前追踪的位置运用PID算法进行闭环控制2、关键模块的主要代码(1)顶层设计文件如图所示图3-2 顶层模块图module design_1_wrapper(Config_Done,Move_EN,OV7725_D,OV7725_HREF,OV7725_PCLK,OV7725_SIOC,OV7725_SIOD,OV7725_VSYNC,OV7725_XCLK,btn_ColorExtract,clk100,pwm_out_x,pwm_out_y,rst,sw_ColorClear,vauxn14,vauxn6,vauxn7,vauxp14,vauxp15,vauxp6,vauxp7,vga_blue,vga_green,vga_hsync,vga_red,vga_vsync);output Config_Done; input Move_EN;input [7:0]OV7725_D; input OV7725_HREF; input OV7725_PCLK; output OV7725_SIOC; inout OV7725_SIOD; input OV7725_VSYNC; output OV7725_XCLK; input btn_ColorExtract; input clk100;output pwm_out_x; output pwm_out_y; input rst;input sw_ColorClear; input vauxn14;input vauxn15;input vauxn6;input vauxp14;input vauxp15;input vauxp6;input vauxp7;output [3:0]vga_blue; output [3:0]vga_green; output vga_hsync; output [3:0]vga_red; output vga_vsync;wire Config_Done; wire Move_EN;wire [7:0]OV7725_D; wire OV7725_HREF; wire OV7725_PCLK; wire OV7725_SIOC; wire OV7725_SIOD; wire OV7725_VSYNC; wire OV7725_XCLK; wire btn_ColorExtract; wire clk100;wire pwm_out_x;wire pwm_out_y;wire rst;wire sw_ColorClear; wire vauxn14;wire vauxn15;wire vauxn6;wire vauxn7;wire vauxp15;wire vauxp6;wire vauxp7;wire [3:0]vga_blue;wire [3:0]vga_green;wire vga_hsync;wire [3:0]vga_red;wire vga_vsync;design_1 design_1_i(.Config_Done(Config_Done),.Move_EN(Move_EN),.OV7725_D(OV7725_D),.OV7725_HREF(OV7725_HREF),.OV7725_PCLK(OV7725_PCLK),.OV7725_SIOC(OV7725_SIOC),.OV7725_SIOD(OV7725_SIOD),.OV7725_VSYNC(OV7725_VSYNC),.OV7725_XCLK(OV7725_XCLK),.btn_ColorExtract(btn_ColorExtract),.clk100(clk100),.pwm_out_x(pwm_out_x),.pwm_out_y(pwm_out_y),.rst(rst),.sw_ColorClear(sw_ColorClear),.vauxn14(vauxn14),.vauxn15(vauxn15),.vauxn6(vauxn6),.vauxn7(vauxn7),.vauxp14(vauxp14),.vauxp15(vauxp15),.vauxp6(vauxp6),.vauxp7(vauxp7),.vga_blue(vga_blue),.vga_green(vga_green),.vga_hsync(vga_hsync),.vga_red(vga_red),.vga_vsync(vga_vsync)); endmodule(2)摄像头ov7725模块图3-3 ov7725模块module design_1_cam_ov7725_0_0 ( pclk,vsync,href,d,H_cnt,V_cnt,addr,dout,we,wclk);input wire pclk;input wire vsync;input wire href;input wire [7 : 0] d;output wire [11 : 0] H_cnt; output wire [10 : 0] V_cnt; output wire [16 : 0] addr;output wire [15 : 0] dout;output wire we;output wire wclk;cam_ov7725 inst (.pclk(pclk),.vsync(vsync),.href(href),.d(d),.H_cnt(H_cnt),.V_cnt(V_cnt),.addr(addr),.dout(dout),.we(we),.wclk(wclk)module cam_ov7670_ov7725(input pclk,input vsync,input href,input[7:0] d,output [11:0]H_cnt,output [10:0]V_cnt,output[16:0] addr,output reg[15:0] dout,output reg we,output wclk);reg [15:0] d_latch;reg [16:0] address;reg [16:0] address_next;reg [1:0] wr_hold;reg [1:0] cnt;initial d_latch = 16'b0;initial address = 19'b0;initial address_next = 19'b0;initial wr_hold = 2'b0;initial cnt = 2'b0;assign addr = address;assign wclk = pclk;reg[9:0]hcnt,vcnt,href_post;assign H_cnt = (hcnt/2>=0&&hcnt/2<320)?hcnt/2:0; assign V_cnt = (vcnt>=0&&vcnt<240)?vcnt:0;always@(posedge pclk)beginif( vsync ==1) beginaddress <=17'b0;address_next <= 17'b0;wr_hold <= 2'b0;cnt <= 2'b0;else beginif(address<76800)address <= address_next;elseaddress <= 76800;we <= wr_hold[1];wr_hold <= {wr_hold[0] , (href &&( ! wr_hold[0])) };d_latch <= {d_latch[7:0] , d};if (wr_hold[1] ==1 )beginaddress_next <=address_next+1;dout[15:0] <= {d_latch[15:11] , d_latch[10:5] , d_latch[4:0] };end;endalways@(posedge pclk)beginif( vsync ==1) beginvcnt <= 0;hcnt <= 0;endelse beginif ({href_post,href}==2'b10 )beginvcnt <= vcnt+1;hcnt <= 0;endif(href ==1 )beginhcnt <= hcnt+1;endendendendmodule(3)舵机控制模块图3-4 舵机控制模块module design_1_servo_ctrl_0_0 ( vsync_in,x,y,ad_data_x,ad_data_y,duty_x,duty_y);input wire vsync_in;input wire [11 : 0] x;input wire [10 : 0] y;input wire [15 : 0] ad_data_x; input wire [15 : 0] ad_data_y; output wire [14 : 0] duty_x; output wire [14 : 0] duty_y;servo_ctrl inst (.vsync_in(vsync_in),.x(x),.y(y),.ad_data_x(ad_data_x),.ad_data_y(ad_data_y),.duty_x(duty_x),.duty_y(duty_y)module design_1_servo_ctrl_0_0 ( vsync_in,x,y,ad_data_x,ad_data_y,duty_x,duty_y);input wire vsync_in;input wire [11 : 0] x;input wire [10 : 0] y;input wire [15 : 0] ad_data_x; input wire [15 : 0] ad_data_y; output wire [14 : 0] duty_x;output wire [14 : 0] duty_y;servo_ctrl inst (.vsync_in(vsync_in),.x(x),.y(y),.ad_data_x(ad_data_x),.ad_data_y(ad_data_y),.duty_x(duty_x),.duty_y(duty_y)(4)模数转换、闭环反馈模块图3-5 ADC模块module xadc(input clk100, // Clock input for DRPinput rst,input vauxp6, vauxn6, // Auxiliary analog channel inputs input vauxp7, vauxn7, // Auxiliary analog channel inputs input vauxp14, vauxn14, // Auxiliary analog channel inputs input vauxp15, vauxn15, // Auxiliary analog channel inputsoutput [15:0] temperature_out,output [15:0] aux_out_6,aux_out_7,aux_out_14,aux_out_15 );reg [15:0] MEASURED_TEMP;reg [15:0] MEASURED_AUX0, MEASURED_AUX1;reg [15:0] MEASURED_AUX2, MEASURED_AUX3;reg [15:0] MEASURED_VCCINT,MEASURED_VCCAUX,MEASURED_VCCBRAM;assign aux_out_14 = MEASURED_AUX0;assign aux_out_15 = MEASURED_AUX1;assign aux_out_6 = MEASURED_AUX2;assign aux_out_7 = MEASURED_AUX3;assign temperature_out = MEASURED_TEMP;wire busy;wire [5:0] channel;wire drdy;wire eoc;wire eos;wire i2c_sclk_in;wire i2c_sclk_ts;wire i2c_sda_in;wire i2c_sda_ts;reg [6:0] daddr;reg [15:0] di_drp;wire [15:0] do_drp;wire [15:0] vauxp_active;wire [15:0] vauxn_active;wire dclk_bufg;reg [1:0] den_reg;reg [1:0] dwe_reg;reg [7:0] state = init_read;parameter init_read = 8'h00, read_waitdrdy = 8'h01, write_waitdrdy = 8'h03, read_reg00 = 8'h04, reg00_waitdrdy = 8'h05, read_reg01 = 8'h06, reg01_waitdrdy = 8'h07, read_reg02 = 8'h08, reg02_waitdrdy = 8'h09, read_reg06 = 8'h0a, reg06_waitdrdy = 8'h0b, read_reg10 = 8'h0c, reg10_waitdrdy = 8'h0d, read_reg11 = 8'h0e, reg11_waitdrdy = 8'h0f, read_reg12 = 8'h10, reg12_waitdrdy = 8'h11, read_reg13 = 8'h12,reg13_waitdrdy = 8'h13;BUFG i_bufg (.I(clk100), .O(dclk_bufg));always @(posedge dclk_bufg)if (rst) beginstate <= init_read;den_reg <= 2'h0;dwe_reg <= 2'h0;di_drp <= 16'h0000;endelsecase (state)init_read : begindaddr <= 7'h40;den_reg <= 2'h2; // performing readif (busy == 0 ) state <= read_waitdrdy;endread_waitdrdy :if (eos ==1) begindi_drp <= do_drp & 16'h03_FF; //Clearing AVG bits for Configreg0 daddr <= 7'h40;den_reg <= 2'h2;dwe_reg <= 2'h2; // performing writestate <= write_waitdrdy;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ;state <= state;endwrite_waitdrdy :if (drdy ==1) beginstate <= read_reg00;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg00 : begindaddr <= 7'h00;den_reg <= 2'h2; // performing readif (eos == 1) state <=reg00_waitdrdy;endreg00_waitdrdy :if (drdy ==1) beginMEASURED_TEMP <= do_drp;state <=read_reg01;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg01 : begindaddr <= 7'h01;den_reg <= 2'h2; // performing readstate <=reg01_waitdrdy;endreg01_waitdrdy :if (drdy ==1) beginMEASURED_VCCINT = do_drp;state <=read_reg02;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg02 : begindaddr <= 7'h02;den_reg <= 2'h2; // performing readstate <=reg02_waitdrdy;endreg02_waitdrdy :if (drdy ==1) beginMEASURED_VCCAUX <= do_drp;state <=read_reg06;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg06 : begindaddr <= 7'h06;den_reg <= 2'h2; // performing readstate <=reg06_waitdrdy;endreg06_waitdrdy :if (drdy ==1) beginMEASURED_VCCBRAM <= do_drp;state <= read_reg10;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg10 : begindaddr <= 7'h14;den_reg <= 2'h2; // performing readstate <= reg10_waitdrdy;endreg10_waitdrdy :if (drdy ==1) beginMEASURED_AUX0 <= do_drp;state <= read_reg11;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg11 : begindaddr <= 7'h15;den_reg <= 2'h2; // performing readstate <= reg11_waitdrdy;endreg11_waitdrdy :if (drdy ==1) beginMEASURED_AUX1 <= do_drp;state <= read_reg12;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg12 : begindaddr <= 7'h16;den_reg <= 2'h2; // performing readstate <= reg12_waitdrdy;endreg12_waitdrdy :if (drdy ==1) beginMEASURED_AUX2 <= do_drp;state <= read_reg13;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;endread_reg13 : begindaddr <= 7'h17;den_reg <= 2'h2; // performing readstate <= reg13_waitdrdy;endreg13_waitdrdy :if (drdy ==1) beginMEASURED_AUX3 <= do_drp;state <=read_reg00;daddr <= 7'h00;endelse beginden_reg <= { 1'b0, den_reg[1] } ;dwe_reg <= { 1'b0, dwe_reg[1] } ; state <= state;enddefault : begindaddr <= 7'h40;den_reg <= 2'h2; // performing readstate <= init_read;endendcasexadc_wiz_0 u_xadc (.di_in(di_drp), // input wire [15 : 0] di_in.daddr_in(daddr), // input wire [6 : 0] daddr_in.den_in(den_reg[0]), // input wire den_in.dwe_in(dwe_reg[0]), // input wire dwe_in.drdy_out(drdy), // output wire drdy_out.do_out(do_drp), // output wire [15 : 0] do_out.dclk_in(dclk_bufg), // input wire dclk_in.reset_in(rst),.vp_in(), // input wire vp_in.vn_in(), // input wire vn_in.vauxp6(vauxp6), // input wire vauxp6.vauxn6(vauxn6), // input wire vauxn6.vauxp7(vauxp7), // input wire vauxp7.vauxn7(vauxn7), // input wire vauxn7.vauxp14(vauxp14), // input wire vauxp14.vauxn14(vauxn14), // input wire vauxn14.vauxp15(vauxp15), // input wire vauxp15.vauxn15(vauxn15), // input wire vauxn15.channel_out(channel_out), // output wire [4 : 0] channel_out .eoc_out(eoc), // output wire eoc_out.alarm_out(alarm_out), // output wire alarm_out.eos_out(eos), // output wire eos_out.busy_out(busy) // output wire busy_out);module xadc_wiz_0(daddr_in, // Address bus for the dynamic reconfiguration port dclk_in, // Clock input for the dynamic reconfiguration port den_in, // Enable Signal for the dynamic reconfiguration portdi_in, // Input data bus for the dynamic reconfiguration portdwe_in, // Write Enable for the dynamic reconfiguration portreset_in, // Reset signal for the System Monitor control logic vauxp6, // Auxiliary channel 6vauxn6,vauxp7, // Auxiliary channel 7vauxn7,vauxp14, // Auxiliary channel 14vauxn14,vauxp15, // Auxiliary channel 15vauxn15,busy_out, // ADC Busy signalchannel_out, // Channel Selection Outputsdo_out, // Output data bus for dynamic reconfiguration port drdy_out, // Data ready signal for the dynamic reconfiguration porteoc_out, // End of Conversion Signaleos_out, // End of Sequence Signalot_out, // Over-Temperature alarm outputvccaux_alarm_out, // VCCAUX-sensor alarm outputvccint_alarm_out, // VCCINT-sensor alarm outputuser_temp_alarm_out, // Temperature-sensor alarm outputalarm_out, // OR'ed output of all the Alarmsvp_in, // Dedicated Analog Input Pairvn_in);input [6:0] daddr_in;input dclk_in;input den_in;input [15:0] di_in;input dwe_in;input reset_in;input vauxp6;input vauxn6;input vauxp7;input vauxn7;input vauxp14;input vauxn14;input vauxp15;input vauxn15;input vp_in;input vn_in;output busy_out;output [4:0] channel_out; output [15:0] do_out;output drdy_out;output eoc_out;output eos_out;output ot_out;output vccaux_alarm_out;output vccint_alarm_out;output user_temp_alarm_out;output alarm_out;wire GND_BIT;assign GND_BIT = 0;wire [15:0] aux_channel_p;wire [15:0] aux_channel_n;wire [7:0] alm_int;assign alarm_out = alm_int[7];assign vccaux_alarm_out = alm_int[2];assign vccint_alarm_out = alm_int[1];assign user_temp_alarm_out = alm_int[0]; assign aux_channel_p[0] = 1'b0;assign aux_channel_n[0] = 1'b0;assign aux_channel_p[1] = 1'b0;assign aux_channel_n[1] = 1'b0;assign aux_channel_p[2] = 1'b0;assign aux_channel_n[2] = 1'b0;assign aux_channel_p[3] = 1'b0; assign aux_channel_n[3] = 1'b0;assign aux_channel_p[4] = 1'b0; assign aux_channel_n[4] = 1'b0;assign aux_channel_p[5] = 1'b0; assign aux_channel_n[5] = 1'b0;assign aux_channel_p[6] = vauxp6; assign aux_channel_n[6] = vauxn6;assign aux_channel_p[7] = vauxp7; assign aux_channel_n[7] = vauxn7;assign aux_channel_p[8] = 1'b0; assign aux_channel_n[8] = 1'b0;assign aux_channel_p[9] = 1'b0; assign aux_channel_n[9] = 1'b0;assign aux_channel_p[10] = 1'b0;assign aux_channel_n[10] = 1'b0;assign aux_channel_p[11] = 1'b0;assign aux_channel_n[11] = 1'b0;assign aux_channel_p[12] = 1'b0;assign aux_channel_n[12] = 1'b0;assign aux_channel_p[13] = 1'b0;assign aux_channel_n[13] = 1'b0;assign aux_channel_p[14] = vauxp14; assign aux_channel_n[14] = vauxn14;assign aux_channel_p[15] = vauxp15; assign aux_channel_n[15] = vauxn15; XADC #(.INIT_40(16'h9000), // config reg 0 .INIT_41(16'h21F0), // config reg 1.INIT_42(16'h0400), // config reg 2.INIT_48(16'h4701), // Sequencer channel selection .INIT_49(16'hC0C0), // Sequencer channel selection .INIT_4A(16'h0000), // Sequencer Average selection .INIT_4B(16'h0000), // Sequencer Average selection .INIT_4C(16'h0000), // Sequencer Bipolar selection .INIT_4D(16'h0000), // Sequencer Bipolar selection .INIT_4E(16'h0000), // Sequencer Acq time selection .INIT_4F(16'h0000), // Sequencer Acq time selection .INIT_50(16'hB5ED), // Temp alarm trigger.INIT_51(16'h57E4), // Vccint upper alarm limit.INIT_52(16'hA147), // Vccaux upper alarm limit.INIT_53(16'hCA33), // Temp alarm OT upper.INIT_54(16'hA93A), // Temp alarm reset.INIT_55(16'h52C6), // Vccint lower alarm limit.INIT_56(16'h9555), // Vccaux lower alarm limit.INIT_57(16'hAE4E), // Temp alarm OT reset.INIT_58(16'h5999), // VCCBRAM upper alarm limit.INIT_5C(16'h5111), // VCCBRAM lower alarm limit .SIM_DEVICE("7SERIES"),)inst (.CONVST(GND_BIT),.CONVSTCLK(GND_BIT),.DADDR(daddr_in[6:0]),.DCLK(dclk_in),.DEN(den_in),.DI(di_in[15:0]),.DWE(dwe_in),.RESET(reset_in),.VAUXN(aux_channel_n[15:0]), .VAUXP(aux_channel_p[15:0]), .ALM(alm_int),.BUSY(busy_out),.CHANNEL(channel_out[4:0]), .DO(do_out[15:0]),.DRDY(drdy_out),.EOC(eoc_out),.EOS(eos_out),.JTAGBUSY(),.JTAGLOCKED(),.JTAGMODIFIED(),.OT(ot_out),.MUXADDR(),.VP(vp_in),.VN(vn_in));endmodule四、作品成效总结分析1、系统心能指标测试系统性能指标测试如图4-1、4-2、4-3、4-4所示图4-1 捕捉画面图图4-2 小车实物图图4-3 小车实物图图4-4 小车实物图2、创新特色总结展望从原来的单纯的只是二值化识别黑白进展到图像的直接识别,不仅可以追踪黑线还可以对物体以及人进行了追踪。

相关文档
最新文档