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

举报
tsinghuazhuoqing 发表于 2021/12/26 00:49:13 2021/12/26
【摘要】 简 介: 该智能车设计以 32位的 RT1064微控制器作为控制单元,通过 MT9V034数字摄像头传感器采集赛道信息,将采集到的图像进行处理;通过 OpenARTmini模块部署神经网络识别图...

简 介: 该智能车设计以 32位的 RT1064微控制器作为控制单元,通过 MT9V034数字摄像头传感器采集赛道信息,将采集到的图像进行处理;通过 OpenARTmini模块部署神经网络识别图像;另外通过编码器监测速度。同时采用 PID控制算法,控制智能车的舵机转向以及智能车的行驶速度闭环控制,使得智能车能够快速、稳定的行驶,从而实现自主寻迹的目的。

关键词 智能车PID算法RT1064摄像头

 

第一章


1.1背景意义

  全国大学生“恩智浦”杯智能汽车竞赛是以“立足培养、重在参与、鼓励探索、追求卓越”为宗旨,鼓励创新的一项科技竞赛活动。竞赛要求在规定的汽车模型平台上,使用指定公司的微控制器作为核心控制模块,通过增加道路检测传感器、电机驱动电路以及编写相应控制程序,制作完成一个能够自主识别道路以及相应任务的模型汽车。参赛队员的目标是模型汽车需要按照规则以最短时间完成赛道上相应元素的任务。

1.2报告内容及安排

  在此次比赛中,本组使用竞赛统一提供的竞赛车 C车模,采用恩智浦半导体公司的 32位微控制器 RT1064DVL6A作为核心的控制单元,自主设计系统的控制方案。其中融合了摄像头的图像采集与处理、电机速度闭环控制以及视觉识别,最终完成了一套能够自主识别行驶路线、进行图像识别的完整系统。

  在这份报告中,我们主要阐述了整车系统的整体方案、机械结构、硬件设计、以及软件算法等方面,详细说明了我们设计过程中的思想与创新。在准备比赛的过程中,我们翻阅了大量的专业资料,反复的对各种算法模型的参数进行调试,每个队员都为本次智能车竞赛付出了艰苦的汗水。
 

第二章 能车方案设计


  章主要对模型车的设计制作的主要思路以及实现的技术方案概要说明,在后面的章节中将系统的分为机械结构、硬件电路、控制算法、视觉识别算法等对智能车系统进行深入的介绍分析。

2.1系统总体设计方案

  根据竞赛规则相关规定,我们在智能车制作过程中,主要做了如下设计:

  1、硬件平台的搭建:主要包括编码器的安装,摄像头的安装,舵机云台的安装, ICM20602陀螺仪加速度计传感器安装等。

  2、软件平台的搭建:系统初始化模块,传感器识别模块,控制模块,驱动模块,无线调试模块等组成,对车模进行调试。

  3、控制算法的研究:通过舵机的方向环、电机的速度环以及双电机的差速,三组控制系统结合控制车模在赛道上速度的控制以及实时的转向控制。

  4、视觉识别算法的研究:数据集的制作,深度模型搭建,模型量化,模型部署。

2.2系统总体方案设计图

 

第三章 能车机械结构设计


3.1车模信息

  根据第十六届智能车竞赛规则对智能视觉组的要求,使用 C车模完成任
  务,细则中对车模尺寸没有加以限制,我们在车模重心稳定的情况下,安装
  了各个传感器及其他器件。

3.2各大传感器的安装

3. 2.1编码器的安装

  编码器直接安装在车模两个车轮附近自带的孔位上,通过齿轮之间的传动,测量当前车轮转速。

▲ 图 3.1车模安装的两个编码器

▲ 图 3.1车模安装的两个编码器

3.2.2陀螺仪的安装

  将 ICM20602采集到的陀螺仪与加速度数据通过软件进姿态解算可以得到当前车模的俯仰角。由于赛道中有坡道的存在,为了防止车模在运行时出现飞坡的现象,我们采取上坡减速的策略。因此我们安装 ICM20602时需要尽量靠前,尽早的感应到坡道的出现,做出相应的速度决策。

