智能车竞赛技术报告 | 智能车视觉 - 宜宾学院- 平头哥1组

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能车竞赛技术报告 | 智能车视觉 - 宜宾学院- 平头哥1组相关的知识,希望对你有一定的参考价值。

学 校:宜宾学院       
队伍名称:平头哥1组       
参赛队员:邓应洪、郑力国、龙祥彬
带队教师:王勇、文良华     

 

第一章


  由于受到突如其来的新冠疫情的影响,使得我们未能参加第十六届智能车总 决赛,我们全体参赛队员都对此次失去了和全国其他强队进行比赛交流的机会感 到特别的遗憾。所以我们将我们此次智能车设计方案基于此技术报告进行展示, 以达技术交流的目的。

  全国大学生智能汽车竞赛以“立足培养,重在参与,鼓励探索,追求卓越” 为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、 基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能, 倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱 颖而出创造条件。竞速赛以统一规范的标准硬软件为技术平台,制作一部能够 自主识别道路的模型汽车,按照规定路线行进,并符合预先公布的其他规则, 以完成时间最短者为优胜。

  车模采用 NXP 公司生产的 i.MX RT1064 单片机作为核心控制器,使用 Openart-mini 作为视觉识别核心,通过摄像头采集赛道信息,自行涉及并 制作主控板、驱动板等功能电路,使用多套速度方案,按照规定路线前进并完 成赛道特殊元素的识别,识别 Tag 码并停车进行图像的识别与打靶。车模设计制 作过程中,深入研究车模特点,设计整体结构及控制系统,并根据实际运行情 况及时调整。

  在这份报告中,队员们主要通过对整体方案、机械、硬件、软件算法等方面 的介绍,详细阐述我队在此次智能汽车竞赛中的思想和创新。硬件机械设计时,针对小车结构特点,在传感器、电路模块安装时多次尝试, 及时优化;软件系统设计时,使用了经典 PID 以及模糊 PID 等方法,外加差速 控制,实现转向及速度控制,赛道识别上使用了动态阈值,保证了适应性。

  整个过程中队员们付出了很多,准备了几个月,虽然有很多不足,但也付出了努力也收获了知识。

 

第二章 统整体设计


■ 2.1系统概述

  本赛题Ai视觉组为今年新引入组别。车模制作中,需要在对四轮组别任务完成的基础上添加识别打靶等视觉组任务。
  整车系统工作分为以下四个部分:普通路段循迹、特殊路段(环岛、三岔、出库、入库)循迹、检测并识别任务、水果打靶。

  赛道识别段采用了摄像头采集赛道信息进行二值化处理得到赛道实际中线,再用赛道实际中线与图像中线的做偏差,用模糊PID的PD进行控制舵机循迹。电机控制利用了编码器对后轮进行测速,采用了两个模糊PID闭环控制实现主动差速。

  Apriltag、数字标靶、水果动物标靶这些任务都是采用OpenART mini摄像头进行识别,其中Apriltag码是先使用普通摄像头进行预识,然后使OpenART mini 进行精确识别。

■ 2.2系统框架

  整车系统框架如下图2.1所示

▲ 图2.1整车系统框架图

  2.3整车布局
  车模的三视图如图所示

▲ ▲ 图 2.2 车模俯视照片

▲ ▲ 图 2.3 车模前视照片

▲ ▲ 图 2.4 车模左视照片

 

第三章 械结构设计及实现


  要使小车能够稳定、高速地运行,正是在于机械结构与软硬件系统地融洽结合,通过不断地实验和测试,我们发现以下三个方面的机械结构对小车的运行影响很大:转向机构,传感器的固定,重心的调整。高速运行下舵机的转动速度对车转向的灵活程度起到了根本性的作用。在使用模型巡线的时候,电感是采集最原始赛道信息的最前端的传感器,良好的固定方案才能使其最大限度地采集到良好的赛道信息,并且不容易因为出现电感位置不对而导致模型无法使用的情况。整车的重心越低,自然才能在控制时更加灵活稳定。由于C车车模容易出现左右不对称,在搭建车模的时候尤其需要控制车模的对称性和走直线的能力。

3.1车模机械模型

  本次比赛采用C型车模,采用耐久度高驱动力良好的RS380电机,及S3010舵机。在遵守组委会制定的规则的前提下,我们对车模进行了适当的改装。

3.1.1前轮定位的调整

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

