简 介: 本文根据第十六届智能车大赛的要求,经过在实验室的不断调试,研究并设出了拥有自主循迹功能及数字和物种识别功能的以摄像头传感器为主导的 AGV实体。在循迹算法上,为了加快小车对赛道信息的采集速度,本文提出了一种直接处理图像灰度值的方法:对获取到的图像每一行进行遍历,并求得每一行中相邻像素点灰度值的差比和值,当大于设定阈值时判断为边线,提取到左右边线后停止此行列遍历而继续下一行的遍历,选择使用多行中线进行加权平均求和作为有效中线,最后使用位置式 PID算法作为小车转向控制器,使用电感传感器作为特殊元素小车循迹的辅助传感器。在速度控制上,本文选择采用增量式 PID控制进行调控,可以达到不错的效果。在标识识别上,本文使用 Keras搭建 LetNet-5神经网络模型在 Tensorflow框架中进行训练,并使用 Python网络爬虫爬取物种图片扩充数据集,最后由 NNCU工具对网络模型权重进行量化并生成 nncu文件,把网络模型加载到 OpenART中并在单片机中运行。系统主控和 OpenART之间由 UART进行通信以协调所有赛道元素。本文对智能循迹小车边线提取提供了解决方案,并对图像识别与自动循迹融合提供了参考。

关键词智能循迹小车PID深度学习传感器OpenART

学校:中南林业科技大学
队伍名称:弃车人队    
参赛队员:唐耀琛     
王武平     
文益      
带队教师:蒋淑霞     

第一章 引言


  全国大学生智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以 “立足培养,重在参与,鼓励探索,追求卓越 ”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能 ,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。该竞赛由教育部高等教育司委托教育部高等学校自动化类专业教学指导委员会主办,负责指导全国范围内的竞赛工作。

  参赛选手须使用竞赛秘书处统一指定并负责采购竞赛车模,采用指定的微控制器作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等,完成智能汽车工程制作及调试,于指定日期与地点参加场地比赛。参赛队伍之名次(成绩)由赛车现场成功完成赛道比赛时间为主,技术方案及制作工程质量评分为辅来决定。

  学校积极响应教育部关于加强大学生的实践、合作精神和创新能力的培养的号召,成立智能车队伍参加比赛。我们积极组队参加第十四届 “恩智浦 ”杯全国大学生智能车比赛,多方搜索资料。本技术报告主要包括机械系统、硬件系统、软件系统等,详尽地阐述了我们的设计方案,具体表现在硬件电路的创新设计以及控制算法的独特想法。

第二章 系统整体设计


2.1.系统概述

  智能车系统整体分为基础循迹和智能识别两大部分。基础循迹部分为采用总钻风摄像头拍摄赛道,输出 8位灰度信号及行场像素中断,主控制器检测各中断信号进行图像采集,同时使用舵机和电机对于车模姿态和行进进行控制,并通过编码器等不同传感器获取车模姿态,进行闭环控制。智能识别部分采用 OpenARTmini识别二维码、数字、动物、水果。

▲ 图 2.1系统框图

2.1.1.主控制器模块

  使用恩智浦公司的 RT1064单片机作为智能车系统的主控制器,该单片机带有1024KB的 RAM,可以放更多的数组或者变量,在做更复杂的算法时可以满足多大 RAM的需求,GPIO速度高达 150M

2.1.2.赛道采集模块

  使用逐飞科技提供的 MT9V03X(总钻风)摄像头作为光电传感器进行赛道图像采集,该摄像头通过一块 51单片机与主控制器进行通信,进而配置摄像头的相关信息,通过使用场中断触发主控制器开始图像采集、像素中断控制采集速度。

2.1.3.姿态传感器模块

  姿态传感器分为速度传感器和角速度传感器,其中速度传感器使用龙邱科技提供的 mini512线编码器,用于对于电机进行闭环控制;而角速度传感器用于实时掌握车模的姿态,能够有效地控制车模与地面的状态,更有效地实施闭环控制。

2.1.4.伺服器(舵机)控制模块

  本系统装有两个舵机,一个舵机使用比赛规定的 Futaba S3010舵机进行车模转向控制,另一个舵机为 DG995数字舵机,用于 OpenARTmini方向控制

2.1.5.电机控制模块

  使用比赛规定的 RN-380电机进行车模的速度控制。

2.1.6.智能识别模块

  智能识别模块分为两部分,一部分为识别,另一部分是执行。识别部分采用的是逐飞科技的 OpenARTmini摄像头,用于特定位置的图像识别。执行部分包含了舵机和激光

2.2.整车姿态