▲ 图 3.2车模安装的陀螺仪

▲ 图 3.2车模安装的陀螺仪

3.2.3摄像头的安装

  我们车模的寻迹任务主要通过 MT9V034数字摄像头实时采集赛道图像信息完成,摄像头的安装必须要稳定且合理。我们使用一根粗碳素杆用于安装摄像头,由于在车模运行时可能会出现抖动的情况,且摄像头的安装位置比较高,会导致粗碳素杆的晃动,影响所采集的图像质量。因此我们再使用两个细碳素杆辅助固定。

▲ 图 3.3车模安装的摄像头

▲ 图 3.3车模安装的摄像头

3.2.4电磁传感器的安装

  在我们车模运行的过程中,电磁传感器只用于辅助转向,对于前瞻没有很严格的要求。为了避免对摄像头采集的图像的影响,将电磁传感器只安装在舵机的正前方的一小段距离。

▲ 图 3.4车模电磁传感器的安装

▲ 图 3.4车模电磁传感器的安装

2

  在车模运行时,遇到 AprilTag二维码或者三岔路口的数字标靶需要停车对标靶中的图像进行识别,标靶的位置有三种情况,分别是车模正前方、左侧与右侧。我们只采用一个 OpenARTmini进行图像识别,因此我们安装了一个舵机云台进行 OpenARTmini摄像头的转向。

▲ 图 3.5舵机云台的安装

▲ 图 3.5舵机云台的安装

3.3车模轮胎的表面处理

  为增大摩擦力我们在竞赛规则允许的范围内,对轮胎进行了打磨等方法,增大轮胎摩擦力可以提高轮胎的抓附力,防止车模在高速情况下打滑,同时用硅像胶粘合轮胎与轮箍的外接触处,以防止转向时出现轮胎和轮毂脱离而失去抓地力的情况。

▲ 图 3.6轮胎处理后

▲ 图 3.6轮胎处理后

3.4 PCB板的安装

  我们使用到的 PCB板主要有三个,主板、驱动、还有运放,在布局是,由于考虑到重心问题,在安装时把 PCB板尽量靠中心平衡位置,以此来改变车的重心问题,从而使得小车的重心尽量靠中心,有利于小车打角,也不会给转向轮上加太多的重量,造成一种阻力状态。

▲ 图 3.7 PCB安装

▲ 图 3.7 PCB安装

 

第四章 能车硬件设计


  能车硬件电路部分主要的包括:主控模块、电源模块、传感器模块、驱动模块以及其他周边调试模块。各模块的总体设计原则是:紧凑易于拆换、稳定可靠。但根据各模块的不同,又有不同的设计要求,本章对各个模块的设计进行详细描述。

4.1主控制器模块

4.1.1 RT1064核心板

4.2电源管理模块

  硬件电路的电源由 7.2V的蓄电池提供,而由于电路中不同模块的工作电压和电流容量各不相同,所以需要将电池电压转换成各个模块所需电压。

  主控板采用了外设与 MCU分开供电的方案,MCU由单独一片 SY8205FCC供电。因此,在电池电压以及 5V供电正常的情况下,外设用电的变化不对最小系统的供电产生影响,保证了其电源的稳定可靠。SY8205FCC稳压电路如图 4-2所示

4.2.1 5V稳压电路

  SY8205FCC稳压电路如图 4.2.1所示。

▲ 图 4.1 SY8205FCC

▲ 图 4.1 SY8205FCC

4.2.2舵机可调稳压电路

  AS1015可调稳压舵机电源如图 4.2.所示。

▲ 图 4.2 AS1015

▲ 图 4.2 AS1015

4.2.3 12V升压电路

  驱动电路中需要为 HIP4082提供 12V供电电压。

▲ 图 4.3 MC34063

▲ 图 4.3 MC34063

