OV7620摄像头的视觉导航智能车设计和控制算法研究
(机械车辆工程专业论文)视觉导航智能车辆的路径识别和跟踪控制

the design of the controller.As the feedback controller uses only the present road information and COIl hardly work efficient under complicated or emergent conditions,the whole navigation road are classified into present road and future road,and they serve for feedback control and preview control respectively.So a feedback and preview controller is designed and it carl adjust the preview distance and speed of the vehicle according to the road.As a result,the tracking accuracy and
图3-4实际路径图像导航参数提取简图………………………………………………………27 图3.5数字图像示意图…………………………………………………………………………30 图3-6路径识别流程图…………………………………………………………………………31 图3.7最优阈值确定示意图…………………………………………………………………33 图3.8基于数学形态学运算的滤波效果图……………………………………………………34 图3-9路径识别的实时性处理…………………………………………………………………35 图4.1路径弯曲度计算示意图…………………………………………………………………38 图4.2预瞄控制原理图…………………………………………………………………………38 图4.3反馈控制导航参数提取图………………………………………………………………39 图4—4预瞄控制的导航参数提取………………………………………………………………39 图4.5预瞄控制导航参数和车速获取流程……………………………………………………41 图4-6智能车辆圆周运动示意图………………………………………………………………41 图4.7反馈和预瞄控制跟踪误差图……………………………………………………………43 图4.8平缓路径预瞄弯曲度和车速……………………………………………………………43 图5.1第一代视觉导航智能车辆路径跟踪示意图……………………………………………44 图5.2智能车辆视觉导航原理示意图………………………………………………………45 图5.3第一代智能车辆控制系统结构框图……………………………………………………45 图5.4第一代智能车辆硬件平台………………………………………………………………46 图5.5 SEED.DEC643开发板……………………………………………………………………47 图5-6XDS560 PCI仿真器板卡…………………………………………………………………47 图5.7 SEED.DECF2812开发板………………………………………-………………………48 图5.8 XDS USB2.0仿真器………………………………………………………………………48 图5-9基于DSP的智能车辆试验平台…………………………………………………………5l 图5.10基于DSP的智能车辆导航原理图………………………………………………………51 图5.11奥尼克斯MBC.5050黑白摄像机……………………………………………………5l 图5.12导航路径识别结果显示器……………………………………………………………52 图5-13路径识别系统实物图…………………………………………………………………52 图5.14智能车辆驱动用直流电机……………………………………………………………54
智能车控制算法范文

智能车控制算法范文智能车控制算法是指为了实现智能车的自主驾驶和精准控制而设计的一系列算法和方法。
智能车控制算法是智能车技术中最核心和关键的部分之一,它决定了智能车能否正确地感知环境、做出决策和执行相应的动作。
下面将介绍几种常见的智能车控制算法。
1.环境感知算法环境感知算法是智能车控制算法中最基础的部分之一、它通过使用传感器(如摄像头、激光雷达、超声波传感器等)获取车辆周围的信息,并使用图像处理和模式识别算法提取和分析这些信息,来实现对路况、障碍物和其他车辆等物体的感知。
常用的环境感知算法包括图像识别算法、目标跟踪算法和障碍物检测算法等。
2.路径规划算法路径规划算法用于确定智能车的行驶路径。
它需要将环境感知得到的信息和车辆的目标位置进行综合评估,以找到一条最优路径。
常见的路径规划算法包括A*算法、遗传算法和模糊控制算法等。
这些算法会考虑到车辆行驶的安全性、效率和舒适性等因素,并根据具体需求选择合适的路径。
3.运动控制算法运动控制算法用于实现智能车的运动控制,包括转向、加速、减速和停车等操作。
与传统车辆控制不同,智能车的运动控制算法需要更精准地控制车辆的动作,以适应复杂多变的交通环境。
常见的运动控制算法包括PID控制算法、模型预测控制算法和强化学习算法等。
4.决策与规划算法决策与规划算法用于智能车在具体交通环境中做出决策和规划行动。
它需要将环境感知和路径规划得到的信息进行集成和分析,确定车辆的行为并生成合适的控制指令。
常见的决策与规划算法包括行为树算法、状态机算法和人工神经网络算法等。
值得注意的是,以上算法仅是智能车控制算法中的一部分,实际的智能车控制系统中可能还会使用其他算法和方法。
此外,智能车控制算法的性能和效果还会受到硬件设备的限制和实际环境的影响。
因此,在设计和实施智能车控制算法时,需要综合考虑这些因素,以实现智能车的稳定、准确和安全的控制。
面向无人车的视觉感知与决策算法研究

