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

Posted 卓晴

tags:

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

简 介: 本文主要介绍了第十六届智能车竞赛智能视觉组别参赛车模的相关设计思想。此四轮车模使用C型车模、RT1064作为核心控制单元。利用总钻风灰度摄像头采集的图像数据进行基本循迹和元素识别;利用OPENART mini进行部署神经网络模型进行图像分类识别;利用PID控制调节电机的输出,达到对车模速度的闭环控制。为了提高模型车的速度和稳定性,使用山外调试助手、匿名上位机等软件硬件进行了大量调试测试工作。实际调试结果表明,该系统设计方案确实可行。

关键词 RT1064电路设计传感器摄像头循迹机器学习PID控制

学 校:首都师范大学
队伍名称:首师智能视觉
参赛队员:李秉蔚   
王琪    
陈翔宇   
带队教师:张盛博   

 

第一章


  国大学生智能汽车竞赛是以立足培养、重在参与、鼓励探索、追求卓越为指导思想,鼓励创新的一项科技竞赛活动。智能视觉组别要求在规定的汽车模型——C型车模上,使用NXP公司的微控制器作为核心控制模块,通过增加道路传感器、电机驱动模块以及编写相应控制程序,制作完成一个能够自主识别道路的模型汽车。 特别地,智能视觉组别还加入了图片识别分类的赛题任务,要求参赛选手不仅要完成赛道组的元素,还要对固定位置处的图片标靶进行识别并完成相应的动作任务,于我们来讲是一项难度不小的挑战。

  在这份报告中,我们小组通过对小车设计电路制作、机械结构、电控算法的介绍,详尽地阐述了我们的思想和创意,具体表现在硬件上的创新设计,以及软件上的独特想法,凝聚着我们的心血和智慧。此次备赛过程中,我们在付出了艰辛的努力劳动去调节软件中算法与参数,调节车模机械结构和电路板焊接测试等工作。我们小组的三位组员相互配合,分别涉及了控制、传感器技术、AI识别、电工电子技术、计算机、机械等多个学科,这对我们的知识融合和实践动手能力的培养有极大的推动作用。当然由于准备时间有限,我们的方案还有许多不足之处,在比赛中还暴露出了很多问题,这些问题会在我们学习更多专业知识、掌握更多经验后,在未来逐步解决。
 

第二章 路设计


  们车上有三块电路板:负责所有控制、为各种元件提供电源,带有各种接口的主板;负责电机驱动的驱动板;负责收集电磁信号,带有电感的电磁棍。

2.1 主板(PCB35221)

2.1.1 核心板

  在我们车上直接用的是逐飞科技所给的核心板。

▲ 图2.1 逐飞科技RT1064核心板原理图

2.1.2 电源部分

  我们车上的传感器和器件需要不同电压的供电:单片机,摄像头,屏幕,蜂鸣器,按键,拨码开关,按键扩展板,五轴按键等器件需要3.3V电压;编码器,无线串口,有线串口等需要5V电压;舵机需要6V电压。故为了满足不同器件的需求,我们采用多个电源芯片供电。

  电源由XT30接口接入,在通过一个470mF电解电容滤波后,经过主电源开关,再通过电路保护后,输入给电源芯片。

▲ 图2.2 电源输入滤波与保护电路原理图

  由于RT1064有上电时序问题所以先要给核心板进行供电,才能对外设进行供电,核心板支持5V和3.3V供电,我用的是5V供电,使用ME6118(5V)将输入电压转为5V,给核心板上电。

▲ 图2.3 核心板供电芯片ME6118

  由于舵机供电需要6V,而且外设供电要求晚于核心板供电,所以我选用TPS54302输出6V。1脚接地,2脚为输出电压,3脚接输入电压,4脚接反馈电阻,通过反馈电阻的分压值来确定输出电压的大小,5脚用来对TPS54302一反面进行开关控制,另一方面是为了在CR引脚为低时让TPS54302的电平为低,因为TPS54302的EN引脚有电压限制所以并联电阻分电压,6引脚接一个0.1uF
  的陶瓷电容与SW脚相隔。

▲ 图2.4 舵机供电模块

  分别使用RT9013和ME6118解决除摄像头外的3.3V和5V用电器的供电问题。