4.3电机驱动电路

  电机控制从控制方法上可以分为开环控制和闭环控制两种。开环控制在用法上比较简单。

  通常情况下的电机转速只需考虑输出,没有反馈,但是其缺点是速度控制的精度比较低,不能适应不同的赛道环境。另外一种闭环控制,电机的速度控制信号输出由需要的速度和电机的实际转速二者决定,即需要对电机的实际转速进行采集和反馈。这种做法的好处是控制精度比较高,对赛道的适应性会好很多的闭环控制,是通过软件的自动控制算法实现的,需要将电机的转速反馈给 RT1064,通过软件上的自动控制算法,由需要的速度同实际的速度的偏差,给出纠正值,达到对速度的稳定控制。这种方案在电机实际速度的采集上使用了编码器。编码器一个时间周期内输出的脉冲数表征了电机的实际转速。

  在电机驱动上,我们用 MOS管作为分立元件搭建了 H桥驱动电路,如图 4.3。通过逻辑设计,可以让电机处于多种模式下工作,经过赛道试验,电机的加减速效果好,满足要求。

▲ 图 4.4 H桥电机驱动电路

▲ 图 4.4 H桥电机驱动电路

▲ 表

▲ 表

4.4运放电路

  使用 OPA2350作为运算放大器,将电感两端产生变化感应电动势进行两级运放,由原来的几百 uV放大至微处理器 ADC能够识别的电压范围 1-2V,因为放大后的电压还是变化的交流,所以需要对该放大后的电压半波整流和滤波,最终得到一个直流模拟电压信号,并且该电压信号的大小会随着电感与寻迹导线之间的距离减小而增大。

  最终设置多个电磁传感器并固定小车上,产生多个模拟信号,再输入到 RT1064的 ADC引脚中,因而能够得出各个电磁传感器与寻迹导线的位置关系,如通过算法,则能计算出小车与寻迹导线的位置关系。

▲ 图 4.5 OPA2350运放电路

▲ 图 4.5 OPA2350运放电路

 

第五章 制软件系统设计


  们制作的智能车系统采用 MT9V034数字摄像头进行赛道元素的识别,使用电磁传感器辅助部分任务的控制,对采集到的图像与电磁传感器数据进行处理便是整个转向控制系统的核心内容,需要足够健壮的算法让车模能够按照规则要求运行不同的元素。在智能车的转向控制与速度控制上,我们使用传统的PID控制算法,在舵机转向上采用 PD算法进行控制,电机速度采用 PI算法进行控制。经过不断的调试,达到了比较理想的运行效果。

5.1赛道边界提取及处理

5. 1.1原始图像的特征

  摄像头的镜头选用 130度无畸变镜头,在保证足够的广角下,同时采集到的图像不会发生畸变,程序上可以减少图像去畸变的运行时间。在保证图像信息完整的情况下,我们选择尽可能的缩小图像的尺寸,以减小图像处理的时间。经过粗略调试后,采集的图像尺寸我们设置为 120*80,即宽 180个像素,高 80个像素,此时的图像比较完整,且足以用于路径的规划与赛道元素识别,原始图像如图 5.1~5.6所示。

5.1.2图像二值化

  我们将 MT90V34数字摄像头采集到灰度图像,通过大津法进行图像的动态二值化处理。当白天光线较强时,我们采取调节摄像头的曝光以适应当前环境的光线影响,图像二值化的稳定是提取赛道特征的决定性因素。

5.1.3赛道识别及处理方法

  在本届比赛当中,主要赛道类型为圆环、三岔路口、十字路口以及车库,对于智能视觉组而言还会出现 AprilTag码,它对于图像的边界提取有一定的影响,此处也需要进行特殊处理。我们所处理的是灰度图二值化后的图像,并没有对图像进行逆透视变换,没有逆透视变换的图像找某些元素的特征相对来说会比较困难,以三岔路口与斜入十字为例,对比效果如图 5.7~5.10所示。但直接处理原始图像也是有方法可寻的,下面介绍一下我们的大致方案。

