魏 挺
(西安航空职业技术学院 陕西 西安 710000)
随着我国科学技术的高速发展,越来越多智能技术开始投入到工业、农业等各个领域。在此背景下,智能小车成为各领域代替人工作业的主要设备。如在农业领域中,应用智能小车进行喷洒农药、收割作物,种耕除草等工作,极大程度上提高了农业工作效率。但就目前情况来看,智能小车在各领域的应用过程中,存在一个极为严重的问题,那就是无法对行驶过程的障碍进行很好的躲避,这将直接影响到智能小车的工作效率[1-3]。由此可见,对基于ARM的车辆障碍自动识别技术研究极具现实意义。对此,本文将以提高智能小车行驶过程中安全性为主要目的,对基于ARM的车辆障碍自动识别系统进行设计,以提高智能小车避障的识别能力,进而提升小车运行过程中的安全性。
对基于ARM的车辆障碍自动识别系统的主要目的,是为了使智能小车在运行过程中能够自动规避道路中存在的障碍。因此,在对该系统进行设计之前,必须考虑系统应实现的功能需求。根据笔者对相关方面的了解,认为基于ARM的车辆障碍自动识别系统的设计需求具有以下3点:
1)该系统需具备对前方静止障碍物的识别功能。智能小车在进行各种作业的过程中,途中必不可少地将出现部分不可预知的静止障碍。此时若是智能小车无法识别到该障碍物,将会影响到相关作业的进展。因此,本次设计的基于ARM的车辆障碍自动识别系统需具备对前方静止障碍物的识别功能,帮助智能小车及时判断出前方障碍情况,为之后的路径选择及避障反应提供依据;
2)需具备路径选址功能。该系统在进行前方障碍物识别之后,还需对小车与障碍物之间的关系进行分析,以此为智能小车提供一个避开障碍物的最优路径;
3)需具备引导小车避障功能。该系统在为智能小车提供最优路径之后,还需利用相应的驱动模块,引导智能小车转变至避障方向,完美避开前方障碍物,以此提高智能小车在作业过程中的安全性。
对基于ARM的车辆障碍自动识别系统的硬件系统设计,主要分为4大模块,分别为图像采集模块、ARM处理器模块、电机驱动模块以及系统供电模块。其中图像采集模块主要负责对系统外界环境信息的采集;ARM处理器模块是整个硬件系统的核心所在,主要起到障碍物识别以及路径决策的关键作用;电机驱动模块主要负责改变智能小车的最初前进方向,引导智能小车避开障碍物;系统供电模块主要起到为整个系统提供电能的作用。具体硬件结构框图如图1所示。
图1 系统硬件结构框图
2.2.1 主要功能设计
在对该系统的构建中,其功能可以划分为障碍识别与路径规划、图像管理、驱动管理等。其中图像管理负责对小车前方的图像进行采集,以此为障碍分析奠定基础;障碍识别是通过障碍识别算法,完成对前方障碍物的识别,并根据识别的结果,对小车运行的路径进行规划;驱动管理主要对系统运行的驱动程序进行设计。
2.2.2 开发关键技术
对该系统软件部分的设计,主要采用Open CV(开源计算机)视觉库[4]和Qt图形库进行。
1)Open CV视觉库
Open CV是一种具备多种图像视觉处理的基础算法的跨平台计算机视觉库,能够运行于各类操作系统之中,如Linux、Windows、Android等。因此,若是将Open CV移植至ARM平台中,将会极大程度地减轻开发人员在进行障碍识别系统编程时的工作量,提高本次设计的可实现性。在对Open CV进行移植的过程中,首先需对Open CV进行交叉编译,以此形成相关的动态库文件;其次需将编译生产的动态库文件存储至相应的目录中;最后将该动态文件拷贝至ARM板子下的相应目录中,以此达到ARM对Open CV进行调用的目的。
2)Qt图形库
Qt是一种由Qt Company所开发的跨平台C++图形用户界面应用程序,具有跨平台特性及丰富的API等特征。发展至今,Qt在产品开发领域的应用已极为广泛,将该程序应用至产品开发中,不仅能够为应用程序构建起可视化及友好的桌面环境,还能为产品的开发构建起较为复杂的应用程序。因此,若是将Qt移植到ARM的车辆障碍自动识别中,将会对本次系统的界面设计提供帮助。Qt的移植过程主要是将编译安装之后的相关内容下载至开发板中,并且配置Qt运行的环境变量。
为了实现系统设计识别障碍、选择路径以及避障的功能需求,本文将根据众多学者在多种图像分割算法方面的研究,提出将基于固定区域分割原理的避障算法应用至本次基于ARM的车辆障碍自动识别系统中。具体的功能实现如以下步骤。
首先,将采用在该系统中安装摄像头的方式对前方是否具有障碍物进行判断。一般情况下,路面的特征信息基本不会发生变化。因此可根据摄像头获取到的前方图像完整与否,来对前方障碍物情况进行判断。在图像中破损区域则代表道路障碍物,以此实现系统对障碍物的识别功能。值得注意的是,在对摄像头进行安装的过程中,需将摄像头与路面形成倾斜的角度进行安置,以此保障该摄像头获取到的图像具备完整性。具体摄像头安装示意如图2所示。
图2 摄像头安装示意图
其次,在系统的路径选址功能及避障方面,出于对智能小车与障碍物之间4种关系的考虑,本文将采用基于固定区域分割原理的避障算法来实现系统这一功能。具体小车与障碍物位置关系如图3所示。
图3 智能小车与障碍物位置关系
根据图3显示的4种小车与障碍物位置关系,当智能小车在行径过程中遇到其中任意一种位置关系时,基于固定区域分割原理的避障算法都将把该位置关系区域分割为若干小区域。通过相对应运动策略将小区域归为一类的方式,形成系统4种固定障碍位置关系的避障方式。当智能小车行进过程中遇到正前方障碍物位置关系时,系统将会根据固定区域分割原理的避障算法引导智能小车向右侧转向,根据转向后智能小车的位置重新判断障碍位置关系,并给出相应的固定避障方案;当智能小车处于左前方障碍或是右前方障碍位置关系时,系统将引导智能小车从没有障碍物的一侧通行;当智能小车前方未发现障碍物时,系统将引导智能小车进行正常行驶。
虽然基于固定区域分割原理的避障算法已经能够很好地实现基于ARM的车辆障碍自动识别系统的功能需求,但由于该算法只能针对固定障碍位置而给出避障方案,无法在智能小车面临多个障碍物的情况下,为其提供相应的避障功能[5-6]。因此,为了使该系统能够为智能小车在面临多个障碍物时提供避障方案,本文将以逐一区分每个障碍目标的特征信息为基础,采用图像分割分别标定出目标障碍物的特征信息,以此确定出障碍物所在的区域。
出于对图像分割最终目的性的考虑,本文将从区域角度对智能小车的多个障碍物进行图像分割。在图像分割过程中,假设以R来表示整幅障碍图像,那么图像分割n个子区域则为R1,R2,…,Rn,且满足以下条件:首先,若是将这些子区域进行组合,若是拼凑出一副完整的障碍图像,则说明本次障碍图像分割具备完全性,以公式表示为:Yni=1Ri=R;其次,若是这些子区域中若干子区域像素具有特定相似度准则,则Ri,i∈{1,2,…,n}表示为一个连通区域。与此同时,若是子区域之间像素为相互独立,则RiIRj=Φ,i,j∈{1,2,…,n},i≠j;最后,若是子区域的相邻区域内,子区域的像素点所满足的性质皆不同,则相邻区域Ri与Rj,P(Ri)I P(Rj)=Φ。在该公式中,P(Ri)表示像素点在分割子区域内应满足的性质。
通过图像分割的方式,将目标障碍物区域以矩形框进行包围。根据矩形框范围就可了解障碍物范围。智能小车再根据障碍物范围情况,选择相应的运动方式,避开多个障碍物。
智能小车避障流程图如图4所示。
图4 智能小车避障流程图
根据图4所示,智能小车在进行避障过程中,基于ARM的车辆障碍自动识别系统将利用区域分割算法对环境坐标系进行确定。若在该算法判断智能小车前面未出现障碍物,或是该障碍物未对智能小车构成阻碍时,该系统将会引导智能小车沿初始方向运行;若是算法判断出障碍目标,该系统将引导智能小车执行智能避障。
为了验证本次设计的可行性,本文将对基于ARM的车辆障碍自动识别系统的智能小车避障过程进行实验。实验开始之前,笔者将采用在智能小车行驶的右上方放置障碍物的方式,然后通过在小车前方布置CCD摄像机,完成对障碍物图像的采集,并测试智能小车能否成功避开相关障碍物。具体实验过程如图5所示。
图5 系统实验过程
根据图5所示,基于ARM的车辆障碍自动识别系统的智能小车在面临前方障碍物时,能够自动完成避障过程,这足以说明本次设计具有实际性及合理性。
通过上述的设计看出,通过硬件和软件的搭建,并借助基于区域障碍物识别算法,可有效地判别小车运行的过程中的障碍物,进而为车辆自动作业提供了参考和借鉴。但是本文研究是以水平地面作为研究,在实际的研究中,还需要结合道路的复杂性,进行更加深入的探讨和分析。