APP下载

基于机器视觉的智能小车自动循迹及避障系统

2020-04-17岳俊峰李秀梅

关键词:舵机障碍物小车

岳俊峰,李秀梅

(杭州师范大学信息科学与工程学院 浙江 杭州 311121)

0 引言

随着集成电路的发展,高性能低功耗的单片机在图像处理以及机器控制领域发挥重要的作用,结合强大外围电路,用嵌入式编程等手段可以制作拓展性良好的移动机器人.智能小车具备环境感知、路径规划、自主控制运行状态等功能,成为移动机器人领域一个重要研究方向.另外,智能小车在图像处理、控制策略等方面与当下发展火热的智能汽车有相似之处,因此研究智能小车对智能汽车的发展具有实际价值[1-3].

本文利用STM32单片机协同机器视觉模块OpenMV组成智能小车系统,针对摄像头提取的道路图像信息,采用阈值法和鲁棒线形回归算法提取道路引导线,采用多重模版匹配法提取障碍物信息,并结合传统PID控制技术和模糊控制技术,实现了智能小车系统的引导线自动循迹和避障功能.

1 基于机器视觉的智能小车系统硬件电路设计

基于机器视觉的智能小车系统硬件电路部分以意法半导体公司STM32F103RCT6芯片作为核心控制器,由电源分压模块、机器视觉模块、电机驱动模块、速度检测模块、人机交互模块等共同组成.总体硬件设计如图1所示.

图1 系统硬件设计框图Fig.1 Block diagram of system hardware design

为改善道路环境信息的失真情况,以及减轻单片机的图像处理负担,本文采用新型机器视觉模块OpenMV作为图像处理部分.机器视觉模块将处理得到的图像信息通过串口数据发送给主控制器,STM32核心主控制器将对处理完毕的图像数据进行解析和利用,通过电机和舵机达到对智能小车的速度和方向进行控制.速度检测模块使用了光电编码器,将小车的速度反馈给核心控制器实现车速闭环控制.整体硬件系统组成模块所需的工作电源不尽相同,因此需要稳压模块对电池能量进行分配.电机驱动模块对智能小车性能表现起到至关重要的作用,本文设计了由2个P形场效应管(IRF4905用作大功率驱动)与2个N形场效应管(75N75用作高速开关)组成的H桥驱动电路,并采用光耦元件对使能信号进行隔离,保证小车运行到较高速度.

2 基于机器视觉的智能小车系统软件设计

图2 系统软件设计框图Fig.2 Block diagram of system software design

系统软件的总体设计包含两方面:1)通过Python语言实现机器视觉模块OpenMV对图像的处理以及发送处理完毕的环境图像信息;2)通过嵌入式C语言,根据硬件和控制需求,进行模块化编程,使得主控制器STM32有效利用图像信息.在巡线模式下,采用增量式PID控制算法控制智能小车的电机速度,采用位置式PD控制算法对舵机转向进行控制,从而实现自动循迹功能;在避障模式下,建立针对速度和方向控制的模糊控制器,并结合多重模版匹配法检测到的环境障碍物位置信息,及时引导避障策略,完成避障路径规划.系统软件总体设计如图2所示.

2.1 道路引导线信息提取方法

本节具体介绍了基于机器视觉的智能小车系统的引导线信息提取方法,针对于巡线实验自主搭建的道路引导线,如图3所示,其中黑色引导线宽度为4 mm(±1).

图3 黑色道路引导线循迹Fig.3 Track the black road guide-line

2.1.1 阈值分割法

阈值分割法在算法上容易实现,在重视运算效率的单片机上,得到了广泛应用.阈值分割法一般流程是先设定阈值,对采集的图像中像素点的属性值与阈值对比,来确定图像中该像素点对应的是白点还是黑点,从而将一幅灰度图像转换成二值化图像[4].

用数学表达式来表示,则可设原始图像为f(x,y),T为阈值,分割图像时则满足下式:

(1)

其中f(x,y)表示灰度值,可取0(黑),1(白),即图像二值化.