面向无人车的视觉感知与决策算法研究无人车(autonomous vehicle)是指不需要人工干预即可自动驾驶的汽车。
它依靠感知、决策和控制系统来实现自主导航和安全驾驶。
在无人车的各个模块中,视觉感知与决策算法是至关重要的一环。
本文将探讨面向无人车的视觉感知与决策算法的研究进展和挑战。
一、引言随着人工智能和计算机视觉技术的快速发展,无人车的研究与应用正日益受到关注。
视觉感知与决策算法是无人车实现自主驾驶的核心技术。
通过图像和视频数据的获取、处理和分析,无人车能够对周围环境进行感知,并基于感知结果做出决策。
因此,优化视觉感知与决策算法对于提高无人车的安全性和驾驶效能至关重要。
二、视觉感知算法视觉感知算法是无人车实现环境感知的基础。
它利用摄像头、激光雷达等传感器获取环境信息,并将其转化为结构化的数据供决策模块使用。
视觉感知算法的主要技术包括目标检测、目标跟踪和场景分割。
1. 目标检测目标检测旨在识别图像或视频中出现的特定目标,并标记出其位置和形状。
常用的目标检测算法包括基于模板匹配的方法、基于特征提取的方法和基于深度学习的方法。
其中,深度学习在目标检测领域取得了巨大的突破,如YOLO、Faster R-CNN等算法,能够实现快速高效的目标检测。
2. 目标跟踪目标跟踪用于追踪图像或视频中的目标,并对其运动轨迹进行预测。
常见的目标跟踪算法包括卡尔曼滤波器、粒子滤波器和相关滤波器。
这些算法通过对目标的位置进行估计和更新,实现对目标的准确跟踪。
3. 场景分割场景分割是将图像或视频分割成不同的区域或对象。
它能够将背景与前景进行分离,为后续的目标检测和跟踪提供更准确的输入。
常用的场景分割算法包括基于颜色模型的方法、基于纹理模型的方法和基于深度学习的方法。
深度学习方法,如语义分割网络(Semantic Segmentation),已经在场景分割领域取得了显著的效果提升。
三、决策算法决策算法是无人车根据感知结果做出驾驶决策的关键环节。
基于车载视觉导航的智能车控制系统研究

摘
要 :视觉路径识别技术是汽车智能化发展 的必然趋 势。在基 于 MC S 2 S 2 MA 9 1 X 18 A单 片机 为主控制
器的智能 车控制系统设计 中, 索采用 C S摄像头作为路径导航数据采集单元 , 探 MO 实现 自主导航 的软硬件
设计方案 。通过边缘追踪等多种算法提取导航路 径信 息 , 对舵机 和驱动控制 电机分 别采用合理 的控制算 法, 使得智能车平稳快速地 行驶 。研究表 明: 此方案可以使智能车获得较好的控制效果。 关键 词 :智能车 ; 路径识别 ; 边缘追踪 ;图像处理
T c n lg Min a g6 1 1 Ch n e h oo y, a y n 2 0 0, ia)
Ab ta t Vi o a h i e t c t n tc n lg s a t n fc r S d v lp n n t e f t r . I e in o h s r c : s n p t d n i ai e h o o y i r d o a ’ e eo me ti h u u e n d sg f te i i f o e s r c rc n rls se te MC S 2 1 8 mat a o t y t m,h 9 1 XS 2 MAA i u e s te MCU. h ot a e a d h r wae o u o o u o s s d a h T e s f r n a d r fa tn mo s w n vg t n d sg s r aie y u ig C a i ai e i n i e l d b sn MOS c me a a h ah n v g t n d t c u s in mo u e V rey o o z a r s t e p t a ia i aa a q ii o d l . a it f o t
基于机器视觉的智能无人车导航系统设计