▲ 图 2.2整车布局

  1)舵机位置在前,立式安装,既保证响应速度又大多数符合阿克曼转角原理;
  2)电池用扎带固定在后方,平衡重心;
  3)摄像头通过碳杆、金属支架和 AB胶固定在舵机上,有效的采集赛道信息;

第三章 机械系统设计及实现


3.1.前轮的定位

  前轮定位对赛车的速度有很大的影响,虽然车模比较小,但是前轮定位作用还是不容忽视的。轮定位的内容有:主销后倾、主销内倾、前轮前束。

3.1.1.主销后倾

  转向轮(前轮)围绕主销进行旋转,前轴的轴荷通过主销传给转向轮,具备这两点的就叫做主销。主销向后倾斜,主销轴线与地面垂直线在赛车纵向平面内的夹角称为主销后倾。如图所示:

  前轮重心在主销的轴线上,由于主销向后倾斜使前轮的重心不在车轮与地面的接触点上,于是产生了离心力,主销后倾形成的离心力,可以保证汽车直线行驶的稳定性,还可以帮助车轮自动回正。

3.1.2.主销内倾

  主销在横向平面内向内倾斜,主销轴线与地面垂直线在赛车横向断面内的夹角称为主销内倾角。主销内倾角也有使轮胎自动回正的作用,当汽车转向轮在外力作用下发生偏转时,由于主销内倾,则车轮连同整个汽车的前部将被抬起一定高度,在外力消失后,车轮就会在重力作用下力图恢复到原来的中间位置。但主销内倾角不宜过大,否则在转弯时轮胎将与赛道间产生较大的滑动,从而会增加轮胎与路面间的摩擦阻力,使转向变得沉重,同时会加速轮胎的磨损。经过反复的试验,我们大约主销内倾了 3°。

3.1.3.前轮前束

  通过车轮中心的汽车横向平面与车轮平面的交线与地面垂线之间的夹角,称为前轮外倾角。前轮外倾角是前轮的上端向外倾斜的角度,如果前面两个轮子呈现 “V”字形则称正倾角,呈现 “八”字则称负倾角。前轮外倾可以抵消由于车的重力使车轮向内倾斜的趋势,减少赛车机件的磨损与负重。前轮前束是前轮前端向内倾斜的程度,当两轮的前端距离小后端距离大时为内八字,前端距离大后端距离小为外八字。由于前轮外倾使轮子滚动时类似与圆锥滚动,从而导致两侧车轮向外滚开。但由于拉杆的作用使车轮不可能向外滚开,车轮会出现边滚变向内划的现象,从而增加了轮胎的形变,同时由于 C1型车模的轮胎是空心材质,可以与地面进行有效的贴合,同时由于 S3010舵机的响应速度较快,使用内八字有助于车模在直道行进的过程中更加贴合中线。

3.2.摄像头的安装

  对于整个车来说,摄像头的安装影响到整个车采集信息的准确性。由于识别时 OpenARTmini摄像头需要左右转向,因此在在须安装一个可以旋转的轴。为了节省空间,我们将总钻风摄像头和 OpenARTmini摄像头放在同一个碳素杆上,这样就不会出现某个摄像头会挡住另一个摄像头。

▲ 图 3.2摄像头位置

3.3.电感的固定

  电感部分我们采用了两个水平电感以及一个中间电感,以此检测环岛元素,并当摄像头左右转动之后可以采用电感循迹

▲ 图 3.3电感位置

3.4.伺服器(舵机)安装

3.4.1.车模转向舵的安装

  对于用于车模转向的舵机,一般有有立式和卧式两种安装方案(立式:转轴处于水平方向;卧式:转轴处于竖直方向)。
  舵机立式安装方式的优点:

  (1)转向响应速度快,转向角较为符合阿克曼转向原理,它由舵机臂竖直平面的运动转化为拉杆水平方向的运动,减少了在同一平面上运动的死区;

  (2)方便安装舵机臂,有利于调节赛车转向的中值。舵机立式安装方式的缺点:
  1. 不好安装固定;

  2. 安装后较高,占用竖直方向的空间,会挡到摄像头

  (3)重心较高。舵机卧式安装方式的优点:
  1. 转向响应速度较快;

  2. 高度较低;

  3. 重心低。舵机卧式安装方式的缺点:转向角部分符合阿克曼转向原理(转角小时),舵机臂和拉杆都在水平平面

  内运动,当舵机臂长度与转角臂长度相等时会导致内、外侧轮不符合阿克转角。对于用于车模转向的舵机,经过仿真分析后得出舵机立式安装方式较好,立式安装方式的转角较符合阿克曼转角,并且历届很多强队都是用立式安装。