本系统利用OpenMV自带的图像类模板函数,定义阈值列表 threshold来追踪颜色范围,根据像素是否在阈值列表threshold中的阈值内,将所有图像进行二值化处理.为获取所跟踪对象的阈值,只需在OpenMV的IDE帧缓冲区中选择跟踪对象.直方图会相应地更新到所在区域,然后需写下颜色分布在每个直方图通道中起始与下降位置,这些将是 thresholds 的低值和高值,故可手动确定阈值.

2.1.2 鲁棒线性回归算法

实际二值化图像信号中,会有噪声影响,因而二值化数据样本中会有异常点,传统基于最小二乘法的直线回归方法将不适用,常用鲁棒线性回归又称稳健回归作为替代算法,本文主要介绍泰尔森线性回归(Theil-Sen Regression)算法.

泰尔森线性回归算法将计算图像中所有阈值像素斜率的中位数,因此对异常点有很强的鲁棒性[5].

一般回归模型为:

y=α+βx+ε,

(2)

其中,α,β为模型参数,ε为模型的随机误差.

与普通最小二乘法不同的是,泰尔森线性回归算法是一种基于对中值估计的非参数方法,式(3)表征了泰尔森回归的处理方法:

(3)

在本系统的OpenMV函数图像类模板中,泰尔森方法的线性回归估计器可以在给出错误的模型之前,容忍近25%的像素异常点. 但是,若在阈值处理后有太多像素,即使在80*60分辨率的图像上,这个时间复杂度O(N2)操作也可能造成较大计算量,因此采用40*30的全局图像采集分辨率,更少的像素点可以加快算法速度.

2.1.3 引导线信息提取结果

虽然泰尔森线性回归算法速度较慢、计算量较大,但基于低分辨率二值化图像,其可以在摄像头采集视野的任何有效图像区域快速得到回归直线,因此通过这种引导线提取方法,允许智能小车系统做到更好的跟踪控制,图4显示了基于阈值分割法的二值化图像的线性回归结果,图像中的回归直线准确反映了当前位置引导线的提取情况.

图4 二值化图像的线性回归结果Fig.4 Linear regression result of binary image图5 坐标系中直线与图像区域关系图Fig.5 Relationship diagram between line and image region in coordinate system

此外,线性回归处理函数返回的是直线类对象,在此基础上,利用直线类返回的位置信息和直线探测函数,并设置阈值去过滤不符合条件的直线回归结果,图5显示了极坐标和直角坐标系中直线中值和角度与图像区域的关系.

2.2 电机速度控制

智能小车的直流电机可以采用PID控制中的增量式控制策略,根据单位时间速度传感器反馈的电机速度信息,可以构建基于增量式PID的速度闭环控制器,如图6所示.

图6 电机速度闭环控制框图Fig.6 Block diagram of closed-loop control for Motor Speed

增量式PID控制算法公式:

ΔU=Kp[e(k)-e(k-1)]KIe(k)+KD[e(k)-2e(k-1)+e(k-2)],

(4)

其中,k表示采样序号,在电机速度闭环控制中,增量式PID控制器的计算需要保存前两次的偏差e(k)-e(k-1),增量输出ΔU可以直接作为电机控制返回值,因此参数整定和计算都较为简便.

2.3 舵机转向控制

舵机的转角与控制信号脉冲宽度(高电平持续时间)存在对应关系,区别于增量式PID控制方法,位置式PID可以通过误差量计算期望的控制量,因此采用位置式PID控制策略对舵机的转向速度进行有效控制,控制算法公式:

(5)

位置式PID控制不仅可以节省单片机资源,又简化了参数整定,同时也能满足控制要求.

2.4 避障算法研究

本节将针对环境中静态障碍物避障策略进行研究,基于机器视觉的智能小车能够凭借单目摄像头,不依赖于额外的传感器完成简单而有效的避障功能.

2.4.1 基于图像模版匹配法的障碍识别

