基于视觉传感器的无人驾驶机器人控制系统设计与研究论文

2025-03-13 15:12:49 来源: 作者:xuling
摘要:在硬件系统设计中,基于2个CCD视觉传感器、Jetson nano主控板等,就传感器模块、主控模块、驱动模块和电源模块等进行了选型,引入PCA9685驱动板优化控制系统硬件解决了Arduino主板与Jetson nano主控通信慢、Arduino主板易烧坏等问题,并进行了硬件系统的总体设计。
摘要:在硬件系统设计中,基于2个CCD视觉传感器、Jetson nano主控板等,就传感器模块、主控模块、驱动模块和电源模块等进行了选型,引入PCA9685驱动板优化控制系统硬件解决了Arduino主板与Jetson nano主控通信慢、Arduino主板易烧坏等问题,并进行了硬件系统的总体设计。在软件系统设计中,首先基于迭代法阈值分割、腐蚀膨胀等图像处理方法,编写了可通过拖动进度条可视化界面快速获取图像二值化参数的算法,其次研究了主动巡线、斑马线识别和“半圆法”检测精准丁字或Y字交叉路口的算法,最后基于封装识别类和COCO数据集研究了目标检测和自主避障的算法。在测试试验中,多次测试验证了设计的无人驾驶机器人控制系统和算法的稳定性,实现了自动行驶、自动避障、自动停车、标志识别等智慧交通功能。
关键词:视觉传感器;无人驾驶机器人;Jetson nano;PCA9685;控制系统
0引言
随着人工智能的发展,无人驾驶技术也步入高质量发展时期,无人驾驶技术在物流、城市交通等领域得到广泛应用[1]。无人驾驶市场持续扩大促进了无人车、无人驾驶机器人等保有量的增长,相对不太成熟的无人驾驶技术导致每年由无人驾驶引发的交通事故不断攀升,造成了巨大损失。稳定无人驾驶运行,减少无人驾驶引发的交通事故已成为我国乃至全世界汽车行业领域亟须解决的难题。
20世纪80年代开始,国外部分发达国家相继开始研究无人驾驶机器人[2],已经落地甚至产业化的无人驾驶机器人包括以色列本古里安大学研发的智能车辆驾驶机器人IVO、英国的自动驾驶测试技术公司AB Dynamics的自动驾驶机器人系列产品、美国Autonomous Solutions公司的驾驶机器人等[3]。在国内,无人驾驶机器人的研发与生产正处于快速发展阶段,比如东南大学与南京汽车研究所合作研究的DNC无人驾驶机器人,北京航空航天大学研发的Robot V2,也用于测试道路的性能[4]。
自动行驶、自主避障、自动停车、标志识别等是无人驾驶和智慧交通重要的组成部分,本文引入广州某智能无人驾驶企业项目,以无人驾驶机器人为载体,通过总体方案设计、硬件系统搭建和软件算法研究等,设计了一款无人驾驶智能机器人,并在场地上进行了自动行驶、标识识别、目标检测等多项研究,为无人驾驶产业应用和发展提供了重要支撑。
1系统总体设计
系统由2个CCD传感器、Jetson nano、PCA9685等组成,一个CCD传感器负责自动巡线,另一个CCD传感器负责自主避障、目标检测等,与Jetson nano串口通信,Jetson nano通过IIC总线输出PWM,PCA9685和电机驱动板共同驱动直流电机,实物如图1。
2系统硬件设计
2.1传感器模块
巡线是机器人最基本的任务,巡线方法有光电巡线、红外传感器、CCD传感器等,CCD传感器的高分辨率和前瞻性,让机器人更早地检测到场地上白色引导线的变化,并实时修正[5]。针对机器人巡线不能快速及时调整方向以及弯道明显偏离等问题[6],选用高清、无畸变CCD传感器,其像素3µm×3µm,工作电压5 V。
2.2主控模块
Jetson nano是一款低成本、高性能计算机,提供472GFLOPS计算性能支持现代AI算法,并行多个神经网络,同时处理多个传感器数据,配备高速USB端口、连接器、HDMI和GPIO接头等[7]。
2.3驱动模块
Jetson nano仅有一个PWM端口,对于需要行进、转弯等任务的机器人来说是不够的。前期使用Arduino主板与Jetson nano主控串口通信发现通信速度较慢且Arduino主板易烧坏,引入16路PWM驱动板PCA9685用作直流电机驱动有效解决了Arduino通信慢和Arduino主板易烧的问题[8]。PCA9685驱动板配合电机驱动板驱动电机,选用的双路驱动板刹车迅速、制动明显,PWM占空比0~99%,电机能获得足够电压,PCA9685的4个PWM(0~3)触点分别和电机驱动板的PWM1、DIR1、DIR2、PWM2连接[9]。
2.4电源模块
大容量12 V锂电池提供12.6 V电压,一路经主机开关接LM2596S降压电源转换器模块,另一路经驱动开关接XL4016E1稳压降压模块。为保证Jetson nano、显示屏、PCA9685、双路电机驱动模块的5 V供电,使用LM2596S降压电源转换器模块,输入端VIN+、VIN-允许输入电流9~36 V,输出端有4个5 V/5 A的USB输出口,满足使用需求。使用的XL4016E1稳压模块保障了驱动电机速度,驱动板和主控的用电安全[10]。
2.5硬件系统
图2所示为硬件系统简图,机器人采用Jetson nano主控,电源正极经过驱动开关,双路电机驱动板输出端POWER和GND提供12 V电压,经过主机开关后的降压模块为显示模块5 V供电为USB转Type-C,为主控模块为USB转圆形DC电源接口,为驱动模块为USB转杜邦线(VCC、GND)[11]。
3系统软件设计
3.1软件系统
基于Jetson nano操作系统Ubuntu、Python和OpenCV联合编程,借助Jetson inference在car目录下封装CarCon‐troller类控制电机和PID算法类cv目录下封装ImageInit类用于图像二值化、FollowLine巡线类、FindIntersection寻找路口类、FindZebraCrossing寻找斑马线类等;od目录下封装了Recognition对象检测类等。根据路径规划和控制策略编写了软件流程,完成了机器人识别人停车、识别斑马线停车、自主避开雪糕筒和识别STOP标志自动停车等任务[12-13]。
3.2自动巡线算法
ImageInit类把原始帧转换为二值图,在类的初始化时,根据实际场地和环境调整个别参数,即根据现场灯光等调整threshold、膨胀或腐蚀的核kernel及迭代次数iteration,为了方便参数的调整,编写了resize_ parameter_threshold.py可视化界面,通过拖动进度条快捷地找到合适的参数,获得二值化图像,如图3[14-16]所示。
机器人以场地上的白线作为行进和转弯的引导线,以拍摄的每一帧作为巡线基础。首先通过巡线获取场地图像,其次处理成二值图,随后寻找引导线中心点,如图4(a)所示,计算引导线中心点与图像中心点的位置偏差,如图4(b)所示,最后以这个偏差值为基础,比例换算后作为两个驱动轮速度的差数值,以差速值驱动轮子改变转速,控制左右驱动轮速度来实现稳定巡线[17]。
3.3判别路口的算法研究
场地的路口以丁字路口、Y字路口为主。“半圆法”是一种用于判别路口的图像处理算法,主要基于图像中的半圆形状来检测交叉路口,以图像中心线和距离图像下边缘10个像素的横线交叉位置点为圆心,以略小于图像宽度的一半宽度为半径,在图像上画出一个半圆,在半圆上寻找连续的白点,当连续的白点超过阈值时,认为它是一个分支,如果找到多组白点,认为在前方具有多个分支,如图5[18]所示。在检测到两组以上的白线时,通过计算两组白线中心点的夹角,可以粗略地测算机器人当前位置到交叉路口的距离,当机器人距离路口较远时夹角较小,而当机器人较为靠近路口时夹角会大。
3.4目标检测的算法研究
使用巡线外的CCD传感器,以Jetson Inference为编程接口,Mobilenet为模型,兼顾检测成功率、速度和编程的简易性,使用封装的Recognition类,实现了目标检测的基本操作,Recognition提供了get_objects用于返回检测到的目标对象的一个Object列表,object_appeared方法用于快速判断所需要的对象是否出现。封装了的Ob‐ject辅助类,该类保存了目标对象的ID,包括中英文名称、位置、宽、高、面积、中心点等信息[19-20]。
4系统的实现与测试
测试是在日光灯照射下,光线充足的3.2 m×3.2 m室内场地上完成,以白色中心线道路作为场地基础,设置弯道、路口、人行道等设施,设置人、障碍物等用于目标检测。
自动巡线测试:巡线时电机默认速度100(PWM),相对较小,但速度较大机器人会左右摆动幅度过大,导致巡线不稳定,当急弯巡线或者引导线突然不见时,需要将偏置值赋为0或者CarController类中调试PID参数为Kp=1.3,Ki=0.15,Kd=0.03。
路口判别测试:巡线CCD传感器上下摆动会严重影响路口判别,在调试FindIntersection类参数时,不改变其角度;场地背景黑色,引导线白色,调整FindIntersec‐tion类的参数减少白光影响,避免强白光直射,FindIn‐tersection类中参数半径不超过图像长度一半,为避免干扰,设置多个不同圆心位置路口检测。
目标检测测试:系统采用COCO数据集,该数据已存储了90个目标,结束Recognition类的使用时调用close,否则程序不能正常退出。目标检测的成功率相对受到灯光、角度、物体角度等限制,加强了图像处理的算法。
自主避障测试:优先使用目标检测避障,当障碍物的种类不在COCO数据集中时,使用寻找单一颜色块模式避障。图6所示为机器人测试关键位任务。
5结束语
本文设计了无人驾驶机器人的硬件系统和软件算法,硬件系统设计中进行了各模块的选型和总体设计。软件算法设计中,Python与OpenCV联合编写了自动巡线、斑马线识别、T和Y路口判别、目标检测、自主避障等算法。通过阈值、腐蚀膨胀等对图像进行二值化处理,进而研究了自动巡线的基本原理,为提高巡线稳定性,在系统测试中优化了PID参数。通过“半圆法”检测对丁字和Y字路口判别进行算法研究,借助夹角大小确定机器人距离路口的位置,并在目标检测测试中解决了光照对路口判别影响大的问题。经过多次测试和参数优化,结果表明,机器人整体运行稳定、速度适中、目标检测识别度高。
参考文献:
[1]赵棣宇.基于深度学习的无人驾驶交通标志检测算法研究[D].太原:中北大学,2023.
[2]王信乐,刘祚时.基于线性CCD的智能小车循迹系统设计与研究[J].制造业自动化,2020,42(8):79-84.
[3]王文胜,李继旺,吴波,等.基于YOLOv5交通标志识别的智能车设计[J].国外电子测量技术,2021,40(10):158-164.
[4]张峻豪,吴洵,吴宁,等.基于Jetson Nano的智能果蔬采摘机器人设计[J].吉林大学学报(信息科学版),2023,41(4):759-766.
[5]胡徐胜,刘娟.一种带多路选择的智能循迹小车优化设计[J].控制工程,2020,27(7):1131-1135.
[6]郑如新,孙青云,马素慧,等.基于机器视觉的工件识别应用研究[J].机械设计与制造,2023(8):299-303.
[7]焦冰,李琳,邱会然.基于视觉路径识别的智能车控制系统设计[J].机床与液压,2021,49(12):78-81.
[8]Ming X,Chen D,Hanlu L,et al.Design and implementation of un manned aerial vehicle localization and light tracking system[J].The Journal of China Universities of Posts and Telecommunica‐tions,2023,30(4):67-74.
[9]高若然.基于深度强化学习的指静脉图像采集与增强研究[D].长春:长春工业大学,2023.
[10]Li F Z,Li T J,Li F X,et al.Intelligent Tracking Obstacle Avoid‐ance Wheel Robot Based on Arduino[J].Procedia Computer Sci‐ence,2020,166(C).
[11]陈欢.面向网球运动的捡球机器人控制系统设计[J].自动化与仪器仪表,2023(11):202-205,211.
[12]邓江涛,熊中刚,贺晓莹,等.基于STM32单片机的四足仿生蜘蛛机器人控制系统设计[J].机电工程技术,2023,52(10):162-165.
[13]姜俊豪.无人驾驶机器人机械腿控制系统设计与研究[D].南京:南京理工大学,2021.
[14]杨睿.基于ROS系统的无人驾驶关键技术研究[D].西安:西安建筑科技大学,2023.
[15]陈商盈,倪受东,童林.改进YOLOX的自动驾驶场景目标检测算法[J].计算机工程与应用,2024,60(12):225-233.
[16]张立.擦窗机器人硬件结构及控制系统设计[J].设备管理与维修,2023(10):30-32.
[17]张济远,郑雅菁,余肇飞,等.面向自动驾驶场景的脉冲视觉研究[J].中国工程科学,2024(1):026.
[18]魏超,吴西涛,朱耿霆,等.基于视觉相机和激光雷达融合的无人车障碍物检测与跟踪研究[J].机械工程学报,1-14[2024-03-07].
[19]曲宝家,陈奕杭,夏泽豪,等.基于YOLOv7的水下泄漏检测机器人研究[J].机械设计,2023,40(S2):88-93.
[20]符明恒.基于单目视觉工业机器人的工件检测算法研究[D].广州:华南理工大学,2022.