3.1.2主销内倾

  从车前后方向看轮胎时,主销轴向车身内侧倾斜,该角度称为主销内倾角。当车轮以主销为中心回转时,车轮的最低点将陷入路面以下,但实际上车轮下 边缘不可能陷入路面以下,而是将转向车轮连同整个车模前部向上抬起一个相 应的高度,这样车模本身的重力有使转向车轮回复到原来中间位置的效应,因 而车模容易回正。此外,主销内倾角还使得主销轴线与路面交点到车轮中心平 面与地面交线的距离减小,从而减小转向时舵机上的力,使转向更加轻便,同 时也可减少从转向轮传到舵机上的冲击力。

3.1.3后倾角

  从侧面看车轮,转向主销(车轮转向时的旋转中心)向后倾倒,称为主销后倾 角。设置主销后倾角后,主销中心线的接地点与车轮中心的地面投影点之间产 生距离 (称作主销纵倾移距,与自行车的前轮叉梁向后倾斜的原理相同),使车 轮的接地点位于转向主销延长线的后端,车轮就靠行驶中的滚动阻力被向后拉, 使车轮的方向自然朝向行驶方向。

  设定很大的主销后倾角可提高直线行驶性能, 同时主销纵倾移距也增大。但主销纵倾移距过大,会使转向沉重,而且由于路 面干扰而加剧车轮的前后颠簸。

3.1.4前轮前束

  前轮前束的作用主要是保证车的行驶性能,一定程度上可以减少车轮的磨损。
  在经过长时间的反复测试调整的过程中。发现适度的负值的后倾角配合主销内倾效果很好,转向做到很灵敏。不过最合适的角度并不是固定的,这个要经过长时间的调试来找到合适的值。

3.2舵机的安装

  舵机是转向结构,好的舵机安装方案至关重要,安装过程中包括舵机的安装位置及姿态。舵机摆杆的设计以及横拉杆的设计。

  在安装舵机的时候经过舵机摆杆 参数计算出比较高效的参数使智能车转向灵敏度提高。舵机做的是旋转运动,而转向的时候是左右运动。这个将旋转运动转换成横摆运动的装置就是舵机的摆杆。通过摆杆将舵机转矩传递给前轮上边的横向的拉杆。带动轮子的左右摆动。为了不影响灵敏度,舵机采用的是立式安装。

▲ 图3-3 舵机的安装示意图

3.3摄像头的安装

  摄像头作为车模的“眼睛”,既要保证“视野”的广阔,也要保证图像的真实性,所以安装位置既不宜过高,也不宜过低。经过本组各个位置的尝试最终敲定摄像头高度为离地约30CM。

▲ 图3-4 摄像头安装示意图

3.4 openART mini的安装

  由于已经知道了标靶牌的高度和大概距离,所以openART mini摄像头布置的高度和标靶牌的中心高度大概一致。经过本组的各个位置的尝试,最终敲定识别数字标靶的openART mini的位置为离地15CM处,识别动物水果标靶的openART mini的离地高度为16CM,识别Apriltag码的高度为22CM。

▲ 图3-5 openART mini安装示意图

 

第四章 路设计


  硬件系统以逐飞科技的RT1064最小系统板作为核心控制器 ,该核心板采用 5V供电。RT1064最小系统是系统的核心部分,负责接收赛道的电磁信号、图像数据、智能车速度、方向转向大小等反馈信息以及和用于识别的OpenART摄像头进行通行。在控制算法的控制下,形成合适的控制量来对驱动电机进行控制。从而控制整个小车的稳定、快速行驶。主控板上包括如下部件:电源稳压电路、摄像头接口、电磁接口、通信接口、编码器接口、TFT显示屏接口、指示灯等。主控板通过T插连接电机驱动板并由其进行供电。如图6所示为主控板实物图。

▲ 图4-1 pcb实拍图

4.2.3母版电路设计

  母版电路主要由各模块电源,必要外设接口,主控核心板组成,其具体包括:核心板电源、舵机电源、电机全桥驱动电路、电磁放大电源、摄像头电源、3.3V外设稳压电源、电机接口、摄像头接口、核心板接口、舵机接口、AD采集接口、串口通信接口、陀螺仪接口、tft显示屏接口拨码开关、普通按键。
  主版原理图如下图4-2所示,pcb图如下图4-3所示

▲ 图4-2主板原理图

 

第五章 件设计


  软件系统的设计决定了车模运行稳定性和速度,由于使用的MCU是RT1064,对于赛道处理的计算问题不需要担心,但是一个良好的控制策略也十分重要。