▲ 图2.5 RT9013-33和ME6118-50的原理图

  由于摄像头属于金贵器件,为保护摄像头,使其供电尽可能正常所以特别用一个单独的电源芯片为其产生电压。我这里使用的是RT9013。

▲ 图2.6 摄像头电源

2.1.3 接口部分

  车上所有的传感器和模块需要连接到主板,我们的主板上设置了这些传感器和模块所需的接口。

▲ 图2.7 主板接口原理图

  因为舵机、摄像头和激光都在车的前部所以把它们放在主板的前面,所有的开关都放在板子的外侧,因为电机和编码器电池都在车的后侧所以把编码器、电机信号和电源输入都放在了主板的后方

2.1.4 辅助调试部分

  为辅助调试,主板上设计有4个LED作为电源指示灯,指示电源芯片工作状态,当他们不正常熄灭时应立即断开电源;此外还有1个RGB灯,1个有源蜂鸣器用于辅助调试。

▲ 图2.8 电源灯原理图

▲ 图2.9 RGB灯和蜂鸣器

2.2 电机驱动板(PCB35221)

2.2.1 电机驱动双桥模型

  电机驱动的核心部分由IR2104半桥驱动芯片和LR7843MOS管组成,IR2104的1脚接VCC12V,2脚为PWM控制信号输入,4脚接地,5脚为LO为低输出,其输出信号与输入信号反相,幅值加大为20V,7脚HO为高输出,其输出信号与输入信号同相,幅值加大为20V,3脚SD为使能,接地时输出为低。

  LR7843为N沟道增强型场效应管,其1脚为G级,2脚为D级,3脚为S级,当G级与S级有一个正电压时,D级与S级会导通。故将控制信号接G,电池和电机分别接到D和S级,即可用控制信号控制电池与电机间的通断,从而实现驱动电机的功能。

  RT1064输出的PWM信号进入电机驱动板后,经过IR2104后变成了两个幅值为20V的方波,其中一个与最开始的PWM信号同相,另一个反相,这两个信号分别接入其后的LR7843的G级,分别控制电机的一个引脚与电池正或电池负的通断,由于两个控制信号反相,所以当电机引脚和电池正极被导通时,与电池负极会被断开。以上一个IR2104控制两个LR7843驱动电机的一个引脚为一路,我们的电机驱动板上一共有这样的四路,从而可以控制两个电机以不同转速正反转。

  需要注意的是,MOS管的D、S级与电池、电机间的连线会有很大电流流过(尤其是在电机不正常运行时,如:堵转)(超过3A),故建议这些线越粗越好。

▲ 图2.10 电机驱动双桥模型

2.2.2 隔离模块

  使用74hc245进行信号隔离,当OE脚接低电平时信号导通,当OE脚接高电平时信号不导通,这取决于DIR引脚是高电平还是低电平

▲ 图2.11 隔离模块原理图

2.2.3 电压转换模块

  在驱动板中74hc245需要5V的电压所以需要进行电压转换为5V, 而IR2104芯片和LR7843MOS管需要12V电压,可以使用B0512对5V电压转换为12V。

▲ 图2.12 电源转换模块

2.3 电磁传感器(PCB35710)

  我们使用了五组由10mH电感和6.8nF电容并联组成频率约为20kHz的谐振电路,可以感应出几十mV的正弦电压信号,用放大电路对该信号进行放大检波将其转换为直流电压,用ADC读取该电压以计算赛道中线位置。

▲ 图2.13 电磁传感器

2.4 陀螺仪加速度计

  我们使用FXAS21002陀螺仪和FXO8700加速度计作为姿态传感器。

▲ 图2.14 陀螺仪加速度计

2.5 调试和比赛过程中发现的电路部分的问题

 

第三章 械结构


3.1 车模

  此次竞赛的四轮赛车车模选用C1型车模。

▲ 图3.1 车模三视图

3.2 云台

  为了方便OPENART mini对图片进行识别并对水果进行打靶,在车的前部使用了自主设计的云台,在固定了OPENART mini的高度后使用一个舵机,实现使OPENART mini在车的舵机上方可以左右的转动,从而可以较好的完成比赛任务。

▲ 图3.2 云台

 

第四章 控制器控制