3.4.2.用于摄像头转向的舵机

  该舵机是为了满足摄像头能在水平方向旋转,因此只需要将碳素干的底部固定在舵机盘上,舵机背部固定在车模上。对于舵机的固定,我们用 3D打印底盘

  让舵机可以安装到车模上。

▲ 图 3.4舵机安装位置

3.5.速度传感器(编码器)安装

  编码器是用来对车速进行测算的仪器,目前很多学校使用的是通过光电编码的编码器,其精度较高、安装较为方便,但体积有点大。光电编码器的安装精度较高,要求编码器轴与赛车后轴同轴,且编码盘必须与赛车的中心线共线。我们是直接装在车上,利用齿轮与差速器上的大齿轮相咬合。这种安装方法方便快捷,更能较准确的测出电机的转速。

▲ 图 3.5编码器安装

第四章 硬件设计及实现


4.1.硬件电路整体架构框图

  我们的智能车硬件系统主要包括以下模块:电源管理模块、电机驱动模块、测速模块、无线收发模块、调试模块

4.2.总钻风摄像头的电路模块设计

  总装风摄像头是一款基于 MT9V03X芯片设计的传感器模块,适合在高速情况下采集图像的全局快门摄像头。具有高动态性能、自动曝光、曝光时间随时可调等优点。集合内部 AD摄像头采集模块与视频信号处理模块,极大地简洁使用该摄像头硬件电路的设计。以下是总装风摄像头与 MCU接口设计。

▲ 图 4.2总装风摄像头使用电路

4.3.智能视觉模块电路设计

  智能视觉模块包含两个部分,一部分是识别,另一部分是执行。识别部分采用的是 OpenART mini, OpenART mini是不仅可以很轻松的完成机器视觉(machine vision)应用,还可以完成 OpenMV不能完成的神经网络模型的部署和训练。 OpenARTmini是通过串口通讯的,我们直接采用无线串口模块来连接。执行部分包括控制摄像头转向和激光打靶。摄像头转向可以从 OpenARTmini引出一根控制舵机的信号线用于控制舵机转向,激光打靶可以利用三极管控制。

▲ 图 4.3 OpenART mini摄像头接口

▲ 图 4.3激光发射控制电路

4.4.电源部分电路设计

  电源模块为系统其他各个模块提供所需要的电源。设计中,除了需要考虑电压范围和电流容量等基本参数之外,还要在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化,其应保证传感器信息采集准确有效;电机驱动则需在保证正常工作的情况下尽量减少对其他电路的干扰。

  全部硬件电路的电源由配发的标准车模用 7.2V2000mAh锂电池提供。由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压 ,防止干扰,保证稳定性。
  主要包括以下不同的电压。

  • 5V电压: MP2482是一款内置功率 MOSFET的单片降压开关变换器。将电池电压转换成 5V电压,给单片机最小系统板供电(自带 5V转 3.3V稳压电路) ,同时也给激光发射器供电。
  • 3.3V_CSI电压:由 RT9013-3.3稳压芯片将电压稳定在 3.3V,摄像头等提供稳定的电压。
  • 3.3V电压:为显示屏、蜂鸣器、编码器、电感模块等附加常用模块提供电压,采用 RT9013-3.3稳压芯片进行稳压,保证电路正常工作。
  • 可调电压: AS1015是一款电压模式,降压型 DC-DC转换器,设计用于满足 5A输出电流,并采用 PWM控制方案,以 300KHz固定频率切换。该器件包括电压基准源,误差放大器,振荡电路, P沟道 MOSFET等.AS1015的输入电压范围为 3.6V至 23V,可为提供 0.8V至 VIN的可调输出电压范围给舵机部分供电。
  • 12V电压: HIP4082芯片需要 12V电压驱动,因此先由 LM1117-5稳压芯片将电压稳定到 5V,然后采用经典 MC34063电路将电压升压到 12V。
  • 7~8V电压:这部分直接取自锂电池两端电压,主要为后轮电机驱动模块和部分接口电路提供电源。

  电机驱动电路的电源可以直接使用锂电池两端电压。模型车在启动过程中往往会产生很大的冲击电流,一方面会对其他电路造成电磁干扰;另一方面由于电池内阻造成电池两端的电压下降,甚至会低于稳压电路所需要的最低电压值,产生单片机复位现像。为了克服启动冲击电流的影响,可以在电源中增加容值较大的电解电容,也可以采用缓启动的方式控制电机。在启动时,驱动电路输出电压有一个渐变过程,使得电机启动速度略为降低从而减小启动冲击电流的幅度。

▲ 图 4.4 5V电源

▲ 图 4.4 3.3V电源

