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

智能汽车竞赛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哪个好?拍照识车价格和车型软件下载拍照识车价格和车型软件为大家整理了很多可以通过拍照来识别汽车的车型和价格的工具,这些软件可以帮助用户去了解汽车的种类和价格,当用户在买车的时候就不会被骗了。软件功能强大,识别准确,信息齐全,有需要的用户,快来当易网下载吧!http://m.downyi.com/key/paizhaoshicheapp
2.什么软件可以通过图片识别车型APP推荐豌豆荚什么软件可以通过图片识别车型榜单为您提供最新什么软件可以通过图片识别车型大全,这里不仅有什么软件可以通过图片识别车型安卓版本APP、历史版本应用下载资源,还有类似什么软件可以通过图片识别车型的应用推荐,欢迎大家前来豌豆荚下载。https://www.wandoujia.com/bangdan/406865/
3.怎么根据图片查车型怎么根据图片查车型 想要通过图片来查找车型?以下是一些可以尝试的方法: 借助网络识别服务:网络上有很多工具能帮你识别车型。你可以尝试将图片上传到如Google Photos或Tineye等网站,它们能帮你识别出汽车的品牌与型号。 这些在线服务运用计算机视觉技术,通过解析照片中汽车的细节特征来判定车型。https://www.yoojia.com/article/9062856193825929712.html
4.汽车图片看图识车车友交流懂车帝提供汽车图片看图识车的车友交流详细内容,懂车帝是一个汽车资讯平台,懂车更懂你。我们提供最新汽车报价,汽车图片,汽车价格大全,行情、评测、导购等内容,看车选车买车就上懂车帝。https://www.dongchedi.com/tag/ugc/10005146
5.ocr图片识别技术是什么?OCR的作用有哪些?车牌识别:保险移动勘察 证件识别:保险移动勘察;出保单、借贷等录入个人信息 Vin码识别:录入VIN码解析出车型库,估算养车用车成本,对汽车做评估及金融方案 OCR的作用有哪些? 首先我们要清楚在进行图片的识别过程中很容易出现各类的问题,对于这些问题大多是来自于图片识别不出来。图片信息有很多种类型,文字、图形等等。要https://www.foxitsoftware.cn/scanner/jiaocheng/691.html
6.智东西早报:英特尔将发布90款至强处理器;清华成立车辆与运载学院福特在中国除产品中心之外,还将设立中国创新中心、中国设计中心,及新能源中心。未来3年,福特将在中国推出30款新车型,其中10款为新能源车。福特中国的管理团队,也启用更多本土人才或更多有中国市场经验的高管。 同时,福特结合自身研发以及百度在车载系统上的能力,推出了全新车载信息系统SYNC+,整合了百度的语音识别能力、https://zhidx.com/p/144425.html
7.阿维塔阿维塔汽车官网根据《常见类型移动互联网应用程序必要个人信息范围规定》,本App属于“其他”类,基本功能服务为车控,此功能下必要个人信息包括:注册用户移动电话号码、姓名、身份证号、身份证正反面照片、面部识别信息、车辆识别码、车辆状态信息。非必要个人信息包括:车辆里程数、系统版本、升级记录、OTA升级偏好。除车控服务外,其他业https://www.avatr.com/protocol?type=10181001
8.车牌识别图片大全车牌识别高清图片下载城市建筑高空俯瞰高架桥车流交通轨道城市背景图片 立即下载 白色豪华车 立即下载 工厂安全生产月工业工程师经理使用平板电脑检查和控制智能工厂的自动武器 立即夜晚现代建筑商业中心街道背景图片 立即下载 灰色机械精密各种运行的大小齿轮机械配件展示背景图片 下一页 1234567850> 觅知网提供大量车牌识别图片,车https://www.51miz.com/so-tupian/1693212.html
9.汽车内部图标识别图片及文字汽车内部图标识别图片及文字如下:不同汽车仪表板的仪表不尽相同,但是一般汽车的常规仪表有车速里程表、转速表、机油压力表、水温表、燃油表、充电表等;下面将从仪表盘、方向盘、中控按钮、遥控按钮、灯光区、雨刷区、音响控制功能、空调控制功能、行车电脑控制、后视镜调节等功能一一介绍: https://www.youchejiuxing.com/lsj/9981.html
10.车辆图片识别车辆图片识别鼓掌 0人 开心 0人 呵呵 0人 可怜 0人 鄙视 0人 流泪 0人 车辆图片识别 工具介绍: 车辆图片识别 车辆图片识别 工具教程: 车辆图片识别 车辆图片识别 工具标签: 车辆图片识别 推荐工具:Toolzl工具站 关于我们 开发接口 更新列表 反馈建议 网站合作 SiteMap https://www.toolzl.com/tools/cheshibie.html
11.识别图像中的车辆并框出来pytorch识别图片中的汽车 车型识别是识别汽车图片(完整或部件图片)的类型,目前有小轿车、多用途汽车、SUV等类别。 本案例导学步骤如下图所示。 背景知识 根据拍摄照片,快速识别图片中车辆的品牌型号,提供针对性的信息和服务,可用于相册管理、图片分类打标签、电子汽车说明书、一键拍照租车等场景。以及在监控高速路闸https://blog.51cto.com/u_16213603/11073391