智能车竞赛技术报告智能车视觉中国矿业大学会飞的车

智能汽车竞赛AI视觉组别,要求采用第十六届全国大学智能汽车竞赛的C型车模,采用恩智浦32位微控制器MIMXRT1064最小系统板作为核心控制单元,主频为600MHZ。我们对小车的机械结构,硬件设计,软件编程方面进行了深入的研究。多次尝试改变小车的机械结构,深入考虑衡量硬件PCB的布局,走线等。软件采用多种算法结合,核心为摄像头循迹与电磁PID控制结合的算法,实现小车鲁棒性较强的寻迹。我们独立完成了控制方案及系统设计,包括电磁信号采集处理、赛道图像信号采集处理、循迹控制算法及执行、动力电机驱动、十分类神经网络训练、靶标图片识别、单片机之间通信等,最终实现了具有AI视觉功能的基于电磁与摄像头的快速寻迹智能车控制系统。

四轮智能车出现直线走偏、转弯费力、轮胎磨损快等情况时大多与轮胎安装角度有关,涉及到一个非常重要的转向轮位置角度定位问题,叫做“前轮定位”。它的作用是保障智能车直线运行时的稳定性,使其转向轻便并减少轮胎的磨损。前轮是转向轮,它的安装位置由主销内倾、主销后倾、前轮内倾和前轮前束等四个项目决定,反映了转向轮、主销和前轴等三者在车架上的位置关系。

从车前后方向看轮胎时,主销轴向车身内侧倾斜,该角度称为主销内倾角。当车轮以主销为中心回转时,车轮的最低点将陷入路面以下,但实际上车轮下边缘不可能陷入路面以下,而是将转向车轮连同整个车模前部向上抬起一个相应的高度,这样车模本身的重力有使转向车轮回复到原来中间位置的效应,因而车模容易回正。

▲图1主销内倾角

从前后方向看车轮时,轮胎并非垂直安装,而是稍微倾倒呈现“八”字形张开,称为负外倾,而朝反方向张开时称正外倾。车模一般将外倾角设定得很小,接近垂直。若设定大外倾角会使轮胎磨偏,降低轮胎摩擦力。

四轮定位前束值脚尖向内,所谓“内八字脚”的意思,指的是左右前轮分别向内。采用这种结构目的是修正上述前轮外倾角引起的车轮向外侧转动。如前所述,由于有外倾,转向变得容易。另一方面,由于车轮倾斜,左右前轮分别向外侧转动,为了修正这个问题,如果左右两轮带有向内的角度,则正负为零,左右两轮可保持直线行进,减少轮胎磨损。在智能车程序基本完整,可以完成各类赛道元素后,根据实际情况对前轮定位进行调整。通过改变上横梁垫片的数目,增大后倾角。在智能车长期调试后,发现适当增大内倾角,可使转弯时车轮和地面有更大的接触面积,继而增大车与地面的摩擦程度,使车转向更灵活,减小因摩擦不够而引起的转向不足的情况。

本车模采用MT9V032摄像头采集赛道信息。摄像头的安装方式是否稳固合理,是其能否采集到优质图像的关键。经过多次尝试调整,最终使用一根碳素杆搭架摄像头的方式,以减轻可能产生的不必要的重量。使用螺母将摄像头支撑杆底部固定在车模中轴线上,保证与车身保持垂直。同时,碳素杆固定在车身左右中心位置,使车模转向时不存在水平分量,保证图像的稳定性。

▲图2摄像头安装效果图

▲图3编码器安装效果图

▲图4电感安装效果图

▲图5智能视觉模块安装效果图

▲图6整车效果图

▲图7主控板

▲图8主控芯片

总钻风摄像头3.3v单独供电,使其电压稳定充足,响应更快。

▲图105V稳压电路

▲图11总钻风摄像头3.3v稳压电路

▲图12蜂鸣器电路

▲图14驱动电路驱动部分

▲图15驱动板

采用opa4377芯片放大四路信号,通过调节电位器来改变放大倍数。

▲图17运放板

将五个电感的走线集成在电感板中,使车模更加美观,信号更不易干扰。

▲图18电磁模块

▲图19电感采集板正面

▲图20电感采集板背面

在单片机采集图像信号后需要对其进行处理以提取主要的赛道信息,同时,由于交叉道、起点线的存在,光线、杂点、赛道远处图像不清楚的干扰,图像效果会大打折扣。因此,在软件上必须排除干扰因素,对赛道进行有效识别,并提供尽可能多的赛道信息供决策使用。

