APP下载

基于图像识别的自动驾驶小车设计

2023-07-09缪文南吴伟栋周伟明

电子制作 2023年10期
关键词:小车摄像头二维码

缪文南,吴伟栋,周伟明

(广州城市理工学院 电子信息工程学院,广东广州,510800)

0 引言

在当下信息快速发展的时代,计算机技术飞速发展,与计算机相关的高新技术在日常生活中的应用也越来越广泛,自动驾驶技术得到了快速发展。自动驾驶小车以电子技术为基础,再辅以光电,电磁,红外,图像识别算法等技术的加持,能够实现在不同环境下对不同的交通路况进行自我驾驶,是与自动驾驶技术,图像识别技术融合的一种大胆的尝试,随着近几年的高速发展,机器视觉和自动驾驶的未来和前景越来越耐人寻味。自动驾驶就是通过电子技术和机器视觉的相关算法,来实现自动控制的一种方法。

本文以现有的自动驾驶技术和图像识别技术为基础,针对各种不同的环境和复杂的道路情况,设计了一种自动驾驶小车。该小车利用自动驾驶技术和图像识别及机器视觉等技术,能够实现避让行人,加速减速,红绿灯识别和定速巡航等功能,并把参数实时地传输到电脑或手机等终端中。该小车能够根据不同的目标采用不同的识别算法,即使在偏离路线时也能实时自行修正。

1 系统硬件架构

自动驾驶小车主要功能包括:路标二维码识别、红绿灯路口智能识别、数字识别加减速功能。自动驾驶小车主要由动力系统、主控系统、传感器模块三大部分组成。其中动力系统由370 减速电机提供动力,前轮转向由ZP15S 串口舵机控制;主控系统由STM32F103VET6 微处理组成;传感器由OV7725 摄像头模块、灰度传感器以及陀螺仪组成,系统框图如图1 所示。

1.1 微处理器模块

本自动驾驶小车所采用的主控芯片为STM32F103VET6,该微处理器芯片Cortex-M3 采用ARMv7-M 的架构,内部Flash 为256KB;集合SPI、I2C、TIM、USART 等多项功能的双向I/O 口112 个;内部时钟最高工作频率为72MHz;SPAM 为64KB。该微处理器芯片正常工作电压为5V,具有高性能、低功耗、可处理混合信号的微处理器的多种特点。

1.2 动力系统

自动驾驶小车的动力系统由L298N 电机驱动模块驱动两个370 减速电机实现。所选370 减速电机的空载转速为0.6r/min-200r/min,额定转速为空载转速的75%;工作电压为直流电12~24V、输出扭矩0.375kg.cm~30kg.cm。

小车的转向采取ZP15S 串口舵机牵引转向架控制车轮角度的摆动。串口舵机具有控制角度精确,运行速度平稳,运行时间可调的特点,符合本小车需进行稳定、匀速的转弯要求。串口舵机通过串口进行控制,其指令控制相较于普通舵机更加方便进行调试。

1.3 传感器模块

1.3.1 机器视觉模块

自动驾驶小车的机器视觉模块采用OpenMV cam H7 视觉模块,如图2 所示。该视觉模块使用MicroPython 语言编程,其 具 有1MB 的RAM、400MHz 的主频以及2MB的Flash。该视觉模块可使用的功能有:颜色识别、数字识别、二维码识别、特征点追踪以及边缘检测。在本自动驾驶小车的设计上,利用该视觉模块通过对二维码识别精准判断地点位置信息,利用颜色识别准确通过信号灯所指示的路口并判断行人动态信息,将获取到的相关信息通过串口通信传输给微处理器模块进行后续的程序判断以及相关参数计算处理。

图2 OpenMV cam H7视觉模块

1.3.2 道路界线检测模块

自动驾驶小车使用灰度传感器进行道路界线检测,如图3 所示。灰度传感器由一个发光二极管以及一个光敏电阻组成,光敏电阻通过检测地面返回来的光亮暗检测黑白线,在设定好的特定阻值下产生高电平输入微处理器模块,以引导微处理器模块判断相关情况并处理相关信息。在自动驾驶小车中,基于灰度传感器识别黑白变化的原理实现了对模拟真实转弯道路中两侧的交通标识白线的识别,从而修正偏离的路线,通过修改黑白变化所产生高低电平信号的处理方式,其亦可转换为普通引导巡线模式。在设置灰度传感器模块时,在保证其精确识别距离的情况下,以垂直路面偏水平面45°放置在车头两侧,确保小车车轮在行驶到边界时识别边界执行回避的动作。

图3 灰度传感器

1.3.3 加速度传感器模块

