广东技术师范学院绝影队智能汽车邀请赛技术报告.docx
《广东技术师范学院绝影队智能汽车邀请赛技术报告.docx》由会员分享,可在线阅读,更多相关《广东技术师范学院绝影队智能汽车邀请赛技术报告.docx(15页珍藏版)》请在冰豆网上搜索。
![广东技术师范学院绝影队智能汽车邀请赛技术报告.docx](https://file1.bdocx.com/fileroot1/2023-1/26/420fc599-28b4-4783-8c7f-f0e76fd45708/420fc599-28b4-4783-8c7f-f0e76fd457081.gif)
广东技术师范学院绝影队智能汽车邀请赛技术报告
目录
第一章引言1
第二章智能车的机械结构与硬件.............................................................................12.1机械调整............................................................................................................1
2.1.1对前轮的调整1
2.1.2对后轮的调整1
2.1.3对后悬挂的调整1
2.1.4对差速机构的调整1
2.2硬件介绍2
2.2.1MCU板2
2.2.2主板设计3
2.2.3电源管理3
2.2.4电机驱动4
2.2.5光电检测电路5
第三章控制软件的设计5
3.1各模块初始化5
3.1.1CPU初始化6
3.1.2PWM初始化6
3.1.3串口初始化6
3.1.4定时器初始化7
3.2控制策略8
3.2.1起跑线检测8
3.2.2舵机控制10
3.2.3路况检测与速度给定13
第四章开发工具、制作、安装、调试过程13
4.1开发工具13
4.2制作调试过程13
第五章高速情况下的研究13
5.1高速进弯时产生的矛盾13
5.1.1解决方法的思考14
5.2高速状态的防止高速弯道失控14
第六章总结15
第一章引言
飞思卡尔智能车大赛在今年已经举办到第三年,在约束条件不变的基础下,参赛车模的速度越来越高。
所以对车模高速情况下的控制,和保持其稳定将会成为各个对手所面对的难题。
而车模在高速运动的情况下,算法对全局控制很重要,但是选手们也不得不面对着车机械结构的科学调整。
汽车理论逐渐在智能车项目中显示出其重要性。
可以说,随着比赛车的速度的提高,智能车所涉及的学科范围就越大,要求参赛者的工艺水平和理论水准作相应的提高。
这也是这个比赛举行的初衷。
本文将从机械结构,硬件,软件算法上介绍绝影的制作。
并在绝影的发展历程中,探讨高速情况下智能车的控制,车运行时出现的问题及其解决方法。
第二章智能车的机械结构与硬件
2.1机械调整
2.1.1对前轮的调整
前轮是转向轮,它的安装位置由主销内倾、主销后倾、前轮外倾和前轮前束等4个项目决定,反映了转向轮、主销和前轴等三者在车架上的位置关系。
由于本车前瞻较近,所以前轮的调整以有利过弯为原则。
在不太大牺牲直道性能的前提下,前轮作了以下调整:
主销内倾角为五度,主销后倾角为零度,前轮外倾负二度,前束为零。
2.1.2对后轮的调整
大赛所指定的车模后轮提供了三个档的调节,而本车采用了最大阔度,实际中较其他档位使得车辆稳定。
使过弯的侧向力更能平均分配在后轮的轮面上,减少侧滑和加强了差速效果。
2.1.3对后悬挂的调整
后悬挂在经验上可以称为高频滤波器,其刚度决定可通过的频率。
而小车是后驱动的,在较为平滑的赛道上主要震动来源是电机的传动机构和后轮的抖动,频率较高,所以后悬挂设定较软。
而且悬挂的左右摆动处调较为最紧,实际中可以增加整车的刚度,有效减少了共振造成前轮的跳动。
2.1.4对差速机构的调整
差速机构性能的好坏决定了过弯性能,而本车的差速调整到比较松,而且保持固定传动齿使一边的轮转动时,另一个轮反向转动。
2.2硬件介绍
2.2.1MCU板
本车的MCU板没有采用清华大学的S12开发板。
而是使用了一块十六平方厘米的方形MCU主控板。
该主控板引脚齐全,设计合理,很适合使用在对质量和空间比较敏感的智能车上。
2.2.2主板设计
主板原理图如图二。
设计者在主板的设计上为了采取了保守的态度,主板仅集成了供电电路,其他为MCU与相应接口的连接电路。
这样的好处是其他模块可以按需升级无须大规模改动,而且集成度低可以使开发难度减少,稳定性较好。
2.2.3电源管理
车的供电网络如图三
本车+5V稳压电源的设计采用了LM2940-5串联稳压芯片,理论可以输出1A的电流,效率为65%,稳压压差最小为0.1V,输出电压较为稳定。
经过实际运行测试,电池电压不低于6V的时候,使用该芯片制作的稳压电路可以保证MCU工作所需的电压和电流。
(电路如图四)
图四
而光电检测电路实际测量需要500mA左右的电流,并且要非常稳定的电压,所以对于LM2940-5来说,单个芯片负载起整个系统的5V供电较为困难,所以+5V供电电路采用了双路供电,而光电检测电路单独占一路。
一方面最大程度满足光电传感器所需要的电流,另一方面避免了各个模块对其串扰。
舵机使用电池供电。
使用电池直接供电的原因是,我们要使用的是舵机输出的扭力来拉动车的横杆实现转向,而舵机输出的扭力是由H桥加直流电机组成的动力电路产生。
由电机学可以知道,当转距一定时,负载越大则需要的电流越大。
所以使用稳压芯片无形中钳制了输向舵机的电流,当车的摩擦力高时会使舵机的扭力和反应速度不足,而在机械结构调整上说明了摩擦力的提高是本车速度提高的根本,故本车的舵机使用电池供电。
虽然舵机的标称电压为+6V,但那只是针对内部的控制电路而言的安全电压,在对舵机的拆解研究和实际应用发现,在供电+5V至+9V的区间内舵机可以稳定地工作。
从供电网络可以看出,电池负载者两个动力电路。
动力电路是用电大户,在实际测试中,整体电路电流峰值可达到7A,最小值为3A。
其中85%的电流由动力电路消耗,而动力电路时按输出需求消耗电流的。
而根据能量守恒定律,电池输出功率一定时,电流和电压程反比。
可以知道,供电的主回路电压是不稳定的,有较大的浮动。
所以我们采取了一定的措施保证+5V电路的输入电压稳定。
在图四可以看出,+5V电路的输入端使用了1000uF的大电容。
2.2.4电机驱动
本车的电机驱动电路如图五。
使用P沟道场效应管(P管)为上桥、N沟道场效应管(N管)为下桥的H桥为电机的驱动电路,并使用芯片MC33886作为前置驱动电路驱动H桥。
实测最大输出电流为10A。
采用P管和N管组成的H桥电路,驱动电压大于两个管的开启或截止电压Vt就可以使其正常工作。
由于P管比N管的生产难度高,所以同等标称值下两者性能差异较大,所以这样的H桥输出能力很大程度上取决于P管的性能。
但是相对于智能车,电机即使堵转,通过的电流也不会超过10A,这使电池所限。
所以这样的电路满足使用需求。
而MC33886本身为电机驱动芯片,内部集成了保护电路,所以为了简化设计,将其大材小用作为H桥的前置驱动电路。
图五
2.2.5光电检测电路
光电检测电路图如图六。
本电路是利用音调解码器lm567芯片设计的载波与检波电路一体化传感器。
发射管的发射频率与检波中心频率一致,元器件不一致的时候也可以确保每个单元的响应频率和发射频率相同。
传感器的中心频率由电路中的R、C单元调节,频率决定照射距离和抗干扰性能。
应用此传感器设计的光电检测阵列在车上可以获得10CM到30CM的前瞻距离。
在本车上所使用的传感器阵列安装高度为9CM,角度为45度,前瞻距离为25CM。
图六
第三章控制软件的设计
3.1各模块初始化
3.1.1CPU初始化
为了使加快单片机的运行速度,我们通过设置锁相环将系统时钟系统时钟提高到32MHz,倍频公式如下:
公式1
初始化函数如下:
voidCPU_Init()
{
PLLCTL_PLLON=1;
CLKSEL_PLLSEL=0;
SYNR=3;//16M晶振,总线频率48M2*8*(3+1)/1+1=32M
REFDV=1;//3
while(!
(CRGFLG&0x08)){}
CLKSEL_PLLSEL=1;
FCLKDIV=0x56;/*使FLASH和EEPROM*/
/*的擦除操作工作频率在200HZ左右32M/8/22=181818Hz*/
ECLKDIV=0x56;
}
3.1.2PWM初始化
我们采用的S12控制器中的PWM通道级联方式,使输出的信号的幅值和范围更大使电机和舵机有更好的连续性,下面给出了电机的初始化程序以及其注释。
PWME=0X00;//关PWM输出
PWMCTL_CON23=1;//通道2,3级联
PWMPRCLK_PCKB=0;////分频系数1CLO0CKA=CLOCKB=32/1=32MHZ
//PWMCLK_PCLK3=0;//时钟源选择CLOCKB
PWMPOL=0XFF;//起始时输出高电平
PWMCAE=0Xff;//中心对齐方式
PWMPER23=1600;//输出周期=[1/CLOCKSA(CLOCKSB)]*2*1600=10ms
PWMDTY23=1600;//占空比=【PWMDTY0/(PWMPER0)】*100%50%
3.1.3串口初始化
串口模块是调试中不可缺少的的模块,利用串口我们可以实时地观察小车运行状态,赛道信息和软件流向等。
以下是与串口有关的几个初始化函数:
/**********串口初始化***************************/
voidSci1open(void){
SCI1BD=208;//32M总线波特率9600
SCI1CR1=0;
SCI1CR2=0x2C;//只允许接收中断
}
/**********读串口******************************/
unsignedcharSci1Read(){
unsignedcharredata;
while(SCI1SR1_RDRF!
=1);
redata=SCI1DRL;
returnredata;
}
/**********写串口******************************/
voidSci1Write(unsignedcharchSend){
while(SCI1SR1_TC!
=1);
while(SCI1SR1_TDRE!
=1);
SCI1DRL=chSend;
}
3.1.4定时器初始化
在我们的小车系统中,定时器的主要用作测速的用途。
我们利用S12定时器模块中的模数计数器进行定时和读取在读取定时时间内脉冲累加器所获得的脉冲数,再结合编码器齿轮数、小车的齿轮数,以及车轮长度就可以计数出小车的当前速度。
速度获取公式如下:
speed_wink=(int)pulse*2.449*2;公式2
其中speed_wink是当前速度,pulse是小车在定时时间内所获得的脉冲数。
模数计数器初始化代码如下:
PACTL_PAEN=0;//禁止PAI
PAFLG=0X01;//边沿有效值位
PACTL_PAMOD=0;//事件计数模式
PACTL_PEDGE=1;//上升沿计数
DLYCT=0X01;//延迟256个总线时钟
ICSYS=0x00;//ICSYS_LATQ=0ICSYS_BUFEN=0
MCFLG_MCZF=1;//清除溢出中断标志
MCCTL=0xF7;//中断使能,循环计数,重新加载常数
MCCNT=20000;//1/(32M/16)*2000010ms
MCCTL_FLMC=1;//模数计数器重新赋值
PACTL_PAEN=1;//PAI使能
3.2控制策略
3.2.1起跑线检测
本届比赛与以往最大的的同是增加了对起跑线的检测,规则规定跑完两圈后赛车需要自动在起始线之后三米的赛道内,如果没有停止在规定的范围内,比赛成绩时间增加1秒。
起跑线参数图
我们针对起跑线、小车传感器以及小车行使过程中的特点,对起跑线进行识别。
理论上小车在通过起跑线时有两个传感器检测到白色KT板的,而其它传感器则全部检测到黑线(如图七所示,白色是表示传感器检测到白色KT板)。
理论上小车检测到起跑线时传感器的反应(图七)
但实际的测试表明小车在行进中有一定概率与理论的信号是不相同的,归纳起来是由两种情况造成的。
情况一:
小车在直道的抖动造成传感器的输入信号与理论值不相同
情况二:
小车在高速运动时传感器没有在同一个采样周期内检测到传感器在理论上的
正常情况。
,
如图八:
小车行驶种检测到起跑线的情况(图八)
针对上述情况,我们对起跑线采用了累加判别的方法,基本原理是当同时有三个或以上的传感器检测到黑线的时候我们开始对起跑线进行检测,把当前传感器的值跟每次检测到黑线个数不同时候的值相与,并跟开始检测前两次检测到黑线个数不同时候的值相与,这样我们就可以得到完整的起跑线信息了,再通过软件利用一定的与或关系对信号进行滤波和检测,这样就可以保证起跑线不会错判和误判了。
以下是起跑线检测的流程图(图九):
起跑线检测流程图(图九)
3.2.2舵机控制
在舵机的控制上我们采用查表和PID结合的方法对舵机进行控制。
我们对每个传感器都赋予一个偏差值,为了使使转向达到快速性和准确性的要求,我们再对脉冲就行PD调节。
在偏差经过位置式PD调节后我们在对偏差量进行线性化处理这样就得到单片机舵机对应转角所要输出的脉冲,
公式如下:
angle=err*Ps*30/120;//求转角公式3
G_pluse=6000+(angle*700/30);//求脉冲公式4
3.2.3路况检测与速度给定
我们在直道,入弯,出弯的给定速度都是以实际调试的极限速度为标准的。
经过实际测试我们发现只要小车能顺利入弯,那么在弯道中我们可以把小车的速度相对提高,所以当小车行使在弯道中时我们在软件给予标准速度一个补偿值,提高小车我弯道的行驶速度。
在这个我们介绍一下小车行驶在弯道中的软件判断算法。
实际测试表明当小车在同一曲率
下运动时,它的传感器信号是在某两个或某三个之间来回运动的,根据这个情况我们就可以在软件上实现对小车处于弯道中的判断,从而给出一个弯道的补偿速度。
3.2.4速度调节
方案一:
Bang_bang控制,该算法的思想是反馈值若比设定值小,就把控制值设置为最大,否则设置为最小,用公式表示为:
公式5
我实际测试中我们发现在输出信号直接输出最大或最小值的时候速度的响应有比较大的纹波,为了解决这个问题我们对bang_bang控制进行了改进,思想是在反馈值比设定值小时,并不直接赋予控制值为最大,而是逐次递加,在反馈值比设定值小时,而是逐次递减。
在改进后后,响应时间更短了一点,而且纹波有大幅度减小。
方案二:
PID控制
PID控制器结构图
在实际调试中我们使用增量式PID对电机进行调速
增量式PID与位置式PID比较,增量式PID具有以下特点:
1.增量仅与最近几次采样值有关,累加误差较小,且节省存贮空间;
2.控制器以增量形式输出,仅影响本次的输出,误动作较小,且不会产生积分饱和现象;
3.容易实现手动到自动无扰切换。
机器故障时,还能将信号保持到原位。
增量式PID的算式为:
公式7
在程序上具体实现的公式如下:
error=speed_set-speed_wink;公式8PWM23SET=PWMDTY23+PID_P*(error-last_error)+PID_I*(error)+PID_D*(error+pre_error-2*last_error);公式9
在实际调试中我们发现PID控制比Bang_bang控制具有更好的快速性和控制精度。
以下是主程序流程图(图十):
主程序流程图(图十)
第四章开发工具、制作、安装、调试过程
4.1开发工具
我们使用组委会提供的Codewarrior4.5开发环境编写程序。
使用DXP2004作为设计硬件电路的软件工具。
4.2制作调试过程
在整体了解制作智能车所需要的各个模块之后,队员们进行分工,分别完成了各自所负责的模块,这其中主要包括传感器模块、测速及速度给定模块、舵机控制模块、电源模
块和智能车整体组装和电路板的安装等的机械设计模块。
在完整组装智能车后,开始进入到调试阶段。
在实际测试中我们使用无线通信模块和我们开发的上位机软件获取赛道信息、程序流向等信息进行。
第五章高速情况下的研究
5.1高速进弯时产生的矛盾
首先我们在本文先定义一个所谓的“高速”。
车模在本文,高速是运动在瞬时速度为3m/s的情况。
在此情况下,以本车为例子,在3.0m/s的速度冲击曲率为50的弯时。
车模并没有在进弯时车开始有角度的变化,而是在惯性的作用下直切弯道一小段距离。
在这样的运动下,车模会产生如图十一的情况。
图十一
或者出现我们所称为的重影效应(图十二)
图十二
如图,竖线位单片机对I/O口的扫描线,横线为传感器电平。
经过我们的检测,发现高速扫过黑线在一定程度存在这种重叠情况,原因单片机对I/O口的扫描是达到微秒级,而传感器的电平重叠区达到毫秒级。
本车是对三个以上传感器检测到的情况是不作处理的,高速冲弯出现这种情况的表现为直接冲出弯道或者是过弯滞后。
若进行三个传感器的处理,就不可避免地增加在起跑线和十字线那里出错率,这就是所谓矛盾状态。
5.1.1解决方法的思考
出现了5.1所述这个情况,我们面临的是直道无法高速的问题,而比赛中直道所占的比重是不小的。
而且坡在二维平面是个直道,这也增加了下坡后立即进弯道的危险性。
所以解决这个问题是非常有价值的。
在对这个问题中,我们组提出了三种方案:
1、增大传感器的分辨率
2、一次扫描对应一个传感器
3、使用记忆算法
在实践中,增大传感器的分辨率是最好操作的,但是增大分辨率后,转弯动作就会显得不连贯,在弯道会出现多次转弯的现象,影响了整体速度。
而第二种方案需要硬件和软件作出比较大的改动,原本一次扫描可以判断所有传感器的状况,改动后需多次扫描才能为一个判断周期,所以软件纠错必须要多个周期来综合判断,实时性比原来差,整体表现出对舵机控制迟滞。
而使用记忆算法可以在低速情况下把对坡道的曲率判断数据记忆起来,当高速转弯时可以根据上次所测的弯道信息进行纠错。
5.2高速状态的防止高速弯道失控
在真实驾驶的情况下,司机看到弯道会预先减速,然后以一个安全速度进弯。
而在真实赛车中,赛车手会选择较好的过弯路线,减速进弯然后进弯后依靠车的良好性能在弯道加速出弯。
但是这是建立在人良好的视野上。
而本车的前瞻性有限,如果使用弯道减速策略,则高速进弯的时候要在很短的距离内把速度减到很低的水平。
这时候需要很紧的刹车,这样的刹车会造成重心的瞬间前移,出现“甩尾”现象。
在汽车学上,甩尾是一种失控状态,它会使车在很短时间损失速度,并且很难再次起动。
所以高速过弯时,前瞻较近的车需要不作太大的减速过弯。
高速过弯,智能车在物理上要克服很强的向心力,在向心力的方向上只有侧向的静摩擦力与其相反。
所以加大静摩擦力是进行轻微减速转弯的唯一方法。
而在车模的轮胎和轮宽度不能改的情况下,只能增加轮的垂直压力。
而真实的赛车中,虽然赛车做到轻量化,但是依靠空气动力学在高速时将车辆下压。
但是智能车加入空气动力学的可能性是存在,但是相对真实赛车它还是个低速运动体,空气动力学设计效果不是那么明显。
所以智能车增加轮的垂直压力比较有效果的方法是增加重量。
第六章总结
从硬件的构架到软件的编写,从算法的创新到机械的调整。
绝影号智能车无疑凝聚了三位队员的心血。
整车尺寸为25cm×38cm×6cm,车重3KG,全速功率为50W。
现在的绝影号在高速过弯,起跑线判断,上下坡,传感器抗干扰项目上虽然没有过人之处,但有可取之点。
总体上能有比较大的概率按组委会的竞赛要求完成比赛。
由于时间较为紧迫,很多问题没有从根源上解决,比如高速进弯时产生的矛盾。
面对问题的同时我们由于基础理论的薄弱,面对绝影制作中许多跨学科的问题时无从下手。
但是我们相信,通过这次比赛,通过和其他学校的同学的交流,我们能逐步地解决并能完美地解决我们所遇到的难题。
同时也希望,智能车项目能从大学生群体中带动我国智能控制技术的发展,各种领域的技术互相磨合,从而促进国家的科技发展。
参考文献
[1]孙柄达.自动控制原理.机械工业出版社,2008
(1)
[2]祁伟.单片机C51程序设计教程与实验.北京航空航天大学出版社,2006
(1)
[3]周斌,李立国,黄开胜.智能车光电传感器布局对路径识别的影响研究.电子产品世界,2006(9)
[4]陈宋,李立国,黄开胜.智能模型车底盘浅析.电子产品世界,2006(11)
[5]周斌,刘旺,林辛凡,等.智能车赛道记忆算法的研究.电子产品世界,2006(15)
[6]黄开胜,李立国,刘旺,等.基于光电传感和路径记忆的车辆导航系统.电子产品世界,2007
(2)
[7]林辛凡,刘旺,周斌,等.基于离散布置光电传感器的连续路径识别
算法.电子产品世界,2007(3)