基于机器视觉的智能无人车导航系统设计近年来,随着机器视觉技术的快速发展和无人车技术的成熟,基于机器视觉的智能无人车导航系统成为研究的热点之一。
本文将介绍一种基于机器视觉的智能无人车导航系统的设计,以帮助无人车能够准确地感知和识别环境,做出合理的导航决策。
1. 系统概述基于机器视觉的智能无人车导航系统主要包括图像采集模块、图像处理算法、环境感知模块、决策模块和控制执行模块。
其中,图像采集模块负责获取车辆周围环境的图像数据;图像处理算法对采集到的图像数据进行处理,提取有用的信息;环境感知模块通过对处理后的图像信息进行分析,识别道路、障碍物等;决策模块根据环境感知结果制定导航策略;控制执行模块负责将导航策略转化为车辆行动。
2. 图像采集模块图像采集模块是智能无人车导航系统的起点,它通过安装摄像头等设备获取车辆周围环境的图像数据。
为了获得准确且清晰的图像数据,应该合理安置摄像头,采用高清晰度的图像传感器,并确保光线条件良好。
同时,考虑到无人车的动态性,图像采集模块还应具备较高的帧率和快速响应能力。
3. 图像处理算法图像处理算法是核心部分,它对采集到的图像数据进行处理,提取有用的信息。
常用的图像处理算法包括图像滤波、边缘检测、特征提取等。
其中,图像滤波能够去除图像噪声,边缘检测能够识别出图像中的边缘信息,特征提取则可用于识别道路、车辆、交通标志等。
4. 环境感知模块环境感知模块是系统中最关键的一部分,它通过对图像信息的分析,识别道路、障碍物等,为后续的决策模块提供准确的输入。
在环境感知方面,可以使用图像分割、目标检测、物体识别等算法。
图像分割可将图像分割成多个区域,方便识别目标,目标检测则可以识别出图像中的特定目标,物体识别则可以识别不同种类的物体。
5. 决策模块决策模块根据环境感知结果制定导航策略。
在此模块中,可以引入机器学习算法,通过训练数据集来训练模型,以实现智能决策。
例如,可以使用强化学习算法训练无人车在不同环境下的导航行为,让无人车根据环境感知结果选择最优路径、避免碰撞、合理规避障碍物等。
基于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舵机控制电路........................... 错误!未定义书签。
基于视觉触知技术的智能导航系统设计
基于视觉触知技术的智能导航系统设计智能导航系统设计——发展基于视觉触知技术的未来导航方式随着科技的不断发展,智能导航系统已成为现代人生活中不可或缺的一部分。
传统的导航系统依赖于GPS、地图和语音提示等方式,然而,在某些环境中,这些导航方式并不总是有效。
为了解决这一问题,基于视觉触知技术的智能导航系统应运而生。
基于视觉触知技术的智能导航系统通过结合计算机视觉和触觉反馈技术,为用户提供更加直观和实时的导航体验。
该系统利用摄像头、传感器和机器学习算法等技术,能够感知周围环境和用户的动作,从而提供更准确、具体的导航指引。
首先,基于视觉触知技术的智能导航系统可以通过实时图像处理和分析,识别并定位用户所处的环境。
系统通过摄像头获取用户所见的图像,并利用图像识别算法分析图像中的特征和标志物,从而确定用户位置。
通过这种方式,用户可以方便快捷地获得当前位置以及周围建筑物、道路等信息。
其次,该系统还可以利用机器学习算法学习用户的行为模式和习惯,以提供更加个性化的导航服务。
例如,当用户经常选择某个特定的路线或目的地时,系统可以根据用户的历史数据和偏好,为用户提供更快捷、更舒适的导航建议。
这种个性化的导航服务可以大大提升用户的出行体验。
此外,基于视觉触知技术的智能导航系统还能通过触觉反馈技术为用户提供导航指引。
在某些需要用户专注于环境的情况下,语音提示和视觉指引可能会分散用户的注意力,甚至不够准确。
因此,系统可以利用触觉反馈技术,例如振动或轻触等方式,提供实时的导航指引。
这种触觉反馈不仅可以减少用户对视觉和听觉的依赖,还能够更加直接地引导用户在复杂环境中移动。
基于视觉触知技术的智能导航系统设计面临一些挑战和限制。
首先,系统的准确性和实时性是至关重要的。
由于环境的变化和不确定性,系统应保证在各种情况下都能提供可靠的导航指引。
其次,系统的使用便捷性和易操作性也应被充分考虑。
用户应能够轻松理解和操作系统的功能,而无需额外的培训或专业知识。
智能电动模型车硬件模块设计
智能电动模型车硬件模块设计 “恩智浦杯”智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,学生以汽车电子相关技术为基础,设计制作一辆智能电动模型车。本文介绍了一种摄像头智能车的硬件模块构架,从整体层面上提供设计思路。
标签:智能车;硬件模块;设计思路 摄像头智能模型车是基于模拟和数字摄像头来感知赛道边界线,进而模型车自主规划运行路径来完成比赛,是全国大学生智能汽车竞赛赛车的一种。智能车的控制分为两部分:直行和转向,直流电动机可以作为直行部分的执行机构,舵机可以作为转向部分的执行机构。车速的检测采用编码器实现,整个过程形成闭环控制。总体构架为:电源模块、系统控制板、编码器、摄像头模块、舵机模块、7.2v电源、电机模块、电机驱动模块。
1 摄像头模块设计 摄像头工作原理为:通过光学镜头对景物成像,投射到图像传感器表面,形成电信号,经过A/D转换后变为数字图像信号,控制器再进行加工处理。图像传感器分为两类:CCD和CMOS,两者的差异之处为CCD采用连续扫描,只有在最后一个像素扫描完成后才进行放大;而CMOS传感器的每个像素都有一个将电荷放大为电信号的转换器。
OV7620模块是CMOS彩色/黑白图像传感器,支持连续和隔行扫描两种方式,最高像素为664x492,帧速率为30fps;数据格式包括YUV,YCrCb、RGB三种,满足了智能车的图像采集系统要求。OV7620的电平兼容3.3v和5v。目前智能车采用的XS128和K60单片机工作电平为5v和3.3v,所以无需做电平匹配。对于学生制作的智能车不一定摄像头帧率越快越好,OV7620,其PCLK(像素中断)的周期是73ns,较容易被K60的I/O捕捉,相反,帧率越快的摄像头,其PLCK的周期会越小,不容易被K60I/O捕捉。OV7620有两组并行的数据口Y[7…0]和UV[7…0],输出的灰度信号是Y,色度信号是UV,对于全白的赛道背景,采集回来的数据是255,对于黑色赛道,采集回来的数据是0,这样就能很好的区别开赛道与背景。
智能车摄像头程序OV7620
#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions *///#include <MC9S12XS128.h> /* derivative information *///#pragma LINK_INFO DERIV A TIVE "mc9s12xs128"#include "usart.h"#include "sccb.h"#include "delay.h"#define WRST 5#define RRST 4#define RCK 3#define WEE 2#define VSYNC 0void SetBusCLK_16M(void){CLKSEL=0X00; // disengage PLL to systemPLLCTL_PLLON=1; // turn on PLLSYNR=0x00 | 0x01; // VCOFRQ[7:6];SYNDIV[5:0]// fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)// fPLL= fVCO/(2 × POSTDIV)// fBUS= fPLL/2// VCOCLK Frequency Ranges VCOFRQ[7:6]// 32MHz <= fVCO <= 48MHz 00// 48MHz < fVCO <= 80MHz 01// Reserved 10// 80MHz < fVCO <= 120MHz 11REFDV=0x80 | 0x01; // REFFRQ[7:6];REFDIV[5:0]// fREF=fOSC/(REFDIV + 1)// REFCLK Frequency Ranges REFFRQ[7:6]// 1MHz <= fREF <= 2MHz 00// 2MHz < fREF <= 6MHz 01// 6MHz < fREF <= 12MHz 10// fREF > 12MHz 11// pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;POSTDIV=0x00; // 4:0, fPLL= fVCO/(2xPOSTDIV)// If POSTDIV = $00 then fPLL is identical to fVCO (divide by one)._asm(nop); // BUS CLOCK=16M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_32M(void){CLKSEL=0X00; // disengage PLL to systemPLLCTL_PLLON=1; // turn on PLLSYNR =0x40 | 0x03; // pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz;REFDV=0x80 | 0x01;POSTDIV=0x00;_asm(nop); // BUS CLOCK=32M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_40M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x04;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;_asm(nop); //BUS CLOCK=40M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_48M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x05;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=96MHz;_asm(nop); //BUS CLOCK=48M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_64M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x07;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz;_asm(nop); //BUS CLOCK=64M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_80M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x09;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz;_asm(nop); //BUS CLOCK=80M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_88M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0a;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=176MHz;_asm(nop); //BUS CLOCK=88M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_96M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0b;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=192MHz;_asm(nop); //BUS CLOCK=96M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_104M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0c;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=208MHz;_asm(nop); //BUS CLOCK=104M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_120M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0d;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=240MHz;_asm(nop); //BUS CLOCK=120M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void INIT_IRQ_interupt(){//IRQE=1; //下降沿触发(HCS12J里只能//下降沿触发或低电平触发,否则要用反相器) //IRQEN=1; //初始化开启IRQCR=0xC0;}void enable_irq_pj0(){PPSJ_PPSJ0=1; //PJ0口触发方式下降沿触发PIEJ_PIEJ0=1; //PJ0中断使能}void enable_irq_ph0(){PPSH_PPSH0=0;PIEH_PIEH0=1;}void enable_irq_pp0(){PPSP_PPSP0=1;PIEP_PIEP0=1;}void disable_irq(){IRQCR = 0x00;DDRE = 0x00;}void disable_irq_pj0(){PIEJ_PIEJ0=0;DDRJ = 0x00;}void disable_irq_ph0(){PIEH_PIEH0=0;}void disable_irq_pp0(){PIEP_PIEP0=0;}/*void pp0_interupt_enable(){PPSP &=~(1<<0); //PPSP0 下降沿PIEP |=(1<<0);} */unsigned char pixel[4000];unsigned int index=0,row=0;void main(void){/* put your own code here */unsigned char command=0,registerdata[10]; unsigned int i,j,switchsoft; DisableInterrupts;SetBusCLK_88M();DDRA = 0x00;DDRB =0x7F;// PORTB =0xFF;DDRE = 0x00;DDRJ = 0x00;DDRH =0x00;DDRP =0x00;//disable_irq();disable_irq_pj0();SCI_Init();SCI_TXD('a');SCI_TXD('b');//SCI_TXD(sizeof(int));//SCI_TXD('c');//SCI_TXD('d');sccb_senddata(0x12,0x80);sccb_senddata(0x12,0x80);sccb_senddata(0x12,0x24);// sccb_senddata(0x11,7);// sccb_senddata(0x14,0x20);//sccb_senddata(0x18,0x6c);// sccb_senddata(0x1a,0x17);/*for(i=0;i<10;i++){registerdata[i]=sccb_receivedata(0x13+i); }for(i=0;i<10;i++){SCI_TXD(registerdata[i]);} */EnableInterrupts;while(1){//PORTB &=~(1<<6);command=SCI_RXD();if(command=='G' || command == 'F'){switchsoft= command;command=0;while(!(PORTB_PB7==1));while(PORTB_PB7==1);while(!(PORTB_PB7==1));// SCI_TXD('c');// while(!(PTIJ_PTIJ0==1));//while(PTIJ_PTIJ0==1);// while(!(PTIJ_PTIJ0==1));// while(!(PTIH_PTIH0==1));//while(PTIH_PTIH0==1);// while(!(PTIH_PTIH0==1));enable_irq_pj0();//enable_irq_ph0();//INIT_IRQ_interupt();for(j=0;j<1000;j++){delay_us(10);}// SCI_TXD('c');if(switchsoft=='G') {for(j=0;j<4000;j++){SCI_TXD(pixel[j]);}}if(switchsoft=='F') {//SCI_TXD(pixel[j]);for(j=0;j<4000;j++){if(pixel[j]>0x1e)SCI_TXD('0');else {SCI_TXD('1');}}}}}// while(1);}/*#pragma CODE_SEG NON_BANKEDvoid interrupt 6 IRQ_interrupt(void){//PORTB &=~(1<<WEE);//disable_irq();disable_irq_pp0();}*/#pragma CODE_SEG __NEAR_SEG NON_BANKEDvoid interrupt 24 irq_pj0(void) //J口是通用的中断向量是24 {unsigned char i=0;//清除中断标志位////enable_irq_pp0();// row++;// if(row==41) {// disable_irq_pj0();// }while(i<180) i++;for(i=0;i<100;i++) {pixel[index++]=PORTA;}if(index==4000) {disable_irq_pj0();}PIFJ_PIFJ0=1;}#pragma CODE_SEG __NEAR_SEG NON_BANKEDvoid interrupt 25 irq_ph0(void) //H口是通用的中断向量是25 {//清除中断标志位//// index++;// index++;disable_irq_pp0();// if(row==41) {// disable_irq_ph0();// }PIFH_PIFH0=1;}#pragma CODE_SEG __NEAR_SEG NON_BANKEDvoid interrupt 56 irq_pp0(void) {// index++;pixel[index++]=PORTA;if(index==4000) {// index=0;//disable_irq_ph0();disable_irq_pp0();disable_irq_pj0();disable_irq_ph0();}PIFP_PIFP0=1;}。
基于视觉传感模块OV7670的颜色导航智能车设计
3 硬 件 设 计
E 电 L E C T 子 R 0 N I 测 C T E 试 S T
2 0 第 1 3 年 5 期 3 月
置的钳位 二极管能释放感性负载 的反 向冲击 电流 , 使它在驱动继 电器 、 直流 电机 、 步进 电机或开关功率管 的使用上安全可靠 。 核心 3 . 1 视觉传感模块 控制 模块的硬件连接示于 图 4 。 两片 L G 9 1 1 0分别与 S T C 8 9 C 5 2的 目前, 电子设计中广泛使用 的视觉传感器有 C C D和 C M O S两 两组 1 0口相连 , 并依次连接 了前轮舵机和后轮驱动 电机 , 以控制 种。 前者有较好的成像通透性 、 明锐度 、 色彩还原性 , 但成本较高 ; 小车依据 颜色 辨识决策运动模式 。 后者通透性一般 , 对实物 的色彩还 原能力偏 弱, 曝光度欠佳 , 但通 过影像光源 自动增 益补 强等技术 , 可达 与 C C D 视 觉传 感器相当 的 性能 , 其 优势是成本低、 耗 电量小。 为提 高智 能车 系统 的电池续航 性能 , 本 系统采用的 C M O S视 觉传 感器 0 V 7 6 7 0 。 0 V 7 6 7 0 支持 0 m n i V i S i o n公司 定制 的串行摄像 头控制 总线 ( S C C B ) 协议 , 该协议用于读写 O V 7 6 7 0寄存器 ,以定制 图像质量 、 数据 格式 和传输 方式 , 所 有 图像 处理 功 能, 包 括伽 玛 曲线 、 白平 衡、 饱和度 、 色 度等 都可 以通过 S C C B接 口编程 使能 。 类似 于 I 2 C 总线 , 两 线制 S C C B是一种双 向二线制同步 串行总线 。 在不做像素 分频处 理 时, O V 7 6 7 0的图像输 出为 6 4 0 x 3 2 0 像 素, 最高支 持 3 O帧 /秒 。 为方 便 实际教 学, 降低 学生入 门成 本, 本平 台使用 支持 5 1 指令集 的 S T C 8 9 C 5 2单片机 , 但其程 序存储 空间和频 率远远无 法 图 4 核心控制模块硬件连接 图 满 足直接 读取 O V 7 6 7 0的需求 , 为了解决 开发便利和 性能需求 间 的矛盾 , 本 文采用先 进先 出( F I F O ) 芯片 A L 4 2 2 B作 为摄 像头与 单 4 软 件 设 计 片机 间数据传 输 的媒介 。A L 4 2 2 B有 8条数据 输入线和 8条数 据 系 统软件 实现 了视觉传感模 块 的时钟信 号、 读 写信号 的时 输 出线 , 可 以在 每个时钟 周期输入 或输 出一个 字节 的数 据。 其 存 序模拟 , 以及 核心控 制模块 的数据 处理 、 运动决策 及 电机驱 动指 储 空 间为 3 M b 。 若设置 0 V 7 6 7 0每像素 占一个字节 , 则采集 到的完 令 的生成和下发 。 整 图像大小为 3 0 7 , 2 0 0 X 8 b i t s 。A L 4 2 2 B满足存储需求 。 4 . 1 操 控 0 V 7 6 7 0 视 觉传 感模块 的硬 件连 接示 于 图 3 。 基于 晶振 , 视 觉传 感 算法流程示于图 5 。0 V 7 6 7 0有 2 5 6个 配 置 寄 存器 , 地 址 器 0 V 7 6 7 0会 产 生像素 时钟 P L C K , 像 素 时钟每跳 变一 次 , 对应 输 为0 x 0 0~ 0 x F F , 从 地址 c 9之后 为保 留寄存 器 。 首先 , 通 过模拟 出一字节 的 图像数据 , 通过 0 V 7 6 7 0的数 据输 出总线 D O 0~ 7 来 S C C B时序 来配置 0 V 7 6 7 0初始化 。 每 个寄存器 的详 细功能参 见文 输 出图像数据 , 实际图像中的每个像素点所对应 的存储空 间大 小 献 。 然后, 依靠 P L C K与 W C K时钟 的 同步 ,0 V 7 6 7 0采集 的 图像 可 通 过设 置 O V 7 6 7 0的配 置 寄存 器调 整 。 如 配置 0 V 7 6 7 0输 出 的 数据 会 自动 写入 F I F O缓 冲 A L 4 2 2 B中 ; 再者 , 重置 F I F O的读 写 个 像素 占一 个字节 , 那么 P L C K每跳变一次 ,0 V 7 6 7 0输 出一个 信号 ; 最后 , 天线传感模 块 中的单片机 读 F I F O中的图像 数据 , 并 像 素点 的图像 数据 。 依靠硬件 管脚 相连 ,F I F 0缓存 A L 4 2 2 B的写 通过 串口发送 。 伪 代码示于代码 1 。 时钟 W C K也 相应 地跳 变一 次, 一 字节 图像 数据通 过 数据输 入 口