一种智能循迹小车设计方案
- 来源:电子产品世界 smarty:if $article.tag?>
- 关键字:循迹小车,智能 smarty:/if?>
- 发布时间:2013-11-24 10:51
摘要:本文设计了一种智能循迹小车,以16位单片机MC9S12XS128为核心控制器,通过摄像头采集道路轨迹信息,单片机对图像数据进行处理并采用PID控制算法调节智能循迹小车的行驶路径。实验证明,该智能循迹小车能够准确快速地对道路轨道进行辨识和跟踪,具有适应性强,实时性好,速度快的优点。
引言
智能车作为智能交通系统的关键技术,融合了人工智能、自动控制、电子电路、信号处理等许多高新技术,具有广阔的应用前景。本文对小车自主驾驶技术展开研究,设计了一种能够沿着道路轨迹自动行驶的智能循迹小车。系统采用16位单片机MC9S12XS128[1-2]对摄像头采集的道路图像数据进行处理,采用PID控制调节小车行驶方向,使小车能够沿着道路自主行驶,无须外界附加人工控制。
总体方案
本文设计的智能循迹小车方案如图1所示。图像采集模块拍摄道路图像并输入到MC9S12XS128控制核心,进行处理以获得道路信息;通过光电编码测速传感器来检测车速,并采用单片机的输入捕捉功能进行脉冲技术计算速度和路程;舵机转向采用PD控制;电机转速控制采用PID控制,通过PWM控制驱动电路调整电机的功率;而车速的目标值由默认值、运行安全监控和基于图像处理的优化策略综合控制。
同时,为了便于在调试阶段对小车运行信息进行纪录以及优化控制算法,增加了无线通信模块,方便与主机进行调试信息传输。
硬件结构
主控板采用MC9S12XS128最小系统板,板上主要由时钟和复位电路构成。实验证明,MC9S12XS128可以稳定工作在80MHz,相比于以51单片机为控制核心的方案而言[3],处理能力有较大提升。另外,最小系统板将I/O端口引出供各模块使用。控制板主要由供电单元、电机驱动模块、摄像头接口构成。
供电单元
系统使用7.2V电池供电,电源经转换后输出5V给电机驱动模块、舵机、最小系统板和摄像头部分供电。为了提高系统稳定性,采用双稳压源方案。即对于电机驱动模块、舵机等要求转换效率较高的模块采用LM2596开关稳压源供电,而最小系统板和摄像头部分对电压稳定性要求较高,因而采用线性稳压源LM7805。LM2596和LM7805电源转换电路分别如图2和图3所示。
电机驱动模块
电机驱动电路如图4所示。电机驱动部分采用大电流半桥高集成芯片BTS7960,每2片作一全桥驱动电路,驱动一个电机。
摄像头接口
本系统采用CMOS摄像头采集道路信息,相比于采用光电传感器的方案而言[4],视距范围更宽。小车摄像头采用OV7620,分辨率可以达到640×480,输出帧频可达60Hz[5]。OV7620提供了3种数据制式,本文选用YUV16位的数据制式且只提取其中的Y信号即亮度信息,生成黑白图像。使用HREF(行同步信号)、VSYNC(场同步信号)为采集控制信号,其与单片机的连接端口如图5所示。
PCB版图
本文设计的PCB版图如图4所示,电路设计在Protel99se中完成,采用两层布线,同时为了提高抗干扰能力,采用了大面积铺铜。
系统软件结构
本文设计的系统软件主要分为以下几个部分:系统初始化模块、CMOS图像采集模块、对采集数据进行处理的路径识别模块、以及用于对电机和舵机产生控制信号的PID控制模块。图7是本系统的软件总体结构图。
系统初始化模块
系统初始化模块主要完成硬件的初始化工作,包括以下几个方面:
(1)锁相环初始化:单片机采用了锁相环技术,即外部时钟频率较低,采用16MHz晶振,从而提高整个系统的电磁兼容能力,而内部通过锁相环将系统时钟改变至80MHz,从而提高片内CPU运行速度。倍频公式如下:
锁相环初始化部分需要对相应的寄存器进行设置。
(2)脉宽调制(PWM)模块初始化:PWM在本系统中主要用于驱动两个伺服电机,一个是电机,另一个是舵机,通过程序调节波形的周期和占空比实现对伺服电机的控制。调节信号是经路径识别和系统决策后给出的,这样就能实现小车的自动控制。
(3)增强型捕捉定时器(ECT)模块初始化:此模块主要用于速度测量,在单位时间内对测速模块送入的脉冲进行捕捉并计数,从而计算小车运行的速度。
(4)串口模块初始化:为了便于调试,本系统利用串行通信接口实现数据的传输。串口部分程序主要是初始化各寄存器,其中包括设置波特率、数据格式、接收发送功能使能、设置模式等。
图像采集模块
为了提高本系统的实时性,视频采集采用外部中断触发的方式采样图像数据。本系统选用OV7620的YUV16位数据制式。YUV16视频信号的场频为60Hz,即一场信号将持续16.67ms,且一般每场摄像头扫描480线。HREF(行同步信号)、VSYNC(场同步信号)为采集控制信号,分别接到单片机的PJ7和PJ6口,设置PJ口,使PJ7能响应上升沿中断;PJ6能响应下降沿中断。采样系统的程序流程图如图8所示。
路径识别
路径识别的第一步就是要对采样图像进行处理,即根据摄像头传回来的视频信号提取出黑线的位置。常用的黑线提取算法分为二值化算法、直接边缘检测算法和跟踪边缘检测算法。
在首行边缘检测正确的前提下,跟踪边缘检测算法具有较强的抗干扰性,能更有效地消除道路外黑色图像的影响,始终跟踪目标引导线。另外,较之前两种算法,跟踪边缘检测算法的时间复杂度更低,效率更高。
因此本文选择跟踪边缘检测算法。核心思想就是对每一行从左往右对像素点进行扫描,寻找灰度值突然降低并且其右边几个点的灰度值与其相似的那个点,将这个点作为该行图像中黑线的左边缘,从而完成对道路的识别。
PID控制
PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一[6]。对于舵机的闭环控制,本文采用PD控制,其中,P项是在图像中选出一行,计算其中黑线与图像中心位置的偏差,而D项由两种值共同决定,一种是将选定行的黑线位置与上一幅图片中的位置相减,从而反映其变化率;另一种是利用图像中的两行算出黑线与小车的夹角,这个夹角可以反应黑线与小车位置偏差的变化率。对于速度控制,基本思想是直道加速以提高运行速度,弯道减速以增强稳定性。本文采用了增量式PID控制算法,在调试中将每场图像得到的黑线位置偏差与速度PID参考速度值构成二次曲线关系,最终将参数调节至与舵机转向控制配合较好,从而使小车在直道加速行驶,而弯道减速增强稳定性。
总结
本文以MC9S12XS128单片机为核心,通过CCD摄像头采集道路信息并转化为数字信号传给单片机,摄像头通过行中断和帧中断通知单片机接收数据,单片机分析收到的数据,并经过滤波,二值化等一系列的图像处理过程,提取出道路信息,采用PD方式对舵机转向进行反馈控制。同时通过编码器测速对速度进行PID反馈控制,最终完成了智能车的自主巡线和速度控制功能。
实验证明,本文设计的系统适应性强,实时性好,能够准确快速地沿道路循迹运行。
参考文献:
[1] 孙同景.Freescale 9S12十六位单片机原理及嵌入式开发技术[M].北京:机械工业出版社,2008
[2] Freescale, Inc..MC9S12XS128B Device User Guide V01.09[Z].Freescale Semiconductor, Inc.,2002
[3] 顾群,蒲双雷.基于单片机的智能小车避障循迹系统设计[J].数字技术与应用,2012,(5):23.
[4] 刘晓邦,车玥玮,童金等.基于模糊控制的智能循迹绘迹系统设计[J].电子测量技术,2011,34,(2):57-61
[5] 葛家斌.基于OV7620图像传感器的智能循迹系统的设计[J].电脑知识与技术,2011,7,(33):8286-8287,8296
[6] 刘金琨.先进PID控制MATLAB仿真[M].北京:电子工业出版社,2004
许苑丰 郭泽豪 刘智聪 佛山供电局(广东 佛山528000)