▲ 图 4.4 3.3V摄像头电源

▲ 图 4.4舵机电源

▲ 图 4.4 12V电源

4.5.电机驱动电路的设计

  电机驱动电路的作用指通过控制电机的旋转角度和运转速度,以此来实现对占空比的控制,来达到对电机变速控制的方式。电机驱动电路既可以通过继电器或功率晶体管控制,也可利用可控硅或功率型 MOS场效应管进行驱动。我们此次使用的是 HIP4082和 MOS管组合的驱动电路

4.6.小车调试模块

  为使软件上参数调节方便,且兼顾硬件上的简洁与美观,我们特意设计这一模块,按键和拨码开关可以切换各种参数调试, TFT显示屏能更方便看清,无线串口模块可以利用蓝牙与电脑相连,能实时了解数据。

▲ 图4.6 按键与拨码开关

▲ 图4.6 按键与拨码开关

▲ 图4.6 按键与拨码开关

▲ 图 4.6蜂鸣器控制电路

4.7.主板板级设计

  由于需要高速处理摄像头的模拟信号, PCB的设计影响信号的完整性,所以需要合理的设计元器件的布局及走线,阻抗匹配。特别注意模拟信号与高速数字信号、电感之间的布局。尽可能缩短高频元器件之间的连接,设法减少他们的分布参数及和相互间的电磁干扰。易受干扰的元器件不能相互离的太近,输入和输出应尽量远离。一些元器件或导线有可能有较高的电位差,应加大他们的距离,以免放电引起意外短路。高电压的元器件应尽量放在手触及不到的地方。对与电位器、可调电感线圈、可变电容器、微动开关等可调元器件的布局应考虑整块扳子的结构要求。一些经常用到的开关,在结构允许的情况下,应放置到手容易接触到的地方。元器件的布局要均衡,疏密有度,不能头重脚轻。一个电路板的成功,要注重内在质量,还要兼顾整体的美观。设计的 PCB如下所示。

▲ 图 4.7主板 pcb

4.8.电磁信号放大电路设计

  本系统主要采用电磁进行环岛的处理,故只采用三电感的方案,并采用 OPA4340进行放大。

▲ 图 4.8电感信号运算放大电路

第五章 软件系统设计与实现


5.1.控制程序整体思路

  软件编写的目的,是控制车模在既定规则前提下,以最快的速度,跑完整个赛道任务。无论硬件采用何种方案,软件的总体框架总是相似的,我们追求的就是稳定的基础上兼顾速度。针对 AI视觉组的赛道任务软件上分为基础循迹、 AI识别两个任务。基础循迹与普通单车模组的循迹方式大同小异,主要有:电磁循迹和摄像头循迹的方式。为了更好获取赛道信息,本团队采用摄像头作为主要循迹传感器,而电感作为辅助传感器的循迹方式。 AI视觉任务采用 openmvart搭载训练好的网络模型进行识别,通过串口通信的方式,将识别结果返回到主控芯片 RT1064上。

5.2.基础循迹

5.2.1.赛道图像处理思路

  通过 MT9V032摄像头传输回来的图像是 160*120大小的灰度图像,而处理图像的第一步就是如何处理灰度图像,主要有以下两种思路:
  1)二值化图像: AI视觉通过给定一个阈值,将每个像素点与之进行比较,从而确定出来这个像素点是黑或白,之后的图像处理就使用这个二值化后的数组进行处理。

  2)在实际调车中,本团队发现最大协方差阈值法能够有效的计算出一幅图像的最佳阈值,实现对于图像前景与背景的分离。这样使用动态阈值二值化之后的图像能够像普通二值化图像一样处理,但在黑白跳变不大的元素让需要借助灰度图像进行处理。

5.2.2.基本循迹思路

(1)中心扫线中心扫线是指每行图像的起始扫线都是从上一行图像的中线位置开始的,从白点向左向右扫到黑点及寻找到所需要的边界线,进而拟合出赛道中心线。优点:对于环境光线依赖比较小,如由于光线不均匀造成的反光仅仅会影响反光存在的几行,而不会对整幅图像之后的边界线提取造成干扰;

  缺点:比较消耗时序,需要遍历图像中大多数像素点才能够找到赛道的边界线,同时由于环岛等特殊元素的存在,使我们寻找的边界线与环岛的特征点有一定的差距,不利于元素的识别。