4.1 开发工具及模块功能库

  针对本组采用的NXP i.MX RT1064芯片,我们使用了主流的Keil uVision5(5.28)作为微控制器软件开发工具,搭配逐飞科技提供的DAP-Link下载编程烧录器进行程序烧录。在获取相关资料后,在Keil中安装该芯片的Pack包即可完成软件开发环境的搭建。
  我们参考了逐飞提供的各功能模块的范例程序和库函数,并将库函数整理成实验室通用函数,符合个人的编程习惯,提高使用效率。

4.2 PID控制原理

【通用原理部分,此处省略3000字...】

4.3 基于摄像头的赛道信息检测

  我们采用总钻风灰度摄像头进行图像获取,通过软件二值化的方法来获取图像中的轨迹特征。根据阈值选取的不同,二值化的算法分为固定阈值和动态阈值。

  固定阈值的二值化,一个阈值往往只对应一类图像,如果图像的光照变暗了,或者其他因素改变了,那个单阈值情况的二值化效果会大打折扣,其适应性很低。动态二值化是根据图片的灰度直方图,得到一个适合本图像的二值化阈值,显然这种方法得到的阈值是适合实时的图像的,但也随之带来了对整幅图像数组进行计算的要求,若调教不好,则会每处理一张图片耗费过长时间,影响整个程序的效率。

  二值化方法我们尝试了大津法和均值法求阈值。对比两种方法,大津法确实能够在光线均匀的情况下有很好的表现,能够很好提取出赛道特征,但是在赛道的某些部分由于光线或背景干扰,因该方法计算图像前景和背景求类内方差的原因,对灰度分布不均匀的情况下表现很差。且该方法是通过比较类内方差最小来获得最好的阈值,因此在没有优化过的该方法是耗时的且普适性较低的。而均值二值化是求取整个图像的像素点,进行相加然后求平均值获得的阈值,他的计算显然要节省很多,并且效果较优。若在过亮过暗背景下,可通过直接在求得均值后加或减OFFSET_AVE来进行调整即可。

  我们直接获取的图像大小为188120,经过处理压缩获得图像大小为8260。首先,是在对图像的保真影响很小的前提下,通过在原获取图像上每两个像素点取一个像素点进行压缩,压缩后的图像数组的减小可以提高程序的运行效率。其次,为了解决采集图像不正的问题,经过测试,82*60图像最为居中,在取列时进行缩减,来保证图像的对称,方便处理。

4.4基于摄像头的基本循线

  对于基本循线来讲,我们采取了最普通的搜线方式,通过上一行中点的列坐标向左向右进行搜线,寻找黑白色跳变点,找到左右边线后即可计算出新中点的坐标。我们通过当前中值上方为黑且没顶格的规则来判断有效行,该检测规则对于弯道与直道都适用,能够在一定程度上避免赛道外的图像对我们的处理造成影响。
  在方向环控制中,将求取的各行中线纵坐标与图像中值的偏差参与方向环PD的控制计算,通过系数的整定来确定舵机的转向打角。根据车模运行速度的不同,我们所取用参与计算的图像行也不同,低速运行的车模取用图像靠下部分的权重较大,在提速后,对于前瞻性的要求更高,则需要在偏差计算中将图像上方的权重增加,让车模在过弯时较早响应并转向。

▲ 图4.2 基本循线图示

4.5 基于摄像头的特殊元素处理

4.5.1 十字处理

  由于摄像头的高度较高,车模在以斜入十字的姿态下通过十字元素的时候可能会左转或右转,所以必须要对十字进行特殊处理。
  最初,对十字处理的方式比较粗暴,由于过十字时会先远处行两侧丢线,这时直接将近处未丢线行的中线直接复制到远处丢线行。当近处行都丢线时,在将远处未丢线行复制到近处行。但是,这就存在着一个问题,当十字接弯道时,十字中补到的线就会偏向一侧。因此最终这个方法没有被采用。

  另外一种则是在检测到十字标志位时,则去找到左上左下、右上右下的拐点,记录四个拐点的横纵坐标,将左右两侧的拐点分别拉线即可补出线来,经测试该方法效果较优。

▲ 图4.3 十字补线图示