▲图21摄像头采集回传图像

中心线提取算法的基本思想如下:

??1)直接逐行扫描原始图像,根据硬件二值化结果直接提取出边界坐标;

??3)根据采集到的赛道宽度,判断是否采集为真正赛道,滤除噪点造成的影响;

??4)图像是远处小近处大,所以赛道宽度范围和前后行赛道中心的位置差别都要动态调整;

??5)比较左右赛道边界坐标的大小,判断赛道的有效性;

坡道在扫描到特征的那几行,赛道宽度都会突变得特别明显,坡道的赛道宽度突变后不会突变回来,起跑线只是2-3行有明显的赛道宽度变小。据这个特征,当检测到坡道时,目标速度降低,使得小车不会因为速度太快而飞起来,小车通过PID控制,快速通过坡道。

▲图22坡道图

在道路中遇到大弯时需要转弯,转向角只受弯道的弯曲程度影响,但是距离大弯多远就开始转弯却需要受到当前速度的影响,因为舵机在转向时有一定的延时,舵机转60度大约需要140毫秒,而智能车的最快速度可以达到10米/秒,如果智能车当时运行的速度就是10米/秒,那么当舵机转过60度时智能车已经走过1米多了,所以不能等到了弯道才开始转弯,而是需要提前转弯,而且速度越快,越是要提前得多,所以智能车转弯提前多少就由速度控制,用比例控制就能收到很好的效果,而转弯时转多少却仅仅受弯道的弯曲程度控制,弯曲程度越大,转向角就也越大,弯曲程度越小,转向角也就越小。具体的对应关系通过实验获得,在此没有列举出具体的数据。

急弯的方向控制算法与大弯的方向控制算法相似,也是需要提前转弯,而且提前多少转弯也要受当前速度的控制,速度越大,越要提前转弯,转向角也是用弯道的弯道程度来决定的,急弯比大弯的弯曲程度更加大,因此需要的转向角也要相应增大。急弯的方向控制比大弯更难,很可能出线,因此在急弯的方向控制时更应多加注意。

▲图23智能车程序流程图

▲图24单位反馈的PID控制原理框图

单位反馈e代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量u。

u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de(t)/dt]

G(s)=U(s)/E(s)=kp[1+1/(TI*s)+TD*s]

其中,

??KP为比例增益,KP与比例带δ成倒数关系即KP=1/δ,TI为积

增量式PID是指数字控制器的输出只是控制量的增量Δu(k)。采用增量式算法时,计算机输出的控制量Δu(k)对应的是本次执行机构位置的增量,而不是对应执行机构的实际位置,因此要求执行机构必须具有对控制量增量的累积功能,才能完成对被控对象的控制操作。执行机构的累积功能可以采用硬件的方法实现;也可以采用软件来实现,如利用算式程序化来完成。由式可得增量式PID控制算式

??u(k)=u(k-1)+u(k)

??Δu(k)=u(k)-u(k-1)=Kp[Δe(k)-e(k-1)]+Kie(k)+Kd[Δe(k)-2Δe(k-1)-e(k-2)]代码实现:

??motor_duty=last_motor_duty+motor_kp*(speed_pc[0]-speed_pc[1])+motor_kispeed_pc[0]+motor_kp(speed_pc[0]+speed_pc[2]?2*speed_pc[1]);

增量式PID具有以下优点:

??1)由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的方法关掉。

??2)自动切换时冲击小,便于实现无扰动切换。此外,当计算机发生故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。

??3)算式中不需要累加。控制增量△u(k)的确定仅与最近k次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。在使用过程中我们发现传统的增量式PID,车速控制不及时,容易超调,积分饱和。最终我们选择的是增量式的PID,能够很好的满足智能车的加减速以及停车问题。

在三岔路口需要对路口处的数字进行识别,并根据数字的奇偶性,来决策应该走左边还是走右边。

在赛题中AprilTag码也代表着数字,依然通过识别其所代表的数字,并判断奇偶性来得知靶标牌是在赛道的哪一侧。

赛题中包含动物图案和水果图案,动物类包含狗、猫、马、猪、牛五个子类别,水果类包含苹果、橘子、葡萄、香蕉、榴莲五个子类别,图案对象均为全身或整体照片。

待检测图片内部只包含其中一种物体,不涉及多物体检测。其次待检测图片背景不复杂,全图只有待检物体本身,降低背景噪声的引入对分类模型的影响。待检测物体及其靶标如图25所示。

