APP下载

基于单目视觉的自主寻迹智能车设计与实现

2016-11-17刘永涛

重庆理工大学学报(自然科学) 2016年10期
关键词:舵机赛道摄像头

李 亭,乔 洁,刘永涛

(1.西安航空学院 车辆工程学院, 西安 710077; 2.长安大学 汽车学院,西安 710064)



基于单目视觉的自主寻迹智能车设计与实现

李亭1,乔洁2,刘永涛2

(1.西安航空学院 车辆工程学院, 西安 710077; 2.长安大学 汽车学院,西安 710064)

介绍了一种基于单目视觉的自主寻迹智能车的设计与实现方案。系统使用OV7725摄像头采集道路图像信息,将道路信息传输至MK60FN核心板进行处理,通过直流电机控制车速、舵机控制智能车的转向实现路径自动识别,同时采用测速编码器获得电机转速信号,将该信号实时反馈到核心板,实现车速的闭环控制。另外,为了便于快速有效地调试系统参数,在该系统中加入TFT显示模块和SD卡模块。实验结果表明:该智能车设计方案有效可行,能准确控制寻迹智能车在赛道上稳定运行。

路径识别;单目视觉;MK60FN 单片机;直流电机;舵机

随着社会的发展,汽车保有量持续增长,加重了交通道路网络的负荷,在此背景下,智能交通与智能汽车应运而生。近几年,智能汽车技术已经成为众多学者的研究热点及难点。该技术涉及的知识面非常广,涵盖了机械、传感技术、计算机编程、人工智能等领域[1]。智能汽车发展的目的是使车辆能在较为复杂的道路条件下自主识别道路,同时排除干扰物,选择合理的路径和速度进行安全稳定的行驶。此外,智能车辆相关技术的研究与应用在提升交通安全、提高交通效率、增强国防科技等方面都有着重要的理论意义和现实意义。

本文以 “飞思卡尔杯” 全国大学生智能汽车竞赛为背景,采用Freescale公司生产的MK60FN核心板为主控制器,使用 OV7725数字摄像头采集道路图像信息,相关道路信息被MK60FN单片机分析处理,引导智能车自动进行路径识别,结合舵机控制智能车的转向、电机控制车速,最终设计的智能车在专用道路上能自主识别道路并保持安全稳定的行驶。

1 智能车硬件系统设计

本研究中智能车行驶的专用赛道为白底黑边,智能车需要完成自主识别道路并稳定行驶的要求。该系统总体结构如图1所示。系统电力由电源模块提供,OV7725摄像头采集道路图像信息,将信息传输至MK60FN核心板处理,对舵机及电机驱动输出控制信号,实现路径识别,同时编码器获得电机转速信号,将该信号实时反馈至核心板,实现闭环控制。为了便于调试系统参数,在该系统中加入TFT显示模块和SD卡存储模块。智能车硬件系统主要包括电源模块、MK60FN最小系统控制单元、路径识别模块、电机驱动模块、舵机控制模块、车速测量模块、TFT显示及SD卡存储模块[2-3]。

1.1MK60FN最小系统

本研究采用美国Freescale公司生产的32位基于ARM Cortex-M4系列的最小系统板MK60FN,标准频率为150 MHz,flash为1 MHz,带硬件浮点。共有4个FTM模块,其内部可以细分为Cortex-M4内核、GPIO、UART、I2C、SPI、ADC、DAC、DMA、PIT、FTM等模块。MK60FN具有强大的定时控制,能实现舵机和电机的PWM控制功能。此外,系统功耗低,且具有很高的安全性与可靠性,硬件条件足以满足智能车运行要求。

图1 硬件系统总体结构

1.2电源模块

电源模块的稳定是保证智能车正常运行的根本要求。本系统中所使用电源为7.2 V镍-铬充电电池。在设计电源模块时,需要考虑系统中不同硬件所需要的电压值,并进行电压调节与分配,各模块之间独立供电且最大程度减少模块间的电磁干扰。

各模块电压分配解决方案如下:

1) 舵机工作电压为6 V,使用可调稳压芯片LM2941。

2) 编码器工作电压为5 V,使用稳压芯片AMS1117-5.0。

3) 核心板、OV7725摄像头、OLED和SD卡供电电压为3.3 V,使用稳压芯片AMS1117-3.3。