4.5.2 车库处理

  车库元素的解决相对简单,只要在几行检测到多个跳变点即可。但是在本赛题内的赛道中会贴有AprilTag码,其在几行内的跳变点和斑马线的特征相似,误判两个赛道元素会导致在斑马线处停车、车模运行几周的计数错误等问题出现。由于斑马线相较于车库,车库的一侧无黑色边线,因此需要通过该特征进行区分,在车库的判断中加入有多个跳变点的一行的一侧丢线、一侧不丢线的判断条件加以限制。

4.5.3 三岔处理

  判断三岔赛道元素采用三个条件同时判断来避免和其他赛道元素误判,条件一是找到左下拐点和右下拐点,条件二是上方某两行左右皆丢线,条件三是图像上方黑点数大于某个值。只有这三个条件同时成立时,方进入三岔标志位。

▲ 图4.4 三岔判断条件图示

4.5.4 环岛处理

  我将整个环岛处理为一个状态机,该方案计算量较小,但是该方案为流程化方案,若在判断过程中有一个步骤意外出错都无法正确判断为环岛入口,将导致车模无法入环甚至冲出赛道。

▲ 图4.5 流程式状态机判断环岛识别示意图

  如上图,我们进入环岛的方案分为多个标志位进行判断,必须在上一个标志位判断完毕后再进入下一个标志位。

  以找到右环岛为例,找到右下拐点且找到弧形的拐点用来判断确认该元素为环岛,将找到的弧形拐点和右下的拐点记录下来,将两个点进行补线,并且标志位置1,开始进入状态机判断;当找到右下的弧形拐点且右上有拐点时,环岛标志位置2;当赛道宽度减小,左右两侧皆不丢线,环岛标志位置3;当检测到某几行左右两侧皆丢线时,标志位置4,在该标志位下,左边不再丢线且找到右上拐点时,将右上拐点与弧形拐点或者与屏幕右下的像素点进行拉线,在两侧边线恢复正常后,清标志位,出环岛。

4.6 基于OPENART mini的AI视觉任务实现

4.6.1 识别方案及技术路线

▲ 图4.6 机器视觉识别方案

▲ 图4.7 机器视觉技术路线

4.6.2 人工神经网络

数据采集及分析

  数据集通过OpenART mini采集,提供模型训练时所需要的训练集、验证集和测试集。

模型的搭建及训练

  完整的卷积神经网络先通过几个卷积层(conv) 和池化层(pool) 处理,然后再由几个全连接层(fc) 进行处理。

▲ 图4.8 神经网络搭建图示

  • 离线训练: 采用由Python编写的开源人工神经网络库Keras进行搭建模型,其是一个高级神经网络API,能够以Tensorflow作为后台运行。

  • 在线训练:EDGE IMPULSE平台

模型部署及验证

  将训练好的nncu或tflite模型通过OpenART mini运行验证,以实际效果来对模型进行最终的评估。根据实际效果进行调整模型设置相关参数。

4.6.3 像素统计分类器

  在国赛阶段,识别任务单独出来,所有的图片都是随机出现,需要预先判断图片属于哪一大类,然后才能够调取原来的识别模型。我们参考了卓大大的分类器方案,建立一个Apriltag、数字、动物和水果的分类器,抛开对于图片内的形态识别特征,转换使用基于像素的统计规律。我们将原来的RGB色彩空间转化为HSV色彩空间,然后计算图片的平均色饱和度值以及次级平均亮度值并选择合适的阈值来区分各类再进行调取神经网络模型,可以大大提高检测速度。

  根据实际调试,我们选择首先区分Apriltag,通过找到符合面积大小的矩形框,提取出边框宽度的像素进行统计,区分Apriltag码的黑色边框和其余图片的紫色边框;其次,我们通过提取图片矩形区域除边框外的图片内容的次级亮度平均值,来区分黑白图与彩色图片,便可以将待分类的图片内容分成数字和动物两大类。不过,由于某些图片在实际采集中对比度较低,导致仅通过这一个像素统计条件来判断会有一定概率误判,我们还加入了黑白像素个数比较等多个条件加以限制。

▲ 图4.9 HSV色彩空间

 

第五章 模主要技术参数


 