图像模板匹配法是指在已有目标模板的子图集合中,寻找与实时图像最相近的子图,从而达到目标的识别和定位,这种方法的鲁棒性比基于障碍物特征的图像检测方法好.常规的匹配算法是基于灰度图的归一化互相关(Normalized Cross Correlation,NCC)系数法[6].

归一化互相关匹配算法公式定义为:

(6)

其中图像搜索区域S大小为M×N,E(Si,j)表示图像(i,j)处的子图,E(T)表示模板的平均灰度值.相关度系数满足下式:

|R(i,j)| ≤1.

(7)

因此在[-1,1]的绝对尺度范围之内衡量模板图像和整幅样本图像的集合相似性,一般来说,相关度系数R越接近1,两者匹配程度越高并呈现近似线性关系.

在OpenMV实验平台中,可以将事先提取的障碍物模板保存在储存卡里,以低分辨率和灰度图的形式供程序调用,加快了算法速度.另外,模板匹配并不适应于动态移动情况,结合智能小车实际运行状况,需要进行多角度多大小地进行匹配,因此需要多个障碍物模板,采用多模板匹配方案以提高动态运行时障碍物识别成功率.

2.4.2 运动学模型分析

后轮双电机差速的智能小车需要建立运动学模型以得到更好的控制效果,结合人类驾驶体验,驱动后轮之前在小车转向时存在差速问题,以下将对小车的运动学模型进行简要分析.

由图7可得,设小车车速为v,舵机转角为θ,后轮轮距为T,前后轮中心距离为L,转弯时,参考点分别距左轮、车体中线、右轮为R1,R,R2.根据差速器控制原理,设左轮(转弯内侧)速度为v1,右轮(转弯外侧)速度为v2,又因角速度的一致性,可分析可知:

图7 小车运动学模型分析
Fig.7 Analysis of Kinematic model analysis of smart car

(8)

(9)

(10)

(11)

计算可得:

(12)

(13)

舵机的转向依旧进一步可以通过运动学模型优化,将前轮的转向角度α和实际控制舵机的PWM脉冲宽度a之间进行转换,测试可以得到归一化系数K:

(14)

在实际测试中,智能小车能够在不同弯道处呈现差异性的速度转向表现,符合运动学模型设计要求.

2.4.3 基于模糊控制的智能小车避障策略

当环境中存在静态障碍物时,智能小车需要进行及时的路径规划,进而避免撞击障碍物,而路径规划系统具有不确定性,是一种多输入多输出的系统.模糊控制方法可以融入人类驾驶经验,使得系统可以像有经验的操作者一样去控制复杂、激励源不明的情况,而模糊控制系统的建立是基于专家知识的语言来描述的,因此本节提出了基于模糊控制的智能小车避障策略[7].

2.4.3.1 避障算法设计

智能小车先以自动巡线模式运行,设定为较慢速度,摄像头通过变焦后,增大视野提供额外的图像信息,当道路中出现障碍物时,切换到避障模式,小车将引导避障程序.障碍物在视野中出现的位置大致分为3种,避障可分为3种情况处理.

情况1:障碍物位置出现在引导线中值附近即在小车的正前方,根据多重模板匹配算法提取障碍物大致坐标,可以建立二维参考坐标系如图8:

图8 障碍物在车体正前方Fig.8 The obstacle is directly in front of the car图9 障碍物在车体左侧Fig.9 The obstacle is on the left side of the car

由图8可知,定义小车前端中心对称位置为坐标系原点O,距离碰撞最大制动距离是小车前端到障碍物重心坐标的长度为s,摄像头视野范围为a×b,下端视野边界距离障碍物重心坐标的长度为d.模拟人类驾驶经验,避障路径分为两段:小车提取前方障碍物坐标g(x,y),立即向左运行避开障碍物并计算出避障引导时间T;在避障模式持续时间结束后,还原为引导线提取模式.注意,运行过程中偏转角度与障碍物相对位置和当前车速有关,成功返回引导线巡线模式需要保证以下条件:

(15)

情况2:障碍物位置出现在引导线的左边,小车将从障碍物右侧运行,具体情况参考图9.

情况3:障碍物位置出现在引导线的右边,具体情形同上.

