石启宏 夏天
贵州电网有限责任公司安顺供电局 贵州省安顺市 561000
[摘要] 本文以基于摄像头的自主循迹小车设计为题,运用树莓派作为上位机,以飞思卡尔的K60微处理器作为核心控制单元,利用其强大的数据处理能力和丰富的外设接口设计了智能小车。通过摄像头来采集道路图像信息,运用Opencv强大的图像处理算法库,对跑道信息进行提取,计算出小车与跑道的夹角,伺服舵机根据获得的角度信息来控制小车的速度和转向,从而修正小车的方向和速度,实现小车自主循迹。
[关键词]自主循迹;摄像头;图像处理;路径信息提取
一、自主循迹小车系统总体概述
目前自主循迹小车在各领域均有广泛运用,货物搬运、快递投放等,在电力行业可用于机房设备巡视、仓库物资搬运、变电站设备巡视等。本文按照智能移动机器人三层体系通用结构,即三层体系结构:控制层、执行层、感知层,以K60和树莓派作为小车的控制单元,树莓派为上位机系统与以K60为控制芯片的运动控制下位机系统进行串口通信,两者之间通过USB线连接。移动子系统为执行机构,两轮采用差动加万向轮支撑方式,驱动电机采用360°伺服舵机。路径信息检测系统主要依靠摄像头来反映周围环境的信息变化。
自主循迹小车的信息流图如下:
二、自主循迹小车硬件系统设计
本次设计的自主循迹小车由核心控制模块、电源模块、舵机模块、图像采集模块四个模块组成。核心控制模块作为小车的大脑,由树莓派和K60组成,具备所有PC的基本功能。在本次设计中,树莓派充当上位机的作用,其连接摄像头拍摄图像,依靠基于OpenCV的图像处理技术,并通过USB线与下层控制板进行通信。电源模块是小车的动力来源,其作用是将电压进行调节和分配,为小车提供可靠的供电,使小车能正常运行。由于控制器和其他各个模块所需电压不同,需要设计电压转换模块,为各个模块提供可靠的供电,保证小车稳定运行。转换后的电压主要有:K60控制芯片3.3V,树莓派,HDMI LCD显示屏及摄像头5.0V,伺服电机6.0V。电压转换示意图如下:
舵机模块是小车的执行单元,主要由舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路组成,其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。在本次设计中图像采集模块所采用的是CMOS图像传感器,具有集成度高、图像动态特性好、电源电路设计简单等优点。
三、图像处理算法分析
数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术,是机器视觉、计算机视觉等技术实现的基础。图像处理一般为在图像像素级别上的操作,准确、高效的图像处理技术为图像的分析、图像理解提供了可靠的保证。在本次设计中所采用的是基于OpenCV的图像处理基础,处理算法库在Vc++编译环境下运行,为数字图像的处理、计算机视觉技术应用提供了极大的方便。
摄像头所采集的图像是三通道的彩色图像,直接对彩色图像进行处理,数据量大,处理时间长,将彩色图像转换为灰度图像可以减少系统处理的数据量,提高系统的运行速度。运用颜色空间转换函数cvtColor()将RGB彩色图像转换为灰度图像。
除噪与滤波对图像分析与图像理解有着至关重要的作用,本次设计的跑道中,只有黑与白两种颜色,要求小车按黑色轨迹线行驶,在跑道中会受光线、跑道中凹凸不平的点或者污染物以及小车行进中的抖动都会给图像带来噪声,所以在提取出黑色轨迹之前需要对图像进行滤波、除噪。常用的滤波方法有高斯滤波、双边滤波、均值滤波、中值滤波等等,通过多次实验分析比较,采用中值滤波可以很好的处理掉图像中影响系统分析图像的小黑点,而且让黑色的轨迹更加清晰,采用中值滤波,提高了系统的准确性。
在小车行进过程中,光线及小车自身的抖动,会出现一些类似于图3-3左中在黑色轨迹内出现残缺的部分,运用膨胀和腐蚀可以很好的去除这样的噪声点,先膨胀后腐蚀叫闭运算,闭运算的结果会得到平滑的轮廓,闭运算一般还会将狭窄的缺口连接起来形成细长的弯口,并填充比结构元素小的洞。在对图像进行二值化,就是将图像上的像素点的灰度值置为0或255,图像置只呈现出黑与白的视觉效果。即可提取出跑道中的黑色轨迹信息。如图3-3右所示。
边缘是数字图像中亮度变化明显的点,存在于目标与背景、目标与目标之中,是图像特征提取、图像分割的基础,是图像分析和图像理解的第一步。轮廓检测可以很好的体现出目标图像,方便对图像的分析与理解。查找和绘制轮廓可以用查找轮廓函数findContours()和绘制轮廓函数drawContours()获得。如图3-4所示:
四、路径信息提取与处理
通过图像处理技术对摄像头读入的图像进行处理,提取出对小车有用的路径信息,使小车能对道路信息进行判断,并做出相应的动作,让小车实现自主循迹。本次设计中,采用二值化、除噪和滤波、轮廓检测等图像处理方法,提取出路径信息,计算出小车的偏角,由控制器修正参数并发送给舵机,从而实现小车自主循迹。本次设计所采用的是小车的偏角对小车进行控制。如公式4-1所示:
将采集到的黑色轨迹转换为角度信息,摄像头采集到的图像在显示屏上显示为240*320的一小块区域,在240行中,采用隔行扫描的方式,平均提取黑色轨迹的中心点,在运用最小二乘法拟合直线,直线的斜率即为系统所需的夹角。具体实现方法是对经过预处理的图像,对每一行从两边往中间进行检测,左往右检测的第一个为黑的像素点为x1,从右往左检测到的第一个为黑的像素点为x2,(x1+x2)/2即为该行的中心点。
在小车行进过程中,还需要对道路信息进行判断,主要是对十字路口、丁字路口以及没有道路的情况进行判断。对采集到的图像信息,通过轮廓检测,计算出摄像头采集到图像中黑色轨迹边缘与图像边缘所围成的白色区域的个数到路口进行判断,没路为1,丁字路口为3,十字路口为4,在将所围成轮廓里的像素点进行累加,累加和的不同及区域个数的不同,很好的对道路的状况进行判断,从而控制舵机做出相应的动作。
参考文献
[1]江明,刘辉,黄欢. 图像二值化技术的研究[J]. 软件导刊,2009(4):175-177.
[2]韩金科.基于CMOS的图像采集系统设计[D].郑州大学, 2010.
[3]张睿. 基于K60的智能小车控制系统设计与实现[D]. 杭州电子科技大学,2014.
[4]费琛. 基于图像传感器的智能循迹小车研究与实现[D].安徽工程大学, 2013.
[5]刘化胜,王友仁. 车辆视觉导航系统中的实时道路检测[J]. 计算机测量与控制, 2004,12(10):901-904.
[6] James N.K.Liu,Bernard C.S.Kan.Development of the binocular-vision-enhanced mobile robot navigation[J]. International Journal of Intelligent Systems Technologies and Applications,2011,10(1):15-45.