第六章


  报告中,在电路方面,我们以模块形式分类,分别介绍了最小系统、主板、电机驱动等模块的电路设计,在机械结构方面,介绍了云台结构、整车设计,在电控方面,介绍了对于赛道信息采集、图像处理、自动控制原理、机器学习等的算法与个人见解,凝聚着本组成员的心血和智慧。

  今年是我们第一次参加智能车竞赛,经过半年多的设计、制作和调试,在队员们的分工和配合下,我们最终顺利完成了智能车机械、电路、电控等方面的工作,并顺利的完成了比赛任务。

  赛后回想,我们精益求精为了提高车模运行速度、图片识别准度、机械结构稳定、电路合理设计做出了非常之多的努力——不断整定PID参数、学习机器学习相关知识、研读芯片手册等工作,于我们而言,无论最终结果如何,都是一段非常难忘的经历。

  在这几个月的备战过程中,场地和经费方面都得到了学校和学院的大力支持,在此特别感谢一直支持和关注智能车比赛的学校和学院领导以及指导老师张盛博。同时也感谢比赛组委会能够在今年这样一个特殊情况下成功举办比赛。今后我们也将继续追求卓越,精益求精,在第十七届智能车竞赛中更上一层楼。最后,在此对每一位组内成员的辛苦付出表示感谢。
 

考文献


[1] 卓晴 . 黄开胜 . 邵贝贝 . 学做智能车. 北京 . 北京航空航天大学出版社 . 2007年3月第一版
[2] 童诗白 . 华成英.模拟电子技术基础.北京 . 高等教育出版社.2015年7月第五版
[3] 闫石 . 王红 . 数字电子技术基础 . 北京 . 高等教育出版社 . 2016年4月第六版
[4] Stephen Prata . C Primer Plus . 姜佑,译 . 北京 . 人民邮电出版社 . 2020年2月第六版

附录A:源程序代码

1. /** 
2.  * @file        main.c 
3.  * @author      李秉蔚 
4.  * @date        2021-8-3 
5.  * @copyright   Copyright (c) 2021,W.PIE 
6.  */ 
7.  
8. #include "headfile.h" 
9.  
10. int main(void) 
11. { 
12.     DisableGlobalIRQ(); 
13.     board_init();   //用于初始化MPU 时钟 调试串口 
14.     Init_all();     //初始化各模块 
15.     UI_main();      //调参界面 
16.     EnableGlobalIRQ(0); 
17.     while(1) 
18.     { 
19.        car_run();   //跑车 
20.     } 
21. } 
22.  


● 相关图表链接:

■ 微信公众号留言

  • JR :卓大的配图。。17届危
  • 凉快 :8单说识别方面,玩的好像没我⑥
  • 廾匸 :最后一张图,是在暗示,独轮车?
  • 。。。 :共享独轮车组
  • 饼先生 :谢谢卓大的推送,我是首师大智能视觉的电控队员,很荣幸我们组的技术报告被推上公众号。由于知识匮乏、水平有限,这篇技术报告中有很多需要指正和不足之处,大家多多见谅。回首整个备赛过程,作为大一参赛的我们克服了种种困难,面对新问题新知识,我们一个又一个的去学习、解决、优化。特别是暑假期间,我们几乎每天从早到晚泡在实验室,真正享受着专注于一件事情所带来的快感,我们得到了不是躺赢的国二,对我们来讲已经心满意足。在此,我想感谢组委会为我们提供的平台,感谢学校的大力支持, 更要感谢wpie创新实验室的每一位学长学姐为我们提供的帮助,感谢指导老师张盛博对整个实验室的巨大付出,是实验室向上和求精的精神氛围激励着我们不断前进,也祝wpie越来越好!
  • 一只懒喵 :最后的配图是亮点
  • xiao_fang :硬件中规中矩,没有什么大的亮点,软件的话,我也不懂

以上是关于智能车竞赛技术报告 | 智能车视觉 - 首都师范大学 - 首师智能视觉的主要内容,如果未能解决你的问题,请参考以下文章

智能车竞赛技术报告 | 智能车视觉 - 温州大学- 春华秋实

智能车竞赛技术报告 | 智能车视觉 - 扬州大学 - 这辆盲车不吃水果

智能车竞赛技术报告 | 智能车视觉 - 上海工程技术大学 - 萌鸡小队

智能车竞赛技术报告 | 智能车视觉 - 武汉理工大学 - WHY

智能车竞赛技术报告 | 智能车视觉 - 太原工业学院 - 晋速-轩辕星

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