APP下载

基于嵌入式视觉导航的AGV控制系统

2018-04-24方雪清黄晓婷郑灿塔余涟漪石挺星陈伟杰蔡任张宏海

现代计算机 2018年8期
关键词:嵌入式小车摄像头

方雪清,黄晓婷,郑灿塔,余涟漪,石挺星,陈伟杰,蔡任,张宏海

(1.华南农业大学数学与信息学院,广州 510642;2.华南农业大学电子工程学院,广州 510642;3.华南农业大学工程学院,广州 510642)

0 引言

AGV(Automatic Guided Vehicle),即自动导引小车,是一种无人操控的自动化物料搬运设备,主要应用于车间、码头、仓库和机场等场所的物流环节中[1],具有应用灵活、安全可靠及智能化程度高等诸多优点。但传统的AGV主要利用电磁轨道或者光学装置进行导引[2],存在着制造成本高、易受环境因素影响、不利于更改扩建等不足之处。因此,设计一款稳定性高、维护方便、适应性强的AGV是十分必要的。随着计算机视觉技术的发展,AGV的视觉导引技术也正在快速发展,其主要思路是利用图像处理技术获取小车前方的道路信息,进而指导小车自动沿规划的路径行走[3-4]。AGV的视觉软件系统一般搭载在ARM处理器上,ARM是目前公认的业界领先的嵌入式RISC(精简指令集计算机)微处理器,具有体系结构可扩展,功耗低,成本低和支持实时多任务等特点[5]。

自2002年王荣本等[6]出一种基于视觉导航的自动导向车辆JLUIV—3型AGV以来,国内涌现出大量有关嵌入式视觉AGV方面的研究。在视觉处理方面,李进等[7]在提取出道路二值图后,通过追踪路径两边的边缘点获取信息,降低了计算代价,且图像处理过程中抗干扰能力提高;周传宏等[8]借助二维码技术来实现AGV的快速定位,其成本低,读取速度较快。在运动控制方面,史晨红等[9]深入分析了两轮差分驱动的AGV运动平台和AGV运动过程中的多状态,提出一种基于轨道控制的运动控制器;郑新钱等[10]采用FPGA作为控制核心,在模块间设计独立电路结构,实现了并行操作,节省了逻辑资源并提高了运算速度。但市场上基于嵌入式视觉导航的AGV存在着精准度不够高的问题,即控制系统不能十分准确地获取路径信息,为此,我们根据当前标准化生产的工厂环境设置光照条件并以不同颜色的路径围绕控制系统对于路径判断的准确率进行了实验并通过结果的对比来获取较颜色的路径。

综合考虑硬件设备的运算能力、性能、成本以及实用性等方面,本文设计了一款嵌入式视觉导航AGV控制系统,该嵌入式控制系统以ARM作为处理器,以Linux作为操作系统。嵌入式Linux系统是整个AGV控制系统的核心,它主要任务是处理由摄像头获取的路径信息,并将获取的信息转化成字符信号传递给单片机进而控制小车转向、调节速度、路径的采集规划以及避障等。随着人工成本的不断上升,以及市场上对于AGV的智能化、人性化、低成本化的需求日益增大,基于嵌入式开发的视觉AGV将具有更加宽广的应用前景。

1 系统总体设计

1.1 总体设计思路

为实现基于ARM的嵌入式视觉导航AGV控制系统,本文提出总体设计思路如图1所示。系统的大致工作流程分为以下几点:

(1)整个系统都需要在电源支持的基础上工作运行,电源需要连接ARM Cortex-A9开发板、51单片机以及PWM驱动电路,为它们提供电力支持;

(2)通过人机交互系统给AGV下达任务指令;

(3)摄像头采集路径图像,然后由ARM处理器运行AGV图像处理应用程序进行路径识别;

(4)图像处理完成后得到道路信息,把经处理过的信息传输至51单片机从而控制PWM驱动电路,驱动AGV电机完成路径跟踪任务。

图1 控制系统流程图总体设计

1.2 运动控制系统

为满足嵌入式系统对图像处理的高速率要求,本文采用Exynos4412作为主芯片,该芯片是由三星开发设计的适用于多媒体设备的一款CPU,采用了ARMCortex-A9内核,ARMV7指令集,64/32位内部总线结构,32/32KB的数据/指令一级缓存,512KB的二级缓存,每秒运算2亿条指令集,可以轻松快速地处理AGV的道路图像[11]。其内部资源包括237个GPIO,4个串口,4个PWM,3个24位总线控制器,以及USB传输等本课题所需要的资源。

1.3 视觉处理系统

视觉处理系统的工作流程如下:

(1)调用预装摄像头进行采集图像的工作,并把采集好的路径图像存入缓冲区;

