基于CCD 传感器的智能车路径识别研究*

2023-07-25 05:18尚友良符晓玲
科技与创新 2023年11期
关键词:黑线循迹舵机

米 汤,尚友良,符晓玲

(昌吉学院,新疆 昌吉回族自治州 831100)

随着科学技术的发展和人类社会的进步,汽车行业进入了新的轨道,开始由传统制造向智能制造发展。在新的发展趋势下,如何使智能车准确高效地识别路径是首要问题,这也受到了诸多学者的关注和研究。目前路径识别的方法主要有光电传感器、视觉传感器和电磁传感器3 种。

焦冰等[1]设计了一种以MK60DN512ZVQ10 为控制器核心,OV7725 视觉传感器获取赛道二值化图像的智能车控制系统,并采用PID 控制算法控制舵机的转向和驱动电机的转速。冯玉如[2]、杜方鑫[3]设计了一种基于线性CCD 的智能车控制系统,采用线性CCD 采集路况信息,将采集到的路况信息发送给单片机,单片机根据阈值进行二值化处理,实现自动循迹的功能。王海燕[4]设计了一种基于电磁传感器的路径识别系统,该系统采用6 组相同电磁电路横向“一”字布局,大大提高了检测密度和广度,该设计提升了数据采集的效率和准确度,使得智能车的循迹更加稳定。

1 智能车硬件总方案

为了更好地实现智能车自主循迹,本文给出的设计方案硬件包括控制器核心模块、电源模块、摄像头驱动模块、电机驱动模块、舵机驱动模块和OLED 显示模块,整体硬件结构如图1 所示。

图1 硬件结构

1.1 核心控制模块

选用32 位的嵌入式微控制器STM32F103RCT6 作为核心处理器,程序存储容量是256 KB,程序存储器类型是FLASH,并配有必要的外围电路组成了智能车的核心控制系统。STM32F103RCT6 嵌入式微处理器作为处理核心,拥有高性能、低成本、低功耗、方便二次开发等特点[5]。

核心控制器如图2 所示。

图2 核心控制器

1.2 电源模块

电源模块是智能车系统不可或缺的一部分,它是整个系统的动力源泉,为智能模型车的微控制器、舵机、CCD 传感器、电机等模块提供所需的工作电压。

本次设计选用的是12 V 18650 锂电池,其标称容量为2 600 mAh。这种电池具有安全性能好、容量大、无记忆效应、寿命长等优点,具有短路保护和过充过放保护的能力,在工作中稳定性比较好。

1.3 摄像头驱动模块

视觉传感器的数据采集与处理是整个智能车制作调试中至关重要的一环,视觉传感器采集赛道信息的正确与否直接决定智能车的循迹性能。该设计选用TSL1401 线性CCD 作为智能车系统的视觉传感器,该线性传感器包含了128 个线性排列的光电二极管。每个光电二极管都有各自的积分电路,积分电路由相关的电荷放大电路以及一个内部像素数据保持功能组成。内部像素数据保持功能可以为所有像素点提供同时积分的开始和停止时间。模块内部控制逻辑简单,只需要串行输入(SI)信号和时钟信号(CLK)。TSL1401线性CCD 传感器实物如图3 所示。

图3 CCD 传感器

1.4 电机驱动模块

本设计的驱动电机选用MG513 型号的直流有刷电机,其额定电压为12 V,额定功率约4 W。直流有刷电机是车辆的动力输出结构,将电能转化为机械能,驱动车辆前进,通常是电机本体与减速齿轮系的结合。编码器类型为高性价比AB 相霍尔编码器,车轮扭动一圈输出390 个脉冲,自带上拉整形,STM32 编码器接口模式可硬件计数。智能车系统选用AT8236 直流有刷电机驱动器,它能够以高达6 A 的峰值电流双向控制电机,利用电流衰减模式,可通过对输入信号进行脉宽调制来控制电机转速。

1.5 舵机驱动模块

舵机是用于控制车辆前轮转向的装置。本设计选用数字型舵机S20F 控制智能车转向,此款舵机供电电压为5~6 V,可连续30 min 堵转并保持力矩,使用全金属齿轮,频繁打舵不卡齿。舵机工作原理是控制电路接收信号源的控制脉冲,并驱动电机转动。齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数后输出。电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。

2 智能车软件设计

2.1 驱动电机控制

本次设计驱动电机选用PID 控制。所谓PID 控制,就是对系统偏差进行比例、积分以及微分的控制。PID控制策略结构简单、稳定性好、可靠性高,并且易于实现。本设计选用的位置式PID 控制算法可以很好地提升系统性能。位置闭环控制就是根据编码器的脉冲信号累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。

位置式PID 公式为:

式(1)中:Kp为比例项系数;Ti为积分时间常数;Td为微分时间常数。

将Kp乘上各项,展开就得到了常用的位置式PID公式:

式(2)中:Ki为积分项系数;Kd为微分项系数。

上面给出的位置PID 公式为连续控制的,但在实际控制智能车的过程中是无法做到连续控制的,需要使用离散化的PID 公式,为:

式(3)中:u(k)为输出;e(k)为本次偏差;∑e(k)为e(k)偏差的累积和,其中k为1,2,…,k;e(k-1)为上一次的偏差。

电机控制框图如图4 所示。程序代码如图5 所示。

图4 电机控制框图

图5 电机控制程序代码

2.2 转向舵机控制

舵机的控制需要一个周期为20 ms 的时基脉冲,脉冲宽度为0.5~2.5 ms,和舵盘位置0°~180°相对应,呈线性变化。舵机输出的角度随着脉冲信号的宽度而发生改变,即给它一定宽度的脉冲信号,它的输出轴就会维持在一个与脉冲宽度相对应的角度上。舵机通过调节信号占空比来改变舵机转动的角度。舵机转向控制框图如图6 所示。