5.1.4图像边界提取

  边界提取的基本思想如下:

  1 由近到远遍历每一行的图像信息,从而确定图像的左右边界,首先将最近的一行图像信息从左至右完整遍历一次确定出右边界,再由右至左遍历出左边界。

  2 在确定好首行的边界后,对左右边界取平均作为中点。后继的每一行图像信息都将以上一行的中点作为当前行的边界遍历起始点,分别向两边遍历图像,从而确定出左右边界,直至判断出当前行为截止行为止。

  3 对于某些特殊元素来说,单单利用左右边界的信息在某些情况可能会出现元素之间的误判现象,例如斜入十字与三岔路口。于是我们还提取了顶部的边界信息,即对图像的每一列由下至上的遍历一次图像的边界。

  处理结果如图 5.11与图 5.12所示。

  5.2赛道元素识别赛道元素的辨识是保证车模按照规定路线正常运行的前提,对于一些特殊元素不仅需要正确识别,还要保证车模在高速运行时车模的转向控制稳定。因此赛道元素正确识别的情况下,对车模路径的优化也是必不可少的。总之,图像处理在整个运行过程中属于核心要素。

5.2.1圆环处理

  圆环的识别,相对其他元素特征比较明显,几乎不会出现误判的情况。摄像头处理圆环时,其前瞻与电磁传感器相比会长很多,可以提前预判到圆环的出现,当入环偏慢时,速度上可以做相应的决策。对于图像而言,圆环的特征为一侧是长直道,另一侧是一段圆弧。圆弧侧的边界特征便是会先出现一段丢线,随后才是一段圆弧,这个特征在其他元素上几乎是不会出现的,图像处理结果如图 5.13与图 5.14所示。

5.2.2三岔路口

  三岔路口是本届的新元素,智能视觉组在遇到含有数字标靶的三岔路口时,
  需要停车识别数字,奇数行驶右侧道路,偶数行驶左侧道路。在车模高速运行时,刹车需要较长的一段记录缓冲,因此三岔路口的预判显得至关重要。对于三岔路口的提前预判就需要使用到前面所提到的顶部边界,如图 5.15的蓝点所示,顶部边界会呈现一个外凸的特征。同样的在三岔路口转向时,也可以采用此特征进行补线的操作,如图 5.16所示。

5.2.3十字路口

  在车模运行速度不高时,十字路口可以选择不进行处理,直接使用各行中点的加权平均即可比较稳定的驶过。但是在高速运行时,可能因为某些情况导致车模转向有点偏离轨道,使得图像中点不稳定,使车模冲出赛道,因此需要对十字路口路段进行补线的操作。正入十字路口时图像特征比较明显,左右边界都存在连续的丢线情况,找到相应的拐点进行连接即可,如图 5.17所示。处理起来相对困难的是斜入十字,此时的图像与三岔路口的边界信息相似度比较高,会出现误判的情况,因此我们需要引起其他条件进行约束,我们采取的是计算顶部边界的外凸的两条边的斜率,如图 5.18所示,根据橙线与蓝线两者的斜率情况可以将三岔路口与斜入十字所区分,三岔路口时这两条线可以参考图
  5.16。

5.2.4 AprilTag二维码

  在智能视觉组竞赛中,赛道中心会出现 AprilTag二维码,与遇到二维码时车模需要停车,根据二维码标签所表示的数字,赛道左侧或右侧,会放置含有水果或者动物的标靶,根据图片的内容不做出相应动作。我们所使用的机器学习模块处理图像的帧率比较低,如果通过其来识别二维码,车模很可能无法及时刹车,冲出规定的二维码前后 50cm的范围。故我们采用 MT9V034摄像头提前预判赛道当中的二维码,尽早的做出减速以及刹车的动作。识别方案是利用顶部边界的跳变特征来进行处理的,由于远处的光线影响,二维码图像可能会偏白,在图像全局二值化后,二维码特征并不是很明显,我们采取对中线上的图像进行区域二值化处理,效果如图 5.19~5.21所示。