(2)边缘扫线边缘扫线是指每行图像的起始扫线根据左右边界线分别根据上一行左右边界线开始的,根据上一行的边界线在这行中同样位置的像素点黑白确定向左向右扫线,并找到黑白的切换点作为实际的赛道边界线。

  优点:能够较少的利用时序,同时克服赛道中间白色区域中产生的噪点,同时可以较好的寻找环岛等元素的特征点;缺点:若外界光线不均匀造成部分行的扫线错误,将一直影响之后整幅图像的扫线,同时不利于提取(斜入)十字等元素的特征。
(3)综合扫线

  本团队采用将中心扫线和边缘扫线相结合的方式获取赛道边线。对于摄像头近处的边线寻找采用中心扫线,远处的边线寻找采用边缘扫线,依据近处扫到的边线往赛道中心寻找。

  优点:能够减少巡线时间,对于环境光线依赖比较小,能够较少的利用时序,同时克服赛道中间白色区域中产生的噪点。缺点:由于环岛等特殊元素的存在,使我们寻找的边界线与环岛的特征点有一定的差距,不利于元素的识别。

5.2.3.特殊元素补线处理

(1)环岛元素
  针对本团队采取的边线提取算法在环岛处不能准确反映环岛元素的赛道信息,采用电感传感器辅助摄像头识别环岛:首先电感传感器发现环岛,再通过摄像头获取入环位置,进而斜率补线入环。

(2)十字元素
  对于十字元素路口出现的左右两边同时丢线的情况,本团队先计算左右两边丢线范围大小,当左边丢线范围大于右边时,先对右边采用斜率补线,再对左边采用斜率补线,最后计算得到的赛道中线,反之则反。先计算丢线范围小的边线进行补线可以减少循环次数,降低该部分代码的时间复杂度。

5.3. AI视觉

  AI视觉有 AprilTag码识别、数字识别、物种识别这三个任务,处理大体流程如图所示

▲ 图 5.3

5.3.1. AprilTag码

  AprilTag码是一个视觉基准系统,可用于各种任务,而 AprilTag检测程序可以计算相对于相机的精确 3D位置、方向和 ID。在智能车竞赛中使用 TAG25H9家族的 AprilTag码,被当作为物种标靶在赛道左右位置的指示,当 AprilTag码的 ID为奇数时代表物种标靶在赛道右侧,反之为偶数时代表物种标靶在赛道左侧。其位置如图所示

▲ 图 5.3.1

  AprilTag码的识别采用 OpenART mini,其兼容 OpenMV(Open Machine Vision开源机器视觉框架 ),在内部包含了一系列 AprilTag识别函数,只需进行函数调用即可,且稳定性、准确率较高,这大大简化了工作进程也提高了工作效率。

5.3.2.数字识别

  数字标靶牌位与三岔路的路口处,取 0-9的数字值作为首次进入三岔路的指示。当数字为奇数时,则首次进入三岔路时走右道,反之为偶数时,首次进入三岔路时走左道,第二次进入三岔则走与首次方向相反的道。标靶牌的位置如图所示。

  图 5.3.2其图片大小为 10x10cm,并处于深色方框内如图所示。

  由此可以利用 OpenMV官方库提供的 find_rect()函数来识别矩形框,提取出图像 ROI进行识别。识别模型采用 Letnet-5深度神经网络模型,并使用 Python语言利用 Keras进行模型搭建,其网络模型如图所示:

  数据集使用 OpenARTmini对实际图片进行采集,并对图片进行筛选、标号等一系列预处理操作,得到最终进行训练的数据集。设定 batch_size为 64,epochs为 100,直接使用电脑 CPU进行模型训练,在 15分钟左右便能得到训练结果,最终得到的模型验证集准确率为 99.94%。对生成的 .h5模型及参数文件使用 NNCU工具进行量化,其 GUI界面如图所示

  图 5.3.5将量化后生成的 nncu文件移至 OpenARTmini存储空间内,并使用 nncu.load()方法进行加载,便可将训练好的网络模型在 OpenARTmini上运行。

5.3.3.物种识别

  物种标靶牌位于 AprilTag码前后 15cm处,由水果和动物两大类组成,其动物物种包含狗、猫、马、猪、牛五类;水果物种包含苹果、橘子、葡萄、香蕉、榴莲五类。当识别到为动物时需原地停留至少 3s钟;当识别到为水果时需使用激光进行打靶,并且激光落点须在以靶心为圆心的直径 5cm的圆形范围内。其标靶牌和数字牌一样大小为 10x10cm并有着深色方框,如图所示

  与数字识别模型一样,也采用 Letnet-5网络模型进行物种识别,其模型如图所示

  其数据集由爬虫爬取图片网站、开源 cifar100和 ImageNet数据集三大部分构成,并对图片进行筛选、分类等预处理操作得到用来训练模型的数据集,设置 batch_size为 128, epochs为 200,最终得到 10个物种样本的识别准确率为 76.85%,水果和动物的识别准确率为 99.91%。最后与数字识别模型一样把训练生成的 .h5模型文件使用 NNCU量化工具进行量化,把最终得到的 .nncu文件移至 OpenARTmini并加载运行进行物种识别。

