半岛·体育中国官方网 “零前瞻”AI寻迹小车,如何跑出20厘米前瞻效果的

● 概要

本文详细介绍了第十五届全国大学生智能汽车大赛AI电磁组山东大学(威海)ACE团队的系统解决方案,内容包括AI小车的系统原理、软硬件方案设计、神经网络模型的生成过程等。

本次比赛采用大赛组委会统一指定的C类车模型,AI小车以MIMXRT1064DVL6A单片机为控制核心,利用电感采集赛道信息,编码器获取小车速度。使用IAR和keil5集成编译环境编写C语言代码,使用PyCharm作为编译器,使用Python编程语言编写程序,搭建神经网络,实现NRF通信调试,训练小车模型完成赛道要素判断,利用赛道记忆算法控制目标速度,实现长直道加速效果,使用IPS液晶屏及按键作为辅助调试手段。

经过大量的软硬件测试以及数据收集测试,我们成功设计出一款“零前瞻”AI循迹小车,可实现高达15至20厘米的前瞻效果。

关键词:轨迹记忆、要素判断、神经网络

01 简介

全国大学生智能汽车大赛是由教育部高等学校自动化专业教学指导委员会主办的全国性大学生智能汽车大赛。大赛以“注重训练、重视参与、鼓励探索、追求卓越”为指导思想,旨在推进高校素质教育,培养大学生综合知识应用能力、基本工程实践能力和创新意识。智能汽车大赛涉及自动控制、模糊识别、传感器技术、电子、电气、计算机、机械、汽车等多个学科,为大学生充分展示想象力和创造力提供了一个舞台,吸引了越来越多不同专业的大学生参与其中,激发大学生创新思维,对大学生实践创新能力和团队精神的培养具有最重要的价值。大赛分为速度赛、创意赛、技术方案赛三个类别。

人工智能是计算机科学的一个分支,它试图理解智能的本质,并生产出一种能以与人类智能相似的方式做出反应的新型智能机器。该领域的研究包括机器人技术、语音识别、图像识别、自然语言处理和专家系统。人工智能自诞生以来,理论和技术日趋成熟,应用领域不断扩大。可以想象,未来人工智能带来的技术产品将是人类智慧的“容器”。人工智能可以模拟人类意识和思维的信息过程。人工智能不是人类智能,但它可以像人一样思考,甚至​​可能超越人类智能。

随着人工智能的兴起,全国大学生智能小车大赛也引入了相关比赛项目。AI电磁组不同于以往的电磁组,虽然方向是通过采集电感的电压进行控制,但是由于本届比赛的预见性基本为零,当车模的速度达到一定值时,很难有效地提前做出控制指令,导致小车跑偏。所以我们在本次比赛中引入了深度学习相关的解决方案,弥补预见性的不足。

正文共分为六章,第1章主要介绍比赛系统的整体方案;第2章从车模的整体布局出发,介绍车模各部分的安装及调整方案;第3章重点介绍系统涉及的硬件设计方案及电路原理;第4章主要介绍车模系统的软件方案,包括传统PID原理的分析并重点介绍一些AI算法和一些核心程序;第5章讲解了调试过程中的一些手段;第6章主要介绍车模的各种参数。

第 1 章 系统设计概述 1.1 系统框图

速度编码器接线_速度编码器的作用_智能车速度编码器工作原理

▲图1.1 系统结构图 1.2 系统简介

智能小车系统整体工作模式为:7个电磁传感器采集轨迹信息,通过OPA4377运算放大器将信号输入到MIMXRT1064DVL6A单片机进行进一步处理,得到主要的轨迹信息;采用编码器检测车速,通过单片机的输入捕获功能计算脉冲得到速度和距离;转向舵机采用AI融合PID控制;

驱动电机采用PID控制,通过PWM控制驱动电路调整电机的功率;通过默认值、运行安全方案、基于AI处理的优化策略综合控制车速目标值。

