Arduino毕业设计 您所在的位置:网站首页 无人驾驶硬件平台主要功能 Arduino毕业设计

Arduino毕业设计

2024-07-16 00:21| 来源: 网络整理| 查看: 265

基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码)1、项目简介2、资源详情3、关键词4、毕设简介5、资源下载

1、项目简介 近年来,各行各业都进行着深刻变革,随着电子和AI技术的不断发展,人类进入人工智能时代。人工智能正在不断的优化和取代传统的行业,不断提高人类办公的效率,极大地方便了人们的生产生活。国内外人工智能在自动驾驶方面的应用也不断进步,自动驾驶在未来有着广阔的前景。而自动控制作为自动驾驶技术中重要的一环,有着举足轻重的作用,对于自动控制的研究意义重大。本文主要通过自主设计自动驾驶小车控制系统,并将其和人工智能相结合。本文的主要研究内容如下: (1) 提出自动驾驶小车总体设计方案,并进行动力分析,最终确定系统的控制目标并进行方案设计。 (2) 对系统的控制目标进行模型仿真设计,使用Matlab对PID控制系统进行仿真,对控制过程进行分析和调整。使用SolidWorks对小车各个模块和外形进行精确仿真。 (3) 对系统的硬件部分进行功能需求分析,确定主控为Arduino,对电机驱动和其他传感器进行选型,设计系统电路。 (4) 对系统软件部分进行设计,对主要控制部分进行分析、设计控制的流程图、完成系统的主程序及各个模块的程序设计,并完成测试。 (5) 对搭建完成的自动驾驶小车控制系统进行整体的测试和优化。小车每个电机的转速在0.5s内达到目标值的±0.3cm/s内,系统能够完美实现系统所设定的速度和角度调整。

2、资源详情

项目难度:中等难度 适用场景:相关题目的毕业设计 配套论文字数:20766个字57页 包含内容:全套源码+配整论文 开题报告、论文答辩、课题报告等ppt模板推荐下载方式: 在这里插入图片描述

3、关键词 自动驾驶 控制系统 电机控制 Arduino 4、毕设简介

提示:以下为毕业论文的简略介绍,项目完整源码及完整毕业论文下载地址见文末。

第一章 绪论 1.1 研究的目的及意义 当今社会,科学技术的不断发展,行业发生了深刻的变革。随着电子和AI技术的发展,人类进入人工智能时代。随着第三次人工智能浪潮的来临,人工智能势必会引起各个行业的重大变革。AI已经成为新时代的热门研究方向。人工智能正在不断的优化和取代传统的行业,不断提高人类办公的效率,极大地方便了人们的生产生活。国内外人工智能在自动驾驶方面的应用也不断进步,自动驾驶在未来有着广阔的前景。而自动控制作为自动驾驶技术中重要的一环,有着举足轻重的作用,对自动驾驶的研究意义重大。

通过这个题目,不但可以了解科学研究的一般过程,锻炼分析问题、解决问题的能力、掌握人工智能学习的基本流程和知识技能,熟练掌握自动控制原理,还可以将控制和人工智能的流程结合起来,对自动驾驶这类的人工智能最新应用有深入的了解。

1.2 自动驾驶小车研究现状 1.2.1 自动驾驶国内外现状 省略

1.3 主要研究内容和技术流程 本文主要通过自主设计具有一定功能的小车(包含遥控器),并将控制和人工智能的流程结合起来,以自动驾驶这类的人工智能最新应用有更加深入的了解。主要研究内容如下: 提出自动驾驶小车的总体设计方案,并进行动力分析,最终确定系统的控制目标并对系统相关方案进行设计。 对系统的控制目标进行模型仿真设计,使用Matlab对PID控制系统进行仿真,对控制过程进行分析和调整。使用SolidWorks对小车各个模块和外形进行精确仿真。 对系统的硬件部分进行搭建,确定主控芯片、驱动电机、驱动模块、传感器等的选型,对系统电路部分进行设计。 对系统软件部分进行设计,对主要控制进行分析、设计控制的流程图、完成系统的主程序设计以及各个模块的程序设计,并完成编写和测试。 对搭建完成的自动驾驶小车控制系统进行整体的测试和优化。小车每个电机的转速在0.5s内达到目标值的±0.3cm/s内,控制系统能够完美实现系统所设定的速度和角度调整。

