中南大学火影观云飞思卡尔杯全国大学生智能汽车竞赛技术报告.docx
《中南大学火影观云飞思卡尔杯全国大学生智能汽车竞赛技术报告.docx》由会员分享,可在线阅读,更多相关《中南大学火影观云飞思卡尔杯全国大学生智能汽车竞赛技术报告.docx(75页珍藏版)》请在冰豆网上搜索。
中南大学火影观云飞思卡尔杯全国大学生智能汽车竞赛技术报告
第一章引言1
1.1背景介绍1
1.2整车设计思路1
1.3设计方案简介2
1.3.1电源模块2
1.3.2红外传感器模块3
1.3.3人机交互模块3
1.4文章结构3
第二章机械结构设计4
2.1总体思路4
2.2传感器的安装5
2.3舵机的安装5
2.4测速传感器的安装6
2.5差速机构调整7
2.6硬件电路板的安装7
第三章硬件电路设计8
3.1硬件设计总体方案8
3.2电源管理模块8
3.3红外传感器电路9
3.4电机驱动电路10
3.5人机交互电路12
第四章软件设计13
4.1总体设计13
4.1.1层次设计13
4.1.2总体流程13
4.2位置确定15
4.2.1数据采样和归一化处理15
4.2.2位置确定16
4.3舵机控制18
4.4速度控制19
4.4.1速度控制算法19
4.4.2速度给定策略21
4.5特殊情况处理22
4.5.1十字交叉道22
4.5.2窄道22
4.5.3坡道23
4.5.4起跑线23
第五章仿真与调试25
5.1PLASTID软件仿真25
5.2调试26
5.2.1系统硬件调试26
5.2.2传感器调试27
5.2.3软件系统调试27
5.2.4上位机在线调试29
第六章赛车具体参数31
第七章总结与展望32
7.1总结32
7.2展望32
参考文献34
附录A程序源代码I
第一章引言
1.1背景介绍
全国大学生智能汽车竞赛是以智能汽车为竞赛平台的多学科专业交叉的创意性科技竞赛,是面向全国大学生的一种具有探索性的工程实践活动,该竞赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的8位、16位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。
[1]
全国大学生智能汽车竞赛已成功举办了三届,得到了高校师生的高度评价,已发展成全国30个省市自治区170余所高校广泛参与的全国大学生智能汽车竞赛。
已被教育部批准列入国家教学质量与教学改革工程资助项目中9个科技人文竞赛之一。
该竞赛激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神。
[1]
1.2整车设计思路
智能车竞赛要求设计一辆以组委会提供车模为主体的可以自主寻线的模型车,根据比赛规则和要求,本智能汽车采用光电方案,用红外发射、接收模块作为路径检测传感器,飞卡尔公司16位微控制器MC9S12DG256[2]为系统控制核心,通过光电编码盘检测速度。
图1-1系统总体结构框图
由微控制器通过数据处理得出赛道信息并根据当前情况给出舵机转角和电机转速,使智能车能在赛道上快速平稳的行驶。
系统由电源模块、控制模块、红外传感器模块、测速模块、电机驱动模块、舵机模块、人机交互模块、无线模块等组成。
系统总体结构框图如图1-1所示。
1.3设计方案简介
1.3.1电源模块
系统通过标准车模用7.2V2000mAhNi-cd蓄电池供电[2],实际充满电后电压则为8.2~8.5V。
由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。
主要包括以下不同的电压:
7.2V电压。
直接取自蓄电池两端电压,给主电机提供电源。
3.3V电压。
给单片机内部AD提供参考电压。
5V电压。
为单片机系统、信号检测电路以及其它电路提供电源,电压要求稳定、噪声小,电流容量小于1000mA。
6V电压。
为舵机提供电源。
除了7.2V电压可以直接由蓄电池获得,3.3V电压,5V电压和6V电压需要通过降压稳压电路获得。
电源模块结构图如图1-2所示。
图1-2电源模块结构图
1.3.2红外传感器模块
系统共采用15个红外接收管,分两排,前排采用8个,后排7个。
因为我们在调试智能车时发现,采用两排的架设方式虽说在一定程度上降低了检测精度,但是可以使智能车很好的切内道,转向更加平滑。
为了提高前瞻距离,前排每个接收管对应两个接收管,通过加大红外红外光强来提高探测距离。
红外接收管输出连至单片机片内A/D,通过A/D转换将模拟量转换成对应的数字量给单片机处理,由于红处接收管有着较好的线性度,我们决定采用曲线拟合的方法来确定黑线的位置,所以前后排传感器均采用等间距的排布方式。
由于后排同时用来识别起跑线等标志,传感器之间采用比较小的间距。
1.3.3人机交互模块
本系统的人机交互模块非常简单,在实用的前提下尽量少占用系统资源,通过10路拔码开关给系统设置命令和参数,通过6路发光二极管指示系统工作状况,简单实用。
在调试的情况下通过无线模块和PC机通信,通过上位机软件来控制智能车。
1.4文章结构
技术报告分七个章节:
第一章节主要是对模型车设计制作的主要思路以及实现的技术方案概要说明,提出技术报告的行文框架。
第二章介绍了赛车机械改造的总体思路,并详细说明了机械结构调整情况。
第三章说明系统的硬件实现。
第四章说明方向控制和速度控制算法设计。
第五章介绍仿真和调试的方法。
第六章是赛车的具体参数。
第七章总结了整个制作过程中的创新点和不足之处,提出了下届备赛过程的努力方向。
第二章机械结构设计
随着智能车的速度不断提升,智能车的机械结构越来越被重视,智能车机械结构的好坏对车的速度有着很大的影响。
本智能车机械结构如图2-1所示。
图2-1智能汽车外貌
2.1总体思路
关于赛车机械结构的调整,我们主要从以下几个方面考虑:
车体重量:
比赛规则规定,智能车的驱动电机和传动机构不允许更改,意味着赛车的最大驱动能力是一定的。
要想提高赛车的平均速度,必须提高其加速和制动性能,在驱动力一定的情况下,尽量减轻车体的重量会提高赛车的加减速性能。
另外,更轻的重量也会使赛车转向更加灵活。
重心高低:
导引线弯道的最小半径为0.5米,要使得智能车能在弯道上高速通过,必须防止侧滑和侧翻,尤其是侧翻。
重心位置是影响侧翻的最关键的因素,所以设计中应尽量降低智能车的重心。
为此,我们采用了低位电路板的布局,同时设计了强度高质量轻的合金材料作红外传感器安装架,且前尽量减轻前排管的重量。
转向灵活性:
转向的灵活性会直接的影响到智能车的性能,由于舵机具有机械延时,另外加上控制舵机的周期,舵机要转到给定的目标角度会有一定的延时,要使转向快,就要尽量减小舵机的延时。
因为比赛规定使用FutabaS3010舵机,它的带负载能力是一定的,负载过大就会影响舵机的转向性能,所以我们要尽减小舵机的负载。
另外,后轮的差速的性能对转向性能的影响也很大。
2.2传感器的安装
我们的智能车采用红外对管作为路径检测传感器。
为了提高其前瞻性,我们采用了前伸式架设方法,这种方法会在一定程度上使智能车的重心前移,所以我们尽量命使用质量轻又结实的合金材料作为支架。
传感器的有效检测距离和它离地的高度及水平面的夹角直接相关,架设的越高,夹角越大,理论上检测距离越远,但是红外传感器的最大检测距离是一定的,所以其架设高度和角度只能在一定范围内调节,我们前排传感器高度为20CM、和水平面夹角为30°左右。
图2-2智能车传感器架设
2.3舵机的安装
舵机响应速度是整车过弯速度的一个瓶颈。
为了加快车轮转向速度,我们设计并安装了舵机转向机构。
在并非改变舵机本身结构的条件下,改变了舵机的安装位置,安装更长的舵机输出臂。
采用杠杆原理,在舵机的输出舵盘上安装一个较长的输出臂,将转向传动杆连接在输出臂末端。
这样就可以在舵机输出较小的转角下,取得较大的前轮转角,从而提高了整个车模转向控制的速度[2]。
如图2-3所示,这种方法是通过机械方式,利用舵机的输出转距余量,将角度进行放大,加快了舵机响应速度。
图2-3舵机安装方式
2.4测速传感器的安装
本智能车采用光电编码器作为测速传感器,它能提供较高的精度并且通过一定的处理后可以识别正反转。
光电编码器通过齿轮和后轴齿轮相连,检测车轮转速,其固定方式如图2-4所示。
图2-4光电编码器
2.5差速机构调整
后轮差速机构的作用是在车模转弯的时候,减少后轮与地面之间的滑动,使转向轻便。
车辆在正常的过弯行驶时四个轮子的转速皆不相同,顺序为:
外侧前轮>外侧后轮>内侧前轮>内侧后轮。
差速器的作用便是在起到传动的同时允许该速度差的存在[2]。
差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低。
过松会导致传动力不够,即主电机转动时后轮不动,只要有这种情况出现,会严重影响到智能车的加速和制动性能,即出现智能车速度上升慢,制动力不够的情况。
过紧会使转向不轻便,甚至出现转弯时后轮滑动的现象,导致过弯速度由于差速器没调整好而变慢。
转向不灵活还会增加前轮侧滑的概率,因为差速器调得过紧智能车在过弯时会给前轮一个向外的力,从而导致前轮有向外侧滑的趋势[3]。
调整原则是:
差速器应调的足够的松,但是要保证在任何测试情况下都不会出现传动力不够的现象,而且为了保证测速的准确性,不能出现两个车轮同时都和后轴齿轮转向相反的情况。
2.6硬件电路板的安装
我们的智能车系统除了传感器部分之外,电路板分两部分,一是电机驱动,另一块主要含控制部分和电源管理部分,我们称之为主控板。
我们把主控板固定在舵机和和电池字之间,安装时离底盘5MM,并且用螺丝固定,既牢固又便于散热。
电机驱动部分则固定在电机上方,这样可以尽量减小电机驱动对单片机产生干扰。
图2-5电机驱动电路板
第三章硬件电路设计
硬件电路是智能车的基础,只有完成了稳定可靠科学的硬件电路,才能在这个基础上进行软件算法的设计,做出优秀的智能车。
我们的智能车的硬件设计的原则是:
尽量精减,采用简单可靠的电路,选用性能优秀而且性价比好的芯片,设计稳定可靠兼容性好的电路板。
主控板实物图如图3-1所示。
图3-1主控板实物
3.1硬件设计总体方案
硬件电路主要由电源管理模块、控制模块、红外传感器模块、电机驱动模块、舵机驱动、人机接口模块等组成。
采用飞思卡尔的16位微控制器MC9S12DG256作主控芯片,工作总线频率24M。
微控制器通过片内A/D获得红外传感器采集的赛道信息,经过处理后给出舵机转角和电机转速。
通过人机接口可以方便的设置智能车运行的参数,并获得智能运行状况。
电机驱动采用用MOSFET管搭成的内阻很小的H桥电路。
下面将较详细的介绍各模块的电路设计。
3.2电源管理模块
电源作为整个系统的能量中心,它的稳定性是整个系统稳定的基础,由于智能车采用7.2V2000mAhNi-cd蓄电池供电,实际充满电后电压则为8.2~8.5V,而系统中还需要5V、6V和3.3V等电压的电源,这些电压就要求我们通过电源管理芯片获得。
我们常用的电源芯片如LM78XX系列,属于高压差线性稳压芯片,它们能获得较为精准的电压,纹波也较小,但其功率不大,而且稳压压差较高一般都要在2.5V左右,由于压差高,电源转换效率也较低。
最重要的是由于在实际运行过程中,由于智能车功率较大,电池供电电压往往只有7V左右,这时如果采用LM78XX系列的稳压芯片就不能达到要求了。
为此我们决定选用价格稍贵的低压差线性稳压芯片LM2940-5.0作为5V电源芯片,它的最低输入电压为6.0V,最大供电能力为800mA到1000mA,电压输出范围5.0±0.05V,电压噪声小于20mV。
由于降压小,电源转换效率高。
5V电源的供电对象分两部分:
一为单片机及一些中小规模集成电路等,没有大的冲击电流电路;另一部分给红外传感器模块供电,这部分功率较大。
但两部分各自采用独立的电源芯片,互不影响。
图3.2稳压电路
系统中除了5V电源外还需要给A/D提供参考电压,由于一般专用的参考电压芯片价格较贵,而我们智能车系统中对A/D的要求不是特别高,我们就采用了,纹波较小AMS1117-3.3V提供3.3V的电压作为单片机片内A/D的参考电压,在实际运行中也发现效果比较好。
舵机作为智能车的转向执行机构,它的供电电压范围为4.6V到6V。
但是经过测试发现,舵机在PWM波周期一定的情况下,电压越高转向速度越快。
为了提高舵机的反应速度,我们采用6V供电,由于市场上6V的电源芯片比较少,而且性能不是很理想,我们采用可调的电源芯片TL1963来获得6V电源。
TL1963为低压差稳压芯片,一般稳压压差仅需340mV,输出电流能达到1.5A。
采用该芯片作为舵机电源芯片后,舵机的转向性能有了很大的改善。
3.3红外传感器电路
红外传感器属光电传感器,分两部分,一部分为发射部分,一部分为接收。
我们采用分离的红外发射接收管,前排红外传感器采用两个发射管对一个接收管,增大发射光强。
发射部分由单片机控制用脉冲点亮,避免了由于长时间大流工作使发射管损坏、避免了相邻管之间的干扰、同时也降低了电能损耗。
接收管接收到红外光后,会产生和光强相对应的电流,经过一个5K电阻后转换成电压,通过一个由10nF电容和47K电阻构成的RC滤波器后连接到单片机A/D输入口。
由于单片机I/O口驱动能力有限,我们采用达林顿管驱动发射管。
图3.3红外发射接收电路
前排传感器用来检测较远的黑线其发射管也采用较大功率的红外发射管,并用两个发射管,使其前瞻距离达到30CM以上。
传感器排列采用等间距分布方式。
图3.4前排传感器PCB图
3.4电机驱动电路
电机是整个智能车中能耗最大的地方,其最大电流能达到10A以上,为了提高智能车的加速和制动性能,一个性能优秀的驱动电路是必不可少。
常用的电机驱动芯片MC33886使用简单方便、功能强大。
但其不足在于最大电流只能达到5A,即使采用多片并联,其压降还是比较大,不利于智能车加速和制动性能的提升。
我们采用由功率MOSFET管搭建H桥电路作为电机驱动,桥电路采用门电路控制,使得电机驱动使用更加方便、安全。
由于门电路的控制,不会由于程序控制错误的原因导致桥电路短路,而且由于门电路的延时,使得驱动不会因为MOSFET管关断延时导致短路,使MOSFET管发热严重。
不同MOSFET管功率和内阻不一样,我们采用N沟道MOSFET管IRF3205和P沟道IRF4905构成桥电路。
图3.5H桥电路
电机驱动电路的电源可以直接使用蓄电池两端电压。
模型车在启动过程中往往会产生很大的冲击电流,会对其他电路造成电磁干扰,为了减小干扰,一方面我们在单片机和电机驱动中间采用光耦隔离,另一方面,我们在进行PCB设计时,将电机驱动单独分开设计,和主控板分开安装,并在电源两端加大电容。
图3.6电机驱动PCB图
3.5人机交互电路
一个好的系统,人机交互是必不可小,智能车在调试过程中要不断的修改参数,并且要随时观测智能车的运行状况。
由于智能车本身系统比较复杂。
对单片机速度要求比较高,所以人机交互所占的资源越少越好,在方便实用的前提下,应该尽量简单。
图3.7指示灯和拔码开关
我们采用最为简单的办法来实现人机交互,采用拔码开关进行参数设置,指示灯用来指示系统工作状态。
在调试过程中,我们还采用了无线模块辅助调试,通过无线模块可以方便的监测智能车运行状态和设置参数。
XL02-232AP1是UART接口半双工无线传输模块,可以工作在433MHz公用频段。
符合欧洲ETSI(EN300-220-1和EN301-439-3),满足无线管制要求,无需申请频率使用许可证。
XL02-232AP1的部分参数如下:
★300米传输距离
★工作频率在428.8-435.1MHz,(默认433.92MHZ)
★可设置ID:
范围0-65535,默认ID:
12345
★串口速率1.2K---38.4KBPS.(默认9.6KBPS)
★数据格式8N1
★方便快捷的参数设置
第四章软件设计
4.1总体设计
4.1.1层次设计
智能车的软件设计,由于和硬件结合非常紧密,当硬件方案有较大改动时,程序修改量会非常大,所以我们从一开始就注意程序分层和结构化。
从图4-1中可以看出我们的层次设计思想。
图4-1程序层次图
其中HardWare是硬件层;Sensor是硬件驱动层;Bases是算法基础层;Special和Control是算法层;Data用于存放控制策略数据,SCI用于无线串口调试,单独给出。
这样,当硬件方案发生较大修改时,只需要修改程序相关部分就可以短时间内进行新方案的算法调试了。
4.1.2总体流程
智能车要能自动的循迹行驶,并且对不同情况的赛道都能完成功能,这要求程序有较强的适应能力。
采用红外发射接收的方式所得到的信息会不仅会随着赛道情况不同有较大的改变,传感器本身的特性也不稳定,而且不同传感器总存在着差别。
为了能适应不同赛道,我们采取了对赛道信息进行提前采样,数据归一化处理的方式。
程序设计的总体流程如图4-2所示。
图4-2总体流程图
4.2位置确定
要确定前方赛道信息,就是要知道黑线和智能车的相对位置,通常有所谓“二值化”和“拟合计算”两种方式来确定位置。
“二值化”把每个检测点的信号简单划分为“黑”和“白”两种信号,一般而言,对于单排管,用“二值化”方法计算位置时,N个传感器能得到的位置量为2N+1种。
当黑线位于两个传感器之间时,“二值化”得到的结果只能是单一的,而“拟合计算”则能比较精确的计算出黑线离传感器的相对位置,从去年各个学校参赛队的报告以及我们和其它队伍的交流中了解到,这种位置计算方式能精确到1~5mm。
我们对不同方法都做了尝试,认为“二值化”虽然精度不高,但是稳定性好;“拟合计算”能有较高的位置确定精度,对赛道识别比较有利,但是稳定性不如数字式好,对传感器性能要求比较高,而且随着赛道情况越来越复杂(坡道和窄道),“拟合计算”在特殊路段的定位精度并不占优势,对位置确定算法要求较高。
最终我们采用了一种“类二值化”的方式来确定黑线位置,实际结果证明,这种方法有较强的适应能力。
4.2.1数据采样和归一化处理
之所以要进行采样和归一化处理,主要原因有:
1)传感器本身的差异:
相同型号的传感器其性能也不能做到非常接近,电路上采用的电阻电容也不可能完全等值,甚至连线长度造成的线路阻抗的不同也可能导致这种差异。
2)传感器稳定性:
同一个光电管随着使用时间变化,其特性也会有微弱的变化。
3)不同赛道情况带来的差异:
赛道反光程度的不同、黑胶带对光线吸收程度的不同、外界光线的影响等都会使得传感器数据变化。
采样就是得到每个接收管返回数值的最大和最小值。
通过采样得到的最大和最小值计算出归一化参数,智能车在行驶过程中得到的每个传感器的数据首先进行滤波处理,然后归一化数据。
这部分的信号处理框图如下:
图4-3信号归一化处理框图
所谓归一化,其实就是一次线性变化。
我们在实际过程中把采样的最大最小值归一化到150~100,为的是给特殊情况留有预量。
同时由于采用整型数据,为了防止数据溢出,我们对原始数据采取了上下防止溢出的限幅处理。
实际行驶过程中,在坡道数据最大能达到300,最小能达到60,但不同传感器之间的差值始终存在。
4.2.2位置确定
我们总是认为位置计算应该更加精准,这不会带来任何坏处。
为此我们做了传感器线性度测试,最初我们前排用了6组红外发射接收对,数据归一化至0~250,实验得到如下数据:
表4-1红外管线性度统计表
作出线性曲线如图4-4所示。
图4-4红外管线性度统计曲线图
由图中可以直观的看到,在一定范围内(-5cm~5cm),大多数传感器数据呈线性变化,和常见的“S”型曲线差异较大,这是由于发射管反射角和接收管接收角都比较大的缘故。
看到这个曲线时我们认为精确识别黑线位置应该是件很容易的事情了,于是我们做了处理。
但结果发现位置计算当黑线在部分传感器之间时,能非常精准,但是在另一些传感器之间时,则跳变很明显。
仔细观察曲线我们发现,由于不同传感器线性度差别,我们无法使用同一个公式精确计算黑线位置。
另外在加了坡道和窄道后,位置的精确识别变得更加复杂,因为要处理的信息将不是“绝对的”,而是“相对的”。
最后我们采用了“类二值化”的方法,并不对每个传感器是“黑”还是“白”做绝对判断,只根据不同传感器之间数据差别来计算黑线位置。
这样得到的位置量精确度虽然不是很好,但是对不同赛道情况都能有效处理,稳定性非常好,对传感器性能要求也比较低。
而事实上对于舵机转向而言,精度原本就不重要,因为舵机控制精度就那么高,一般来说最左到最右的转向角度也就是50°左右,位置精度太高并不能得到等精度的转向,反而会导致舵机控制输出值小范围振荡,不利于转向。
“类二值化”的流程如下图所示。
图4-5“类二值化”流程图
我们最终采用的方案前排为8组红外发射接收,后排为7组红外发射接收,所以位置确定的精度为前排17个分度,后排15个分度。
4.3舵机控制
舵机控制方法通常有PD控制、模糊控制等。
模糊控制能够优化各种情况下的转向方案,PD控制参数调整比较容易,我们首先考虑用PD控制,发现转向时直道偏转角度过大,于是改为P值动态修改的PD控制,发现在曲率不是很大的弯道时仍然会振荡。
采用模糊控制,由于规则修改频繁,始终没能找到非常好的控制方案,最终我们决定在P值动态修改的PD控制的基础上认为修改一些特殊情况下的转角输出,离线计算出舵机输出矩阵,通过查表得到舵机输出值。
这样的好处是参数调整时间大大缩短,避免了单片机浮点运算,修改也十分方便,最终我们得到的舵机输出矩阵如下所示:
表4-2舵机输出矩阵表
做出立体效果如下图4-6所示。
图中观察可知,这样的转向策略在直道时偏转角度较小,因此直道不容易左右震荡,在弯道处结合弯曲程度有不同偏转角度,总体曲线过渡比较平滑。
图4-6舵机转向偏角曲线图
4.4速度控制
4.4.1速度控制算法
速度控制算法的优劣直接关系调速是否有效,不稳定的速度控制可能会导致车体振荡,对于智能车稳定运行而言,速度控制同样非常重要。
而智能车竞赛追求速度的竞赛规则,又使得速度控制必须满足加减速反应迅速。
对于直流电机闭环控制,一般有电流环和速度环两个闭环控制方法,常用电机机械特性时间常数为0.1s左右,电磁特性时间常数为0.01s左右,所以电流环能够更快的感应到电机转矩特性变化,同时流调能使电流不致过大,对电机有一定的保护效应[5]。
速度环最终保证速度达到目标值,只有电流环将无法进行速度控制。
所以我们认为对智能车驱动电机控制最好采用电流速度双闭环控制,甚至可以的话,采用全硬件调速,会极大的增加调速性能。
但是实际电流环因为其测量电路要求高,专用集成芯片价格昂贵,由于时间关系,我们最终没能使用流环控制,而采用速度单闭环控制。
由于电机机械特性时间常数为0.1s左右,我们认为控制周期应当在10ms以下,最终我们采用5ms的控制周期,发现效果良好。
确定了速度控制方案后,就是控制算法的选择,一般认为PID算法能达到比较好的控制效果,但是对于目标值和负载(直道和弯道阻力差别很大)随赛道情况快速变化的智能车竞赛而言,PID的加减速性能并不能达到最优。
所以我们采用Bang-Bang结合PID的控制算法。
关于PID控制算法和Bang-Bang控制,教科书和很多报告上已经有非常详细的说明,这里不再赘述。
主要分析一下如何实现PID和Bang-Bang的完美结合。
PID参数整定采用简易工程法整定,并通过上位机观测速度曲线进行微量调整。
当只用PID控制调速时,我们发现加速性能还是很不错的,但减速性能远远