在训练AI算法时,我们使用NRF2401采集训练数据;轨道元素的识别以及停车则使用霍尔传感器实现。根据智能车系统的基本要求,我们设计了系统结构图,如图1所示。在满足比赛要求的同时,我们力求系统简洁、高效,因此在设计过程中尽量简化硬件结构,减少硬件带来的问题。

第二章 汽车模型总体结构设计 2.1 汽车模型布局

第十五届恩智浦智能车大赛AI组采用的是C车模型,该模型对称性好,舵机安装方便,改造前景广阔。

C车尺寸为29×18×9.8cm,轮胎尺寸为29×60mm,通过对轮胎进行适当的海绵填充和软化处理,使得车模具有极佳的减震性和耐磨性。

驱动电机为RS-380,7.2V的电机功率可达19.25W,额定功率达到0.016kW,额定电压7.2V,额定电流0.5A,额定转速16200rpm,额定扭矩可达10.9N·m。

尺寸为29.2×37.8mm,舵机为S3010,6V电压下扭力6.5kg·cm,运动速度快。

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

▲ 图2.1 汽车模型侧面图

本次智能车大赛设计的智能车外观大致如图2.1侧视图、2.1.1顶视图所示。

速度编码器接线_速度编码器的作用_智能车速度编码器工作原理

▲图2.1.1 汽车模型顶视图 2.2 电池选择与安装

为了减轻车模重量,我们团队选用了两块带保护板的18650锂电池串联供电,画出锂电池与保护板之间的连接PCB,购买放电能力强的动力锂电池,可以轻松驱动两块RS380电机。通过合理选择电池位置,调整车体重心,整车重量很轻,加减速响应很快。

2.3 伺服安装

舵机的转向是整个控制系统中滞后较大的环节,为了减小这个时间常数,可以通过改变舵机的安装位置来提高舵机的响应速度。通过分析舵机控制方向盘转向的原理可以发现,在同样的转向条件下,舵机一端转向连杆连接点距离舵机轴越远,方向盘的转向越快。这相当于增加了杠杆臂的长度,提高了线速度。

舵机的安装方式有立式和卧式两种,两种方式对比发现立式安装的效果更好。舵机安装时需要保证左右对称,这样舵机左右转时力臂相等且在最大范围内,提高舵机的响应速度。根据理论分析,功率等于转速与力矩的乘积,提高舵机转速必然会降低输出力矩,力矩过小又会造成迟钝。所以安装时必须考虑舵机响应速度与舵机力矩的关系,才能得到最佳的舵机效果。经过实验,本团队舵机安装如图2.3舵机安装图。

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

▲ 图2.3 舵机安装图 第三章 硬件电路设计

硬件是AI小车系统的基础,只有良好、稳定、安全的硬件环境才能保证小车平稳、快速的运行。整个系统设计过程中我们严格遵循规范,以可靠性、高效性为原则,在满足各项要求的同时,尽量使设计的电路简单、PCB外观简洁。

3.1 单片机系统设计

单片机最小系统是智能车系统的核心控制部件,由于AI电磁组需要将神经网络部署到单片机中,为了达到更好的效果,我们采用性能更高的NXP I.MX RT1064芯片,原理图如图3.1所示:

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲ 图3.1 系统核心板 3.2 电源模块设计

电源模块为系统中其他模块提供所需的电源。在设计时,除了考虑电压范围、电流容量等基本参数外,还要优化电源转换效率、降低噪声、防干扰、电路简单性等。可靠的电源方案是整个硬件电路稳定可靠工作的基础。

所有硬件电路的供电均由两节串联的18650锂电池提供(额定电压7.4V半岛·BOB官方网站,满电电压8.4V)。由于电路中不同的电路模块需要不同的工作电压和电流容量,因此电源模块中应包含多个稳压电路,将充电电池电压转换为各模块所需的电压。为满足需要,本车模上有4种电源电压:

(1)智能小车采用锂电池供电,选择带均衡功能的保护板,可以同时给两块电池充电,正常使用时电压为7.4~8.4V,可直接用来给电机供电。

(2)使用稳压芯片LD29150DT50R输出5V电压,给rt1064、隔离芯片、运放、霍尔元件、编码器等供电,原理图如图3.2.1所示