5.2.5车库

  在车模运行完成两周之后需要回到车库当中,车库处含有相间分布的黑胶带以及强磁铁,采用干簧管入库的方案,在车模高速行驶时需要急刹车与倒车,处理起来相当麻烦,相对来说也比较影响成绩,而且还对寻迹有一定的影响。因此我们通过图像的特征来进行入库操作。车库的识别我们并没有采取提前预判的思想,而是通过对近处的图像进行处理,当出现车库的特征时,直接控制舵机转向入库。车库特征的识别方案是先找到车库侧的边界跳变,然后再逐行扫描图像信息,分析图像的黑白跳变次数。

5.3电磁数据处理

5.3.1数据归一化

  为了车模能够使用不同的信号源与赛道场地,需要对电磁传感器采集到的数据进行归一化处理,即将其转化为 0~1之间的数值。其处理方法是记录下来电磁传感器在赛道上采集的最大值与最小值,将采集到的值与最小值比上最大值与最小值的差,将此结果作为赛道信息。

5.3.2电磁方向算法

  当车模在赛道的正中心时,两个位置对称的电磁传感器采集到的数据近乎相同,当车模有偏移赛道时,两颗电磁传感器采集到的值会有所不同,此时距离电磁线较近的电感线圈感应的电动势偏大,另一端偏小。根据这个偏差我们可以将车模的位置进行回调,可以采用传统的差比和算法,将其结果作为偏离赛道的程度,即两个电磁传感器的差值比上它们的和值,但这种差比和的处理方法得到的偏差结果并不是线性的,如图 5.22所示。故在传统的差比和上进行一定的改进,差值部分为先将两个电磁数据开平方再做差,和还是两个电感数据之和,这样是效果会有一定优化,如图 5.23所示。图 5.22与图 5.23的数据为将车模从赛道中心的左侧移动到右侧的实时采集数据,经过处理后的结果,由于人工移动时存在一定误差曲线并没有完全对称,图中横坐标对应着车模与赛道中心的偏移情况,纵坐标为差比和的结果。

5.3.3电磁算法的应用

  在车模的方向控制中,以摄像头的数据为主,电磁只起一个辅助作用,当识别到 AprilTag二维码时,车模需要刹车并识别侧面的标靶,在识别标靶时,如果出现了水果,我们的方案需要前进或者后退车模,使得激光正射标靶的中心,在前进或者后退的过程中,由于图像中含有 AprilTag二维码,使图像信息不稳定,因此采用电磁算法控制舵机转向,让车模保持在赛道中心。其次是三岔路口处,当三岔路口出现标靶时也需要刹车,停下来识别数字,在刹车后,车模停下来的距离可能太靠近数字标靶,识别结束后,转向时可能会冲出赛道。因此通过放置在中间的电磁传感器数据进行三岔路口的位置定位,识别数字的过程中,缓缓将车模运行到一定的范围内。

5. 4控制算法

5. 4.1控制算法主要理论

  在实际工程中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称 PID控制,又称 PID调节。
  PID控制器问世至今以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。

  当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用 PID控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用 PID控制技术。

  PID控制,实际中也有 PI和 PD控制。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。其中我们智能车控制系统中舵机转向的方向环采用是 PD算法控制,电机的速度环使用是 PI算法。

5.4.2舵机转向的 PD控制算法

  在舵机系统的闭环控制中,我们采用的是位置式的 PD控制算法,所以我们需要获取车模在赛道上的偏差,这个偏差通过实际的调试,可以将每一行的左右边界取平均值作为当前行的中点位置,然后对每一行的中点值进行权重的分配,前一段图像的权值大,靠近车模处的权重小,这样得到的偏差值可以使车模在高速行驶下有一个很好的转向性能。

  在初期低速调试时,只采用一组 PD参数可以让车模稳定行驶在赛道上,但随着速度的上升,只通过固定的 P值运行时会出现直道振荡太多或者过弯转向不及时的问题,因此我们采用动态 P值算法。

  其中 a为需要调节的常数,error是当前位置与赛道中心位置的偏差值,b为 P的基准值。Kp参数的曲线如图 5.25所示。

  图 5.25动态 Kp曲线当 P值整定好时,随着速度的提升,在过弯之后的直道可能会出现抖动的情况,此时逐渐将 D值调大,提高动态响应的能力,调至满意的效果。经过不
  断的调试,最终我们确定了一组比较理想的参数。