第六章 智能车调试说明


6.1. keil开发工具

  开发工具使用的 keil开发环境,如图 6.1所示。它能够为单片机提供与之配套的应用程序开发模块。在目标程序的下载方面,通过 JLINK与单片机之间的连接下载程序。使用串口调试工具或 PC的超级终端进行程序的调试。

6.2.上位机调试软件的设计

  上位机在工业控制当中又被称为 HMI,就是一台计算机,它的作用是监控现场设备的运行状态,当现场设备出现问题在上位机上就能显示出各设备之间的状态(如正常、报警、故障等)。上位机的概念属于计算机集散控制系统的概念。在计算机集散控制系统中,计算机分为各个级别,与现场设备发生直接关系的计算机属于下位机,用来控制下位机,或给下位机下达新任务的计算机是下位机的 “上位机 ”。若集散控制系统较大,计算机的级别可能不止两级,此时上位机还可能有级别更高的上位机对其进行控制或指派任务。我们的上位机是完全自主开发的,图 6.2是上位机软件界面。

6.3. SD卡存储模块

  因为摄像头车模所需处理的信息量非常大,在调试过程中往往需要存储这些信息以供研究分析,所以我们用外部 SD卡来存储海量信息,这让我们在图像处理上有很多的发挥空间。通过 SD卡,我们存下了我们需要的图像信息和处理之后的信息,然后通过串口发送给上位机,这样我们就可以方便地分析出图像上的各种问题,以便在程序上作出修改。

  • 仿真模式:由于图像处理越来越复杂,对于图像仿真越来越重要, PC仿真模式可以将单片机代码导入,更加直观看到图像处理结果。
  • 本地模式:小车的实际图像反馈对于调车非常重要,利用 SD卡将小车行进中的图像以及处理信息保存,上传到上位机,以便常看。
  • 调试模式:为了提高调试效率,特别为上位机做了在线调试系统,信息一目了然

6.4.蜂鸣器声音指示

  当赛车快速行驶时,检测到预设的事件发生(如三叉路口等)时,蜂鸣器立即发出声音提示,在调试过程中非常实用。

6.5.手动设置装置

  由于赛前我们有一定的调试时间,因此可以针对赛道的具体情况,通过按键或者拨码开关液晶显示对一些可变参数进行设定,这可以使得小车的适应能力更强。同时这在平常的调试中,也大大方便了我们对参数的重新设置。

6.6.无线调试模块

  在智能车的制作和调试过程中,需要将小车检测到的路面信息以及速度等参数实时地发给 PC,以便对算法进行有针对性的分析。由于小车在行驶时不能通过有线的方式获得其运行参数,我们使用了无线模块。

第七章 车模技术参数说明


7.1.车模主要技术参数

第八章 总结


  本文针对小车自动循迹方法,相对于非常传统而且进步空间并不是很大的电感循迹,摄像头循迹不限于特定场景,且摄像头图像处理手段也正在研究进步,可以利用固定阈值二值化来处理赛道图像,但是其适应性不强,对亮度变化要求苛刻。使用动态阈值二值化来处理图像可以避免亮度改变问题,但是若有局部光照,其灰度分布直方图呈多峰分布状态,动态阈值二值化方法效果也大大降低了,且其要对图像数据遍历两次,会增多运算时间。直接使用灰度值进行梯度计算也能提取边缘线,但是只取左右两边的梯度也不能很好的识别特殊元素,于是有了图像八邻域求各个方向的梯度,找出梯度方向一致的线来提取边线,还有 Hough算法提取边线等等。转向控制算法和速度闭环算法使用传统 PID控制算法便能达到不错的控制效果,对于图像的识别利用卷积神经网络也能更好地提取图像特征,提高训练模型的准确率。

  本文通过使用 NXP公司的 RT1064单片机控制小车自动循迹,使用 C语言编写小车自动循迹控制代码,利用 PID控制器对转向环和速度环进行控制,搭载在 OpenART训练好的神经网络模型对赛道指示牌进行识别,基本实现了 AI识别和自动循迹功能。主要贡献如下:

  ① 提出了一种用灰度跳变的差比和的算法,在自动循迹中使用灰度值直接进行计算提取赛道边线,大大减少了图像运算时间,增加了小车运动时图像处理的实时性,具有较好的准确性和实时性。

  ② 提出使用 PI算法对电机速度闭环进行控制,能够使电机迅速响应,在三岔路口处能迅速刹车,在坡道处可以保证车辆平稳爬坡。

  ③ 使用 LetNet-5神经网络模型减少了输入参数,也减少了网络尺寸,对于内存不多、算力不足的单片机来说是非常适用的,训练出来的模型数字识别准确率达 99.94%,物种识别准确率目前为 76.85%。

  ④ 利用 NNCU工具对模型再一步缩减转型,在精度变化不大的情况下大大提高了在单片机上模型的运载速度。