5.1赛道信息提取

  由于根据往届的比赛经验,提取车模的位置信息主要有提取赛道两边黑线的 视觉方式以及根据电磁传感器采集赛道中心铺设电磁线所产生的电磁信号的电磁方式两种方式。我们组采用了纯摄像头处理的方式获取赛道边线。
  首先通过总钻风摄像头获取图像,然后在程序里面进行软件二值化,然后当获取到一帧的图像时,对离车最近的那一行经行全行扫描,获取出最下面这行的左右边线,然后确定出当前行的中线值,之后图像的每一行都以上一行的中线为基础向左右两边扫描,获取中线值,存入中线数组中。当一帧的图像处理完就有一个对应的中线数组,然后将每一行的中值减去图像宽度的一半。然后将减去了图像宽度的一半的值分成三段,分别是离车近的,中间的,还有很远的,按一定的权重加在一起,这就获取的了当前车的位置。

5.2 模糊PID控制

  模糊控制PID又叫模糊自适应PID,因为三个PID参数能够实时调整。

  模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。

▲ 图5-1模糊PID系统框图

  模糊控制器由三个功能模块组成,即模糊化模块,模糊推理模块和解模糊模块。如下图5-2所示

▲ 图5-2模糊pid控制器

  本组电机控制和舵机控制均采用模糊PID 控制。 对于速度环为什么使用模糊PID,是由于我采用了主动差速的方式,而采用的差速赋予方式是根据前轮舵机的转向值给于一定的权重直接加在后轮速度环的期望值上。这样做如果使用普通PID就会造成超调或者调节不到位,而使用模糊PID可以完美的解决这个问题。

5.3 MCU与openART mini的通信

  采用逐飞例程的串口通信,当总钻风摄像头检测到apriltag码后单片机控制小车立即减速停车并与openART mini通信。通过串口向openART mini摄像头发送开启信号‘0x03’,当openART mini识别成功后向MCU发送奇数还是偶数的标识,MCU接收到信息后处理,然后向openART mini摄像头发送一个停止信号“0x04” 。

  当小车通过总钻风摄像头识别到三叉路口时,单片机判断时入三叉还是出三叉,如果是入三叉, 通过串口向openART mini摄像头发送开启信号“0x01”,当openART mini识别成功后向MCU发送奇数还是偶数的标识,MCU接收到信息后处理,然后向openART mini摄像头发送一个停止信号“0x02” 。

5.4 apriltag的预检测

  对于apriltag的检测,我采用的是和斑马线检测一样的赛道中黑块的块数大于一定值就认定当前是检测到了斑马线或者apriltag,区分斑马线和apriltag就是在检测到后重新在当前图像中按照边沿跟踪搜索边线,如果是斑马线则搜索到的边线有一边肯定不连续,如果两边都是连续的说明当前找到的为apriltag。

5.5 图像识别任务

  相比传统赛道识别任务,AI视觉组加入了对于图案的识别任务,即对于动物和水果进行分类以及数字识别的任务。这是一个图像分类的任务,只使用传统图像处理的方法是较难完成的,所以需要部署神经网络来完成这个任务。整体思想是在PC上训练神经网络然后将其量化后迁移到OpenART mini上。

  训练的过程不难,难点在于如何设计一个识别精度高、识别迅速的网络.我们经过不断的实验、修改网络的架构最后选择一个效果较好的网络,数字识别网络的部分结构如下图所示:

▲ 图5-3 识别神经网络部分结构

  同时决定模型识别效果一个很关键的元素是训练的数据,训练自己的识别模型主要在于扩充更多的数据,以便于完善自己的模型,我们选择将数据集进行打印,然后使用OpenART直接拍摄。此外,我们还通过各种数据增强的手段,例如旋转、反转等来对数据进行一个扩充。这样往往能得到一个效果比较好的网络。

  同时云台的控制也依托于OpenART,主要是通过根据当前摄像头的中心与识别到图片矩形的区域的中心的差值来完成控制,主要使用PID算法来控制输出的PWM的占空比,使得双自由度的云台的角度发生改变。

5.6 AI模型的部署

5.6.1制作训练数据文件

  在进行深度神经网络训练时,一般往往要求输入的数据范围在(-1,1)或(0,1)之间,因此,我们要对数据进行归一化处理,并将标签数据转换为one-hot码.同时,需要对数据集进行拆分,将其划分为训练集与测试集,训练集用于模型自身迭代,测试集用于诊断模型能力。

5.6.2模型的量化

  使用工具nncu进行模型的量化工具如下图5-5所示

▲ 图5-5

5.6.3将量化后的模型放入sd卡中在openART mini上运行。

5.7 MCU部分代码如下

▲ 图5-6 图像处理部分程序

▲ 图5-7 部分主程序

 

第六章 发工具说明


6.1 keil5 的简介

  Keil MDK-ARM是美国Keil软件公司(现已被ARM公司收购)出品的支持ARM微控制器的一款IDE(集成开发环境)。

  MDK-ARM包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件。具有业行领先的ARM C/C++编译工具链,完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件,包含世界上品牌的芯片。比如:ST、Atmel、Freescale、NXP、TI等众多大公司微控制器芯片。

