温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
EdgeBoard
多功能
智能
设计
实现
启航
常熟理工学院学报(自然科学)Journal of Changshu Institute of Technology(Natural Sciences)第 37 卷第 2 期2023 年 3 月Vol.37 No.2Mar.,2023基于 EdgeBoard 的 AI 视觉多功能智能车的设计与实现 陈启航,沈琛博,王凯超,徐 健,华斯亮(常熟理工学院 电子信息工程学院,江苏 常熟 215500)摘要:以百度飞桨 PaddlePaddle 作为运算平台,采用卷积神经网络算法构建数据模型,对智能车赛道数据进行了采集和处理,并基于百度深度学习开源平台 AI Studio 进行模型训练,完成对车道数据的检测 本系统实现了将赛道检测的人工智能技术与传统运用传感器进行侧面标识物的检测相结合,最终完成基于百度 EdgeBoard 计算板和 Wobot 控制器的视觉多功能智能车的设计与实现 关键词:模型训练;EdgeBoard;卷积神经网络;摄像头中图分类号:TP13 文献标志码:A 文章编号:1008-2794(2023)02-0053-05收稿日期:2022-03-10基金项目:江苏省大学生实践创新项目“室内智能导航车设计”(202110333049Y);江苏省教育科学“十三五”课题“核心 素养视域下的初中 STEAM 教育应用研究”(B-a/2020/01/17)通信作者:徐健,副教授,研究方向:嵌入式系统设计、计算机系统应用,E-mail:百度人工智能创意赛的设立能够场景化地复现基于深度学习的智能车在实际领域中的应用 本文介绍了常熟理工学院参赛队在第十六届全国大学生智能汽车竞赛百度创意组的设计方案 本系统以 EdgeBoard 计算板作为上位机,Wobot 控制器作为下位机,采用闭环电机、摄像头、超声波传感器、按键传感器、舵机等多种电子器件组成视觉智能车 系统设计的关键是使智能车实现对道路和侧面标识物的识别 通过手柄遥控智能车采取数据集,并将数据集上传至 AI Studio 进行训练获得训练模型 智能车执行竞赛任务时,基于训练模型进行数据推理,结合超声波测量,驱动各执行部件做出具体响应,最终让智能车完成相应的任务1 总体方案介绍1.1 任务简介竞赛任务的主要过程包括:(1)出征:智能汽车沿着道路行进到三座城池前举起对应城池的旗帜并亮 3 次绿灯(2)激战:智能汽车携带一支黑色易擦除的白板笔或者水彩笔击打三个靶标(3)封狼居胥:智能汽车抓取战利品并将其带回基地(4)凯旋:智能汽车从基地出发走过所有道路后回到基地 1.2 硬件设计及功能EdgeBoard 是百度基于赛灵思 FPGA 的嵌入式 AI 解决方案 1 EdgeBoard 深度学习计算卡将视频数据DOI:10.16101/32-1749/z.2023.02.009常熟理工学院学报(自然科学)2023 年54每一抽帧处理成图片,通过强大的图形计算能力进行模型推理Wobot是一款基于ATmega处理器的控制板,具有体积小、接口丰富且稳定可靠等特点 2 EdgeBoard 通过 UART 串口与 Wobot 进行连接和通信,控制智能车各部件动作 系统硬件架构如图 1 所示EdgeBoard 上位机的主要功能是获取摄像头图像,运行执行程序,进行模型的推理,并将信号发送给 Wobot 下位机等 下位机的主要功能是控制电机、舵机旋转,读取传感器值,并将读取的值返回给上位机等 2 机器学习与算法设计2.1 机器学习方法为实现机器学习,本系统将获取的数据集训练成模型,并用此模型进行推理,最后获得一个完整的输出 训练模型的方法由 PaddlePaddle 提供,即小车巡航车道线EdgeBoard下位机UART 串口电机按钮传感器相机图 1 系统硬件架构示意图图 2 模型拆解图表 1 偏转值关系表Conv2Ddropoutfctanh轻巧的小网络 5增大感受野提升平滑度归一到-1,1车身相对赛道中心线的角度/()程序返回偏转值-90-0.998-75-0.987-60-0.959-45-0.861-30-0.689-25-0.584-20-0.480-15-0.360-10-0.252-5-0.1340-0.00250.130100.255150.370200.472250.584300.685450.857600.943750.985900.994网络 如图 2 所示,将该模型拆解后,使用了 5 个二维卷积 Conv2D,再通过dropout 和 fc 提升平滑度,通过激活函数 tanh 将结果归一化到-1,1,最后得到输出(1)数据集的获取和模型的训练完成小车循迹任务所获取的数据集为小车正常行进时摄像头拍摄到的连续图像 使用手柄控制小车沿着智能车行进轨迹运动,在此过程中保存摄像头拍摄到的连续图像,以及每个时刻遥控器的遥控方向数据 为保证模型学习到准确信息,对于固定赛道位置,在采集过程中,需在不同光线和角度下进行赛道采集,以增强模型的鲁棒性 3 随后将获取的图片和遥控数据转换为训练网络所需的格式 将训练网络所需的格式上传至 AI Studio,使用小车巡航车道线网络即可完成模型的训练(预计 4 h)该模型即为巡航模型(2)模型推理为获得有效推理,将摄像头获取的每帧图像定义为 img,并将 img 作为cruise 函数的参数,返回一个偏转值 偏转值的正负号决定了左右偏的性质,偏转值的绝对值决定了偏转的程度,即绝对值越接近 1,偏转的程度越大,离赛道中心的距离也就越大 当绝对值过大时,本系统需要调节 4 个电机的转速,形成的差速让其回归到赛道中心,以完成赛道循迹的任务 在实际推理过程中,可能会出现返回值与预期值偏离过大的情况 训练与推理时的摄像头朝向不一致是造成偏离的主要原因,所以在训练过程中就应当将训练条件尽量模拟成比赛条件2.2 模型验证为验证程序返回的偏转值与车身离赛道中心线角度的关系,并将其应用到凯旋任务中,需多次测量车身角度和返回的偏转值,见表 1 同时使用MATLAB 绘制得到图 3 发现所得图像近似于 tanh 图像,符合激活函数 tanh的结果2.3 数据分析及处理Conv2D第 2 期55陈启航,等:基于EdgeBoard 的AI视觉多功能智能车的设计与实现 根据车身角度与偏转值的图像,可以明显发现偏转值的绝对值小于tanh函数的绝对值,因此偏转值具有明显的滞后性 分析后可以得出,在执行任务时摄像头的角度偏高,拍摄到的图像为前下方图像,而非当前智能车下方的位置,因此是角度差造成了明显的滞后性为解决此问题,需要调整摄像头的位置,故增加了一根伸长杆,将摄像头对准下方地面,摄像头调整前后位置如图 4 所示3 任务分析及实现执行任务程序的流程如图5所示,前置摄像头获取到的图像经 Edgeboard 推理后,控制小车巡航任务的执行,并时刻更新任务状态 侧面的两个超声波传感器协同识别到侧面模型时将信号发送给 Edgeboard,由 Edgeboard 判断任务的顺序,并将任务执行指令发送给下位机,再由下位机做出响应,循环往复,直至任务终止 3.1 智能车运动控制为实现凯旋任务,小车的出发和停止都由按键驱动实现,按下按键后,摄像头打开并维持上下位机的通信 在每轮循环中,摄像头需要获取一帧图片,然后将图像传递给模型推理程序,最后将推理出的返回值赋值给 angle 如果小车任务做得不理想,本方案设计了第二个按键判断语句 在比赛过程中,一旦小车冲出赛道,可以在重开的时候按下此键,让小车只进行循迹任务按下停止按钮后,小车关闭摄像头,以防止再启动程序时,出现进程占用的情况 为解决 Wobot 控制器和 EdgeBoard 控制板之间信号扰动较大的问题,对车模进行完大改动后需要修改每个按键对应的地址 经过调试,通过程序判断即可让 EdgeBoard 即时读出对应按键的高低电平Go(angle,benchmarkspeed)是电机速度控制函数,传入的两个参数分别为赛道偏转角度和基准速度 提前预设的值有两个,分别是转弯系数 Kx和减速系数 slow_radio,则轮速可以表示为图 3 偏转值与 tanh(/30)比较图图 4 偏转值滞后性改良图 5 整体任务流程任务状态前置镜头控制小车巡航模型超声传感任务模型下一轮循环判断位置执行任务设电机转速为 speed,且 speed-100,100,“-”号代表反转,“+”号代表正转,电机速度 speed 值设置在30以下为宜 speed值过大会加大摄像头采集图像的难度,使Edgeboard无法进行实时推理,同时也有损伤电机的可能speed 值的差异性使两边轮子形成速度差实现转向,轮速由四个因素共同决定:基准速度、偏转角、转弯系数和减速系数 当偏转角过大,即 angle 大于 0.12 时,需要放慢速度,让摄像头有更多的反应时间,以防冲出赛道 3.2 超声传感器与舵机的联动为实现激战和封狼居胥任务,本系统需要用到超声传感器 超声传感器使用飞行时间法测量距离,假设超声发射探头与接收探头中心距为d,障碍物距收发探头的中心连线垂直距离为L,根据传播时间t与测试环KxKx/()常熟理工学院学报(自然科学)2023 年56图 6 清空串口缓存区图 8 使用 Xshell7 打印巡航数据图 9 打印偏转角图 7 激战、出征、封狼居胥任务的实现境下声波传输速率 v 的乘积为 s,超声波从发射端送出到接收端检测到回波的最短传播距离约为使用时,需要在 Trig 端施加一个触发信号,Echo 输出反馈信号,记录回响信号的脉冲宽度与检测距离根据上述公式可计算出小车到障碍物的实际距离初始化小车两侧的超声波传感器后,读取的超声波数值小于某一值时,检测到任务模型,进入任务模式 控制舵机可能会出现无法读取到超声传感器的现象 通过打印串口返回值的时候发现,在控制舵机后读取的串口值完全是紊乱的,需等待一段时间才能恢复正常经过多次实验后发现,如果在给串口发送数据前清空一下串口缓冲区即可解决问题 4,如图 6所示 对于戳靶任务,由于传感器与舵机的信息传输具有滞后性,经过多次实验后发现,当超声波传感器识别到有物体时,小车需要倒退 1 s 再停下,接着控制舵机的正转和反转完成戳笔动作 而对于封狼居胥任务,由于抓方块任务需要频繁调用舵机驱动,需多次使用时间延迟函数,目的是保持上下位机通信,防止数据包传输混乱导致死机故障 图 7 展示了出征、激战、封狼居胥和凯旋任务的实际情况4 系统调试及问题举例车辆行驶过程中获取的信号有两种,一种是赛道返回值,另一种是超声波读取值 循迹信号由前置摄像头读取,图8展示了使用Xshell7打印巡航数据的搜集情况 小车侧面的两个超声波传感器可以返回超声波信号,左右两边的传感器不断读取数值,可以即时处理这些数据 在整个调试过程中,使用 Xftp 和 Xshell 7 配合 vim 指令进行调试,使用 Xftp 通过图形化界面打开文件在此界面可以快速选择EdgeBoard 中的文件,并查看其中的内容 然后使用 Xshell7 通过 cd 命令进入 workplace 文件夹 使用 vim 命令可以对已有的程序进行修改,修改完成后,通过python3命令运行model_test.py、run.py和test_run.py可以对巡航任务进行调试,并打印偏转角(图 9)在小车运行的过程中,根据各种发生的问题,经过以上方式对已有的程序进行修改和调整,具体问题具体分析,以达到完成所有任务的目的 第 2 期57陈启航,等:基于EdgeBoard 的AI视觉多功能智能车的设计与实现 实际执行任务过程中,小车本应不做激战任务,但在小车经过两个靶子的背面或侧面时,会因为超声波持续识别的因素而将此处误识别为任务位置 针对此种状况,可以对其算法进行修改:超声波识别到物体后,设置时间阈值,等超过阈值再开启超声波,这样就能有效规避上述错误 在程序运行之初,就应当获取系统时间 t1 并初始化计数器 count如图 10 所示,小车做任务之前首先要判断是否超过时间阈值,当小车做完相应任务后,count