加速度传感器(MPU6050陀螺仪模块)用于测量自动驾驶小车行驶过程中运动方向偏移的角度,利用舵机控制进行实时矫正,如图4 所示。该模块带有16 位ADC 和信号调理的三轴MEMS 速率陀螺仪传感器,可进行角位移的测量并通过I2C 传输给微处理器模块进行相关参数的计算。

图4 MPU6050 模块

2 系统软件设计

本自动驾驶小车系统各个模块的软件程序如图5 所示,主要由以下几个步骤构成:首先对各个模块进行初始化;在完成初始化后各个传感器模块依次开始检测识别工作;将所检测识别的相关数据传输给微处理器模块进行条件判断;判断结束后微处理器模块控制动力系统进行相关运动;运动结束后微处理器模块将相关参数进行保存与修改。

图5 系统软件总体设计

2.1 颜色识别算法设计

颜色识别程序算法主要应用在红绿灯识别,第一步是通过颜色阈值调整确定目标颜色。基于行驶过程中的多颜色,项目采取多阈值的颜色识别算法。阈值确定后需要将摄像头的颜色识别模式设置为“RGB565”,识别图像获取界面大小设置为“QVGA”,即320×160 像素,关闭摄像头的灰度识别以及白平衡功能。在摄像头识别到目标颜色时自动忽略微小色块,捕捉最大色块,减小颜色干扰。最后稳定识别到颜色时,将相关动作激活标志位发送至微处理器模块进行处理,具体流程如图6 所示。

图6 颜色识别流程图

2.2 二维码识别算法设计

二维码的识别算法主要运用在路标识别功能,其设计分为摄像头初始化、获取图像、图像二值化处理、解码、计算矩阵、提取发送二维码信息等步骤。摄像头初始化时颜色模式的选择与颜色识别算法一致,其获取图像帧的像素大小为160×120,解码后获取的信息格式选择为字符,通过串口传输给微处理器模块进行下一步处理,具体流程如图7 所示。

图7 二维码识别流程图

2.3 路线偏移纠正算法设计

路线偏移纠正算法以灰度传感器和陀螺仪测量的参数作为参考值,实时控制小车方向角度修正。其中,陀螺仪参数用于直线偏移修正,当小车车身向左偏移的时候,以陀螺仪的角位移为旋转量,系统控制舵机向右旋转一定的角度,后续缓慢回正。在转弯时停止使用其参数进行矫正,但会记录角度偏移存储进相应数据结构题体中;灰度传感器参数用于小车将近超越道路边界线时的车体矫正,其矫正方式与陀螺仪一致。具体流程如图8 所示。

图8 路线偏移纠正流程图

3 系统测试

3.1 颜色阈值测试

颜色阈值的确定可通过对带有目标颜色的帧缓冲区进行阈值测量,如图9 所示。通过编程软件自带的颜色阈值调整功能,针对目标颜色进行定位识别,上文提到摄像头颜色识别的图像格式为RGB,在编程软件的阈值调节器中是将“R”“G”“B”转换为“L”“A”“B”,这三项进行调整,即LAB 阈值编辑,从而选取目标颜色。图9 展示了红色阈值的调节方式。经过反复测试,选取红灯的阈值选取为(49、68、33、127、-128、127)。

图9 红灯阈值调节示例

3.2 行驶路线规划码测试

行驶路线规划码(以下简称路线码),如图10 所示。首先在小车起步位置放置二维码,二维码信息包含了行驶路线。路线码信息由字符型数组构成,包含字符和数字。信息段以字母“A”为间隔,将由数字组成的线路信息分隔,在后续单片机的处理中通过识别字母“A”获取各个路口的选择信息。该码使用时,开启小车电源,令摄像头识别路线码记录行驶道路信息后,便可正常进入规划道路行驶。

图10 路线码示例(1A2A4A6A7)

3.3 摄像头环境识别

在摄像头进行各方面的识别时,识别目标的数量、识别环境的光线,以及目标的摆放位置都会对识别产生一定影响,以下针对部分环境下对识别的影响以实验性图表对结果进行描述,测试结果如图11 所示。

图11 环境对摄像头对目标识别的影响

4 结语

本项目基于机器视觉识别技术,实现了自动驾驶小车的定位和路线行进功能,采用了灰度传感器来实现行驶路线偏差的自我修正,整体上实现了自动驾驶的基本功能和需求。该系统扩展能力强,定位精准,并且具有自学习功能,结构稳定可靠,具有较大的推广价值。

猜你喜欢

小车摄像头二维码
可以吃的二维码
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
大车拉小车
二维码
自制小车来比赛
刘老师想开小车
两轮自平衡小车的设计与实现
让严肃的二维码呆萌起来
二维码,别想一扫了之