6.1.1 keil5 μVision5的使用

  今年我们选用了RT1064作为控制器并使用keil这一软件作为集成开发环境。Keil5 界面简洁,使用方便,支持实时在线仿真。

6.1.2 keil5 开发界面

▲ 图6-1 keil5开发界面

 

第七章


7.1存在的问题及改进方向

7.1.1机械结构和硬件部分

  由于准备时间不足,车模机械结构并未深度优化,pcb的布线也没有达到自己的要求。打靶舵机的精度也远远不够。很多地方都达不到自己的要求。

7.1.2 软件部分

  在软件部分中,获取赛道信息这一点,我尝试了网络上面的各样的方式,比如逆透视等,但是最后结果都不太行,所以后来最简单的中间向两边扫描的方式获取中线。然后加一些特殊的补线方式就可以获得不错的赛道路径,比如弯道补线,十字补线,圆环补线,三叉补线等。

  然后就是对舵机、电机的控制方面,模糊PID,我经过非常多的调试验证,最后才确定了三个模糊PID的值和规则表,然而这也只是大概的值,和比较完美的参数还差很远。

7.2总结

  在这份技术报告中,我们小组主要介绍了准备比赛时的基本思路,包括机械, 电路,以及在赛道识别和图像识别等方面的一些创新性的创意。在电路方面,我们绘制了主控板、驱动板、电磁传感器等PCB板做到了线路的高度集成。在程序方面,主控部分使用C语言利用模块化结构进行编程,利用推荐的IAR集成开发环境调试程序,同时利用上位机等各种方式辅助调试。经过我们的不断讨论、改进,终于设计出一套比较通用稳定的程序,各个模块间分工明确,耦合程度低,易于进行重构和二次开发,最终使车子能在较短的时间内以较快的速度完成比赛任务。由于自身知识积累不够,我们在整个车模开发的过程中,犯了不少错误、走了不少弯路。在软件的程序方面一开始由于对于整个项目的开发没有做出一个清晰明确的规划导致程序凌乱不堪模块和模块之间耦合严重,经常出现牵一发而动全身的情况,在一些角落里有着各种难以察觉的BUG,之后在此经验和教训的基础上我们将已经完成的代码化整为零重新开发,通过不断摸索和尝试后,最终开发出了一套简明有效的代码。

  从这次比赛之中我们得到的并不仅仅是专业知识,还有一个完整的机电系统的开发经验,让我们对于所学的知识融会贯通,能够运用于实际当中。虽然因为疫情的原因我们无缘于总决赛,但我觉得这一份难忘的经历对我来说是最为宝贵的一份财富。

 


  在疫情期间仍然能够推进智能车的制作是十分困难的,最终本组车模能够制作完成离不开每一个大赛组织人员和学校老师的努力。

  感谢大赛组委会在今年政策更改和疫情爆发的双重压力下仍然能够克服困难,尽最大的努力保证了每一个赛区比赛的顺利举办,卓晴老师的推文和组委会的消息与承诺是推动本组前进的最大动力,也给了本组每一个队员在迷雾中摸索前行的勇气。再一次感谢大赛组委会为我们提供了一个锻炼自己、证明自己的平台,为队员们的大学生涯和青春留下了难以忘却的回忆。

  感谢学校为队员们的顺利返校所做的工作,这是本组成绩稳步提升的基础;感谢学院领导在本组调试车模期间的关心,这也让队员们相信学校与学院会是坚强的后盾;感谢指导老师任玲芝为队员们提供场地环境和所有的耗材的帮助,以及给予莫大的支持和鼓励。

  感谢实验室其他的同学,一起夜间工作、相互鼓励、共同研讨问题的场景或许是实验室最让人难以离开的风景。

 

考文献


[1]邱关源,电路。高等教育出版社,第 5 版,2006。
[2]胡文华,Altium Designer 13 从入门到精通。机械工业出版社,2013。


● 相关图表链接:

以上是关于智能车竞赛技术报告 | 智能车视觉 - 宜宾学院- 平头哥1组的主要内容,如果未能解决你的问题,请参考以下文章

智能车竞赛技术报告 | 智能车视觉 - 三江学院 - 识别不别

智能车竞赛技术报告 | 智能车视觉 - 新余学院 - 开放艺术队

智能车竞赛技术报告 | 智能车视觉 - 石家庄学院 - 百事

智能车竞赛技术报告 | 智能车视觉 - 中原工学院 - 逐鹿 - 分母队

智能车竞赛技术报告 | 智能车视觉 - 青岛工学院 - 青工战斗

智能车竞赛技术报告 | 智能车视觉 - 首都师范大学 - 首师智能视觉