速度编码器接线_智能车速度编码器工作原理_速度编码器的作用

▲图3.2.1 电压转换7.4V-->5V示意图

(3)使用稳压芯片LD29150DT33R输出3.3V电压,给OLED、蜂鸣器、按钮等供电。

速度编码器的作用_速度编码器接线_智能车速度编码器工作原理

▲ 图3.2.2 电压转换电路

(4)使用稳压芯片MC34063输出12V电压,给半桥驱动器IR2104供电。

速度编码器的作用_速度编码器接线_智能车速度编码器工作原理

▲图3.2.3 电压转换电路7.4V→12V

(5)使用开关稳压芯片AS1015输出5.95V电压给舵机供电,直接用电池给舵机供电容易烧坏舵机,AS1015有防止电流倒灌功能,可以有效增加舵机的使用寿命。

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

▲图3.2.4 伺服电源稳压电路

(6)使用HY2120芯片控制MOS管的导通,保护电路不反接或者电流过大。

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲图3.2.5 电池保护板原理图 3.3 电机驱动电路

在栅极驱动芯片选择方面,我们选择IR2104芯片。IR2104芯片可以驱动高端和低端双通道MOSFET,提供较大的驱动电流,并且有硬件死区,防止同一桥臂导通。使用两片IR2104芯片可以组成MOS管全桥驱动电路[2],如图3.3所示。

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲图3.3 全桥驱动原理图 3.4 电磁运放电路

采用简易比例放大电路,电位器调节放大倍数即可。将电磁信号放大检测后直接由单片机AD口读取。运放芯片采用高性价比的OPA4377,满足20kHz电感采集要求。如图3.4所示:

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲图3.4 电磁信号连接及放大示意图 图3.5 霍尔元件电路

由于AI团队无法使用摄像头来识别停车线,因此我们选择使用霍尔元件来识别磁性停车标记。

速度编码器的作用_速度编码器接线_智能车速度编码器工作原理

▲图3.5 霍尔效应停车识别电路 3.6 传感器选择 3.6.1 电感

比赛所用的电感为精密调频电感,由于今年AI电磁组要求长度不超过5CM,高度不超过10CM,靠近舵机放置的电感会受到舵机运行的影响。由于传感器信号经过下一级还要进一步放大,才能满足后续信号检测的需要,所以传感器的重点就是把噪声滤除干净,这是由谐振电路决定的。因此谐振电路的带宽越窄,或者品质因数越高,滤除噪声的能力就越强。

3.6.2 编码器

光电编码器是一种通过光电转换将输出轴上的机械几何位移转换成脉冲或数字量的传感器,也是应用最广泛的测速传感器之一,获取信息准确,精度高,使用方便。

采用增量式512线光电编码器,其电源电压为3.3V或5V,输出为小幅度的正弦信号。为了将此信号放大整形,设计了信号调理电路。其基本原理是利用运算放大器组成比较电路,调整基准电压,使输出成为0V-3.3V的方波信号,送往单片机进行运算。

3.7 主控板及驱动一体化板

本系统中我们电路板制作的主要思路是分立化,追求简洁,方便电路板的调试和安装。主控由电源稳压电路、OLED屏及按键交互电路、单片机系统、各类传感器接口组成。驱动板除了原有的电机驱动电路外,还增加了编码器接口,主要是为了方便编码器的连接,减少编码器连线过长造成的接触不良等问题。实际图片如图3.7所示。

速度编码器的作用_速度编码器接线_智能车速度编码器工作原理

▲ 图3.7 主驱动板 图3.8 运算放大板

运放板由两片八路运放OPA4377电路、杜邦线接口、软排线接口组成。软排线相对于杜邦线来说,连接更简单可靠,不容易漏电。决赛比赛采用的是软排线连接。运放板实际图片如图3.8所示。

速度编码器接线_速度编码器的作用_智能车速度编码器工作原理

▲ 图 3.8 运放板 图 3.9 电磁板

集成了7个电磁接口、软排线、杜邦线接口,方便调试时有更多选择,电磁板实物图如图3.9所示。