第九章 致谢


  在为本次大赛制作智能车期间,我们遇到过很多问题,从最初的传感器选型与方案确定,到后来的软硬件联合调试。在解决一个个问题之后,我们发现,我们技术上在不断成长,思想上不断成熟。而在这过程中,离不开学校,老师和同学的支持。首先,我们要感谢学校对这次比赛的重视。没有他们的支持,我们的车模绝对上不了赛场。其次,我们要感谢指导老师的悉心教导,没有他们在思想上的指导和整体的规划安排,我们很难有今天的成果。最后,我们要感谢同实验室的其他同学,感谢我们同时工作在这么和谐的实验室,感谢他们在赛道制作和其它方面的帮助。

第十章 参考文献


[1]高贝贝 ,吴永志 ,崔金龙 ,等.基于双电机的电磁循迹智能车系统控制策略的设计 [J].科技与创新 ,2018(15):119-121.
[2]陈金伟 ,陈明福 .基于图像处理的智能小车的研究与实现 [J].信息记录材料 ,2020,21(11):196-197.
[3]曹聪聪 .基于卷积神经网络的智能车前方车辆检测系统研究 [D].合肥工业大学 ,2019.
[4]黄志强 ,李军 .基于卷积神经网络的图像识别研究综述 [J].汽车工程师 ,2020(10):11-13+31.
[5]叶金鑫 .基于模糊 PID的智能小车控制算法研究 [J].实验科学与技术 ,2016,14(01):46-47+62.
[6]冯震 .基于模糊神经网络的智能车的控制 [D].内蒙古大学 ,2018.
[7]宋宗泽 .基于深度学习的智能车自主导航系统研究 [D].兰州理工大学 ,2019.
[8]尤扬 .基于模糊控制的新型循迹智能小车设计 [D].沈阳工业大学 ,2015.
[9]孙雪丽 ,张亚周 ,金堃 .OpenMV视觉模块的滚球目标识别与追踪系统研究 [J].单片机与嵌入式系统应用 ,2021,21(02):8-10.
[10]陈金伟 ,陈明福 .基于图像处理的智能小车的研究与实现 [J].信息记录材料,2020,21(11):196-197.
[11]徐成波 .基于嵌入式的视觉智能车的研究 [D].北方工业大学 ,2015.
[12]陈二阳 ,张修军 ,袁姜红 .基于图像识别的自主驾驶智能小车的设计与实现 [J].现代电子技术,2018,41(18):162-165+169.
[13]赵长宣 .基于深度学习的道路交通标志识别系统研究 [D].西安科技大学 ,2020.
[14]张丽 ,徐海钦 ,王子文 ,等.智能车车速最优控制策略与算法研究 [J].河南理工大学学报 (自然科学版 ),2020,39(05):94-100.
[15]黄志强 ,李军 .基于卷积神经网络的图像识别研究综述 [J].汽车工程师 ,2020(10):11-13+31


● 相关图表链接:

  • 图 2.1系统框图
  • 图 2.2整车布局
  • 图 3.2摄像头位置
  • 图 3.3电感位置
  • 图 3.4舵机安装位置
  • 图 3.5编码器安装
  • 图 4.2总装风摄像头使用电路
  • 图 4.3 OpenART mini摄像头接口
  • 图 4.3激光发射控制电路
  • 图 4.4 5V电源
  • 图 4.4 3.3V电源
  • 图 4.4 3.3V摄像头电源
  • 图 4.4舵机电源
  • 图 4.4 12V电源
  • 图4.6 按键与拨码开关
  • 图4.6 按键与拨码开关
  • 图4.6 按键与拨码开关
  • 图 4.6蜂鸣器控制电路
  • 图 4.7主板 pcb
  • 图 4.8电感信号运算放大电路
  • 图 5.3
  • 图 5.3.1