根据任务分别设计两个十分类的模型,用来实现数字和水果/动物的分类。实现流程相似,主要包括制作数据集,搭建神经网络,模型训练,模型量化,硬件实现五个模块,实现流程如图26所示。

▲图25靶标正面照

到的模块和包的版本如表1:

??用到的包版本号

训练模型之前,我们需要先采集数据然后才能开始训练模型.需要安装任务分别采集数字与动物水果的照片。采集数据共有三种方法。

??1.通过爬虫程序网上下载需要的图片,爬虫程序虽然能很快下载大量的图片,但是存在图片质量低的问题,会下载很多错误的图片,需要手动删除掉。

??2.在网站上人工筛选符合要求的图片,然后一张一张的下载下来,比较费时费力。

??3.OpenARTmini模块拍照并保存图片在SD卡,这种方法图片质量高,符合实际情况。

针对数据集不够的问题,主要解决方法是数据增广。用于增加训练数据集,使得训练的模型具有更强的泛化能力。需要根据自己的数据集特征来确定应该使用哪几种数据增广方式,主要包括:水平翻转,旋转,缩放,噪声等。图27是根据要求制作的原图,图28是数据增广后的数据集部分截图,图29是拍摄的部分图片。

▲图27原始图像

▲图28原始图像数据增强部分后样本

▲图29摄像头拍摄图像数据增强后部分样本

▲图30文件夹分类命名为0-9

使用以上方法生成的图片保存在十个文件夹,命名为0-9。编写脚本从Picture文件夹读取图片并转换为数据集,生成x.npy和y.npy两个文件。部分代码图27所示。

▲图31读取图片转换为npy文件

设计模型进行训练之前,要进行数据预处理。在进行深度神经网络训练时,一般要求输入的数据范围在(-1,1)或(0,1)之间。对数据拆分,将其划分为80%的训练集与20%测试集,训练集用于模型自身迭代,测试集用于诊断模型能力。然后,对数据进行归一化处理,并通过to_categorical函数将标签数据转换为one-hot码.本设计要训练一个10分类的网络,那么要将标签(图片所对应的类别号)转换为长度为10,并且仅有其所对应的类别号的位置的数据为1,其余均为0,这样一组n维向量就被称为one-hot码,以方便网络进行迭代学习。

表2用到的库、模块和函数Keras有两种排布的方式,一种是Sequential方式,一种是Function方式。前者像是串冰糖葫芦,每一个都是一个单独的个体,小兵之间是顺序排列的,不能前后颠倒,不能互通有无。而Function方式,像是各自组队,可以一起也可以分开,但是最终还是一个整体,简单的说,Sequential方式使用简单,但是,只能搭建那些串行网络。而Function方式,则可以根据不同需求,进行排列布阵,形成各种各样的阵型,搭配到一起使用,就像是编程时候用到的函数。

本设计将主要采用Sequential模型构建模式,相对来说,0-9数字数据集颜色特征很少,数据集数目小,因此搭建一个具有3层卷积和1层全连接的简单卷积神经网络3Conv+1Dense的CNN。如图30所示,该卷积神经网络的中间层采用rule激活函数,输出层采用softmax激活函数。

在动物/水果十分类任务中,每一类原始图片分别有100张左右,经过数据集增广至每类2000张左右,总共2万张左右。同样搭建一个具有3层卷积和1层全连接的简单卷积神经网络,该卷积神经网络的中间层采用rule激活函数,输出层采用softmax激活函数。与数字分类不同的是,如图31所示,每个激活层前面添加BatchNormalization层,使训练过程更加稳定,提高训练速度,并且减少过拟合。在池化层后面加dropout层,随机丢弃一部分中间特征,防止模型过拟合。

优化器负责模型的调优,学习率(lr)的设置有讲究,过大的学习率会提高模型的学习速度,但是太大了可能反而适得其反,还可能会导致模型无法得到最优解;而过小的学习率,会导致训练速度过慢,陷入局部最优不能自拔,选择上要进行试错调整,这里选择opt=Adam(lr=0.001)。这里的评价标准,选择categorical_crossentropy,这也是专门适用于多分类问题的损失函数。这里的epochs代表总共迭代遍历数据集多少多少次,batch_size为一次迭代需要使用多少数据。小了能让模型迭代快,但是训练效果容易震荡,还妨碍学到全局特征;大了能让学习过程更平稳,但模型收敛效率会下降,还可能陷入局部最优。回调函数ModelCheckpoint负责模型的保存,会将训练过程中遇到的最好结果即时保存下来。数字分类模型训练部分代码如图32所示。

