基于图像识别的自主寻迹智能小车设计
2016-08-16刘龙李建奇魏光宇刘磊
刘龙, 李建奇, 魏光宇, 刘磊
基于图像识别的自主寻迹智能小车设计
刘龙, 李建奇, 魏光宇, 刘磊
(湖南文理学院 电气与信息工程学院, 湖南 常德, 415000)
针对小车自主寻迹行驶的要求, 提出了一种基于ARM平台的摄像头循迹小车系统。小车系统以ST公司生产的STM32F103ZET6为微控制器, 通过安装在小车前的OV7725摄像头采集道路信息。然后对路径图像信息进行除噪、黑线提取和路径识别后获得路径信息。再根据不同的路径信息控制电机, 进而调整小车速度和方向, 最终实现小车沿设定路径行驶。摄像头采集的图像和小车速度能够实时显示在LCD和数码管上。实验证明, 小车实现了自主循迹功能, 具有良好的鲁棒性和实时性。
ARM平台; 黑线提取; 路径识别
飞思卡尔智能车采用的单片机 MC9S12XS128在进行图像采集时处理速度较慢, 会影响整个控制系统的响应特性。而且, 由于小车的前进方向采用舵机控制, 虽然提升了控制性能, 但使车身重量加重,车身的动态特性降低[1-3]。针对这些问题, 本文提出了一种基于STM32F103ZET6的智能小车控制系统,该系统中小车没有采用舵机控制前进方向, 而是采用四驱直流电机, 通过PWM控制电机速度来控制小车前进方向。
1 系统设计
基于图像识别自主寻迹智能小车的系统总体结构如图1所示。系统由电源组件、检测组件、主控组件、输出组件共4个部分构成。电源组件采用电池供电, 经过电压转换芯片转换之后, 每个模块得到所需要的电压。检测组件由摄像头模块和测速模块组成, 主控组件采用ARM芯片作为控制核心, 输出
图1 系统总体结构框图
2 系统硬件设计
系统硬件部分包括最小系统、图像采集模块、速度检测模块、电机控制模块、显示模块。
2.1最小系统
最小系统由 CPU、电源模块、时钟模块、复位模块、BOOT启动模块、下载模块组成。STM32F103ZET6是一款32位的ARM芯片, 其电源模块采用SPX1117电压转换芯片和相关电路得到系统所需电压, 时钟模块采用8 MHz和32.768 kHz的晶振分别作为芯片的备用时钟源和RTC时钟源。复位模块包括上电复位和按键复位电路。BOOT启动模块的作用是设置启动模式, 通过BOOT0和BOOT1设置: 当BOOT0为0时, CPU执行片上FLASH代码; 当BOOT0为1、BOOT1 为0时, 系统的模式为串口下载模式; 当BOOT0与BOOT1均为1时, CPU执行SRAM内部的代码, 下载模块采用JTAG下载。
2.2图像采集模块
图像采集模块电路如图2所示。该模块采用CMOS图像传感器OV7725[3]。图像采集原理如下: 首先, OV7725捕捉到原始信号后, 将其输入到模拟处理器中, 处理后分成G和RB两路输入到A/D转换器, 经A/D转换器处理后转换成数字信号, 然后输入到FIFO, 单片机从FIFO读取、处理数据并采集图像。FIFO存储摄像头采集到的图像数据, 其存储空间为3 M。
图2 图像采集模块电路图
摄像头采集完一幅图像后, 将帧中断信号输入到CPU, CPU收到帧中断信号后, 将WEN和HREF引脚电平拉高, 使图像数据存入FIFO。当CPU再次收到帧中断信号, 表明图像数据已存入FIFO, 此时关闭帧中断, 将WEN电平拉低, 避免图像数据再次写入FIFO。
2.3速度检测模块
小车的行驶速度常用检测方法包括霍尔传感器测速、光电编码器测速以及光电传感器测速。由于霍尔传感器体积相对较大, 且光电编码器驱动齿轮靠近电机, 容易受磁场干扰, 而光电传感器结构简单,测速精度高、反应快, 因此, 本设计采用光电传感器测速。光电测速模块如图3所示。
速度检测原理如下: 当小车行驶时, 车轮会带动光电码盘转动。当码盘中没有障碍物时, 红外管发出的红外信号经红外接收管接收后输出电压比较值, 再经LM393N比较后, 输出开关量。码盘上一共有20格没有障碍物, 所以用码盘周长除以20就得到1个脉冲来临车子行走的距离 S, 同时打开定时器和计数器, 定时 T, 得到脉冲计数n, 到时间后就将时间清零重新计数, 得到小车的速度V = S × n/T。
2.4电机控制模块
图3 光电测速模块
电机控制包括电机的驱动和电机的调速 2部分, 本设计采用L293D控制4台直流电机[3]。将每台直流电机的一端接地, 另一端接到L239D的输出端。将L293D的输入端接一个I/O口, 在第1脚和第9脚都使能的状态下, 只需要控制I/O口的电平状态即可控制电机。电机驱动模块如图4所示。
由于小车要在不同的赛道上行驶, 为防止其冲出赛道,需要在不同的赛道上采用不同的安全速度。对于直流电机的速度调节, 本设计中综合采用PWM控制、PID控制和棒棒控制技术[2-4]。PWM 用于控制不同路径小车安全行驶的速度, PID调速用来维持同一路段的速度, 棒棒控制用于路径切换时的调速。
(1) PWM控制。计数器在时钟的驱动下计数, 当计数器的值加到和输出比较寄存器的值相等时, I/O口的电平翻转后接着计数。当计满后, 计数器清零, 重新开始计数。
(2) PID控制。PID控制就是用比例(P)、积分(I)、微分(D)通过线性组合进行控制。比例系数越大, 调节速度就越快。如果比例的作用太大, 会使得系统的稳定性降低。使用积分调节会使得系统动态响应变慢, 因此积分环节常以PI或者PID组合形式出现。微分环节能够反映系统偏差的变化率, 预测偏差的动态变化, 但是它的引入容易引起震荡, 因此它一般是以PD或者PID组合的形式出现[5]。
(3) 棒棒控制。棒棒控制[5]是一种极限控制, 其作用就是使得小车速度瞬间达到最大或者最小值保证小车完成路径切换动作。
图4 电机驱动模块
2.5显示模块
(1) 图像显示模块。显示模块使用CPU自带的FSMC接口驱动LCD屏。LCD采用集成在液晶屏上面的 ILI9341芯片控制, 其核心是 GRAM。GRAM中的每个存储单元与液晶屏的像素点一一对应,GRAM 存储单元的像素数据经芯片内部各个模块转化成液晶面板的控制信号, 使得各个像素点呈现出特定的颜色, 所有的像素点组合起来便构成一幅完整的图像。GRAM可以采用18位控制模式, 也可以采用16位控制模式, 但是为了数据传输方便, 一般采用16位控制模式。图像显示模块部分一共用到了22个I/O口, 其中PB0作为硬复位LCD信号, PB1作为LCD读信号, PB2作为命令/数据标志, PB3作为背光控制信号, PB4作为LCD写信号, PB5作为LCD片选信号, PD0-PD15作为16位双向数据线。
(2) 速度显示模块。速度显示模块主要是对测速模块测到的速度进行显示, 本设计采用4位一体的共阴极数码管, 左边2位显示左边车轮的速度, 右边2位显示右边车轮的速度。用4个I/O口控制位选,8个I/O口控制段选。
3 系统软件设计
3.1总体程序设计
小车在行驶过程中, 摄像头进行图像采集。对采集的图像进行图像除噪, 并提取行黑线中心位置,分析前方路径信息。针对不同的路径信息采取不同的方式控制电机的速度和方向[6]。
总体设计流程如图5所示。由图5可知, 在系统初始化以后,首先进行不同路径行驶速度的设定, 然后摄像头进行道路信息采集, 将其传送给 CPU进行路径判断, CPU路径判断处理后采用PID控制或者棒棒控制同时控制相应电机转动, 这样, 小车就能够顺利地沿着路径行驶。小车在行驶的过程中有2种状态, 一种是沿着同一路径行驶, 另一种是路径切换。对于这 2种状态, 分别采用不同的控制方法: 当沿着同一路径行驶时, 采用PID控制,目的是保证小车在同一路径上时能以稳定的速度行驶; 当进行路径切换时, 采用棒棒控制, 因为小车经过不同的弯道时有不同的安全速度, 采用棒棒控制能够保证小车在不同的路径切换时速度能瞬间达到弯道适合的速度值。
图5 总体设计流程图
3.2图像采集与处理程序设计
(1) 图像采集设计。首先开启行中断和场中断, 摄像头逐行扫描像素点Dot_cnt, 当一行像素240个点扫描完毕后, 进入行中断, 行数Row_cnt加1。接着扫描下一行, 当第320行扫描完毕后, 进入场中断, 一幅图像采集完毕。关闭所有中断, 将Dot_cnt和Row_cnt清零, 循环执行上述过程, 即可连续地进行图像采集。图像采集流程如图6所示。
图6 图像采集流程
(2) 图像除噪设计。图像除噪是为滤除噪声, 减少噪声的影响, 便于准确提取路径信息, 本设计中考虑到实时性要求, 采用中值滤波进行图像除噪[7]。其实现思想是在整幅图像中选取一个大小合适的像素窗口, 接着对窗口中像素点的灰度值进行排序, 取最中间的点作为窗口中心点的新灰度值, 移动窗口,循环执行上述过程。具体实现方法如图7所示。
图7 图像除噪流程
(3) 黑线中心提取设计。在图像进行除噪后, 就可以对黑线中心进行提取。目前常用的黑线中心提取方法是重心提取算法。小车行驶的路径由白色背景和黑色胶带组成, 两者间灰度值相差很大, 所以,可以通过一个阈值来区分黑点和白点。每一行从左至右判断每一个像素点的灰度值是否大于(或小于)该阈值, 从而确定此处是否为黑线上的点。图像灰度阈值一般取128左右为宜。针对图像矩阵数据中的每一行, 从左至右依次比较各个像素点和阈值的灰度值的大小, 当某一个像素点的灰度值大于或者等于阈值,则判定该点对应的是白色; 反之, 则判定该点属于黑色路径区域。在图像的每一行得出每个黑点的位置坐标,然后将各黑点位置坐标相加再除以黑点数量就可以得到图像每行的黑点重心位置。黑线中心提取流程如图 8所示。
(4) 路径识别设计。本文应用了路径识别中常用的曲率计算法。得到黑线中心后, 在每幅图像取固定的 2行上的点A、B(图9), A、B一般为整幅图像的1/3和2/3行处的点[8]。连接2点, 做出2点连线的垂直平分线, 垂直平分线与整幅图像第 2/3行的交点为 C, 求出△ABC外接圆的半径R, R的倒数为路径的曲率ρ。实现方法如图10所示。
在实验过程中小车行驶的轨迹由直道、弯道和S路径组成。在S路径, 曲率ρ = 0是小车的方向的转折点。小车在走 S线时既需要进行左转, 又需要进行右转, 此时就不能简单地按照ρ的大小控制小车的方向和速度。如果ρ不等于0时小车左转, 那么判断小车右转的条件就是经过1次ρ = 0之后, 再得到一个不等于0的ρ值。
图8 黑线中心提取流程
图9 路径模拟
图10 路径识别流程图
4 测试与实验分析
经测试, 本设计中研究的摄像头循迹小车实现了自主循迹功能, 摄像头采集到的图像比较清晰, 能够实时更新显示路径和车速, 直线行驶速度大小可达25 cm/s,在不同路径下小车表现了较好的鲁棒性。
在小车沿着黑线行驶的测试过程中, 通过设置PWM跳变值(定时器计数值等于跳变值时电平翻转)来控制占空比, 程序中自动重装载寄存器的值为1 000, 即计满1 000重新计数。测试结果如表1所示。
表1 ρ = 0.01时数据记录
表1给出了当小车左转, ρ = 0.01时, 左右两边跳变值大小、左右电机转速、小车运行效果数据记录。由表1可知, 当左电机跳变值小于等于600, 跳变值之差为200左右时, 小车能完成循迹; 但是当电机速度较大达到 650, 无论右电机的速度为多少,小车都不能完成循迹。其原因在于,受调速性能限制, 小车在循迹时行驶速度较小。其他弯道和曲率的分析与此类似。
5 小结
本文针对飞思卡尔智能车竞赛控制系统的特点, 提出了一种基于 STM32F103ZET6的新智能小车控制方案。经过实验测试, 小车实现了自主视觉循迹功能, 具有较好的鲁棒性和稳定性, 实验结果表明该方案可行。
[1] 陈启军. 嵌入式系统及其应用: 基于Cortex-M3内核和STM32F103系列微控制器的系统设计与开发[M]. 上海: 同济大学出版社, 2010: 84-89.
[2] 刘火良. STM32库开发实战指南[M]. 北京: 机械工业出版社, 2013: 5.
[3] 王名发, 江智军, 邹会权. 智能车竞赛中直流电机调速系统的设计与比较[J]. 微型机与应用, 2009, 10(20): 9-25.
[4] 杨迪行. PID及模糊控制技术在智能小车中的应用[D]. 杭州: 浙江大学, 2012: 163-164.
[5] 胡房武. 基于图像采集的智能车系统设计[D]. 大连: 大连海事大学, 2011: 5.
[6] 盛朝强, 张瑞成, 周志忠. 基于微处理器的智能车图像采集与识别算法研究[J]. 传感器与微系统, 2011, 30(8): 22-24.
[7] 刘茗. 基于噪声检测的自适应中值滤波算法[J]. 计算机, 2012, 25(5): 107-108.
[8] 瞿哲奕, 唐秦威, 朱焕秋. 基于路径识别的巡线机器人控制系统设计[J]. 制造业自动化, 2010, 10(32): 30-34.
(责任编校: 刘刚毅)
Image-based autonomous tracking intelligent vehicle design
Liu Long, Li Jianqi, Wei Guangyu, Liu Lei
(College of Electrical and Information Engineering, Hunan University of Arts & Science, Changde 415000, China)
A camera tracking car based on the ARM platform is presented. The car system is controlled by an ST-produced STM32F103ZET6 microcontroller and obtains road information through an OV7725 camera installed at the front of the car. The system controls motors to adjust the speed and direction of the car, and enables it to stick to the preset route based on path information obtained through a series of processing including de-noising, black line extraction and path recognition on captured images. The images captured by the camera and the speed of the car can be displayed on the LCD and digital tubes in real time. Experiments showed the new system has good robustness and real-time capability.
ARM; black line extraction; path recognition
TP 273.5
1672-6146(2016)03-0062-05
10.3969/j.issn.1672-6146.2016.03.013
李建奇, li_jianqi@126.com。
2016-04-18
国家自然科学基金(61403136); 湖南省自然科学基金(14JJ5008); 湖南文理学院 2015年大学生创新创业研究项目(201509)。组件由电机控制模块和显示模块组成,显示模块包含图像实时显示和速度实时显示。