速度编码器的作用_速度编码器接线_智能车速度编码器工作原理

▲ 图 3.9 电磁板 图 3.10 霍尔元件板

霍尔元件板由74LS30和八路霍尔元件组成,运放板实际图片如图3.13所示。

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

▲图3.10 霍尔元件本体板实物图 第四章 软件设计 4.1 软件框图

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲图4.1 软件框图 4.2 速度环控制

本调速方案采用的是传统的PID控制。PID控制器是一种线性控制器,它根据给定值和实际输出值形成控制偏差,将偏差的比例(P)、积分​​(I)、微分(D)线性组合形成控制量来控制被控对象,所以称为PID控制器。其原理框图如图4.2所示。

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲ 图 4.2 PID 控制器原理框图 [此处省略速度环控制,如需阅读请参考原文] 4.3 方向环控制 4.3.1 控制方案

本方向控制方案采用AI融合PID进行控制,AI神经网络识别轨道要素。智能车在直路、弯道、交叉要素上采用不同的PID参数,水平、垂直、斜向电感采用不同的权重。PID控制原理与速度环相同,这里不再赘述。

偏差的计算采用了6个电感,分别是左右水平电感(记为LH和RH)、左右对角电感(记为LX和RX)、左右垂直电感(记为L和R),偏差就是它们各自的差值之和。

4.3.2 PID参数整定

采用PID控制的关键是调整KP、KI、KD三个参数,即参数整定。PID参数整定主要有两大方法:一是理论计算整定法半岛·BOB官方网站,主要根据系统的数学模型,通过理论计算确定控制器参数;二是工程整定法,主要依靠工程经验,直接在控制系统试验中进行。该方法简单易掌握,在工程实际中得到广泛应用。

我们采用第二种方法调整PID参数,按照先比例、后积分、后微分的原则调整PID参数。我们尝试了PID、分段PD、模糊PD、二次PD、单PD,发现单PD可以满足设计要求。因此,我们采用单PD方案。

4.4 AI轨迹元素判断 4.4.1 多分类问题

神经网络解决多分类问题最常见的方式是设置n个输出节点,其中n为类别数。对于每一个样本,神经网络可以得到一个n维数组作为输出结果,数组中的每一维(也就是每一个输出节点)对应一个类别。理想情况下,如果一个样本属于第k类,那么对应这个类别的输出节点的输出值应该为1,其他节点的输出应该为0。

以轨迹判断为例,有0~2三个类别,对于1这个数字的识别,神经网络的输出越接近[0, 1, 0]越好。交叉熵是其中一种最好的判断方法,交叉熵描述的是两个概率分布之间的距离,是分类问题中广泛使用的损失函数。

p表示正确答案,q表示预测值,交叉熵值越小,说明两个概率分布越接近。

另外,还需要Softmax回归将神经网络前向传播得到的结果转化为概率分布。

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

通过softmax回归和交叉熵优化神经网络可以解决多分类问题。

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

▲图4.4.1 网络结构

本课题组采用BP神经网络对轨迹信息进行分类,网络结构简化图如图4.4.1所示,输入层有7个神经元,对应7个电感的数据,标签类别有:直行、弯道、交叉,有多个隐藏层,每个隐藏层有15个​​以上的神经元。

4.4.2 训练

速度编码器的作用_速度编码器接线_智能车速度编码器工作原理

▲ 图 4.4.2 交叉处磁标

当小车运行到十字磁标位置时,霍尔传感器会检测磁场的变化,根据预先设定的程序,小车便知道自己处于十字区域,单片机记录电感数据,并标注为“十字”,这些数据通过NRF实时传输到电脑,电脑再记录这些数据进行多分类训练。

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲ 图4.4.3 曲线轨道磁标

当汽车到达弯道时,霍尔传感器会检测到磁场的变化,根据预先设定的程序,汽车便会知道自己处于弯道中,单片机记录下电感数据,并标注为“弯道”,在弯道和十字路口以外的区域,电感数据会标注为“直路”,并发送给电脑进行训练。