▲图323*Conv+1*Dense的CNN(数字任务)

▲图33模型训练

训练好的模型用可视化模型结构工具Netron进行查看。本设计搭建的网络模型如图34、图35所示。

▲图34Netron可视化数字分类网络模型结构

▲图35可视化动物/水果分类网络模型结构

▲图36NNCU模型转换器

模型文件已经量化完毕,接下来我们量化之后的模型文件放入OpenARTmini中跑起来。实现步骤的流程图如下图37。

▲图37模型载入流程图

运行模型进行模型预测,识别到带黑框的图片后可通过串行终端界面看到提示数据。实现结果表明,识别准确度较高与实时性较好,模型运行效果良好。实现结果如图38至图42图像所示。

▲图38水果识别正确示例-葡萄

▲图39水果识别正确示例-香蕉

▲图40动物识别正确示例-猪

▲图41动物识别正确示例-马

图42分类错误,结果正确示例本设计分别对0-9数字图片和十种水果动物进行识别,实际测试中调整合适光照以及图片大小,识别的准确率如下表3所示。

▲表3数据集及其识别准确率

利用上文提到的openmvIDE,采用python编程控制openartmini模块及其外设。任务实现流程图如图43所示。

▲图43任务实现流程图

AprilTag的家族为TAG25H9,包含0-34共35个数字,只需识别0-9。首先制作AprilTag,直接从OpenMV的IDE里生成。如图所示。

▲图44TAG25H90-9

由于openartmini模块自带识别AprilTag库函数,调用函数即可识别。

我们使用了两个数字舵机,设定舵机频率均为200HZ,控制信号来自openartmini模块给出的两个PWM信号。下方舵机实际控制角度范围为180°,用于改变摄像头方向,以便寻找待识别图像。上方舵机的控制信号保持不变,作用是稳定摄像头支架。

▲图46按键液晶调试

实际测试时,先使用串口转TTL模块在电脑端进行测试,使用串口助手界面如下,简单大方,满足测试需求。后续测试与主控单片机能够进行正常通信。

▲图47串口助手调试界面

报名参加“恩智浦杯”智能汽车竞赛,我们遵循学习知识第一,志同道合友谊第一,比赛获奖第二的原则。

在控制方面,我们使用比赛推荐的开发工具调试程序,充分利用上位机等工具以提高效率经过小组成员不断研讨、争论、改进,终于设计出三套适用于不同情况下的,稳定的程序。

这段历程,我们一同熬过无数个日夜,熟悉了彼此也成长了自己。从走时关灯到天亮了记得把灯,关上实验室就像我们另一个家。这段经历将永伴我们一生。比赛很艰辛,但我们享受其中的快乐,受益匪浅,智能车竞赛的历程会成为我们最珍贵的回忆。

公众号TsinghuaJoking主笔。清华大学自动化系教师,研究兴趣范围包括自动控制、智能信息处理、嵌入式电子系统等。全国大学生智能汽车竞赛秘书处主任,技术组组长,网称“卓大大”。