避障策略成功的关键在于t时刻和t+T时刻能够识别障碍物以及提取引导线,且避障引导全程小车相对于障碍物保持在安全距离,因此合理的引导时间T是关键因素,经过实际测试,在车速较慢时(vmax<1 m/s),平均测试样本中,T均不大于300 ms.

2.4.3.2 模糊控制器的设计

针对避障路径规划中小车在方向上的偏转,根据障碍物方位和车速信息,转向控制系统需要进一步优化,因此输入输出变量模糊语言描述如下.

距离变量采用隶属度函数模糊子集{Near,Far},对应障碍物的距离{近,远},论域范围为[0,30]障碍物位置变量上定义隶属度函数{LB,LS,Z,RS,RB},分别对应{左大,左小,中间,右小,右大},论域范围为[-15,15],输出变量转角的模糊语言描述为{LB,LS,Z,RS,RB},分别对应{左大,左小,中,右小,右大},论域范围[-45°,45°],速度变量的隶属度函数定义为{RS,IE,RF},分别对应{较慢,中等,较快},论域范围[0,20],输入输出变量的隶属度函数如图10所示.

图10 输入输出变量的隶属度函数Fig.10 Membership function of input and output variables

确立模糊规则是模糊控制系统的核心部分,通过对模糊条件集合的描述,模糊控制规则构成了模糊规则库.根据前述确定的输入输出集,可以定义模糊规则为因果关系的集合表述,模糊规则一般形式:

IF 复合条件THEN 结果.

根据3种避障情况的具体分析,可以得到一系列多重条件语句的控制规则,篇幅限制只列举典型5条:

Rule1:IFsis Far AND |x|is LB ANDvis RS THENθis Z;

Rule2:IFsis Far AND |x|is LS ANDvis RF THENθis RS;

Rule3:IFsis Far AND |x|is RS ANDvis IE THENθis LS;

Rule4:IFsis Near AND |x|is RB ANDvis IE THENθis LS;

Rule5:IFsis Near AND |x|is Z ANDvis RF THENθis LB;

小车转向的基本规则是根据障碍物远近和相对于引导线的左右位置决定的,障碍物距离越近,转向角度越大,障碍物相对引导线中值偏差越大,转向角度越小.引入了当前的车速信息,目的是为了便于计算避障引导时间,同时也一定程度上确保了避障的成功率.以上的输入变量经过模糊控制器的模糊化和模糊推理后,输出舵机方向控制量,结合小车运动学模型,针对障碍物情况,对速度和方向进行控制,旨在执行规避动作.

使用MATLAB软件建立模糊规则和关系曲面图,通过图11可知,设计的模糊控制系统从障碍物位置关系和小车速度的模糊映射与理论设计匹配良好,显示出良好的梯度分布特点.

3 测试结果

实验测试结果表明,智能小车能够在直线时加速,过弯性能良好,抗环境光干扰能力较强,引导线跟踪精准快速,完全符合设计标准.当障碍物在进入摄像头有效视野范围后,静态障碍物能够被有效识别,在较短时间内引导避障,可以规避约70%的障碍物,而且在避障引导之后,有接近半数的情况能够使小车回归引导线循迹模式,总体达到避障路径规划要求.

4 结论

本文基于机器视觉模块OpenMV实现了智能小车系统,使用STM32单片机作为核心控制器,针对摄像头提取的道路图像信息,利用阈值法和鲁棒线形回归算法提取道路引导线,采用多重模版匹配法提取障碍物信息,并结合传统PID控制技术和模糊控制技术,实现了智能小车系统的引导线自动循迹和避障功能.实验表明,在直径为4 mm引导线场地中,小车巡线性能表现良好;在静态障碍物环境下,小车能够有效识别障碍物,并完成避障路径规划.

猜你喜欢

舵机障碍物小车
大车拉小车
自制小车来比赛
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
赶飞机
刘老师想开小车
两轮自平衡小车的设计与实现
基于dsPIC单片机的飞艇舵机控制实现
超音速舵机保护器
菜鸟看模型