(2)ARM控制处理器取出缓冲区内的图像,进行图像处理工作,图像处理包括图像预处理和道路检测两个部分;

(3)图像处理完成后,提取道路的轨迹信息,然后在对应坐标系内确定该时刻AGV的前行方向,进行机器决策;

(4)将道路决策结果传入控制器,产生一个脉宽调制信号,驱动小车的工作运行。

2 AGV运动控制系统

2.1 嵌入式系统的搭建

本系统需要搭建基于ARM平台的交叉工具链,目标平台名为arm-linux-gnu。通过编写一个简单的hel⁃lo.c源程序测试建立的交叉编译工具链是否能够正常工作,执行“arm-linux-gcc-o hello hello.c”命令进行编译,编译后生成名为hello的可执行文件,通过file命令“file hello”可以查看文件的类型。当提示文件属于ARM平台时,则测试通过,交叉编译工具链构建完成。系统上电后先是启动引导加载程序bootloader,然后启动内核,最后挂载根文件系统[12]。

Linux操作系统本身对嵌入式AGV系统来说规模太大,占用太多内存,对整个AGV系统的运行速度和效率有所影响[13]。为了提高执行速度和系统的可靠性,本课题对Linux内核进行裁剪,使很多方面都能够得到简化,以削减代码和系统空间。确定了内核的基本功能后,就要为AGV小车特定的外部设备编写设备驱动程序代码。上层应用程序是无法直接操作底层硬件的,需要有特定的API接口。而设备驱动程序正好为上层应用提供了这样的一种接口,通过调用接口函数,从而实现操作底层硬件的目的。本系统设备驱动程序的编译与Linux内核编译是相互独立的,将设备驱动程序编译成*.ko模块,再通过相应命令把模块加载进内核。

图2 运动控制系统的设计

2.2 OpenCV的移植

通过cmake工具产生makefile文件,执行make命令对OpenCV库进行交叉编译,从而实现OpenCV库到ARM上面的移植。图像处理算法由OpenCV+Qt图形库实现,由于OpenCV库对于V4L2支持并不完善,设计的程序中一旦涉及到摄像头的调用工作或者是调用OpenCV的内置函数显示图像,程序就会直接崩溃[14]。为了解决这个问题,本系统重新编写了一个摄像头的设备驱动程序以替代OpenCV库中内置的摄像头驱动程序[15],另外通过Qt图形界面来显示摄像头所捕获到视频信息[16],对采集到的数据进行实时处理分析并让小车做出相应动作。

2.3 驱动小车

小车转弯装置采用步进电机+连杆,通过控制步进电机旋转带动连杆运动,实现小车的转弯[17]。摄像头实时拍摄地面路径信息,然后通过USB接口将所采集的视频图像传输到嵌入式Linux系统中;微处理器Exy⁃nos4412会将图像进行处理,从中提取路径信息,再根据控制算法产生控制信号传给51单片机,再通过PWM输出接口控制小车转向,使得小车跟踪路径行走[18]。

3 AGV视觉处理系统

3.1 图像预处理

综在图像采集的过程中,由于拍摄角度,小车晃动以及光照条件等的影响,所获取的图像与真实图像之间会存在一定的误差和失真,因此需要对获取的图像进行预处理。图像预处理是数字图像处理的过程中非常重要的步骤,其目的主要是是改善图像质量,抑制噪声,增强有用信息[19]。图像预处理的常用方法有图像滤波、图像锐化、图像复原和边缘检测等。

本文中的图像预处理用到了滤波操作,以及颜色空间的转换。考虑到拍摄到的图像中的噪声主要是一些轻微噪声点,基本服从正态分布,而高斯滤波对于抑制服从正太分布的噪声非常有效,所以将高斯滤波用于采集的原图的减噪过程。另外,原图是基于RGB颜色空间的,并且由于道路图像的背景较为明亮,若是直接将其转换为灰度图,将不利于道路分割。不同于RGB颜色空间,HSV颜色空间是基于人的视觉心理学提出来的,不同颜色之间有较为独立的特性[20]。在本例中,将经过滤波处理的原图进行颜色空间转换,并单独提取其S(饱和度)通道,可以较好地凸显出单一颜色的道路。处理效果如图3所示。

3.2 道路检测

图3 图像预处理

道路检测阶段分为图像二值化和道路边缘检测两部分。本文采用Otsu算法(大津法或最大类间方差法)来进行图像二值化,该算法能自动寻找出利于图像分割的最佳阈值,是一般图像二值化的常用方法。如图4左图所示,图像二值化之后,图像中的道路和背景被非常清楚地区分开来,道路呈现白色,背景则为黑色。获得了明晰的道路轮廓之后,开始进行道路边缘检测。边缘检测主要用于检测图像中物体的某种不连续性或突变性,其经典的算法有Sobel算子,Laplace算子,和Canny算子等[21]。本文选择使用Canny算子进行道路边缘检测,在进行边缘检测前,本文已经对图像进行了滤波(高斯滤波),增强(图像二值化),使得图像中有用信息与无用信息的亮度梯度非常的明显,此时使用Canny边缘检测,将会非常简单顺利跟踪到道路的边缘。