THE END
1.扫一扫内饰图片识别车型的APP推荐?试试这些识别工具扫一扫内饰图片识别车型的APP推荐?试试这些识别工具 办公小技巧1a1 关注0人102粉丝 关注 评论·13 提交评论 用户2329016791190 这啥车各位 08-03回复举报0人 点赞 用户788826057816 图片评论 01-05回复2条回复举报0人 点赞 權金城 这是什么车 2023-07-03回复1条回复举报0人 点赞 https://www.dongchedi.com/video/7244757822024450612
2.汽车图像识别汽车车型图像识别ff汽车日本九州大学的一个团队开发了一种欺骗图像识别技术的新方法。对许多研究人员来说,一般的方法是给图像添加一些功能,这些图像会错误地触发神经网络,并让它识别出它所看到的完全不同的东西。换句话说,怎样才能让人工智能看到汽车的图像,并把它归类为狗呢? 令人惊讶的https://cloud.tencent.com/developer/information/%E6%B1%BD%E8%BD%A6%E5%9B%BE%E5%83%8F%E8%AF%86%E5%88%AB
3.文字图片OCR识别软件北京译图智讯专注于OCR识别技术,提供文字提取、图片识别等服务,主要产品有包括:ocr发票识别软件,增值税发票识别,银行流水识别,银行卡卡号识别,营业执照识别,身份证识别等.http://etoplive.com/
4.扫一扫车图片识别车型易车汽车新闻为您提供关于扫一扫车图片识别车型的最新汽车资讯,扫一扫车图片识别车型相关的最新易车号文章,为你购车提供参考。https://news.m.yiche.com/tag/4048169.html
5.车牌识别测试图片集(237幅车牌照片)(文件名均是车牌号)车牌识别技术是计算机视觉领域中的一个重要应用,主要应用于交通监控、智能停车场系统、无人驾驶等领域。这一技术通过图像处理和模式识别方法,自动检测并识别车辆的车牌号码,从而实现自动化管理和服务。本测试图片集包含237幅车牌照片,其文件名即为对应的车牌号码,这为开发和优化车牌识别算法提供了丰富的数据资源。 车牌https://download.csdn.net/download/xinxindexie/10288792
6.ocr图片识别技术是什么?OCR的作用有哪些?车牌识别:保险移动勘察 证件识别:保险移动勘察;出保单、借贷等录入个人信息 Vin码识别:录入VIN码解析出车型库,估算养车用车成本,对汽车做评估及金融方案 OCR的作用有哪些? 首先我们要清楚在进行图片的识别过程中很容易出现各类的问题,对于这些问题大多是来自于图片识别不出来。图片信息有很多种类型,文字、图形等等。要https://www.foxitsoftware.cn/scanner/jiaocheng/691.html
7.识别汽车的软件大全识别汽车的推荐下载PP助手为您提供识别汽车的软件有哪些大全推荐,在这里我们为您提供识别汽车的软件有哪些软件下载资源,识别汽车的软件有哪些安卓版本、官方版本&老版本下载地址合集,还可查阅相关识别汽车的软件有哪些攻略大全,欢迎到PP助手下载。https://wap.pp.cn/topic/495975/
8.图片人物识别软件图片人物识别软件下载多特软件园为您提供图片人物识别软件下载内容,在多特你可以找到各种视频转换软件,找免费的无损视频格式转换软件下载就来多特软https://www.duote.com/zt/tprwsp/
9.车牌识别系统设计方案(通用8篇)* 具有极高的处理能力,对车辆行进过程中所有图像都进行识别和处理,不依赖于单张图片,有效提高设备对复杂环境的适应能力 * 软件采用专业高清车牌识别软件架构。方便用户操作使用。 篇3:车牌识别系统设计与实现 智能交通管理系统的研究成为近年来研究热点,通过智能交通管理系统,可实现道路交通管理的自动化和车辆行驶的智能https://www.360wenmi.com/f/fileh533m5gy.html
10.信息技术学业水平考试模拟测试选择题判断题(一)C.图片处理软件 D.防病毒软件 71.下列实例中,使用了语音识别技术的是( ) A.按导航仪的语音提示驾驶汽车 B.用“录音机”软件录制声音 C.通过语音录入文本 D.与父母电话聊天 72.在PowerPoint中设置对象的动画效果,可通过选择“幻灯片放映”菜单中( )命令来实现。 A.自定义动画 B.幻灯片切换 C.自定义放映 https://www.wjx.cn/jq/14222784.aspx
11.扫图识别动漫软件排行榜APP推荐扫图识别动漫软件排行榜下载豌豆荚扫图识别动漫软件排行榜榜单为您提供最新扫图识别动漫软件排行榜大全,这里不仅有扫图识别动漫软件排行榜安卓版本APP、历史版本应用下载资源,还有类似扫图识别动漫软件排行榜的应用推荐,欢迎大家前来豌豆荚下载。https://www.wandoujia.com/bangdan/404671/
12.图片颜色识别软件识别结果华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:图片颜色识别软件。https://support.huaweicloud.com/topic/213334-5-T
13.PhotoCircleappPhotoCircle软件2024新版下载转易侠OCR文字识别 迅捷文字识别图片转文字 cs全能扫描全能王 相关专辑 手机office软件iphone画中画支持软件office办公软件iphone杀毒软件办公office软件免费ocr识别软件手机ocr软件无需root的定位软件手机ocr文字识别软件免root修改器orc识别软件ipad pro画画软件ocr识别软件不用root的字体软件安卓root软件ocr文字识别软件免费https://m.iuuu9.com/app/com.circle38.photocircle
14.识图软件哪个好用?识图app找图出处下载识图app排行榜前十名识图app在生活中的用处非常之大,用户上传图片就能识别图片的来源,还能找到相似图片以及其他尺寸的图片,使用图片方便,同时有一些还支持通过识图的方式来辨别出植物、动物等,起到识物的作用,还有非常详细的相关知识介绍。http://www.danji100.com/k/shituapp/