5.4.3电机速度的 PI控制算法

  在速度环的控制上,闭环控制是非常有必要的,开环容易受外界的各种环境因素所影响,如摩擦力、电池电压等。同时由于 C车模采用的是双电机提供动力,电机的差速在一定程度上可以提供差速辅助转向的效果,对于车模的转向有一定的帮助。我们的电机速度控制思想方法是在直道上加速行驶,过弯时减速同时引入差速,电机的差速采用位置式 PD算法,输入量为当前的赛道偏差。

  在电机速度环上我们采用的是增量式 PI算法,调试过程中先整定 I值,当电机的响应速度达到我们想要是结果时,再逐渐整定 P值。经过不断调试,最终确定好了一组在车模寻迹时所使用的参数。

  在智能视觉组的竞赛中,由于会出现三岔路口的数字标靶与 AprilTag二维码,这两处都需要车模急停。当采用之前寻迹时的 PI参数时,我们发现车模需很长的一段距离才能将车模停下来,导致视觉任务无法完成。因此对于电机的速度 PI控制,我们采用分段的形式进行处理,当需要急刹车时,电机 PI控制使用另一组参数控制。

  5.5图像识别部分本届比赛图像识别任务分别为动物、水果、数字、AprilTag码并根据识别的结果进行相应的动作。

5.5.1 AprilTag二维码识别

  因为车模速度过快再加上 OpenMV RT模块处理图像的帧率比较低,如果通过 OpenMV RT模块来提前刹车,车模很可能无法及时刹车,冲出规定的二维码前后 50cm的范围。故我们先采用 MT9V034摄像头提前预判赛道当中是否出现二维码,提前做出减速以及刹车的动作。然后减速慢行并利用 OpenMV RT识别地上的的 AprilTag码,识别程序是利用 Open MV库函数中的image.find_apriltags。

5.5.2数字识别识别

  在数字识别时我们最开始时采取逐飞的教程,但是我们在测试过程中发现模型对图像的环境非常苛刻,需要合适的曝光准确率才能上去。后面我们采用经典模型 Lenet-5。Lenet-5是一种用于手写体字符识别的非常高效的卷积神经网络。当年美国大多数银行就是用它来识别支票上面的手写数字的,它是早期卷积神经网络中最有代表性的实验系统之一。

  我们用的数据集是一个非常有名的手写体数字识别数据集——MNIST。但是MNIST里面的图片是黑白的,于是我们在采集图像的时候使用平均自适应阈值滤波,将图像转为黑白(滤波图像如图 4所示)。将图像转为黑白带来非常多优势。首先二值化之后图像只剩下黑白,在找框时识别速度更快并且不会出现误判。其次图像为黑白模型需要处理的信息变少,模型的大小也相应减小许多(数字识别模型结构如图 5所示),OpenART的识别速度也变快了不少。而且最重要的时用的成熟的模型,模型准确率也有保障。准确率如图 6所示。

5.5.3动物水果识别

  根据比赛要求在识别到水果需要激光打靶而且激光落点需要在指定位置,所以需要对标靶进行定位。我们采取的方法是通过框的中心与整个图像的中心之差,来判断车模与图像的相对位置。并控制车模做相应的操作进行激光打靶。

5.5.4数据增强

  在深度学习中,神经网络需要大量的参数,许许多多的神经网路的参数都是数以百万计,而使得这些参数可以正确工作则需要大量的数据进行训练。所以要求样本的数量要充足,样本数量越多,训练出来的模型效果越好,模型的泛化能力越强。但是在这次比赛中,样本较少每种图片在 100张左右 0面对这种情况我们需要对样本做数据增强,来提高样本质量。数据增强让有限的数据产生更多的数据,增加训练样本的数量以及多样性(噪声数据),提升模型鲁棒性,防止过拟合。

  我们根据实际情况,使用特定的数据增强参数,如图 7所示