1.4 主要工作 根据研究内容,本文的主要工作如图1.3所示 在这里插入图片描述

图1.3 主要工作

第二章 自动驾驶小车系统总体方案设计 2.1 系统整体方案 基于人工智能的自动驾驶小车系统是一个能结合自动驾驶算法程序实现自动驾驶的配套系统。系统由底盘、遥控器、处理器和各种外设构成。底盘由四个轮子为驱动,由主控配合电机驱动,再加上陀螺仪、编码器等传感器实现小车精准移动移动。遥控器使用蓝牙模块与底盘通信,系统可以实现利用图像识别控制小车移动,包括前进、后退、左右转弯、加速减速等。处理器作为一个车载的计算平台,需要具有一定的图像处理能力,通过摄像头捕捉到的实时图像来计算小车运行中运动速度和角度目标值的实时参数。外设包括提供实时图像数据的摄像头、控制处理器所需要的鼠标键盘和屏幕等等。自动驾驶小车系统的小车和遥控器效果图如图2.1、图2.2所示。 在这里插入图片描述

图2.1小车底盘效果图 在这里插入图片描述

图2.2 遥控器效果图 自动驾驶小车系统先通过摄像头采集的图像数据作为数据集结合自动驾驶人工智能框架进行模型训练。在自动驾驶小车运行过程中,处理器通过接收到的图像数据结合已有的框架计算出实时的速度和角度目标值,再将这些数据传给底盘的主控最终实现自动驾驶小车系统的控制,最终完成如图2.3所示地图预设的路线(绿色和蓝色为触发区,红色为终点区,除了起点、终点和普通路面,还包含一段斑马线)。 在这里插入图片描述

图2.3 地图 2.2 系统需求分析 根据对系统的运行过程的分析,系统要完成自动驾驶功能的验证,必须具备能直线行驶、能精准转弯等功能。为保证小车准确的按照地图预设线路行驶,必须得到精准的角度和速度数据并对其进行调整控制,现在对自动驾驶小车系统的设计需求进行分析。 (1) 在系统控制的性能方面,要求及时性和准确性,在得到处理器的指令后,整个系统必须做出正确、快速、稳定的响应。 (2) 直线行驶的时候,自动驾驶小车两侧的轮子转速必须保持一致。转弯的时候必须保持负责转向的轮子转速稳定即单位时间内转过的角度一定。 (3) 系统在运行的过程中,速度和角度的实际值要在至多0.5s内达到目标值附近,这样才能做到实时控制以完成各种运行目标。 (4) 自动驾驶小车系统要具有可扩展性和可移植性,便于之后加入其他的传感器和模块以完善功能。

2.3 控制分析 在自动驾驶小车系统的设计过程中,应该先分析系统在不同工作状态条件下的情况,以进行对应的调整,准确的调整需要对系统进行数学建模,结合运动学和动力学模型进行分析和计算,为自动驾驶小车系统的控制提供理论依据。 因为实际情况比较复杂,所以这里做两个近似处理。小车运行的直接动力是轮子与地面的摩擦力,电机驱动轮子转动同时轮子摩擦地面产生与转动方向相反的摩擦力, 这个摩擦力分为静摩擦力和滑动摩擦力这两部分。由: F1 = F (2-1) 静摩擦力的大小与电机驱动轮子转动的力大小相等。由: F2 = k * Fn (2-2) 滑动摩擦力与正压力成正相关,我们在实际分析的时候,不考虑滑动摩擦力这一小部分的影响,即小车运行的速度只与电机转动的速度有关。 同时由于电机差异和电压的波动等因素,必须采取一些电机的控制算法才能使电机的实际转速与目标值相同,所以这里在进行运动学和力学分析的时候先不考虑这些因素,认为电机转速就等于我们的目标值。 当小车的直线运行的时候比较简单,四个轮子朝同一方向同一方向转动即可,这样小车的四个动力和合力一直朝向前方,小车向前运动(如图2.4)。 在这里插入图片描述