1.3路径识别模块

本研究采用OV7725数字摄像头作为路径识别元件,采用BGA封装,无需视频分离和采样电路,去除噪点能力极强。同时增加高速硬件二值化技术,不仅缩短后期图像处理时间,而且能更快适应周围环境,避免因灯光影响而频繁地对二值化阈值进行修改。虽然其传输速率可达150帧/s,但MK60FN拥有的DMA传输方式提供了该摄像头高速传输图片的解决方案[4]。OV7725与MK60FN管脚的连接方式如图2所示。

图2 OV7725与MK60FN管脚的连接方式

OV7725摄像头管脚Y0~Y7分别连接MK60FN的管脚PTB0~PTB7,8位数据线1次传输8个像素,输出顺序为从左到右,从上到下,即第1个接收字节的最高位为第1个像素,最低位为第8个像素。行、场中断HREF、VSYNC分别连接引脚 PTA28、PTA29。行中断信号由寄存器配置,然后进行信号输出。场中断信号触发后开始采集每帧的数据。SCCB是OV7725摄像头的控制信号通信的协议,兼容I2C协议。SCCB配置引脚SCL和SDA分别连接PTA25和PTA26。像素同步信号PLCK连接引脚PTA27。

1.4电机驱动模块

智能车的速度控制是该系统操控的关键。本研究设计了一款电机驱动电路,该电路采用两片BTN7971并联组成H桥驱动电路[5],使用74LS244进行隔离,保护主控芯片,通过控制芯片的电压输出占空比实现正、反转和制动。电机驱动模块电路如图3所示,74LS244芯片1A3和1A4管脚分别接入MK60FN的A5和A7管脚。该驱动电路相比MOS管电路结构简单,质量小,而且可以保证电机稳定运行。

图3 电机驱动模块电路

1.5舵机控制模块

舵机模块主要实现智能车的转向精确控制,本系统采用的是F3010型舵机。由于舵机的响应速度正比于其工作电压,故系统采用6 V的供电电压。采用立式的固定方式且舵机的两端连杆在直线行驶时与底盘成一定角度,利用杠杆原理减少舵机的输出转角,可以提高智能模型车的转弯响应速度。最小系统通过输出不同占空比的PWM信号来控制舵机的转动角度,进而控制智能车的转向大小。

1.6车速测量模块

要实现对智能车速度的闭环控制,主控芯片需要掌握智能车实时车速,并对电机速度实施控制。本设计方案采用在智能车系统上加装测速编码器的方法。该编码器通过定做支架安装在智能车上,应用齿轮啮合的方式与智能车电机速度同步。智能车电机旋转带动光电编码器,产生脉冲信号,根据位置变化的方向用计数器对脉冲进行加/减计数以实现测速。通过检测B相端口脉冲的相位差实现对旋转方向的判定。

1.7TFT显示与SD卡存储模块

为了适应不同的路面背景和光线环境下智能车能够稳定运行,需要采集更多的实验数据来确定和完善相关参数。本系统选择在主控板中加入山外1.44寸彩色TFT屏幕。该屏幕使用8位并行总线方式通讯,拥有5向导航按键,不仅可以随时查看摄像头采集到的道路图像情况,而且可以对程序中预留参数进行不掉电修改和调试,从而大大提高程序的开发效率。

智能车SD卡的存储技术相当于汽车的行车记录仪。智能车可以将在运行过程中拍摄并预处理的信息和运行参数存储进入SD卡中,以备离线分析,优化路径。SD卡管脚DATA0~DATA3分别连接MK60FN的管脚PTE0~PTE3,CMD管脚连接PTE4,CLK管脚连接PTE5。

2 智能车软件系统设计

模块化和系统化程序是智能车可靠稳定运行的保障。智能车系统的程序设计包括硬件底层程序、传感器采集与处理程序、执行程序及人机交互程序等。智能车软件系统主程序设计流程如图4所示。智能车的软件算法程序是基于IAR Embedded Workbench IDE 开发环境开发,采用C语言编写实现[6-7]。该软件开发环境可以模拟多个ARM内核进行仿真,并且人机交互友好,方便编写程序。

2.1系统底层程序设计