▲ 图 5.29数据增强参数

▲ 图 5.29数据增强参数

5.5.5模型的选择

  VGG19为 ILSVRC 2014年第二名,它探索了卷积网络深度和性能,准确率之间的关系。通过反复堆叠 3x3卷积和 2x2的池化,得到了最大 19层的深度。 VGG19模型大概 508M,错误率降低到 7.3%。VGG模型不复杂,只有 3x3这一种卷积核,卷积层基本就是卷积-relu-池化的结构,没有使用 LRN。在测试过程中使用的是VGG11模型大小下降了许多,虽然在电脑上识别正确率比较高,但是部署在单片机上时因为模型大直接卡死。

  ResNet由微软提出,并夺得了 2015年 ILSVRC大赛的冠军。它以 152层的网络深度,将错误率降低到只有 3.57%,远远低于 5.1%的人眼识别错误率。它同样利用全局平均池化来代替全连接层,使得 152层网络的模型不至于太大。网络中使用了 1x1 3x3 5x5 7x7等不同尺寸的卷积核,从而提高卷积的多样性。ResNetV1_152模型大小为 214M。在测试过程是使用的是 ResNet32模型,它相对 VGG11来说小了许多,但是这两种模型设计之初都是追求准确率,对模型的大小以及参数量都没有进行优化。所以这两种模型再怎么进行量化裁减在部署到单片机是还是避免不来运行变慢。

  MobileNe是 2017年 Google发布的网络架构,正如其名,它是一种模型体积较小、可训练参数及计算量较少并适用于移动设备的卷积神经网络。旨在充分利用有限的计算资源,最大化模型的准确性,以满足有限资源下的各种应用案例,是部署至边缘侧常用的模型之一。MobileNe是专注于移动端或者嵌入式设备中的轻量级 CNN网络,所以他在性能与大小方面都比较符合我们的需求。我们根据需求对 MobileNe进行裁减。首先将输入层改成 64643,然后将全连接层替换成全局平均池化。这样大大的减少里计算量,让模型变得更小了,准确度也有一定的保证。

 

第六章 发平台介绍


6.1开发工具

6.1.1 Keil5

  程序的开发是 keil5下进行的,包括源程序的编写、编译、链接和下载。Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的 Keil Elektronik GmbH和美国德克萨斯的 Keil SoftwareInc。Keil公司制造和销售种类广泛的开发工具,包括 ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-timekernel)。有超过 10万名微控制器开发人员在使用这种得到业界认可的解决方案。其 Keil编译器自 1988年引入市场以来成为事实上的行业标准,并支持超过 500种 8051变种。

▲ 图 6.1 keil5开发工具

▲ 图 6.1 keil5开发工具

6.1.2 PyCharm

  数据集的制作与图像识别模型的开发是在 PyCharm平台上完成的。PyCharm是一种 PythonIDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用 Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。PyCharm是由 JetBrains打造的一款 PythonIDE。同时支持 Google AppEngine,PyCharm支持 IronPython。这些功能在先进代码分析程序的支持下,使 PyCharm成为 Python专业开发人员和刚起步人员使用的有力工具。

▲ 图 6.2 PyCharm开发工具

▲ 图 6.2 PyCharm开发工具

6.1.3 OpenMV IDE

  在图像识别过程中模型的部署是利用 OpenMV IDE进行的,OpenMV IDE是用来编程 OpenMV RT和 OpenART的工具。它具有一个由 QtCreator支持的功能强大的文本编辑器,一个帧缓冲器查看器,直方图显示器,以及一个用于 OpenMV调试输出的集成串行终端。

▲ 图 6.3 OpenMV IDE开发工具

▲ 图 6.3 OpenMV IDE开发工具

6.2调试过程

