APP下载

简单场景中基于计算机视觉的智能小车设计

2024-01-23

物联网技术 2024年1期
关键词:交通标志仓库小车

张 萍

(广东工贸职业技术学院 计算机与信息工程系物联网应用专业,广东 广州 510510)

0 引 言

随着科学技术的发展,人口出生率的下降,人力成本的上升,越来越多的企业开始打造智能仓库,以降低成本、提高生产效率。仓库工作离不开货物运输,传统仓库货物运输是由司机驾驶叉车完成,随着技术发展出现了使用磁导航、RFID、激光雷达等技术的自动引导运输车AGV[1]。当前,计算机视觉技术在自动驾驶领域得到了应用,但真实场景中仍面临着检测对象多样、系统处于高速运动状态、周边场景复杂多变等极大挑战,因此通常是作为辅助决策系统。仓库环境背景相对固定、单一,车程较短,车速相对缓慢,使用计算机视觉技术[2]实现自动行驶能取得较好效果。本文模拟仓库环境,设计简单场景中基于计算机视觉的自动行驶智能小车,对保持行进路线、识别交通信号标志、控制小车状态等关键技术进行研究验证。

1 仓库模拟

图1 中模拟了仓库内货架和车辆的相对位置、行驶路线、交通标志。在真实的仓库地面可以贴上有颜色的胶布作为图中红色的行驶路线,在路线有变化的位置贴上相应的交通标志作为行驶变向的提示。智能小车通过摄像头采集图像进行分析,然后决策小车运行状态,实现自动行驶。

图1 仓库模拟图

2 硬件框图

智能小车硬件包括两大模块:计算机视觉处理模块和主控,如图2 所示。计算机视觉处理模块采用英伟达JETSON NANO[3]产品,JETSON NANO 4G 采用4 核Cortex-A57架构CPU,主频为1.43 GHz,GPU 型号为128CUDA core Maxwel,AI 算力达到473 GFLOPS,支持H.264 和H.265协议硬解码,体积小,功耗低,有多种外部接口,提供JetPackTM SDK 开发包。主控采用STM32F103VET6 芯片,STM32F103VET6 是一个32 位高密性能微控制器单元,它融合了高性能的Cortex-M3 32 位RISC 内核,运行频率为72 MHz,有3 个12 位模数转换器、4 个通用16 位计时器、2 个PWM 计时器,多种外部通信接口。主控的主要外部模块GPIO 资源分配说明见表1 所列。

表1 主控的主要外部模块GPIO 资源分配说明

图2 智能小车硬件框图

计算机视觉模块通过摄像头采集图像,通过图像处理、深度学习等方法判断小车当前运行路线,通过USB 接口发送相应指令(直行、左移、右移、左转、右转等)给主控,主控通过电机调整小车当前运行状态,通过编码器反馈数据判断当前状态是否调整成功并不断修正状态。

3 关键技术研究

仓库环境中,车辆行驶状态可分为两种:保持行进路线、通过识别交通标志转向。用图像处理的方法实现行进路线保持,用深度学习的方法检测交通标志。

(1)保持行进路线

模拟真实场景,在地面贴上有颜色的胶布作为行驶路线,如图3 所示。

图3 直行路线示例

从图3 中可以看出,车道线与背景色有明显差异,图像有二值性特点。地面有污迹,图片拍摄时底部有阴影,这些属于噪音,会干扰判断,应尽量去除。摄像头视野较广,拍摄到的图片需要进一步选取感兴趣区域(ROI)[4],离摄像头较近的区域应重点关注,选取图片中间三分之一处作为ROI,如图3(b)所示。

利用OpenCV[5]开发库对图片进行处理,首先进行二值化处理[5],如图4(a)所示;然后进行双边滤波[5],如图4(b)所示;最后提取骨线[6],如图4(c)所示。比较图4(a)、图4(b)可以发现,双边滤波去除了部分噪音,但仍有噪音残留。图4(c)的骨线近似呈一条直线,取这条直线上的坐标平均值,作为小车运行的下一个目的地坐标。如图5 所示,水平方向x坐标反映小车偏移情况,比较小车当前坐标(x1,y1)与下一个目的地坐标(x2,y2),当x2x1时,右偏,不断调整小车运行状态,保持沿线直行。

图4 图像处理过程

图5 小车偏移示意图

(2)交通标志识别

交通标志识别系统主要由图像(视频)输入、交通标志检测、交通标志识别、识别结果输出、原始图像(视频)数据库和训练样本数据库等组成。通过摄像头采集图像(视频),英伟达JETSON NANO 计算机视觉处理模块实现数据训练以及交通标志检测、识别、结果输出;然后将识别结果传给主控,由主控调整小车运行状态。

国家交管部门规定,交通标志分为警告标志、禁令标志、指示标志、指路标志、旅游标志和其他标志多种类型。仓库场景较为简单,只需对用到的部分交通标志,比如左转、右转、直行、禁止等进行训练,在子集中识别结果。