图2.4小车前进受力分析 当小车需要转弯的时候,由于四个轮子和电机是完全一样的,且方向都相互平行,所以需要通过控制电机转动的速度和方向来产生电机差速以实现小车的转弯。如图,例如右转时,位于小车左侧两个轮子都朝前转动,右侧的两个轮子都朝后的转动 (如图2.5)。同时,四个轮子的中心最好能组成一个正方形,这样能保证小车在转弯时车身位置和图像采集结果的一致性。 在这里插入图片描述

图2.5小车左转受力分析 小车停车的时候,直接把所有电机的转速降为0即可,小车本身速度不快,不需要设置刹车系统和刹车算法。 2.4 方案设计 根据自动驾驶小车系统的整体方案以及对控制对象的分析,结合工作过程的主要硬件设备,把制作过程划分为如图的控制过程框图2.6。- 在这里插入图片描述

图2.6 方案设计框图 控制系统的主要控制对象为系统的驱动电机。主要的控制参数时:电机的转动方向、转动速度等等。控制系统主要通过编码器、陀螺仪等传感器得到系统的运行方式及运行状态数据。然后将这些数据进行处理,再以此为依据对不同的电机进行精确的控制,使系统按照提前设定的路线运行。 在具体的控制过程中,用于测量直流无刷电机转速的传感器实时接收速度数据,通过 AD 转换程序将模拟量数据转化为数字量,并通过控制程序和有关算法,对其进行补足和调整,然后通过 PWM 控制器将控制数据输送给电机,从而实现对直流无刷电机的控制。 对于电机的实际值,不能仅通过PWM控制与目标值相等的问题,采用PID算法进行控制,实时计算变化到目标值所需要的PWM值,以实现电机转速的实时调节。小车转弯的过程也是如此,设置小车转过的目标角度,然后借助PID算法进行实时调节,可以快速且准确地使实际值接近目标值。

2.5 本章总结 本章首先对自动驾驶小车的整体结构和工作原理进行了介绍。接着对系统控制进行分析,建立了系统的动力学模型,确定了主要的控制参数和控制目标。然后对控制系统的需求和要求进行了分析,主要包括精准性和及时性,安全性,可移植性等。最后对控制系统的总体方案进行了设计,确定了控制的主要目标和方法,在控制电机行进驱动的转速时,引入了 PWM 控制和PID 控制算法进行精确控制[4]。

第三章 系统模型仿真 在自动驾驶小车系统的设计过程中,由于涉及多种工作部件和传感器,传统设计过程复杂且需要多次实际调试才能达到理想效果,为减轻工作量、减小设计难度和缩短设计流程,需要采用建模仿真技术。顾名思义就是借助仿真软件,在软件中完成数学模型和实体模型的构建,通过计算机进行运算求解,得出适合于所设计系统的控制方法,这样可以大大提高系统设计地效率。对驱动电机进行仿真设计,是控制系统设计的重要一环,也是控制系统构建的理论基础。 在自动驾驶小车系统的运行过程中,主要的运动状态是直行和转弯,通过直流无刷电机的转速控制实现的,所以在控制系统的仿真过程中,主要通过 MATLAB中的 SIMULINK 模块对电机的驱动PID 控制方法进行逻辑构建和仿真,通过给予系统有关参数,进行仿真分析,最终得出有效控制条件和相关参数,为控制系统的程序设计和样机制作提供条件。 同时,对于实物搭建来说,系统的结构和布局仿真也是必不可少的。通过SolidWorks可以对系统的所有结构和模块进行三维仿真,并模拟小车在地图中的运行过程,这对实物搭建和系统调试都是非常重要非常必要的,为最终自动驾驶的实现打下坚实的基础。 3.1 PID控制方法及仿真 3.1.1 PID的原理 PID控制器因为结构简单、容易实现,并且具有较强的鲁棒性,因而被广泛应用于各种工业过程控制中。作为一种广泛的控制规律,PID控制在相当长的一段时问内并没有因为各种先进控制算法的出现而遭到淘汰,相反,经过时间的考验,PID控制仍然在各种控制技术中占着主导地位[5]。 PID控制器是一种基于偏差“过去、现在和未来”信息估计的有效而简单的控制算法,常规PID控制系统原理如图3.1所示。 在这里插入图片描述

