第十一届智能车技术报告_天津大学
1
第十一届“恩智浦”杯全国大学生
智能汽车竞赛
技 术 报 告
学 校:天津大学
队伍名称:凌宇智控光电队
参赛队员:杨 明
杨炎龙
吴岳峰
带队教师:王建荣
1
摘要
本文以第十一届全国大学生智能车竞赛为背景,介绍了智能赛车控制系统的软硬件结构和开发流程。该比赛采用大赛组委会统一指定 C 型车模作为比赛用车。赛车以 NXP 半导体公司生产的 32位单片机 K60 作为核心控制器,要求赛车在未知赛道上使用线性CCD 识别赛道,以最快的速度完成比赛。整个系统涉及车模的机械结构调整、传感器电路设计及信号处理、控制算法和策略优化等多个方面。赛车采用谐振电路对赛道进行检测,提取赛道信息,用 PD 方式对舵机进行控制。同时通过编码器获取赛车当前运行速度,并采用 PID 控制实现速度闭环控制。
关键词:恩智浦,智能车,线性CCD ,PID
ABSTRACT
In the background of the 11th National Intelligent Car Contest for College Students, this article introduces the software and hardware structures and the development flow of the vehicle control system. The competition organizing committee to use a unified designated C models as a racing car ,using the 32-bit MCUK60 produced by NXP Semiconductor Company as the core controller,requires the car finish the race in the fastest speed. The whole system includes the aspects of the mechanism structure adjustment, the sensor circuit design and signal process, control algorithm and strategy optimization etc. It captures the road information through linear CCD, and abstracts the road information.After that, PD feedback control is used on the steering. At the same time, the system obtains the current speed using encoders, so that it can realize the feedback control of the speed by PID method.
Key words: MK60, Intelligent vehicle, linear CCD, PID
目 录
第十一届“恩智浦”杯全国大学生 . .............................................................................................. 1
目 录 .............................................................................................................................................. 3
引言 .................................................................................................................................................. 4
第一章 方案设计 . ............................................................................................................................ 5
1.1系统总体方案的选定 . ................................................................................................................ 5
1.2系统总体方案的设计 . ................................................................................................................ 5
第二章 智能车机械结构调整与优化 . ............................................................................................ 6
2.5.1 前轮调整 . .................................................................................................................. 8
2.5.2 其他部分调整 ......................................................................................................... 10
第三章 硬件电路设计说明 . .......................................................................................................... 11
第四章 智能汽车控制软件设计 . .................................................................................................. 14
4.1光电传感器路径精确识别技术 . .............................................................................................. 14
4.1.1光电传感器路径识别状态分析 . ........................................................................... 15
4.3.1 PID 控制 . ................................................................................................................ 16
4.3.2 Bang-bang 控制 ..................................................................................................... 18
4.3.3 模糊控制 . ................................................................................................................ 18
4.3.4 互补滤波 . ................................................................................................................ 19
4.3.5 总结 . ....................................................................................................................... 19
4.6.1 转向舵机控制算法 .................................................................................................. 21
4.6.2 驱动电机控制算法 .................................................................................................. 22
4.7 总结 ................................................................................................................................. 23
第五章 系统调试 . .......................................................................................................................... 23
5.1 调试工具 ....................................................................................................................... 23
5.2 现场调试 ....................................................................................................................... 24
第六章模型车的主要技术参数说明 . ............................................................................................ 25
第七章 总结 . .................................................................................................................................. 26
参考文献......................................................................................................................................... 28
附件一:程序源代码 . ................................................................................................................. 29
致谢 ................................................................................................................................................ 32
引言
为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,受教育部高等教育司委托(教高司函[2005]201 号文,附件 1) ,由教育部高等自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智能汽车竞赛。该竞赛以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。该竞赛由竞赛秘书处为各参赛队提供、购置规定范围内的标准硬软件技术平台,竞赛过程包括理论设计、实际制作、整车调试、现场比赛等环节,要求学生组成团队,协同工作,初步体会一个工程性的研究开发项目从设计到实现的全过程。该竞赛融科学性、趣味性和观赏性为一体,是以迅猛发展、前景广阔的汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械与汽车等多学科专业的创意性比赛。该竞赛规则透明,评价标准客观,坚持公开、公平、公正的原则,保证竞赛向健康、普及,持续的方向发展。
该竞赛以NXP 半导体公司为协办方,得到了教育部相关领导、NXP 公司领导与各高校师生的高度评价,已发展成全国 30 个省市自治区近300 所高校广泛参与的全国大学生智能汽车竞赛。2008 年起被教育部批准列入国家教学质量与教学改革工程资助项目中科技人文竞赛之一(教高函[2007]30 号文)。全国大学生智能汽车竞赛原则上由全国有自动化专业的高等学校(包括港、澳地区的高校)参赛。竞赛首先在各个分赛区进行报名、预赛,各分赛区的优胜队将参加全国总决赛。
本次比赛分为光电、摄像头和电磁三个赛题组,在车模中使用摄像头进行道路检测方法属于摄像头赛题组,使用电磁信号巡线属于电磁赛题组,使用 CCD 或光电管检测道路信息的则属于光电赛题组。本论文主要介绍光电赛题组的智能车制作。
第一章 方案设计
本章主要介绍智能汽车系统总体方案的选定和总体设计思路,在后面的章节中将整个系统分为机械结构、控制模块、控制算法等三部分对智能汽车控制系统进行深入的介绍和分析。
1.1系统总体方案的选定
通过学习竞赛规则和往届竞赛相关技术资料了解到,路径识别模块是智能汽车系统的关键模块之一,路径识别方案的好坏,直接关系到智能汽车最终性能的优劣,因此确定路径识别模块的类型是决定智能汽车总体方案的关键。目前能够用于智能汽车辆路径识别的传感器主要有光电传感器、CCD/CMOS传感器和电磁传感器。光电传感器寻迹方案的优点是电路简单、信号处理速度快,但是其前瞻距离有限;CCD 摄像头寻迹方案的优点则是可以更远更早地感知赛道的变化,但是信号处理却比较复杂;电磁传感器主要通过对赛道中心导线产生的电磁场进行识别。在比较了三种传感器优劣之后,考虑到各种传感器的特点以及队员的知识积累和兴趣,决定选用应用广泛的光电传感器,相信通过选用大前瞻的光电传感器,加之精简的程序控制和较快的信息处理速度,传统光电传感器仍然可以达到极好的控制效果。
1.2系统总体方案的设计
遵照本届竞赛规则规定,智能汽车系统采用NXP 的16位微控制MK60DN512LL10单片机作为核心控制单元用于智能汽车系统的控制。在选定智能汽车系统采用光电传感器方案后,赛车的位置信号由车体前方的光电传感器采集,经I/O口接收后,用于赛车的运动控制决策,同时内部ECT 模块发出PWM 波,驱动直流电机对智能汽车进行加速和减速控制,以及伺服舵机对赛车进行转向控制,使赛车在赛道上能够自主巡线行驶,并以最短的时间最快的速度跑完全程。为了对赛车的速度进行精确的控制,在智能汽车电机输出轴上安装光电编码器,采集编码器转动时的脉冲信号,经MCU 捕获后定时进行PID 自动控制,完成智能汽车速度的闭环控制。此外,还增加了旋钮编码器作为输入输出设备,用于智能汽车的速度和控制策略选择。
传感器模块,是智能汽车的“眼睛”,可以通过一定的前瞻性,提前感知前方的赛道信息,为智能汽车的“大脑”做出决策提供必要的依据和充足的反应时间。 电源模块,为整个系统提供合适而又稳定的电源。
电机驱动模块,驱动直流电机和伺服电机完成智能汽车的加减速控制和转向控制。 速度检测模块,检测反馈智能汽车轮的转速,用于速度的闭环控制。
辅助调试模块主要用于智能汽车系统的功能调试、赛车状态监控。
第二章 智能车机械结构调整与优化
2.1 智能车参数要求
1. 车模尺寸要求:车模尺寸宽度不超过 250mm ,长度450mm 。
2. 传感器数量要求:传感器数量不超过 16 个。
3. 伺服电机型号:FUTABA3010。伺服电机数量不超过 3 个。
4. 电机型号:RN -260。
5. 全部电容容量和不得超过 2000 微法;电容最高充电电压不得超过 25 伏。
2.2 智能车整体参数调校
智能车的整体参数,包括车体重心、舵机电机放置的位置和高度、传感器排布方式等,这些都对整个智能车系统的稳定运行起着至关重要的作用。因此,对智能车机械系统的调节,有助于小车更快更稳定的运行。小车的布局以可靠、稳定、精简为前提 , 通过对小车的布局,尽量保证小车左右平衡,并且寻找一个合适的重心,保证小车既能够可靠地抓牢地面,又能够对前轮舵机,后轮电机有较快的响应。C 车模如 2.2.1 所示
图2.2.1 c车车模
2.3 车模转向机构调整
为了最大限度的增大转向范围,提高舵机效率,我们采用长连杆方案实现舵机与前轮之间的连接。如图 2.3.1 所示:
图 2.3.1 长连杆方案原理图 长连杆方案的优点是:
1、可以根据需要选择舵机输出杆的长度,从而获得所需要的灵敏度,但是舵机输出杆的长度也不能太长,因为这会对舵机的输出力矩有较高的要求,太长会烧坏舵机。
2、效率较高,舵机的单边(例如取左边)效率, 对于长连杆方案来说,左轮角在增大的同时,右轮角在减小,而且角是在 0-45 度之间,同时的变动也比较小(45 度-135 度),因此长连杆的效率变动较小且效率较高。
3、转角大,由于长连杆方案中舵机输出杆的转动在同一个平面内,当其到达极限位置时,转角比平行四边形方案要大。
4、转向更灵敏,因为放大倍数较平行四边形方案要大。小车舵机连杆如图 2.3.2 所示。
2.4 编码器的安装
小车选用编码器进行速度的测量。C 车模具有双电机,需要两个相同的编码器对两个电机分别进行速度的测量,以便获得精确的小车运行状态。根据编码器的形状,选择合适的支架,将编码器用螺钉通过支架固定在后轮支架上,这样固定好之后,就有了较高的稳定性。然后调节编码器齿轮,使其与电机输出齿轮紧密咬合,增大测速的精确性。但是齿轮咬合过紧也增大了摩擦,减小了对电机做功的利用率,影响小车的快速行驶,因此减小摩擦同时增强齿轮间的咬合是我们主要考虑的因素。编码器安装示意图如图 2.4.1 所示。
图 2.4.1 编码器安装示意图
2.5 智能车机械参数调节
为保证智能小车直线行驶稳定,转向轻便灵活,需要对小车的四轮定位参数进行调整。四轮定位内容主要有:主销后倾角,主销内倾角,前轮外倾角,前轮前束,内外转向轮转角差,后轮外倾角,后轮前束。其中,前轮定位的参数对小车性能有着至关重要的影响,这四个参数反映了前轮、主销和前轴三者之间在车架上的位置关系。本节将对这四个参数做详细阐述。
2.5.1 前轮调整
小车在调试过程中,转向轮定位参数是很重要的因素,它通常不易被察觉,但是却有着较大的危害。如果取得不恰当,那么将造成转向不灵活,效率低以及转向轮侧滑等问题,使得小车性能下降,加速轮胎的磨损。转向轮定位参数包括:主销内倾角、主销后倾角、转向轮外倾角及转向轮前束。这其中最重要的就是转向轮外倾角和转向轮前束。主销内倾是指主销装在前轴略向内倾斜的角度,它的作用是使前轮自动回正,如图 2.6.1。内倾角度越大前轮自动回正的作用就越强烈,但转向时也越费力,轮胎磨损增大;反之,角度越小前轮自动回正的作用就越弱。
主销后倾是指主销装在前轴,上端略向后倾斜的角度,如图 2.6.2。它使车辆转弯时产生的离心力所形成的力矩方向与车轮偏转方向相反,迫使车轮偏转后自动恢复到原来的中间位置上。由此主销后倾角越大,车速越高,前轮稳定性也愈好。主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时后倾的回正作用大,低速时内倾的回正作用大。
图 2.6.2 主销后倾角
车轮外倾角是指从前方看前轴时,轮胎的中心平面不是垂直的,而是上面向外倾斜一个角度,如图 2.6.3。设置转向轮的外倾角是为了平衡和协调因为车重造成的前轮内倾倾向,使轮胎和路面呈垂直接触的最佳状态。
图 2.6.3 车轮外倾角
转向轮前束是指同一轴两端车轮轮辋内侧轮廓线的水平直径的端点为等腰梯形的顶点,底边为车轮轴线。等腰梯形两底边长度之差为前束。如图 2.6.4所示,当梯形前低边小于后底边时,前束为正(A
图 2.6.4 前束
2.5.2 其他部分调整
其他部分调整主要涉及到小车底盘高度、小车重心位置、后轮距、齿轮咬合等。具体调整如下:
1、底盘高度调整:底盘高度可以影响重心。适当降低底盘高度可以使小车重心降低,有利于过弯稳定。实际调整可以通过调整前轮高度、后轮轴高度调节块等方式来调节。
2、重心位置:重心位置同样影响小车性能。重心过前,增加转向阻力,引起转向迟滞。另外,如果小车速度很快的情况下,上下坡道的时候会造成前轮首先着地,很可能造成小车意外事故。重心过后,则会使小车前轮抓地不足,造成过弯非常不稳定。实际调整以重心在电池处为准,保持各部分重量均衡。
3、后轮距调整:后轮距可以通过换装后轮宽度调整块来调整。合适的后轮宽度会使小车直线性能和弯道性能更优,利于小车稳定。
4、齿轮咬合调整:调整齿轮咬合,以不松动,无卡滞,松紧合适为准。另外还要保证齿轮间咬合有足够的接触面积。
2.6 重心的调整
采用传统光电组安装方法,在主板与电池中间放置CCD 支架杆。这样中心一般来说是偏向后轮的。
2.7 其它机械结构的调整
另外,在模型车的机械结构方面还有很多可以改进的地方,比如说车轮、悬架、底盘、车身高度等。模型车在高速的条件下(2.3m/s3.5m/s),由于快速变化的加减速过程,使得模型车的轮胎与轮辋之间很容易发生相对位移,可能导致在加速时会损失部分驱动力。在实验中调试表明,赛车在高速下每跑完一圈,轮胎与轮辋之间通常会产生几个厘米的相对位移,严重影响了赛车的加速过程。为了解决这个问题,我们在实际调试过程中对车轮进行了粘胎处理,可以有效地防止由于轮胎与轮辋错位而引起的驱动力损失的情况。此外,我们还对车身高度,以及底盘的形状和质量等,都进行了相应的改进和调整,均取得了不错效果。
2.8 智能车后轮减速齿轮机构调整
模型车后轮采用 RS -380SH 电机驱动,电机轴与后轮轴之间的传动比为 18:76(电机轴齿轮齿数为 18,后轴传动齿数为 76)。齿轮传动机构对车模的驱动能力有很大的影响。齿轮传动部分安装位置的不恰当,会大大增加电机驱动后轮的负载,会严重影响最终成绩。调整的原则是:两传动齿轮轴保持平行, 齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力,浪费动力;传动部分要轻松、顺畅,不能有迟滞或周期性振动的现象。判断齿轮传动是否良好的依据是,听一下电机带动后轮空转时的声音。声音刺耳响亮,说明齿轮间的配合间隙过大,传动中有撞齿现象;声音闷而且有迟滞,则说明齿轮间的配合间隙过小,或者两齿轮轴不平行,电机负载变大。调整好的齿轮传动噪音很小,并且不会有碰撞类的杂音,后轮减速齿轮机构就基本上调整好了,动力传递十分流畅。
2.9 本章小结
机械结构是智能小车的基础,其首先决定了小车的性能,特别是转向和加速性能,本章主要通过对转向机构的分析以及对汽车理论知识的学习和应用,找到了影响小车转向范围和效率的因素并进行了改进,使得小车的转向灵敏度得到提高,同时舵机效率也得到较大提高。
第三章 硬件电路设计说明
本智能车硬件系统以稳定为设计的原则,在有限的条件下做到最好。单片机采用
MK60DN512ZVLL10,使用一片 TPS7333 产生的 3.3V 电压为单片机、液晶、SD 卡和
MPU6050 模块供电,使用一片 LM1117-5.0 同时为编码器、线性CCD 传感器和蓝牙供电,电机驱动使用芯片 BTN7971B ,舵机由电池电压直接供电。在调试过程中,采用液晶、蓝牙、SD 卡等模块辅助,实现人机交互功能。以上部分在本章均有详细介绍。
3.1 电源模块
为满足需要,本车模上存在 4 种供电电压:
1)智能车使用镍镉充电电池,充满时电压在 7.8~8.2V 。可直接用于电机和舵机供电。
2)一些数字器件使用直流 5V ,5V 电源选用开关型稳压芯片 AS1015 以及线性稳压芯片 TPS7350。为了隔离电机的干扰,AS1015 和 TPS7350 的输入端加磁珠。
3)使用 3.3V 为单片机运算放大器供电,采用线性稳压芯片 TPS79333。输入端接 AS1015 和 TPS7350 输出端。
4)电机驱动模块使用直流 17V ,使用一款 5-12V 升压电源模块。加若干 LED 显示各类电源工作状况。该部分电路如图 3.1 所示。
图 3.1.1 稳压模块
3.2 单片机最小系统板
以 MK60DN512ZVLL10 为核心的单片机最小系统是本智能车的核心。其为3.3V 供电。原理图如 3.2.1 所示。
图 3.2.1 单片机最小系统板原理图
3.3 电机驱动模块
电机采用 Infineon 公司的芯片 BTN7971B ,其为高强度电流的半桥电机驱动芯片。我们的电机驱动板利用四片 BTN7971B ,两片构成一个完整的全桥驱动,用两组全桥驱动控制两个电机的正转、反转和刹车制动。电路原理图如图3.4.1 所示。
图 3.4.1 电机驱动原理图
3.4 编码器测速电路模块
本小车使用广州科创电子的 mini 型 256 线编码器进行小车的测速,并由LM1117-5.0 为其提供 5V 的工作电压。编码器输出的两相信号通过异或门芯片处理后实现 512 线效果,再通过处理器读取芯片输出信号来实现小车速度的检测,通过 D 触发器处理,读取编码器输出的两相信号的相位关系,实现电机的正反转检测。测速电路模块原理图如图 3.5.1 所示:
图 3.5.1 编码器模块
3.5 旋钮按键电路
为了能够便于对小车进行实时调试及参数修改,我们采用旋钮按键电路对参数进行修改。旋钮按键电路引入硬件防抖,提高准确性。旋钮按键电路原理图如图 3.6.1 所示
图 3.6.1 旋钮按键电路
3.6 舵机 模块
舵机用电池电压直接进行供电。为了防止舵机产生的反向电动势对主板的影响,在电池与舵机之间接一个 1N5819。虽然较高的电压可以提高舵机的响应速度,但过高电压容易导致舵机工作不稳定。舵机模块电路的原理图如图3.7.1 所示。
图 3.7.1 舵机插针
3.7 陀螺仪模块
为了使小车能够对坡道进行检测,我们采用陀螺仪模块对坡道进行检测。可以通过陀螺仪模块检测小车此时处于上坡或下坡状态。所使用的 MPU6050 采用的是 I2 C 协议。
3.8 人机交互模块
小车使用的人机交互模块有蓝牙模块和 SD 卡模块。其中蓝牙模块是 5.0V 供电,采用 UART 协议传输;SD 卡模块是 3.3V 供电,采用 K60 的 SDHC 模块工作。
第四章 智能汽车控制软件设计
4.1光电传感器路径精确识别技术
在智能汽车系统中,光电(激光)传感器就是整个系统的“眼睛”,其对于路径的识别在控制系统中尤为重要。MC9S12XS128单片机通过对光电传感器采集到的赛道信息进行处理,进而控制智能汽车按照黑线行驶。
4.1.1光电传感器路径识别状态分析
由于今年的赛道信息变化相当大,由往年的循赛道中央的单线改为今年的循赛道边沿的双边沿黑线,传统的传感器布局可取之处不是很大。在经过不断地尝试,先后选用过八字型,一字型,凸圆弧型以及先用的倒八型灯分布形式,最终选用的现用的倒八型光斑分布。下排采用传统线性CCD 方案。模型车也充分利用了往年的成熟的传感器技术。
4.2 弯道策略分析
在车辆进弯时,需要对三个参数进行设定:切弯路径、转向角度、入弯速度。
其中,切弯路径主要决定了车辆是选择内道过弯还是外道过弯。切内道,路经最短,但是如果地面附着系数过小会导致车辆出现侧滑的不稳定行驶状态,原因是切内道时,曲率半径过小,同时速度又很快,所以模型车需要的向心力会很大,而赛道本身是平面结构,向心力将全部由来自地面的摩擦力提供,因此赛道表面的附着系数将对赛车的运行状态有很大影响。切外道,路径会略长,但是有更多的调整机会,同时曲率半径的增加会使得模型车可以拥有更高的过弯速度。
转向角度决定了车辆过弯的稳定性。合适的转向角度会减少车辆在转弯时的调整,不仅路径可以保证最优,运动状态的稳定也会带来效率的提高,减少时间。在考虑转向角度设置时需要注意以下几个问题:对于检测赛道偏移量的传感器而言,在增量较小时的转向灵敏度;检测到较大弯道时的转向灵敏度;对于类似 S 弯的变向连续弯道的处理。
对于入弯速度的分析,应该综合考虑路径和转向角度的影响。简单而言,我们会采取入弯减速,出弯加速的方案,这样理论上可以减少过弯时耗费的时间。然而,在过去几届比赛中,通过观察各参赛车对弯道的处理后,我们发现并不是所有人都选择了相同的方案。正如前面说到的那样,不联系路径和转向角度,只是单纯地分析过弯速度,会造成思路的局限甚至错误。例如,在不能及时判断入弯和出弯的标志点就采取“入弯减速、出弯加速”的方案,会出现弯道内行驶状态不稳定、路径差,同时出弯加速时机过晚,一样会浪费时间。所以现在本系统参考实际驾驶时的一些经验,对过弯速度的处理方式确定为:入弯时急减速,以得到足够的调整时间,获得正确的转向角度;在弯道内适当提速,并保持角度不变,为出弯时的加速节约时间;出弯时,先准确判断标志,然后加速,虽然会耗费一些时间,但是面对连续变向弯道可以减少判断出错的概率,保证行驶状态的稳定性,而且弯道内的有限加速对后面的提速也有很大的帮助。综合考虑用可以接收的额外时间换回行驶稳定性还是值得的。
下面以常见的几种弯道转角处理方式解释各方案的优缺点,其中,横坐标表示由传感器采集回来的赛道中心线相对赛车中心线的偏移量,纵坐标表示转角大小。
a 图表示偏移量与转向角度呈线性关系,在计算及程序编写上都比较简单,也可以实现控制赛车行驶的目标,但是由于规则制定比较简单,对赛车实际行驶状态的分析不够全面,所以在实际应用时不能简单套用。b 图表示的是在赛车略微偏离赛道中心时,不要对行驶方向作太大调整,而是在当偏离度大到预定值时急速调整转角以保证过弯的及时,同时在以判断出c b ad偏移量e 偏移量是急弯后,也不要进行大的变动,因为此时转角的值已经很大,仅需对舵机进行微调就可以保证方向的正确性。这种方案的优点是综合考虑了赛车对个弯道的适应程度,同时保证了在直线行驶时的稳定性,和抗干扰性,但是对急弯的响应可能不够及时,这是该方案的主要缺点。
c 图表示的对弯道的处理方案与 B 图恰好相反,它提高了相应灵敏度,降低了抗干扰性,对于多弯道,且弯道曲率半径较小的赛道有比较好的适应性。d 、e 图是两种比较特殊的处理方案,它们不能用于赛车的全程控制,只是考虑到赛车的实际运行特点对某部分的偏移量有特别要求是使用。对于传统四轮车辆,转向时前轮有比较严格的角度关系,而它们的得到是由转向系统决定的。这样两套系统都对某个值做出了限制,必然会有矛盾,在车由 0 度转到最大转角时,并不是每时每刻都能同时满足两种条件的限制,那么为了赛车行驶的稳定性,我们可能会在小范围内对转角波动,以得到附近最合适的转角值,减小矛盾。
4.3 控制算法
智能车的控制包括电机和舵机的控制。具体的控制算法有 PID 控制、bang -bang 算法控制和模糊控制。
4.3.1 PID 控制
PID 控制是工业过程控制中历史最悠久,生命力最强的控制方式。这主要是因为这种控制方式具有直观、实现简单和鲁棒性能好等一系列的优点。PID 控制主要有三部分组成,比例、积分、微分。比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。偏差一旦产生,调节器立即产生控制作用使被控量朝着减小偏差的方向变化,控制作用的强弱取决于Kp 。当仅有比例控制时系统输出存在稳态误差。
为了消除稳态误差,引入积分控制。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。为了预测预测误差变化的趋势,引入微分的控制器,这样就能够提前使抑制误差的控制作用等于零, 甚至为负值, 从而避免了被控量的严重超调。 PID 控制框图如图 4.2.1 所示。对应的误差传递函数为:
式中,Kp 为比例增益,Ti 为积分时间常数,Td 为微分时间常数,U (s ) 为 控制量, E(s)为被控量与设定值 R(s)的偏差。时域表达式为:
在单片机中,我们仅能对数字信号处理,即数字 PID 控制。将上式离散化, 得
A. 位置式 PID 算法
直接利用上述离散化公式计算。由于积分项是将所有采集值偏差相加,在一段时间后会很浪费单片机资源。对其稍加改进,得到增量型 PID 算法。
B. 增量式 PID 算法
根据公式三得第k 个采样周期的控制量为
公式三减公式四得
其中
由上可知,利用三个历史数据,递推使用,即可完成 PID 控制量。框图如图 4.2.2 所示。
图 4.2.2 PID 控制流程图
4.3.2 Bang-bang 控制
Bang -bang 控制的思想是反馈值若比设定值小,就把控制值设置为最大,否则设置为最小,用公式表示为:
这种控制方式会有较快的响应速度。但同时速度超调现象很严重,受赛道摩擦因数影响大,容易引起小车的不稳定,因此 Bang -bang 控制是有一定的限制范围。
4.3.3 模糊控制
一般控制系统包含了五个主要部分,即:定义变量、模糊化、知识库、逻辑判断及反模糊化,以下将就每一部分做简单的说明:
1、定义变量:也就是决定程序被观察的状况及考虑控制的动作,例如在一般控制问题上,输入变量有输出误差 E 与输出误差之变化率 CE ,而控制变量则为下一个状态之输入 U。其中 E、CE 、U 统称为模糊变量。
2、模糊化:将输入值以适当的比例转换到论域的数值,利用口语化变量来描述测量物理量的过程,依适合的语言值求该值相对之隶属度,此口语化变量我们称之为模糊子集合。
3
、知识库:包括数据库与规则库两部分,其中数据库是提供处理模糊数据之相
关定义;而规则库则藉由一群语言控制规则描述控制目标和策略。
4、逻辑判断:模仿人类下判断时的模糊概念,运用模糊逻辑和模糊推论法进行推论,而得到模糊控制讯号。此部分是模糊控制器的精髓所在。
5、解模糊化:将推论所得到的模糊值转换为明确的控制讯号,作为系统的输入值。
模糊算法可以解决一些非线性问题, 将赛道分为直线、入大小弯、出大小弯、蛇形弯道,对应的直线加速、入大弯减速转方向、入小弯制动转方向、出弯加速、蛇形弯道直接通过(若可以达到这种前瞻性)。要达到这种控制要通过实际检测,分析大量赛道磁场信息,找出它们的特征。
4.3.4 互补滤波
在 PID 控制中微分信号的引入可以改善系统的动态特性,但也容易引进高频干扰,若在控制算法中加如低通滤波器,则可以改善这个问题,即在算法中加入一个一阶惯性环节,即低通滤波器。对 mpu6050 来说,加速度计对四轴或小车的加速度比较敏感,取瞬时值计算倾角误差比较大;而陀螺仪积分得到的角度不受小车加速度的影响,但是随着时间的增加积分漂移和温度漂移带来的误差比较大。所以这两个传感器正好可以弥补相互的缺点互补滤波就是在短时间内采用陀螺仪得到的角度做为最优,定时对加速度采样来的角度进行取平均值来校正陀螺仪的得到的角度。简言之,短时间内用陀螺仪比较准确, 以它为主; 长时间用加速度计比较准确, 这时候加大它的比重。加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器就是根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号。如下图 4.3.4 所示。
图 4.3.4 互补滤波图解
4.3.5 总结
不同的控制算法有不同的优缺点。虽然模糊控制可以较好解决一些非线性问题,
但控制复杂,实际调试中较 PID 控制无明显优势;Bang-bang 控制简单,但输出的超调大使得其作用范围有限。所以我们采用增量式 PID 控制与Bang-bang 控制相结合,PID 控制有利于控制的精度,Bang-bang 控制有利于控制的力度,两者结合是一个优势互补的解决方案,既保证输出的稳定性,又提高响应的速度。舵机为位置式 PD,虽然存在稳态误差,但可以快速响应;
电机控制为增量式 PID,由于给定速度频繁变化,采用微分先行 PID,使电机能够快速响应。对于 PID 的参数整定要做到循序渐进,单是靠随机试验是绝不可行的。
4.4 软件系统设计及实现
初始化中包括:单片机时钟配置、I/O 口配置、PWM 模块配置、A/D 模块配置、RTI 实时中断配置、脉冲捕捉模块配置。当初始化完毕后,进入跑车程序:对传感器输入信号进行采样,当完成一次采样后将采样值映射成车相对于跑道的位置, 根据当前与过去位置决定舵机转角和电机速度, 通过改变 PWM模块内部寄存器数值可以得到不同占空比的方波信号,实现对舵机和电机的调节。软件整体流程如图 4.3.1 所示。
图 4.3.1 软件整体流程图
4.5 路径识别算法
今年的赛道识别与往年的相比,需要提取的赛道信息量大大增加,计算赛道路径也比往年复杂许多。同时,今年的赛道信息也丰富了很多。
我们车上共有24路传感器,左右各有12路来扫描两条变沿线。对于上排的传感器发射板和模拟接收模块,每个传感器只有0和1两种状态,我们分别把左右各12路激光标记为left 1~12和right 1~12。
为了识别赛车是处于什么样状态下,用于进行速度控制,对于我们的新型模拟接收激光传感器,每个传感器只有0与1两种状态,每个传感器又可以对应一个是否在黑线上的标志位,分别为 Sen_LeftFlag[0]到Sen_LeftFlag[11],Sen_RightFlag[0]到Sen_RightFlag[11],即Sen_Flag[0~23]。相应在黑线上以及在赛道外为1,在两条黑变沿线内为0,从而通过对任一时刻传感器标志位的读取就可以知道此时模型车的状态。
下排用于扫描起跑线和过桥十字等等,作为辅助传感器使用,中间两个灯状态为1时,即可认为扫到终点线,可以停车;外面6个灯用于过桥和十字,其控制方式和上排一致且更简便,下面将详细介绍上排的控制:
从上图还可以看出,在直道时,两侧都会检测到赛道边沿,且大体处于中间位置,左右较对称;在小弯道时,两侧都会检测奥赛道边沿,但会有小幅地左右摆;在其它弯道时,会出现左右侧激光交替打出赛道的状况,这时主要依靠一侧激光进行巡线;在十字的时候,回旋全白的时候,在传感器稳定的前提下,能出现全白的也只会在十字的时候出现;终点线完全依靠下排检测;
为了进一步把各种状态分开,在程序中还定义了变量 Sen_ChangeCount和Sen_FlagCount,Sen_ChangeCount用来记录左右扫到黑点(即状态值为1)的差值,Sen_FlagCount用来记录右侧扫到黑点的平均数目。
4.6 控制策略及控制算法
智能车要能在赛道上快速稳定的运行,除了前瞻能精确地检测到路径信息外,转向舵机和驱动电机的准确控制和其两者之间的良好配合也是非常重要的因素。当智能车在直道上时,驱动电机要能快速提速并尽量达到最大速度;当检测到入弯时,驱动电机要立刻减速并降到一个比较低的速度,给微控制器及舵机争取足够的时间来计算、调整,来获得正确的转向角度;在弯道内适当提速,并保持角度不变,为出弯地加速节约时间;准确判断到出弯后,舵机立刻回正,驱动电机以最大的加速度加速。下面将具体介绍转向舵机和驱动电机的控制方法。
4.6.1 转向舵机控制算法
转向角度决定了车辆过弯的稳定性。合适的转向角度会减少车辆在转弯时的调整
时间,不仅路径可以保证最优,运动状态的稳定也会带来效率提高,减少时间。舵机的转角直接影响到车辆转向角度的大小。根据传感器的不同布局方案,可以采用不同的控制算法。我们的传感器设计为单个CCD ,前瞻约为 50cm。可以使小车切赛道内道行驶,对于曲率小的弯道可以让小车跑得更直,相当于缩短了赛道长度同时提高了小车速度,所以正确判断赛道信息尤为关键。小车的前瞻越长,在车子运行的过程中,越可能受到旁边赛道或者其他信号的干扰而引起较大位置的跳变,这在车子定位中是不能出现的,所以要通过软件来消除。由于舵机是一个具有较大延迟的执行机构,所以在舵机控制上,我们采用 PD 控制。流程图如
4.5.1 所示。
图 4.5.1 舵机控制流程图
4.6.2 驱动电机控制算法
小车采用 PID 和 Bang-bang 控制相结合的控制算法,引入速度和舵机角度的反馈值实现闭环控制。要让小车行驶速度快,转角和速度的匹配非常重要。流程图如 4.5.2 所示。
图 4.5.2 电机控制流程图
4.7 总结
软件部分是整个控制系统的核心。软件上主要有以下几个难点:
1、怎样判断采样回来的赛道信息的有效性;
2、怎样根据传感器信息判断车身状态;
3、怎样根据车身状态打角。
对于车模来说,软件控制是核心,而对于软件来说,舵机打角和速度控制都不算是核心,真正的核心应该是舵机打角和速度控制的相互配合!
第五章 系统调试
5.1 调试工具
整个智能车是一个复杂的系统模型,所以在开发中使用合适有效的调试工具进行测试与调试显得尤为重要。为此使用了串口数据传输和使用 BDM 在线调试两种方法,并且结合 EEPROM 掉电不丢失数据的特性进行数据保存,在调试中收到了很好的效果。开发工具使用的是 IAR6.7 开发环境,如图 5.1.1 所示。它能够为单片机 MK60DN512ZVLL10 提供与之配套的应用程序开发模块。在目标程序的下载方面,通过 BDM 与单片机之间的连接下载程序。
图 5.1.1 IAR 开发环境
在调试方面,使用了 MK60DN512ZVLL10 的串口,利用串口线将MK60DN512ZVLL10 和 PC 的串口相连。小车在行驶过程中将信息进行存储,之后利用蓝牙模块将数据发送至PC 终端,如图5.1.2所示。再将数据导入到Excel 中。配合高速摄影机将小车的运行状态和数据联系起来,从而进行程序的调试。
图 5.1.2 串口调试助手界面
5.2 现场调试
在基本程序完成之后还需要在现场对程序进行微调。所以我们自制了按键
和旋钮模块。上场后我们的操作选手观察赛道情况,然后根据目测结果通过按 键对程序进行一下微调:
1)各种形式赛道的速度参数;
2)CCD 曝光时间微调;
3)电机、舵机 PD 控制的 Kp 和 Kd 等参数。
此外,我们还用液晶显示各个CCD 的电压数值,方便临时通过调整CCD 运放对信号进行调整。当然所有的参数假使都已经有了较为合理的默认数值,这样可以极大的节省参数调整时间.
图 5.5 按键调试
第六章 模型车的主要技术参数说明
第七章 总结
自报名参加“NXP ”杯智能汽车竞赛以来,我们小组成员从查找资料、设计机构、组装车模、编写程序一步一步的进行,最后终于完成了最初目标,定下了现在这个设计方案。在此份技术报告中,我们主要介绍了准备比赛时的基本思路,包括机械、电路以及最重要的控制算法的创新思想。在机械结构方面,我们分析了舵机转向系统的改进办法,前轮束角和主销倾角的调整以及在其他细节方面的优化。在电路方面,我们以模块形式分类,在最小系统、主板、电机驱动等模块分别设计,经过不断实验,最后决定了我们最终的电路图。在程序方面,我们使用
C 语言编程,利用比赛推荐的开发工具调试程序,经过小组成员不断讨论、改进,终于设计出一套比较通用稳定的程序。在这套算法中,我们结合路况调整车速,做到直道加速、弯道减速,寻求最佳路径,力求在最短时间内跑完全程。 但是在整个制作过程当中,我们也遇到了各种各样的软硬件问题:
1、速度控制算法的选择:最初起步阶段我们由于还处于开环控制阶段,所以对控制算法使用上没有太多的突破,这也大大限制了我们进一步提速。随着小车各方面的成熟我们换用闭环控制并尝试了 Bang-bang 控制和 PID 控制相结合的方法。小车在稳定性、速度方面都得到了很大的提升。后来我们发现 PID算法不能完全适用于我们的控制对象,我们大胆的对 PID 算法进行改进,将自己的思想与算法注入其中,这次大胆是尝试让我们收到了意想不到的效果。并且小车的速度能很好的跟随给定量而自行调整,具有良好的反应速度,与较强的赛场适应能力。
2、舵机延时的问题:在实际调试过程中,发现组委会规定的舵机延时严重,甚至制约着模型车速度的进一步提升。由于舵机转动一定角度有延迟,延迟正比于旋转过的角度,反比于舵机的响应速度,因此对此问题主要从两个方面进行解决:第一,改变舵机的安装位置并适当增加舵机输出轴上的连杆长度,将转向传动杆连接在加长的输出盘的末端,这样就可以在舵机输出较小转角下得到最大的转角,使舵机转向更加灵敏;第二,适当升高舵机的供电电压。将此前为舵机提供的 6V 电源提升至 7.2V。
3、CCD 模块的抗干扰:关于这一点,我们采用了蓝宙的CCD 方案,在原始信号上进行RC 低通滤波放大之后再进行滤波,这样就能使信号达到一个稳定的状态。
4、小车的机械改进:我们采用主销后倾的设计方案,原因在于小车在车轮偏转后会产生一回正力矩,纠正车轮的偏转。后倾角越大,车速越高,车轮偏转后自动恢复能力越强。而回正力矩过大,会引起前轮回正过猛,加速前轮摆震,并导致转向沉重。基于以上分析,结合试验,将主销后倾角调整为 2°左右。这种情况下,小车转向较灵活,而且在高速行驶的时候,转向后车体有一定的自动回正能力,可以使车体运动轨迹更加平稳,行驶路线平滑。模型车通过调整前轮定位螺杆长度来改变主销内倾角,通过实验证实了在 6°~ 8°的主销内倾角对于智能车对期望轨迹跟踪的稳定性、行驶路线的平滑性以及汽车的控制能力都比较有利,在实际调试的过程中也选择了这样的主销内倾角。
5、完全按照自己的需求定制了单片机最小系统板。最小系统板集成度非常高,极大的减轻了重量和减小了体积,方便机械布局。
6、增加了按键与液晶辅助调试电路。配合参赛选手的临场发挥,增强了车对赛道的适应能力由于时间的限制,我们还有很多方面没有进行尝试,比如模糊指令集的深入研究与应用、更加合理的前瞻设计、神经网络控制算法的改进等。在以后的时间里,我们将对这些问题作进一步的研究。经过这么长时间的调试,但依然存在的问题还很多。希望能在一年一年的比赛中将方案合理优化。
.
参考文献
[1] 邵贝贝. 嵌入式实时操作系统[LC/OS-Ⅱ(第2版)[M]. 北京.清华大学出版社.2004
[2] 邵贝贝.单片机嵌入式应用的在线开发方法[M].北京.清华大学出版社.2004
[3] 李玲,桂玮珍,刘莲.C 语言程序设计教程.北京.人民邮电出版社.2010
[4] 夏克俭,王绍斌.数据结构.北京.国防工业出版社.2010
[5] 王宜怀,曹金华.嵌入式系统设计实战.北京.北京航空航天大学出版社.2011
[6] 童诗白,华成英.模拟电子技术基础[M].北京. 高等教育出版社.2000
[9] Walt Jung 著,张乐峰 译.运算放大器应用技术手册.北京.人民邮电出版社.2009
[10] 宗光华.机器人的创意设计与实践[M].北京. 北京航空航天大学出版社.2004
[11] 张木水,李玉山.信号完整性分析与设计.北京.电子工业出版社.2010
[12] 张文春.汽车理论[M].北京.机械工业出版社.2005
[13] 卓晴,黄开胜,邵贝贝学做智能车北京-北京航空航天大学出版社.2007
[14] 关文达.汽车构造(第3版).北京.机械工业出版社.2011
[15] 刘莹,吴宗泽.机械设计教程(第2版).北京.机械工业出版社.2009
附件一:程序源代码
#include "common.h"
#include "car_global.h"
uint32 T;
STATUS_BUTTON status_button;
STATUS_TRACK status_track;
STATUS_CAR_STRUCT mycar;
indata_STRUCT indata;
outdata_STRUCT outdata;
setpara_STRUCT setpara;
OLED_STRUCT oled;
track_STRUCT track,tracknear,trackfar;
FLAG_STRUCT flag;
PixelCompensate_STRUCT pixelcom,pixelcomnear,pixelcomfar;
extern PARA_LIST_STRUCT paralist[100];
ImageProcess_STRUCT imageprocess,image2process,image3process; PID pid0;
SAVE_STRUCT save;
FRESULT rc;
FATFS fatfs;
FIL fil; //结果代码 // 文件系统对象 // 文件对象
UINT bw, br;
int16 OutData[4];
uint32 save_ram_no = 0;
uint32 save_uart_no = 0;
uint8 RAM_BUFF[60][512] = {0};
uint8 SEND_BUFF[512] = {0};
void data_input()
{
mycar.batt_volt = battery_check();
indata.g_s32LSpeed = get_speed_l();
indata.g_s32RSpeed = get_speed_r();
}
void status_select()
{
if(mycar.status==1)
{
mycar.RUNTIME+=PIT0_MS;
send_uart();
if(mycar.RUNTIME>setpara.SetTime*100)
{
mycar.status=2;
}
}
else if(mycar.status==2)
{
mycar.RUNTIME+=PIT0_MS;
if(mycar.RUNTIME>(setpara.SetTime+20)*100) //刹车2秒
{
mycar.status=0;
}
}
}
void data_process()
{
ccd_cal();
outdata.Track_Pos = Track_Cal(1,0);
outdata.Steer_PWM = Steer_PWM_Cal(outdata.Track_Pos);
outdata.Track_Pos = Track_Cal(0,0);
if(mycar.status == 1)
{
outdata.Motor_Speed_L = Speed_Diff_Cal(0);
outdata.Motor_Speed_R = Speed_Diff_Cal(1);
}
else if(mycar.status == 2)
{
outdata.Motor_Speed_L = 0;
outdata.Motor_Speed_R = 0;
}
void main (void)
{
DisableInterrupts;
init_all();
EnableInterrupts;
while(1)
{
show_oled(oled.g_s8showpage); //屏幕显示
if(mycar.status == 0)
{
key_check(); //按键查询与响应
}
if(Car_Select)
write_sd();
致谢
首先我们感谢教育部举办这样的创新比赛,感谢恩智浦公司对于学生创新活动的大力支持,感谢飞思卡尔智能汽车竞赛组委会提供竞技平台,让我们在这个平台上学到了知识。
其次感谢张海洋,张聪,李旭三位师兄始终陪伴着我们,我们遇到的很多难题,都在师兄的指导帮助下迎刃而解。同时感谢指导教师与学校领导对我们本次参赛的支持与帮助。
最后感谢所有关心过我们比赛的亲人、老师、同学,在你们的期盼和祝福下,我们赢得了最悦耳掌声,在此向各位致以崇高的敬意!
在这几个月的备战过程中,场地和经费方面都得到了学校和学院的大力支持。现在,面对即将到来的大赛,在历时近八个月的充分准备以及华北赛的考验之后,我们有信心在全国比赛中取得优异成绩。也许我们的知识还不够丰富,考虑问题也不够全面,但是这份技术报告作为我们小组辛勤汗水的结晶,凝聚着我们小组每个人的心血和智慧,随着它的诞生,这份经验将永伴我们一生,成为我们最珍贵的回忆。