国内有两大常用交通标志数据集,长沙研究团队的 CCTSDB[7](CSUST Chinese Traffic Sign Detection Benchmark)和清华与腾讯合作开发的TT100k[7](Tsinghua-Tencent 100k),但是它们采集的是高速行驶时复杂场景数据,仓库场景背景固定、单一,其数据不适用于训练。理想情况是采集部署这套系统的仓库实景图片数据进行训练,文中模拟时用的是在网上找到的trsd 数据集进行训练,该数据集采集的图像交通标识在整个图像中占比较大,达到40%~60%,背景较为单一,比较符合智能小车在仓库低速行驶时采集到的图像特征。

训练采用YOLOv3-tiny[8]神经网络,在YOLOv3-tiny中共有24 层网络,其中包含5 种不同的网络层:卷积层convolutional(13 个)、池化层maxpool(6 个)、路由层route(2 个)、上采样层upsample(1 个)、输出层yolo(2 个)。YOLOv3-tiny 中,除了yolo 层之前的卷积层,每个卷积层之后都有BN 层,且每个卷积层之后都有激活函数LEAKY;共有两个输出层(yolo 层),分别为13×13 和26×26,每个网格可以预测3 个bounding box,共有80 个分类数。

训练时需对关键参数做调整,以训练左转、右转、直行3 种交通标志为例,YOLOv3-tiny.cfg 中的batch 设为64,subdivisions 设为32,GPU 显存大,该值可以为8。最大训练次数max_batches 设置为类别数乘以2 000,即3*2 000;steps改为max_batches的80%~90%;[yolo]层中的classes 修改为当前训练的类别数3。2 个[yolo]结构前面的[convolutional]层的通道数需要修改,计算公式为filters=3×(classes+5),若classes=3,则filters=24。从trsd 数据集中筛选出左转、右转、直行3种交通标志的图片形成新数据集,对新数据集进行聚类,使锚框尺寸更符合数据集特征,并用得到的锚框尺寸更新yolov3-tiny.cfg中的anchors参数。对新数据集中样本进行9 ∶1 比例的划分,形成训练集和测试集。为减少训练时间,使用预训练权重文件darknet53.conv.74 作为初始权重,训练结束得到新的权重文件yolov3-tiny_final.weights 用于交通标志识别。交通标志识别情况如图6 所示。

图6 交通标志识别情况

识别的准确率和精确率受多种因素影响,如用于训练的数据集和真实数据的匹配程度、样本的多少、神经网络模型的选取、参数的调优等。

(3)小车运行状态控制

计算机视觉模块发出小车运行指令(直行、左移、右移、左转、右转等)给主控,主控通过电机调整小车状态。小车状态控制算法与小车所采用的车轮类型有关系,本文以麦克纳姆轮[9]为例,麦克纳姆轮有多种安装方式,选择其中一种安装方式进行运动矢量分析,如图7 所示。

图7 麦克纳姆轮小车运动矢量分析

麦克纳姆轮辊子轴线与轮毂轴线呈一定角度(一般为45°),速度被分解为X方向、Y方向,如图7 灰色箭头所示。小车四个轮子以相同速度向前或向后运动,会导致某方向的速度被抵消,如图7(a)所示,X方向速度被抵消,剩下Y方向向前速度,达到直行效果;图7(b)Y方向速度被抵消,剩下X方向向右速度,达到右移效果;图7(c)两个后轮不动,两个前轮Y方向速度被抵消,剩下X方向向右速度,达到右转效果,因此控制四个轮子的运动速度和方向,可实现小车的全方位移动。

小车运动速度v可分解为水平方向速度vx和垂直方向速度vy以及旋转速度ω。按逆运动学分析[10]上述速度转换为四个轮子的运行速度,公式如下:

式中:a为小车轮距的一半;b为小车轴距的一半;vA、vB、vC、vD分别代表四个轮子的速度。主控将vA、vB、vC、vD作为电机目标速度,单位为m/s。编码器采集到的是脉冲个数,需转换为电机实际速度ve,单位为m/s,公式如下:

式中:pu代表编码器所接定时器脉冲个数;f代表定时器中断频率;pe代表车轮周长;ec代表电机轮子转一圈对应的编码器脉冲个数,且有:

式中:pf代表编码器倍频数;lp代表编码器精度(线数);js代表电机减速比。得到电机目标速度和实际速度后,采用简化的PID 算法[8]对小车进行运动控制,公式如下:

式中:pwm 即为电机所接定时器CCR 值,控制输出PWM波形,进而控制电机转速;Kp代表比例控制,Ki代表消除静态误差的积分控制,Kp、Ki是经验参数,需要根据实际情况调整;e(k)表示当前目标速度与实际速度的差值;e(k-1)表示前一次目标速度与实际速度的差值。小车运动控制PID 算法如图8 所示。

图8 小车运动控制PID 算法

4 结 语

本文设计的智能小车使用计算机视觉技术,不需要安装辅助定位模块,部署方便。但是图像处理、深度学习计算量大,算力要求高,系统实时性需要优化、提升。交通标志识别的准确率不理想,需要根据实际环境制作数据集进行训练,并尝试更多的模型、参数调优,寻找最优的方案。

猜你喜欢

交通标志仓库小车
仓库里的小偷
基于双向特征融合的交通标志识别
大车拉小车
填满仓库的方法
自制小车来比赛
四行仓库的悲壮往事
刘老师想开小车
两轮自平衡小车的设计与实现
交通标志小课堂
消防设备