图3.1 PID控制系统原理图 整个系统主要由PID控制器和被控对象组成。然后对偏差按比例、积分和微分通过线性组合构成控制量对被控对象进行控制。由图3-1得到PID控制器的理想算法(e(t)是目标值和实际输出值的偏差)为: u(t)=Kp[e(t)+1/T_i ∫_0^∞▒〖e(t)dt+T_d (de(t))/dt〗] (3-1) 根据式子可以知道和理解PID的三个参数: 比例控制Kp,能提高系统的动态响应速度,迅速反映误差,从而减少误差,但是不能消除误差,简单来说就是越大越快越小越慢但是可能会超调或者过慢有很多弊端,并且太大了会不稳定。 积分控制Ki,一般就是消除稳态误差,只要系统存在误差积分作用就会不断积累,输出控制量来消除误差,如果偏差为零时积分才停止,但是积分作用太强会使得超调量加大,甚至使系统出现震荡,对这种震荡进行预测呢,就是需要第三项的微分。 微分控制Kd,微分显然与变化率有关,它可以减小超调量来克服震荡,使系统稳定性提高,同时加快响应速度,使系统更快有更好的动态性能,可以根据变化率来判断系统快要上升还是下降来提前改变系统的控制量这就与积分作用形成互补,这样一来系统就几乎完美了[6]。 以上部分是对连续系统PID算法的分析,但是计算机控制是不连续的,所以在编写程序时需要对数学表达式进行转换,用求和代替积分,用向后差分代替微分,最后形成模拟PID的离散化差分方程。