系统板MK60FN通过电源模块通电后,所有硬件进行初始化,初始化的主要内容有:设定系统时钟频率,并关闭系统中断;执行摄像头OV7725行、场中断初始化;执行舵机驱动初始化;执行电机驱动初始化。

图4 智能车系统主程序流程

2.2图像采集与处理程序设计

OV7725数字摄像头采集图像的频率为25帧/s,每帧图像又包括奇数场和偶数场。当摄像头采集到图像信号时,控制器首先捕捉PTA27 的场中断信号,进入场中断,场中断标志置 1。接着捕捉 PTB23 行中断信号,执行行中断服务函数。根据 PTC19 接收到的像素中断信号,由行中断服务函数采用 DMA 方式逐像素点采集道路图像。另外,为了减少图像采集的数据量,本系统方案采用隔行采集的方式进行图像采集,并且设定采集起始行及终止行。

图像及传感器信号采集结束后,控制器开始进行数据处理和控制决策。摄像头采集的图像分辨率较高,直接进行处理会占用大量的控制器资源。为了方便智能车路径识别和转向控制,利用压缩图像提取道路关键特征信息即可,并在此基础上进行图像二值化。为避免图像中噪点和路径上杂点影响路径信息判断,须对二值化图像进行滤波。由于智能小车的运行速度较快,采集的图像噪声一般含椒盐噪声较多,因此本系统采用中值滤波的方法去噪[8-9],最大程度地保留原图像的信息。滤波后路径外侧为黑色,内侧为白色。完成上述处理后通过寻找路径边缘,并根据边缘位置求出赛道中心线,提取效果如图5所示。

OV7725摄像头由近及远扫描每一行的点,采集的道路图像经过二值化处理之后保存在1个60×80二维数组中,从图像的行中点分别向左、右方向扫描,寻找由连续白点向连续黑点跳变的临界位置,即为赛道的左右边线点。根据左右边线拟合出图像中的赛道中心线,赛道中心点的求取公式为:Centerline[line]=(Right_line[line]+Left_line[line])/2。 赛道中线提取效果如图6所示,图中黑线表示逐行扫描法拟合的赛道左右边线,红线表示根据赛道左右边线拟合的赛道中心线。

图5 赛道边缘提取效果

图6 赛道中心线拟合效果

赛道中线拟合的伪代码如下:

for(point=Center;point>Left_boundary;point--)

{

if(img[line][point]==0&&img[line][point-1]==0)

{ Left_line[line]=point;

break;}

if(point==(Left_boundary+1))

{Left_line[line]=0;

break; }

}