智能车竞赛技术报告 | 智能车视觉 - 中南林业科技大学 - 弃车人队相关推荐

  1. 智能车竞赛技术报告 | 智能车视觉 - 山东大学(威海) - 山魂五队

    简 介: 本文详细介绍了山东大学(威海)山魂五队在第十六届"恩智浦"杯全国大学生智能汽车竞赛智能视觉组中的系统方案,包括硬件电路设计.机械结构设计.巡线算法以及识别算法的设计等.本 ...

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

    简 介: 目前自动驾驶话题非常火热,近几年华为.特斯拉.谷歌.百度等大型互联网公司都在进行关于这方面的研究.本文设计了基于恩智浦 RT1064芯片的智能小车,以 keil5为开发环境,利用基于 MT9 ...

  3. 智能车竞赛技术报告 | 智能车视觉 - 西南科技大学 - 西科二队

    简 介: 本车以恩智浦公司的 32 位单片机MI.MXRT1064DV高内核处理速度核心控制器,可提供卓越的CPU性能和最佳实时响应.以MT9V034摄像头为核心传感器,通过摄像头采集道路图像信息送入 ...

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

    简 介: 该智能车设计以 32位的 RT1064微控制器作为控制单元,通过 MT9V034数字摄像头传感器采集赛道信息,将采集到的图像进行处理:通过 OpenARTmini模块部署神经网络识别图像:另 ...

  5. 智能车竞赛技术报告 | 智能视觉组 - 北京科技大学智能视觉组

    简 介: 本文设计的智能车系统以 为核心控制单元,通过CMOS摄像头检测赛道信息,使用数字摄像头采集赛道的灰度图,通过动态阈值算法生成二值化图像数组,提取黑色引导线,用于赛道识别:通过光电编码器检测模 ...

  6. 智能车竞赛技术报告 | 智能车视觉 - 南京邮电大学 - 栅库砸车跑路队

    学 校:南京邮电大学  队伍名称:删库砸车跑路队 参赛队员:刘乐      孙锐      甘翠      带队教师:江兵      刘烨      第一章 方案设计   本章主要介绍智能汽车系统总体 ...

  7. 智能车竞赛技术报告 | 全向行进组 - 沈阳工业大学 - 找不到北队

    简 介: 本文设计的智能车系统以沁恒CH32V103R微控制器为核心控制单元,通过车体上方摄像头以及车体前方的电磁传感器检测赛道信息:通过1024线迷你正交解码编码器检测模型车的实时速度,反馈给微控制 ...

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

    简 介: 本文设计的智能车系统以LPC54606J512微控制器为核心控制单元,基于MT9V034摄像头的图像采样获取赛道图像信息,提取赛道中心线,计算出小车与黑线间的位置偏差,采用PD方式对舵机转向 ...

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

    学 校:三江学院 队伍名称:识别不别 参赛队员:占晨龙  王汶洁  王倩   带队教师:陈春   葛年明  引 言   本文以第十六届全国大学生智能汽车竞赛为背景,该比赛受教育部高等教育司委托,由教育 ...

最新文章

  1. linux下配置Docker的jupyter notebook环境
  2. 抽象类(c++细节篇九)
  3. OpenCASCADE:Direct3D CSharp 示例
  4. pcm 采样率转换_PCM编码与Waveform音频文件(.wav)格式详解
  5. 力扣剑指 Offer 17. 打印从1到最大的n位数
  6. 统计学习(四):多重检验与控制程序
  7. Syong :静态代理模式
  8. 数值分析 计算机科学,数值分析与算法.pdf
  9. vue实现横向时间轴组件
  10. pytorch实现LeNet5手写数字识别+各层特征图可视化
  11. FLUENT算例2:混合弯管的流动与传热
  12. SpringMVC个人理解(downpour 的SpringMVC深度探险的个人整理)
  13. Coursera机器学习第三周Regularization练习题
  14. qt之QSqlQuery类执行SQL语句
  15. (纪中)2246. 恐怖分子(gun)
  16. FFT(傅里叶快速变换算法)计算频率
  17. CentOS7开启自定义热点HotSpot
  18. 关于 安装Qt5.15.2启动QtCreator后“应用程序无法正常启动0xc0000022” 的解决方法
  19. Linux部署Jaeger
  20. 研究者将在IEEE机器人与自动化国际会议上展示小型机器人RoboFly,利用激光无线提供动力

热门文章

  1. 机房网络光纤扩容施工
  2. httpclient4 post 请求乱码
  3. 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。...
  4. Java应用程序项目的打包与发行
  5. GridView 类型公开的所有成员(公共属性、公共方法、私有属性.......)
  6. 原来windows下也可以用awk
  7. 华为新版交换机端口配置由TRUNK改为ACCESS
  8. IHttpModule和IHttpHandler 应用笔记
  9. SQL语句书可以提高执行效率的5种需要注意的书写方法
  10. java iterator对象_JAVA Iterator 详解 代码