u(t)≈ u(k) (3-2) e(t)≈e(k) (3-3) ∫_0^t▒〖e(t)dt=∑_(i=0)^k▒〖e(i)〗 ∆t=∑_(i=0)^k▒〖Te(i)〗〗 (3-4) (de(t))/dt≈(e(k)-e(k-1))/∆t=(e(k)-e(k-1))/T (3-4) 然后得到增量式PID的计算公式: {█(∆U_0 (n)=K_p {[ε(n)-ε(n-1)]+T_D/T[ε(n)-2ε(n-1)+ε(n-2)]}@U(k)=∆u(k)+U(k-1))┤ (3-5) 或 {█(∆U_0 (n)=K_p [ε(n)-ε(n-1)]+K_i ε(n)+K_d [ε(n)-2ε(n-1)+ε(n-2)]}@U(k) = ∆u(k)+U(k-1))┤ (3-6)

3.1.2 PID的Simulink仿真和调参 先设置好传递函数和随便的PID控制器的参数,根据PID调参的经验,Ki和Kd的值一般不会过大,先都设为0,Kp随便设一个,此次设置为6。借助Matlab的Simulink功能,以阶跃函数为信号源,末端加入示波器观察,进行结果仿真。 在这里插入图片描述

图3.2 Simulink仿真流程 双击示波器会产生波形,根据波形调节参数知道得到理想波形。根据查找到的调参方法,进行调参: (1)确定比例系数Kp 确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。 (2)确定积分时间常数Ti 比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。 (3)确定微分时间常数Td 微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%[7]。 最终参数为Kp = 8,Kd = 0.5,Ki= 0.1。示波器图像如图3.3。 在这里插入图片描述

图3.3 Simulink示波器图像 3.2 系统的结构和布局仿真 系统的结构和布局的仿真主要是借助SolidWorks进行一比一的三维模型仿真。尽可能细节地模拟实物地情况,为自动驾驶功能地实现和优化做好铺垫。 小车地模型仿真结构比较简单,主要包括轮组、电池、主控板等部件,如图3.4、3.5所示。 在这里插入图片描述

图3.4 小车模型视图1 在这里插入图片描述

图3.5 小车模型视图2 遥控器模型是完全体,因为在构思过程中的模型没有保存,所以展示的是与实物完全相同的模型,包括亚克力外壳、主控板、电池、开关、蓝牙模块等等。如图3.6、3.7。 在这里插入图片描述

图3.6 遥控器模型视图1 在这里插入图片描述

图3.7 遥控器模型视图2 3.3 本章小结 本章主要对自动驾驶小车系统的PID参数调整过程和三维模型进行仿真,并对相关结果进行分析,为控制系统的软硬件设计提供了理论支撑,为整个项目的顺利进行打下良好的基础。

第四章 控制系统硬件设计 根据仿真结果,对系统的硬件部分进行选择,包括主控芯片、电机电机、传感器等。并设计电源供电电路、电机驱动电路、串口通信电路。 4.1 控制系统硬件构成 自动驾驶小车系统的设计中,硬件部分设计是控制系统实现的基础,处理器需要对采集到的图片进行处理并运行设计好的人工智能框架对底盘做出控制,底盘主控搭载的芯片可以运行控制整个系统所需要的程序,然后再由系统的末端,比如电机、指示灯等严格执行,还需要由传感器得到小车实时的状态数据。这些部分一起构成了自动驾驶小车的硬件部分。

4.2 小车主控芯片选择 主控芯片作为自动驾驶小车系统的核心,在整个控制系统中起着至关重要的作用。整个自动驾驶的实现过程都要求主控芯片能够及时反应并控制各个部分做出正确反应,在成本不高的情况下保证控制的高效安全,操作难度也不应过高。因此,经过对性能、价格、操作性等等多个方面的综合考虑,我最终选择了 Arduino Mega 2560。 首先是Arduino的平台优势。Arduino有高度复杂的硬件系统,但结构高度模块化,易于使用,通过USB接口与PC建立通信,是一款极为优秀的电子设计平台它集硬件(Arduino板)和软件(Arduino IDE)于一体。Arduino 是一个基于开放源码的软硬件平台,构建于开放源码 Simple I/O界面,使用的代码语言是C++。Arduino开发板大多数是基于AVR的8位单片机,目前有许多型号。常见的有基于Atmega328p芯片的Uno、Nano、Mini以及基于Atmega2560芯片的Mega2560。 但是随着技术的发展,8位的单片机已经无法满足人们的需求,32位的处理器登上了舞台,Arduino因此推出了基于ARM的32位型号DUE,同时为了顺应物联网时代的到来又推出可以接入以太网的 YUN[8]。 小车的四个电机加上众多的传感器,需要一个有多个接口的Arduino型号,经过Uno与Mega 2560的对比,如下表4.1。 表4.1 Mega2560与Uno比较 数字引脚 PWM引脚 模拟引脚 外部中断引脚 Uno 14 6 6 2 3 Mega2560 54 15 15 2 3 21 20 19 18 最终选择了中断引脚和数字引脚较多的Mega 2560作为小车的主控。

4.3 电机和电机驱动选型 自动驾驶小车系统的主要工作部件主要为直流无刷电机,还有编码器和陀螺仪等可以获得小车运动状态的传感器部件。所以在选择电机的时候,带有编码器直流无刷电机,可以在给系统提供前进动力的同时,还可以通过分析编码器数据获得电机旋转方向和电机转速等重要参数,选择合适的传感器可以提高系统控制的精度和效率,也能节约成本和系统空间。 4.3.1 驱动电机选型 直流无刷电机作为同步电机的一种,它的转子的转速受到其定子旋转磁场的速度及转子极数的影响。直流无刷电机既具有交流电动机结构简单、运行可靠、维护方便等一系列的优点,又具有直流电动机运行效率高、调速性能好等诸多的优点。直流无刷电机最重要的部分就是它的控制结构,它的驱动器可以控制转子维持在一定的转速,性能更加的稳定。直流无刷电机广泛应用于现代生产设备、仪器仪表、计算机外围设备和高级家用电器。它具有效率高、寿命长、低噪音等优点。效率高:一般的直流无刷电机的效率能够达到96%以上,而传统的直流电机的效率一般75%左右;效率高,达到能量的转换高,电能转化成电机的转动机械能就高,这样可以非常节能,作为自动驾驶小车系统的驱动比较其他电机可以大幅减少能源损耗。寿命长: 一般有刷的传统电机,由于碳刷的磨损性,隔一段时间就要更换,维修频繁,而直流无刷电机,一般的使用寿命都在2万小时以上,正常工况条件下,使用5年以上,基本不会损坏,所以直流无刷电机的寿命是传统电机的5倍。低噪音,直流无刷电机由于结构简单,零配件能够精密配合安装,运行比较平滑,运行声音在50db以下,很多的医疗设备都因为直流无刷电机的静音性能而采用直流无刷电机。 同时直流无刷电机可以配套编码器使用,编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器,我们可以通过编码器测量到底位移或者速度信息。编码器按照检测原理可以分为光学式、磁式、感应式、电容式,常见的是光电编码器(光学式)和霍尔编码器(磁式);按照运动方式可分为旋转编码器或者是线性编码器,旋转编码器按照工作原理可以分为增量式编码器和绝对式编码器:增量式旋转编码器仅在电机旋转时输出脉冲,要使用增量编码器确定轴位置,您必须知道起始位置并使用外部电路来计算输出脉冲数;绝对旋转编码器输出对应于旋转角度的数字代码,无需计算脉冲来了解电机轴的位置。 增量编码器可以通过正交编码来得到电机转动得方向。正交编码是一种增量信号,增量编码器转动后即可产生两种方波输出A和B;这些信号共同构成了增量编码器的正交输出。对于多数编码器而言,这些方波A和B均失相90度。通过观察A和B输出不断变化的状态,编码器的方向得以确定。有两个通道:通道A和通道B。 同时电机还要保证一定的驱动力,需要选择合适的电机减速比,供电电压也不能太高或者太低,应12V附近为宜。 综合以上这些原因,我选择了带有霍尔编码器(增量编码器)的直流减速无刷电机JGB37-52电机,电机参数如下图4.1、表4.2。 在这里插入图片描述

图4.1 电机产品尺寸

型号 减速比 空载转速 额定扭矩 停转电流 长度 JGB37-52 1:56 178 6.5N/m 2.3A 24mm 表4.2 电机产品参数 编码器参数如下图4.2。 在这里插入图片描述

图4.2 编码器参数 4.3.2电机驱动器的选型 电机正负极接电源就可以转,但要是像在不改变电路结构的情况下改变电机转向就得借助电机驱动,同时电机驱动器可以使得通过PWM信号控制电机成为可能,调节电机转速变得更方便。 考虑价格和其他开发者使用频率等因素,我最终选择了L298N电机驱动板模块。 这个模块使用ST公司的L298N双H桥直流电机驱动芯片作为主控驱动芯片,具有驱动能力强、发热量低 ,抗干扰能力强的特点。模块供电部分使用内置的78M05,可以保护芯片(驱动电压大于12V时用外置5V逻辑供电)。模块还使用大容量滤波电容,续流保护二极管,提高可靠性[9]。 驱动模块的具体参数如下表4.3。 表4.3 L298N主要参数 型号 芯片 驱动供电范围 逻辑端供电范围 最大功耗 L298N模块 L298N双H桥直流电机驱动芯片 5V-35V 5V-7V、 20W

4.4 传感器的选型 在自动驾驶小车系统控制的过程中,除了通过已选电机自带得编码器读取和计算电机转速和转动方向之外,还需要实时读取小车转过得角度,以实现完整转弯和辅助小车前进等作用。 陀螺仪是根据陀螺在转动过程中受到外力矩作用后的特殊运动为原理设计的。绕一个支点高速转动的刚体称为陀螺。陀螺仪在工作时要给它一个力,使它快速旋转起来,一般能达到每分钟几十万转,可以工作很长时间。然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。陀螺仪有很多种类,根据框架的数目和支撑的形式可分为三自由度陀螺仪、二自由度陀螺仪[10]。 无人驾驶小车系统暂时只需要知道系统Yaw轴(即陀螺仪Z轴)的实时转动角度就可以实现功能(即只需要二轴陀螺仪),但由于陀螺仪自费购买,只买二轴陀螺仪可以降低小车的成本,但是不利于我以后继续进行其他实验,所以我最终选择了深圳维特智能科技生产销售的六轴姿态角度传感器,产品型号JY61。产品各项参数如下表4.4: 表4.4 陀螺仪参数 型号 供电电压 工作电流 通信方式 角度量程 角度精度 波特率 JY61 3.3-5V Motor2 > Motor3 > Motor0,小车右侧的1、2号电机的转速略大于左侧的0、3号两个电机的转速;同时,随着时间的推移,四个电机的转速都稳定到程序中目标值40附近,但是波动略大。 方案二:小车稳定后进行转弯,转过90度,根据上位机的Z轴角度曲线可以看出(如图6.4),曲线随着时间非常平滑地从0度到达90度,可见小车在转动过程中的速度非常稳定,远远超过预期。在实际的自主移动过程中,角度不但有PID调节还有视觉识别车道线检测做辅助,所以实际效果会比测试结果更好,达到预期。 在这里插入图片描述

图 6.4 陀螺仪上位机波形

6.1.3 解决测试中的问题 经过分析,方案一在测试中出现了两个问题,而方案二则达到了预期,所以我们着重来解决方案一中出现的两个问题。 问题一,电机在刚启动时速度差距较大导致车身偏转。 经过一系列测试发现,由于小车的四个电机之间的较大的个体差异,用二分法进行不断测试,从电机编码器蜂鸣器响起到刚好能够启动电机的PWM值各不相同:Motor0为40、Motor1为25、Motor2为34、Motor3为27,所需PWM值的顺序为Motor1 < Motor2 < Motor3 < Motor0,完全符合试验测试的结果。 为了解决这一问题,在程序对电机进行初始化时,PWM的初始值不再设置为0,而是将PWM的初始值直接设定为一个与所有电机最小启动PWM差距最小,且不至于让车开始运动的值。经过反复进行二分法试验测试,这个PWM初始值最终设定为30。修正后带各电机的转速数据如下表6.2,完全满足自动驾驶控制的条件。 表6.2 直线修正数据 序号 1 2 3 4 5 6 7 8 9 10 Motor0 7.97 17.77 25.35 33.89 38.51 38.95 39.33 40.14 41.84 40.38 Motor1 9.34 19.45 27.85 34.36 37.35 37.34 39.88 41.78 40.38 41.54 Motor2 8.34 16.33 24.76 33.76 38.44 38.55 38.92 40.89 39.82 40.39 Motor3 8.12 17.47 24.88 33.28 38.98 39.05 39.58 40.97 40.74 40.88

问题二,各个电机在速度接近稳定之后,偏差依然较大。 经过各种原因的排除以及资料的查询,最终确定是由于所有的电机都公用一套PID参数,而这套参数由于电机个体化差异的原因,不能完美适配所有电机,所以部分电机转速出现轻微的超调,稳定时间长。 为了解决这一问题,借助Arduino IDE自带的输出图像化功能,逐一生成每个电机的输出图像,并且将程序中的PID设为一个数组,每组PID的值分别对应不同序号的电机,经过修改之后,仿真结果如下图6.5。 在这里插入图片描述

图6.5 电机转速仿真图

6.2 工业设计优化 前面介绍的自动驾驶小车控制系统虽然功能已经基本实现,但是如果对比市场中一些作为教育套件的自动驾驶小车系列产品来说还相差很远。我认为在设计方面需要做一些优化,我自己已经优化了一部分,剩下的也提出了优化的思路: 已经做出的优化部分效果显著,我举一些简单的例子:电池开关方便开断电源方便测试和使用、电源电压显示模块实时显示电池电压方便排除问题和及时充电、小车功能指示灯显示小车所处的各种状态和模式、主控安装位置将串口露出,方便与放在小车底盘上的处理器通信等等,还有遥控器,做了完整的亚克力外壳并且加上开关等重要部件同时合理安排所有部件的位置,已经非常方便使用。这些虽然都是一些小的优化,但对于功能实现和测试来说都极其重要。

对于一些其他必要的较为复杂的优化,我也列出了解决思路。对于需要空气来说,因为结构简单,已经优化非常完整,后期再做一些美化的工作就好了。对于小车来说,结构复杂,且作为自动驾驶的主体,需要进行大量优化。小车使用的成品模块比较多,例如电源稳压模块、电机驱动模块等等,不但需要接许多线造成了不便,同时占用了小车大量的空间,计划将所有的模块芯片、对应电路、指示灯以及主控芯片等等都集成到定制的PCB上,这样可以增强系统的完整性和可靠性。对于小车的机械结构,在底盘轮组部分适当加上悬挂增加小车在不平整路面的稳定性。设计小车兼具美观和实用的外壳和整体设计,使得整个小车系统更像是一个真正的产品。

6.3 本章小结 这一章,通过对小车基本功能进行测试,并对测试中出现的问题进行分析和解决,借助Arduino仿真工具和上位机等等,解决问题的手段和方法效率明显提升。同时对小车的工业设计等方面进行了完善和优化,为自动驾驶小车功能的实现提供了条件。

第七章 结论与展望 7.1 结论 本文旨在通过自己完成自动驾驶小车系统的控制,再结合自动驾驶程序实现自动驾驶的功能,进而了解自动驾驶了解人工智能这一项先进技术的开发流程。获得的主要结论如下: (1) 确定了自动驾驶小车的总体设计方案,并进行动力分析,最终确定系统的控制目标并对系统相关方案进行设计。 (2) 完成了针对系统的控制目标进行模型的仿真设计,使用Matlab进行了控制过程仿真建模,使用Solid Works完成了外形和各模块布局的仿真。 (3) 进行了对系统的硬件部分进行搭建,确定主控芯片、驱动电机、驱动模块、传感器等的选型,对系统电路部分进行设计。 (4) 完成了对系统软件部分进行设计,对主要控制进行分析、设计控制的流程图、完成系统的程序设计和编写。 (5) 搭建完成的控制系统进行测试并对问题进行解决,同时进行优化。

但自动驾驶功能的实现部分略有遗憾,没有能进行完整的自动驾驶验证,在结束论文的写做之后,我会继续加油,把人工智能自动驾驶的算法部分也做好,争取搭建出一辆结构和功能都非常完整的人工智能自动驾驶小车。 7.2 展望 从1885年,卡尔本茨研究的第一辆汽车在德国诞生、到二战结束后,工业技术发展带动汽车大力发展、到20世纪七十年代后,电子信息技术飞速发展让汽车技术更加完善、到十多年前新能源汽车的提出和实施、再到近几年人工智能辅助自动驾驶技术和一批新势力车企的出现,整个汽车历史的发展史就是工业技术发展的一个缩影。通过人工智能自动驾驶小车控制系统的设计,我全面了解了整个人工智能的开发流程以及在流程中各个部分的重要作用。

致谢 省略

参考文献 [1] 方敏,张立新,于星胜.浅谈智能网联汽车的发展[J].内燃机与配件,2020. [2] 佚名.5G商用或为无人驾驶提速[N].信息时报,2019-06-20. [3] 中国科学技术协会,中国自动化学会.控制科学与工程学科发展报告 2007-2008[M].中国科学技术出版社:北京,2008:1. [4] 王瑞丰. 水田大跨度埂上行走装置控制系统设计[D].沈阳农业大学,2020. [5] 何芝强. PID控制器参数整定方法及其应用研究[D].浙江大学,2005. [6] 范立南,李雪飞.计算机控制技术[M].机械工业出版社:北京,2009:1. [7] 王小建,胡长胜,陈宁,等.单片机设计与应用[M].清华大学出版社:北京,2011:83. [8] 李鑫,王晟全.通过实现Arduino的基础功能阐明其优势[J].工业控制计算机,2019,32(01):100-101.[3]徐嘉璐.自动跟随购物筐[J].科学技术创新,2019. [9] 徐嘉璐.自动跟随购物筐[J].科学技术创新,2019,1:1. [10]王青,戴剑锋,李维学.物理原理与工程技术[M].国防工业出版社:北京,2008:22. [11]朱鹏.ARDUINIO开发板与ANDROID手机蓝牙通信的设计与实现[J].电脑知识与技术,2016.

5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)本项目源码基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(源码+文档)_Arduino_自动驾驶小车控制系统.zip


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有