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

智能汽车竞赛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.扫一扫就能识别车型?这个操作来掌握一下格力入局造车行业,如今格力汽车公司已成立,胜算有多大? 大姐爱拍车5t5B16万次播放 08:40 开货车旅行,有史以来加过最便宜的油,没想到水居然比油还贵4倍扫一扫就能识别车型?这个操作来掌握一下 发布于2023.5.10 18:19 次播放 兼程并进 关注0人274粉丝 关注 评论·0 提交评论 https://www.dongchedi.com/video/7231496345822069286
2.手机AI都发展成这样了?一键识别车辆型号!手机AI都发展成这样了?一键识别车辆型号!五彩科技 山东 1 打开网易新闻 体验效果更佳伙计对我不错,他结婚了,也给我安排了一个对象 恋上小乐 585跟贴 打开APP 女孩揭露男人所谓不育的真相 黑巴电影 665跟贴 打开APP 周星驰为何被称为片场暴君,石榴姐至今不敢再合作,但却对他感恩 小舟影视 1434跟贴 打开APP https://m.163.com/v/video/VIGU7UU1S.html
3.python实现图片识别汽车python识别图片车python实现图片识别汽车 准备工作 1,登陆开发者控制台:https://console.bce.baidu.com/#/index/overview2,安装 pip install baidu-aip 模块 1 2 原理读取图片的二进制信息,调用百度云第三方接口,将图片二进制信息传递给接口,获取接口返回的信息,进行处理输出https://blog.csdn.net/weixin_42337937/article/details/81740816
4.汽车识别专题模板汽车识别图片素材下载我图网汽车识别专题为您整理了72677个原创高质量汽车识别图片素材供您在线下载,PSD/JPG/PNG格式汽车识别模板下载、高清汽车识别图片大全等,下载图片素材就上我图网。https://so.ooopic.com/search-c6fbb3b5cab6b1f0-0-0_0_timed_0_0_0_ooo_0_1_0_0_0_0_0_0_0___0__0.html
5.车标志识别图片大全图片关于车标志识别图片,您可以在网络上搜索“汽车标志图片大全”或“车标识别图片”,会出现很多相关的图片和资料。此外,一些专业的汽车网站https://www.car136.com/tag/chebiaozhishibietupiandaquantupian/
6.汽车识别技术矢量图插画正版商用图片12b6f7摄图新视界提供汽车识别技术矢量图图片下载,另有自动,背景,相机,轿车,央视,城市,控制,数据,检测,驾驶,平,全球定位系统,鉴定,图,信息图图片搜索供您浏览下载,每张图片均有版权可放心商用,您正在浏览的图片为12b6f7https://xsj.699pic.com/tupian/12b6f7.html
7.图片分享:汽车标志识别汽车标志识别是一项非常有趣的技术,它可以帮助我们识别各种不同的汽车标志。这项技术的原理是通过计算机视觉和机器学习算法,将汽车标志的图像与已知的汽车标志进行比对,以确定它所属的品牌和型号。 在现代社会中,汽车标志已成为各大汽车品牌的重要标识之一,每个品牌的标志都有其独特的设计元素和风格,因此,汽车标志识别https://www.360doc.cn/article/1083702431_1083702431.html
8.扫描图片内饰识别车易车汽车新闻为您提供关于扫描图片内饰识别车的最新汽车资讯,扫描图片内饰识别车相关的最新易车号文章,为你购车提供参考。https://news.m.yiche.com/tag/266140.html
9.汽车内部图标识别图片及文字汽车内部图标识别图片及文字如下:不同汽车仪表板的仪表不尽相同,但是一般汽车的常规仪表有车速里程表、转速表、机油压力表、水温表、燃油表、充电表等;下面将从仪表盘、方向盘、中控按钮、遥控按钮、灯光区、雨刷区、音响控制功能、空调控制功能、行车电脑控制、后视镜调节等功能一一介绍: https://www.youchejiuxing.com/lsj/9981.html
10.全球汽车品牌视觉识别系统,汽车标志图片大全探索汽车标志是汽车品牌的重要视觉识别元素,它不仅代表了汽车的品牌形象,还体现了企业的文化和精神内涵,随着汽车产业的不断发展,全球各大汽车品牌也在不断创新和演变自己的标志设计,本文将为您呈现汽车标志图片大全,带您领略全球各大汽车品牌的魅力。 欧洲汽车品牌的标志设计 http://www.hao0000.cn/post/43.html
11.识别汽车的软件车辆识别软件汽车标志识别多特软件站为您提供做最新识别汽车的软件专题,在这里安卓版苹果版等应用应有尽有,找最新识别汽车的软件就来多特软件站。https://www.duote.com/zt/623rjzt138/
12.汽车品牌标志识别图片大全汽车资讯22045汽车网,为您提供各种汽车品牌标志识别图片大全,全新汽车资讯.本站收集了市面上大部分的汽车标志图片,同时发布各类关于汽车的资讯销量排行榜等信息,爱车的你上22045汽车网就对了.https://www.22045.com/
13.识别图像中的车辆并框出来pytorch识别图片中的汽车 车型识别是识别汽车图片(完整或部件图片)的类型,目前有小轿车、多用途汽车、SUV等类别。 本案例导学步骤如下图所示。 背景知识 根据拍摄照片,快速识别图片中车辆的品牌型号,提供针对性的信息和服务,可用于相册管理、图片分类打标签、电子汽车说明书、一键拍照租车等场景。以及在监控高速路闸https://blog.51cto.com/u_16213603/11073391
14.停车智能车辆提醒车辆识别车位显示智能交通探头夜晚路口等红灯相关搜索 刷码乘车现代科技 停车系统科技 智能交通探头红绿灯 等红灯的车 停车报警 停车智能 车辆提醒 车辆识别 车位显示 智能交通探头 夜晚路口等红灯的车辆 等红绿灯的汽车 红灯停车 智慧停车 汽车等红绿灯 相关图片 更多> 他的图片 商用正版 更多> https://www.nipic.com/show/49037542.html
15.文字识别OCR使用前提与约束文字识别OCR文字识别OCR图片编码后的大小不超过10MB,图片的要求为分辨率建议600*800以上。 车牌识别 图片的base64编码,不包含头部格式信息。 目前图片格式支持JPG、JPEG、PNG、BMP。 推荐图像中车牌清晰无遮挡、正面放置无倾斜。 目前支持车牌类型含小型汽车、小型新能源、大型新能源、使馆汽车、领馆汽车、港澳入出境汽车、教练汽车、警用汽车https://ecloud.10086.cn/op-help-center/api/article/40770
16.各种车标志识别图片大全图片2021开朗是装的懂事是装的自卑是真的导读:随着人们的生活的质量提高,家家户户都有买了小车,大家追求的质量也是越来的越高级了,汽车的品牌众多,今天小编就来给大家分享一组比较典型的车标志识别图片给大家哦。 我们都知道每个汽车品牌都有自己车标的设计故事,但是车子的牌子真的是太多了,我们很多人知道的也就只不过是冰山一角,今天就来给大家看看关于车https://www.qqtn.com/article/article_317568_1.html
17.基于决策导向非循环图SVM的汽车车型识别AET摘要:用决策导向非循环图支持向量机研究了汽车车型的识别。运用图像像素相减的差分方法去除背景,获取车对象;然后对图像进行均值滤波,以除去噪声干扰,再对图像用“分水岭”变化的阈值方法,获取车的二值图像;最后提取车的几何形状特征,并将其输入DDAG支持向量机进行训练和识别,以实现对车型分类的目的。 http://www.chinaaet.com/article/76325