6.2.1C++图像上位机

  由于采用屏幕观察图像数据的方式调试,有时候并不是非常直观,而且屏幕的显示内容有限需要同时显示大量数据与图像时,会出现屏幕空间不足的问题。因此我们采用 VS2017的 C++开发作为辅助的图像调试工具。

  在调试图像处理算法时,有时会经常需要通过重新下载程序的方式来调整图像处理部分的参数,这样调试起来非常不够便利,屏幕所显示的图像也比较小,不如电脑看的直观。因此我们在 VS2017的 C++环境下搭建了一套 PC端调试图像的工具,基于 OpenCV与 CVUI库制作了一套调试界面,在 C++的环境下编写图像处理算法,这样可以避免重新给 MCU下载程序的不便。在 PC端调试完之后,直接移植到我们的 MCU主控当中。调试的过程图像可以是静态的也可以是动态的,我们可以将 MCU所采集到的图像信息发送至电脑上保存,通过调试工具将图片逐一张的切换,如果需要动态实时的采集当前的图像并处理,我们可以调用 C语言<Windows.h>接口中的串口函数,MCU将实时采集的图像通过无线转串口发送至电脑,然后在调试工具中处理图像。

6.2.2串口调试助手

  在调试的过程中,我们经常需要查看当前车模在赛道上运行的实时数据,我们还用了 VOFA+上位机辅助调试软件,将小车的实时数据反馈给上位机,并将数据绘制成图形并显示各个变量的实时变化,同时我们还能通过 VOFA+中的各类控件对车模的参数进行调整,对车模的调试非常便利。这也对排除程序的错误、优化控制策略以及参数整定有极大的帮助。

▲ 图 6.5 VOFA+串口调试助手

▲ 图 6.5 VOFA+串口调试助手

 

第七章 能车基本参数


7.1基本参数

  • 总体重量:2.3Kg
  • :385mm
  • :200mm
  • :320mm

7.2电路参数

  • 电路功耗:17W
  • 电容总容量:1600uF

7.3传感器种类以及个数

  • 加速度和陀螺仪传感器:1个
  • 编码器:2个
  • 电磁传感器:5个
  • MT9V034数字摄像头:1个
  • OpenARTmini摄像头:1个
  • OpenMVRT摄像头:1个

7.4除了车模原有的驱动电机、舵机之外伺服电机个数

  我们没有使用除了车模原有的驱动电机、舵机之外伺服电机。

7.5赛道信息检测精度、频率

  • 赛道信息检测精度:2mm
  • 频率:5ms

 

第八章


  这份报告中,包含了我们组半年多时间以来的调试思路与方法,以及硬件、机械与软件等方面的设计。在本次智能车竞赛当中,自竞赛规则发布以来,我们组在此期间不断研究,深思熟虑与反复测试后,才最终确定了一套完整的方案。

  一个完整的智能车是软件与硬件的结合,目标是在最短时间稳定高效的完成比赛。从车模的搭建、车模的整体机械结构设计,到硬件电路的设计、PCB板的制作和设计,再到舵机的控制算法、双电机的差速控制算法、采用摄像头作为传感器、图像识别等。总之,从电路的设计到车模的搭建,从到程序的编写到实际的调试,我们遇到了很多困惑和难题,也增强了许多技能和能力。每一步我们都查阅了大量的资料作为参考。在这个过程中,大家学到了很多,积累了很多,能够一步一步走下来,靠的是整个团队的协作和团结。大家学到了很多,提高了很多。无论如何,这段一起做车经历终将让我们回忆铭记。

 

考文献


[1]邵贝贝 .嵌入式实时操作系统 [LC/OS-Ⅱ(第 2版)[M].北京.清华大学出版社. 2
[2]邵贝贝 .单片机嵌入式应用的在线开发方法 [M].北京.清华大学出版社. 2004
[3]王晓明 .电动机的单片机控制 [M].北京 .北京航空航天大学出版社. 2002
[4]臧杰,阎岩 .汽车构造 [M].北京 .机械工业出版社. 2005

[5]安鹏,马伟. S12单片机模块应用及程序调试 [J].电子产品世界 . 2006.第 211期. 162-163
[6]童诗白,华成英.模拟电子技术基础 [M].北京 .高等教育出版社. 2000


● 相关图表链接:

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/120104510

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。