每次传回来的训练数据有9个字节,数据结构如下:

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

4.4.3 预测

电脑将训练好的模型部署在MCU上,汽车模型将采集到的电感值传入神经网络,神经网络预测汽车模型所在的元件类别,汽车模型会根据所在的元件类别采用不同的方向环PD参数和目标速度。

4.5 部分代码介绍 4.5.1 传统控制部分代码说明

控制部分主要由两部分组成:1.方向环 2.速度环控制,分别在两个5ms定时器中执行。代码如图4.5.1所示

速度编码器接线_速度编码器的作用_智能车速度编码器工作原理

▲ 图4.5.1 方向环与速度环

(1)定向环控制:

首先单片机连续采集每个电感5次数据,使用冒泡法将数据从小到大排序,去掉最大值和最小值,取平均值作为本次采集的值。经测试,滤波效果不错,可以滤除部分高频噪音,得到稳定的电感值。代码如图4.5.2所示

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

▲ 图4.5.2 电压软件滤波

在得到电感值之后,对当前采集到的值进行归一化处理,归一化的基本思想就是得到当前采集到的值(ADget)相对于当前轨迹的最大值(ADMAX)和最小值(ADMIN)的相对大小,具体公式为:

在得到归一化的电感值之后,通过融合多个方向的电感值得到偏差作为PID的输入。在训练过程中我们发现,在直路的情况下,横向电感在磁场方向上的轴向分量较大,因此横向电感采集到的值较大,偏差也较大,横向电感对直路影响较大;在弯道的情况下,其中一个斜电感在磁场方向上的轴向分量较大,与其对称的斜电感在磁场方向上的分量较小,它们的偏差也较大,因此斜电感对弯道影响较大。因此我们通过分别赋予不同的权重,将横向电感和斜电感融合在一起。最终与横向电感直接差分比对比,车辆直弯性能表现更佳,直路与弯道的过渡也十分平滑,为后续的PID控制奠定了良好的基础。

得到轨道偏差之后,我们就可以利用这个偏差(direct_error)作为PID的输入,得到舵机转角。经过反复调试发现,小车模型在高速行驶(3m/s左右)时对PD参数非常敏感:在直路上,随着车速的增加,比例项系数(KP)越来越小,KP过大会造成直路振荡、减速,KP过小则响应迟缓,也使得小车模型的运行状态不稳定。在高速行驶时,小车在转弯时非常依赖微分项半岛·综合体育官网入口,当微分项系数(KD)很小时,过弯性能就会不足,甚至可能直接跑出轨道;当KD继续增大时,小车应对快速弯道的能力越来越强,但是随着KD的增大,电感采集时引入的噪声也会被放大,增加了小车在小偏差情况下的不稳定性。

最后经过反复试验,我们得到了小车在直路、弯道、环岛、十字路口的最佳参数。神经网络计算出轨道类型后,相应调整PID控制器中的PD参数,得到小车最终的转向角度。代码如图4.5.3所示

智能车速度编码器工作原理_速度编码器的作用_速度编码器接线

▲ 图4.5.3 轨迹类型采集与PD控制

同时由于斜电感在交叉口、回旋处具有明显的特性,其直接使用会影响轨道偏差的正常采集,因此在识别交叉口、回旋处要素时,应在偏差控制中消除斜电感的影响。

(2)速度环控制

在速度环控制中主要采用了微分算法和轨迹记忆算法。

假设汽车在转弯过程中不做垂直于车体方向的运动,由于后轮的角速度相同,内、外后轮的转弯半径不同,所以它们的线速度不同,如果赋予它们相同的占空比,必然会降低弯道上的转向性能。通过前轮转角,我们可以通过公式计算出两个后轮的差速,得到两个车轮的目标速度,再通过PI计算,使内、外轮在转弯半径下达到相应的线速度。汽车转弯差速示意图4.5.4

智能车速度编码器工作原理_速度编码器接线_速度编码器的作用

▲图4.5.4 汽车转弯差速器示意图