图4 道路检测

3.3 机器决策

(1)道路拟合直线

道路边缘检测后,得到道路的两条边缘线,此时可以利用霍夫直线检测,在道路边缘图中检测出直线,进而进行道路拟合直线的提取。通过多次实验,发现通过霍夫直线检测计算拟合直线的方法准确率非常低,受到图片质量好坏的影响较大。因此本文将提出另外一种较为简便的求取道路拟合直线的算法,其主要的思路如下:①将道路边缘图像予以横向平均划分成若干个区域,通过遍历每个区域内特定的单行像素,并且记录该行像素与两条边缘的交点坐标,取两个交点坐标的中点像素坐标作为该区域的道路轨迹点;②遍历所有区域后,把所有区域中得到的道路轨迹点坐标存入点集;③用最小二乘法对点集进行直线拟合,得到道路边缘图的拟合直线,并把拟合直线作为道路的轨迹路线。处理效果如图5所示。

应用此算法的原因在于:

①算法的效率较高。由于整张图片只需划分成若干区域,而每个区域只需要遍历某一行像素即可确定该区域的轨迹点,因此,大大减少了计算的频度,提高了效率。

②算法的准确率较高。由于寻找轨迹点的区域是均匀分布于整张图片,因此寻找到的轨迹点也是均匀分布于整条道路中间,也就是说轨迹点的线性拟合基本代表了道路的轨迹。

图5 提取道路拟合直线

(2)道路边缘检测

由于摄像头居于小车前方的正中间,而车身是直的,可以用采集的图像的正中间的一列作为基准线,表示小车当前的相对位置。若道路拟合直线与基准线高度重合,则认为当前偏转角度为零。图6展示了道路偏左或偏右的情况:

图6 计算偏差角度

另外,考虑小车偏离道路中心的情况(即图像最下方的道路并不处于图像的正中间),此时可以根据实际情况来进行道路居中矫正。

计算出拟合直线与基准线之间的偏差角度后,将该角度信息传输给下位机。主控制器得到角度信息后,输出一定频率的PWM波,驱动转向步进电机转相应的角度,调整小车运行轨迹,进而控制小车追踪引导路径。

4 系统联调与结果分析

4.1 实验设计

本文中道路图像处理程序的开发环境为Visual Stu⁃dio 2015,采用OpenCV 2.4.9视觉处理库,然后再将源码移植至Linux平台。硬件设施主要有基于ARM Cortex-A9内核迅为4412开发板,摄像头为USB摄像头。软硬件各部分准备就绪后,即可进行系统联调测试。

为了尽可能地模拟具体的工业运作场景,本文在室内利用单色材料构建成环形跑道,为小车提供指引。小车在行驶过程中的运行状态包括直行,弯道转弯,以及到达目的地。测试时考虑到不同的光照强度条件影响,以及采用了不同颜色的单色材料导引线,对小车进行了多次试验。其中,所选地面为工业运作场景中常见的灰色水泥地面,反光性较弱;所选光源为生产生活中常用的白光,波长为1200nm,所选路径的颜色分别为黄色、绿色和红色。道路分割的部分实验效果如图7所示。

4.2 结果分析

实验中所选的光照强度梯度从流明度250,750,到1200(单位为lx),并在相同光照强度下分别对黄色、绿色以及红色道路进行了道路提取,图像分辨率为640x480。表1展示了实验过程中的数据:

表1 不同光照强度及道路颜色下实验对照表

图7 不同光照强度及道路颜色下分割效果图

对原图进行处理得到的道路二值图能基本保持道路的形状。上表中,原图道路像素点统计个数在Pho⁃toshop工具下计算,取同颜色道路不同光照下多幅图像计算结果的平均值;误判率(错检,漏检)的计算公式为,其中P0表示原图道路像素点个数,P1表示二值图道路像素点个数。以上试验结果初步表明:该视觉处理系统中,在图像经过预处理的基础上,使用Otsu算法对道路进行分割,对黄、绿、红单颜色道路的处理效果之间相差不大;对于黄色道路,流明度越高,分割效果越好;而对于绿、红色道路,流明度太高或太低分割效果都不太理想,只有在恰当的范围内,才使得背景与前景出现明显区别。同时,拟合直线的提取是直接以道路二值图为参照的,若二值图中存在噪声或道路分割不理想,会直接对拟合直线提取的效果产生影响。

5 结语