图6 舵机转向控制框图

2.3 路径识别与图像处理

路径检测与识别是智能车自主循迹的基础,本设计选用CCD 传感器识别赛道路径,智能车通过摄像头获取路径图像,通过二值化提取出道路的黑线信息,然后由微控制器传输控制信息决策,控制舵机的转角和电机的转速[6]。

总体设计如图7 所示。

图7 循迹设计图

2.3.1 阈值提取

CCD 摄像头全部的感光点都经过一个电荷-电压转换器,因此可以保证几万个感光点的一致性,这就进一步提高了图像的稳定性[7]。TSL1401 线性CCD 传感芯片只能返回一维数据,在较短的时间内可以完成信息数据的采集[8]。线性CCD 采集的信号由于是被反射回来的光线,因此结果容易受外界环境变化的影响,这就意味着设计一种抗干扰能力强、识别精度高的智能车识别系统尤为重要。

由于线性CCD 传感器一个曝光周期只能采集视野范围内一条线的信息,即128 个像素信息。通过AD采样获取像素点的电压数值。通过采样函数将一个曝光周期内采集到的128 个像素点的电压值寄存到数组AVD1[i]中,用于计算与数据处理。在128 个像素点的信息中,光线越强的像素点电压值越高,越弱的像素点电压越低。由此可以区分白底赛道和黑色引导线,通过算法计算赛道中间值,让小车近似循中线行进。

实际黑白赛道中白色部分的像素点电压值要大于黑色部分,因此想要检测黑线在赛道中的实际位置,通过设置阈值,将黑线和白底区分开。将CCD 传感器每次采集回来的128 个像素点灰度值,通过动态循环比较的方式,找出整个数组中最大和最小的灰度值,取两者之和的平均值作为黑白线间的阈值。

由于CCD 传感器镜头容易受到光照环境的影响,智能车在赛道上行驶时,对应每个位置光的折射强度不一样,因此每次采集回来的像素点灰度值都会发生变化,通过动态循环所得的阈值是一个动态值,能够在不同的光照环境或者不同曝光时间长度下更好地区分黑线和白底的像素点灰度值。

2.3.2 二值化处理

赛道中黑线的位置主要是通过检测像素点灰度值的跳变来确定。其原理为:将采集到的像素点灰度值数组与阈值通过动态循环比较,当像素点灰度值大于或等于阈值,判定该像素点对应为白底部分;反之,则判定为赛道的黑色引导线。这就是二值化的基本原理与方法。通过动态循环依次左右循环比较,得到白底部分跳变为黑线和黑线部分跳变为白底部分时对应的像素点数组序列号,即可确定黑线在赛道中的位置,通过算出序列号的平均值计算出赛道黑线的中线值。调整Z轴角速度(PID 控制),让黑色引导线时刻保持在车体的中间,以此实现智能车的自主巡线与转向。通过Keil 软件进行编程,实现线性CCD 取中值。程序代码如图8 所示。

图8 线性CCD 取中值程序代码

3 测试验证

为了更好地验证本设计的普适性和合理性,本次实验分为3 个环节进行测试,分别是直线、S 弯和环形三种赛道。本次测试所用赛道是自制的中间铺有2.0 cm 黑色引导线的白底黑线赛道。实验结果如下。

3.1 直线赛道

首先,测试了智能车在直线赛道的循迹情况,通过设定不同的速度观察循迹效果,可以看出智能车在循迹过程中没有偏离黑色引导线,行驶平稳没有晃动。结果如图9 所示。

图9 直线测试

3.2 S 弯道

其次,对智能车在弯道的循迹效果做了测试,控制智能车在驶入弯道时减速,驶出弯道时加速。由测试发现智能车转弯时不会驶出赛道中线且车速切换自然,结果如图10 所示。

图10 弯道测试

3.3 环形赛道

最后,测试智能车在环形赛道的循迹效果,这一环节设定不同速度循迹行驶,观察不同速度智能车转弯时偏离中线的角度,由实验结果发现,当车速增大时智能车会驶出环形赛道。针对这种情况,可以通过调节PID 参数改善。PID 调参过程如表1 所示,实验结果如图11 所示。

表1 PID 参数调节

图11 环形赛道测试

由以上测试结果可以看出,本次设计可以使智能车在不同赛道上自主循迹行驶,且行驶稳定,控制偏差小。由此印证了本次设计的合理性和可行性,由实验结果也可以得出,该控制系统具有很好的稳定性和鲁棒性。

4 结束语

基于线性CCD 设计了智能车路径识别控制系统,采用STM32F103 作为核心控制器,TSL1401 线性CCD采集赛道路径信息,并采用动态阈值提取的方式选取阈值,然后对图像做二值化处理,由微控制器根据反馈回的图像信息控制智能车自主巡线。实验表明,本设计基于CCD 传感器的智能车控制系统可以使智能车在不同赛道自主循迹行驶,且状态稳定,由此验证了本次设计的可行性和稳定性。进而本设计拥有良好的鲁棒性和实时性,具有很强的实用性。

猜你喜欢
黑线循迹舵机
基于DFT算法的电力巡检无人机循迹检测系统设计
黑线
含齿隙弹载舵机的全局反步模糊自适应控制
基于单片机的智能循迹小车的设计
基于dsPIC单片机的飞艇舵机控制实现
虾背黑线真的特别“脏”吗
智能差分循迹小车设计
基于高速同步485总线通信的多通道舵机控制器设计
基于MC9S12XS128处理器的智能循迹小车分析研究
七巧数独