在测量了多组前轮转角和转弯半径数据后,我们利用MATLAB进行曲线拟合,发现前轮转角与差速近似呈线性关系,因此利用线性关系代替上述差速公式,差速计算代码如图4.5.5所示

速度编码器的作用_智能车速度编码器工作原理_速度编码器接线

▲ 图4.5.5 差速计算公式

通过轨迹记忆算法控制目标速度,可以达到长直路的加速效果。因此,先让小车模型在轨道上慢速行驶一圈,通过记录编码器脉冲数来记录每个元素的位置。当小车正式启动时,如果当前轨道类型为长直路,则增加速度。轨迹记忆代码如图4.5.6所示

速度编码器接线_智能车速度编码器工作原理_速度编码器的作用

▲图4.5.6 轨迹记忆算法 4.5.2 AI代码说明

在名为“Data Classification”的python文件中,我们构建了一个分类BP神经网络。训练数据保存在data.txt中。网络有7个神经元的输入层,4个隐藏层,3个神经元的输出层。7个神经元分别对应7个电感的数据。3个隐藏层的神经元个数分别为32、64、32。输出层的3个神经元对应弯道、直路、环岛三类要素。网络结构如图4.5.7所示:

速度编码器接线_智能车速度编码器工作原理_速度编码器的作用

▲图4.5.7 网络结构

使用交叉熵优化器优化网络参数。

速度编码器的作用_速度编码器接线_智能车速度编码器工作原理

▲图4.5.8培训过程

After the training is completed, the network model will be updated and saved as an H5 file named model.h5. Since the network deployment code is closed source and there is only one neuron output value, we need to rebuild the network and merge the three neurons obtained by classification into one neuron. In the python file named "Network Reconstruction", first build a neural network that is the same as the training network, and add a single neuron at the end and manually assign weights. The three weights w11, w21, and w31 are -84, 0, and 84 respectively. In this way, the output range of a single neuron -128~+127 is divided into three areas, namely -127~-84 for curves, -83~+83 for straights, and +84~+127 for crosses. Load the trained network model file, import the network parameters according to the network layer name, and the final network can be generated. The final network structure is shown in Figure 4.5.9:

将最终网络保存为car_model.h5文件,然后将其部署在智能汽车上以对轨道元素进行分类。

※ 综上所述

由于AI电磁学是一个全新的类别,因此团队成员没有以前的经验,对人工智能领域相对不熟悉,并且刚刚开始学习Python语言。

对于AI电磁组,在竞争开始时,我们的团队采用了Zhufei推荐的解决方案,不断收集大量的数据,尝试了各种神经网络,并生成的模型文件,由于模型误解了,因此,通过以上问题来筛选型号。汽车模型完成了从“摇头”到“丝滑”的转变。

但是,使用此解决方案进行调试的最大速度以2.7m/s的速度达到了速度,因此使用AI训练轨道元素的早期判断,以弥补缺乏预见性的,并实现了传统的PID解决方案,以进行方向控制。汽车模型的重力,汽车的后部比汽车的前部更重。在前轮角度和后轮差。

在准备期间,该团队还尝试了增强学习 +监督学习的方法,以自主学习,传统的PID是一种监督机制,以将“奖励”和“惩罚”机制移动到python上。是当汽车模型执行增强学习时,数据返回周期为100ms以解决问题,团队成员将另一个RT1064用作信息传输站,并使用多个NRF模块同时通信,并最终将回报周期降低到9ms。

为了加快加强学习的融合,团队成员在训练之前使用PID进行了教学,以教学模型,这可能是由于不完善的教学方法,一旦学习不幸的是,该赛车的范围很大。

团队成员都同意,使用强化学习允许汽车自主学习是真正的智能汽车,并且强化学习在汽车控制方面具有良好的前景。

“一把剑被磨碎了,李子的香气来自艰苦的寒冷。最后,我希望人工智能在智能汽车比赛中逐渐成熟,并使智能汽车更聪明。

公共帐户消息

朱达达(Zuo Dada),我刚刚发现了一个使用百度AI的大个子建造的AI面对面的模型。

关键词:

客户评论

我要评论