在车间环境下实现对路径信息的正确获取是AGV控制系统设计的关键。本课题通过试验设计的方法验证了该嵌入式视觉导航AGV控制系统的可行性,并得出以下结论:

(1)通过对比试验设计的方法,分析了不同光照强度、不同颜色路径对AGV控制系统在道路提取误判率方面的影响,发现了道路提取误判率与光照强度、路径颜色均有较为显著的关系。

(2)通过探索性分析发现,在白光环境下,当光照强度发生变化时,相对于获取红色与绿色的路径,AGV控制系统在获取黄色的路径时更容易受光照强度变化的影响,但在适当的光照强度——流明度为1200lx时,AGV控制系统对于黄色路径的误判率仅为1.87%,低于其他两种路径。若进一步细究,可发现,作为光的三原色(红绿蓝)当中的绿色和红色在白光(接近自然光)光照强度变化时,不太容易受到影响,但对控制系统造成的误判率整体偏高,而作为非光的三原色的黄色对控制系统造成的误判率只要控制好适当的光照强度即可将误判率降到很低的水平。

基于嵌入式视觉导航AGV控制系统本身拥有强大的潜力,其精准率一直以来都是人们关注的重点以及物料搬运系统稳定运行的关键,本研究将能够为相关行业提供技术支持。

参考文献:

[1]WU Xing,LOU Pei-huang,YU Jun,et al.Intersection Recognition and Guide-path Selection for a Vision-based AGV in a Bidirectional Flow Network[J].International Journal of Advanced Robotic Systems,2014,11:1-17.

[2]孙青.基于嵌入式控制系统的自动导引小车设计与实现[D].南京理工大学,2010.

[3]Francesco Biral,Mauro Da Lio,Roberto Lot.An Intelligent Curve Warning System for Powered Two Wheel Vehicles[J].European Transport Research

[4]Tangruamsub S,Tsuboyama M,Kawewong A,et al.Mobile Robot Vision-based Navigation Using Self-organizing and Incremental Neural Networks[C].In Proceedings of International Conference on Nearal Networks,Atlanta,2009:3094-3101.

[5]江俊辉.基于ARM的嵌入式系统硬件设计[J].微计算机信息,2005(10):120-122.

[6]王荣本,储江伟,冯炎,游峰,纪寿文.一种视觉导航的实用型AGV设计[J].机械工程学报,2002(11):135-138.

[7]李进,陈无畏,李碧春,王檀彬.自动导引车视觉导航的路径识别和跟踪控制[J].农业机械学报,2008(02):20-24.

[8]周传宏,柳新昌,齐飞.二维码技术在AGV定位中的应用研究[J].工业控制计算机,2017,30(01):49-51.

[9]史晨红,左敦稳,张国家.基于轨迹控制的AGV运动控制器设计研究[J].机械设计与制造工程,2014,43(02):7-12.

[10]郑新钱,王辅明,马华,林云,张伟.基于FPGA的视觉导航小车设计与实现[J].厦门大学学报(自然科学版),2012,51(03):331-335.

[11]罗三定,冯准.基于嵌入式的AGV视觉导航系统设计[J].信息技术,2008,32(12):100-102.

[12]陈赜.ARM嵌入式技术原理与应用[M].北京:北京航空航天大学出版社,2011:118.

[13]徐杭.嵌入式Linux在AGV控制系统的设计[J].计算机工程与应用,2003:209-211.

[14]邹意然,王永威,赵龙.嵌入式系统中USB摄像头的图像采集[J].微计算机信息,2010,26(35):24-25+28.

[15]刘春成.基于嵌入式Linux的USB摄像头驱动开发[J].计算机工程与设计,2007,(08):1885-1888.

[16]陈志发,王苑增.嵌入式Qt实战教程[M].北京:电子工业出版社,2015:34.

[17]楚荣珍,周向宁,张鹏.嵌入式步进电机控制系统的设计与实现[J].微计算机信息,2007(02):53-54+84.

[18]李红岩.基于ARM的嵌入式PWM直流电动机控制系统[J].工矿自动化,2007,(06):116-118.

[19]黄艳军.基于FPGA的数字图像预处理算法研究[D].南京理工大学,2009.

[20]马玲,张晓辉.HSV颜色空间的饱和度与明度关系模型[J].计算机辅助设计与图形学学报,2014,26(08):1272-1278.

[21]高朝阳,张太发,曲亚男.图像边缘检测研究进展[J].科技导报,2010,28(20):112-117.

猜你喜欢

嵌入式小车摄像头
浙江首试公路非现场执法新型摄像头
基于IMX6ULL的嵌入式根文件系统构建
摄像头连接器可提供360°视角图像
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
火星作业小车
大车拉小车
基于ARM嵌入式的关于图像处理的交通信号灯识别
TS系列红外传感器在嵌入式控制系统中的应用
刘老师想开小车
去修理厂