for(point=Center;point

{

if(img[line][point]==0&&img[line][point-1]==0)

{

Right_line[line]=point;

break;

}

if(point==(Right_boundary-1))

{

Right_line[line]=79;

break;}

}

Centerline[line]=(Right_line[line]+Left_line[line])/2;

dev[line]=Centerline[line]-40;

其中dev[line]为赛道某行的中心点相对于图像中点的偏移量。

2.3执行程序设计

本文设计思路的核心之处在于舵机控制智能车的转向,实现路径自动识别,且舵机和电机的控制是依据图像打舵参考行的中点相对图像中心的偏移量。本文智能车路径识别的策略为:首先要快捷准确地识别赛道的形状,确定赛道是直道、左弯道、右弯道等。以60行80列的CCD图像为例,取采集图像中间偏上某一行(比如第25行)作为路径判别行,如果图像的中心是白点且这行拟合的道路中心点相对于图像的第40列偏移量小于某个阈值时,则判别为直道;如果图像路径判别行的中心偏移量大于某阈值,且赛道路径判别行的中点大于40列时,则判别为右弯道。反之为左弯道。如果智能车在行驶过程中因干扰或者过十字路口出现突然丢道的情况,这时车辆以上一时刻的打舵量继续行驶。

为了确保智能车转向和路径识别的准确性,首先采用中值滤波算法去除赛道图像的噪声干扰点,最大程度地保留原图像的信息;接着根据赛道和摄像头的空间位置关系计算出实时的道路曲率半径,结合智能车的机械结构参数,通过标定确定赛道曲率半径与对应的转向控制PWM占空比的关系,利用Matlab软件拟合出转向控制信号PWM输出和摄像头采集赛道中心线位置之间的函数关系作为打舵公式,即可保证智能车路径识别的准确性。通过在赛道上大量的实验测试,智能车能较平稳地运行,并且进入弯道时会准确转向,不会冲出赛道,所以路径识别和转向的策略有效可行。

舵机的打舵量以本文赛道中心线拟合之后的打舵参考行相对于图像中心的偏移量dev[line]作为控制基础。舵机的PWM输出使用偏移量的二次函数公式,相对于一次函数打舵来说,可使打舵更加灵敏和精确。舵机控制部分核心程序代码如下:

Turn_PWMOUT_Old=Turn_PWMOUT_New;

Turn_PWMOUT_New=(int16)(dev*turn1+fabs(dev)*dev/100*turn2; //得出转向PWM

if(Turn_PWMOUT_New>400)Turn_PWMOUT_New=400;

if(Turn_PWMOUT_New<-400) Turn_PWMOUT_New=-400;

FTM_CnV_REG(FTMN[FTM1],FTM_CH0)=Turn_PWMOUT_New+duoji_center;

lastlasterror=lasterror;

lasterror=error;

其中:turn1为打舵参考值1;turn2为打舵参考值2;FTM_CnV_REG(FTMN[FTM1],FTM_CH0)为舵机转向控制函数;Turn_PWMOUT_New为转向PWM输出值;duoji_center为舵机中值;设定舵机的左右极限值为400。

电机速度根据路况信息控制,以实现平均速度最大化。直道时加速,弯道时适当减速。通过目标速度与实际速度作差得出速度增量Errory,电机速度控制是通过电机速度增量PID进行调节。电机速度控制部分核心代码如下:

void SpeedPID()

{

PrevErrory=LastErrory;

LastErrory=Errory;

Errory=(int)(g_Speedgoal-RightMotorPulse)

RightMotorPulse=0;

PWM_outy = (int)(PWM_outy+(Motor_P*(Errory-LastErrory)+Motor_D*(Errory-2*LastErrory+PrevErrory)+Motor_I*Errory));//微分先行偏差

if(PWM_outy<0)

{

PWM_outy=-PWM_outy;

FTM_CnV_REG(FTMN[FTM0],FTM_CH3)= PWM_outy;

}

if(PWM_outy>10000)

{

PWM_outy=10000;//速度限幅

FTM_CnV_REG(FTMN[FTM0],FTM_CH2)= PWM_outy;

}

}其中:Errory为目标速度与实际速度差值;Motor_P为电机PID控制的P值;Motor_D为电机PID控制的D值。

2.4人机交互程序设计

通过TFT屏实时显示摄像头采集到的图像,可以随时调节摄像头的俯仰角度,从而使摄像头所采集到的图像为最佳拍摄角度。通过5向按键可以调节舵机PID值和电机PID值[10],实现快速调试。

另外,使用SD卡存储的摄像头采集到的道路数据可以以第一视角观测智能车状态,通过软件分析赛道图像可优化路径,为智能车快速、稳定地运行提供有力保障。

2.5跑道测试与实验分析

完成智能模型车的软硬件设计之后,选取了一段赛道进行整车测试分析。测试跑道1圈为38 m,采用普通PVC材质,跑道元素有直道、弯道、十字路等。整车测试主要以开环及速度PID算法控制两种模式,分别在下午及晚上两个时间段进行,不同运行模式的部分测试效果如图7所示。

图7 智能车赛道测试效果

智能车进行了多组测试,测试圈数为5圈,可以得到每组测试参数的对比,如表1所示。

表1智能车测试参数对比

时间节点控制算法平均速度/(m·s-1)整圈完成度/%14:00—15:00开环控制145.814:00—15:00PID2.285.719:00—20:00开环控制110019:00—20:00PID2.5100

从表1中可以看出:下午的测试易受太阳光的影响,晚上的测试效果较好;速度开环算法对于智能车进入弯道时影响较大,而采用速度PID控制算法的模型车行驶速度相对较快,最高速度可达3 m/s。可见本研究设计的相关算法有效可行,达到了设计目标。

3 结束语

设计并实现了基于单目视觉的自主寻迹智能车,实物如图8所示。智能车系统采用 OV7725 数字摄像头采集赛道图像黑色边缘引导线,以参考行相对图像中心的偏移量作为智能车方向和车速控制的基础,运用PID 算法实现智能车转向和车速的精细化控制。实验结果证明:该智能车能可靠稳定地按照指定的赛道自主寻迹行驶,并具有抗干扰能力强、响应速度快等特点,最高车速可达3 m/s。同时,为进一步克服智能车高速运行时出现的振荡和稳定性不足问题,对相关控制算法的优化将是下一步的研究重点。

图8 智能车实物

[1]韩毅,杨天.基于红外传感器的智能寻迹赛车的设计与实现[J].计算机工程与设计,2009,30(11):2687-2690.

[2]刘允峰,韩建群.基于飞思卡尔S12单片机的智能车系统设计与实现[J].渤海大学学报(自然科学版),2015,36(4):359-362.

[3]韩建文.基于飞思卡尔单片机智能车的设计[J].电子制作,2014(1):59-60.

[4]于丰华.基于K60的智能汽车控制系统的研究[D].长春:吉林农业大学,2014.

[5]张双喜,王金洋,丁磊,等.基于飞思卡尔单片机智能车双线路径识别设计与实现[J].山东交通学院学报,2012,20(4):14-17.

[6]张睿.基于K60的智能智能小车控制系统设计与实现[D].杭州:杭州电子科技大学,2014.

[7]杨正才,吕科,朱乐.基于飞思卡尔32位Kinetis-K60单片机的直立行驶智能车设计[J].湖北汽车工业学院学报,2014,28(2):47-50.

[8]王晓凯,李锋.改进的自适应中值滤波[J].计算机工程与应用,2010,46(3):175-176.

[9]刘永涛,王鹏,魏朗,等.基于DSP的前方车辆位置关系辨识研究[J].计算机工程与设计,2014,35(5):1738-1742.

[10]李晨,宓超.基于飞思卡尔单片机MC9S12XS128的智能车设计[J].上海海事大学学报,2012,33(1):82-84.

(责任编辑刘舸)

Design and Implementation of Auto-Guided Smart Car Based on Monocular Vision

LI Ting1, QIAO Jie2, LIU Yong-tao2

(1.School of Vehicle Engineering, Xi’an Aeronautical University, Xi’an 710077, China;2.School of Automobile, Chang’an University, Xi’an 710064, China)

A design and implementation of an auto-guided smart car based on monocular vision was introduced. The OV7725 camera was used to collect road image information, which was processed by the MK60FN single-chip microcomputer. Speed was controlled by the DC motor, and the steering of smart car was controlled by the servo, and then the path recognition was achieved. Meanwhile, motor speed signal was got by the speed encoder, and the speed was controlled with the closed loop through transmitting real-time signal to the core board. In addition, in order to debug the system parameters quickly and effectively, the TFT display module and the SD card module was added. Experiment result shows that the smart car design is effective and feasible, and also it can control the stable running of the smart car on the track.

path recognition; monocular vision; MK60FN single-chip microcomputer; DC motor;servo

2016-06-08

国家自然科学基金资助项目(51278062); 浙江省交通科技项目(20150224)

李亭(1988—),男,陕西绥德人,硕士,主要从事车辆智能控制研究;E-mail:liuyongtao86@163.com.

format:LI Ting,QIAO Jie,LIU Yong-tao.Design and Implementation of Auto-Guided Smart Car Based on Monocular Vision[J].Journal of Chongqing University of Technology(Natural Science),2016(10):16-22.

10.3969/j.issn.1674-8425(z).2016.10.003

TP368.1

A

1674-8425(2016)10-0016-07

引用格式:李亭,乔洁,刘永涛.基于单目视觉的自主寻迹智能车设计与实现[J].重庆理工大学学报(自然科学),2016(10):16-22.

猜你喜欢

舵机赛道摄像头
浙江首试公路非现场执法新型摄像头
自制冰墩墩不能滑出“法律赛道”
科创引领,抢跑新赛道
摄像头连接器可提供360°视角图像
征服蒙特卡洛赛道
含齿隙弹载舵机的全局反步模糊自适应控制
基于dsPIC单片机的飞艇舵机控制实现
无人驾驶,先上赛道如何?
基于高速同步485总线通信的多通道舵机控制器设计
奔驰360°摄像头系统介绍