1、东南大学第五届智能车竞赛技术报告东南大学第五届智能车竞赛技术报告参加组别: 光电组队 伍 名 称 : 队 长:姓名: 学号: 手机 Email 队员1:姓名: 学号: 队员2:姓名: 学号: 2018-09-25一、路径识别系统软硬件设计方案3二、转向舵机控制软件设计方案及算法6三、电机驱动控制系统软件设计方案及算法6四、其他辅助系统软、硬件设计方案8五、整车运行控制系统设计方案及算法10六、CodeWarrior软件使用心得11七、讨论18一、路径识别系统软硬件设计方案1.1光电传感器原理 光电传感器检测路面信息的原理是由发射管发射一定波长的红外线,经地面反射到接收管。如图1,由于在黑色和白
2、色上反射系数不同,在黑色上大部分光线被吸收,而白色上可以反射回大部分光线,所以接收到的反射光强是不一样,进而导致接收管的特性曲线发生变化程度不同,而从外部观测可以近似认为接收管两端输出电阻不同,进而经分压后的电压就不一样,就可以将黑白路面区分开来。图1 光电传感器原理1.2光感器的路径精确识别技术 在智能车系统中,光电传感器就是整个系统的“眼睛”,其对于路径的识别在控制系统中尤为重要。光电传感器路径识别状态分析 由于往届竞赛对光电传感器排布方式研究已经比较深入,传统的“一”字型排布方式在众多排布方式中效果显著,是最常用的一种排布方式。模型车也充分利用了往届的成熟的传感器技术,其排布方式如图2。
3、图2 光电传感器“一”字排布图对于我们模型车,传感器在赛道上可能的状态有:在普通的赛道处、在起点处、在十字交叉线处,分别如下图(并未列出所有的状态图),下面将分别进行分析。图3 红外传感器在普通赛道上图4 红外传器在起点处图5 红外传感器在十字交叉线处 为了识别赛车是处于什么样状态下,用于进行赛道记忆和速度控制,对于我们的数字型红外传感器,每个传感器只有0与1 两种状态,我们分别把15路传感器标记为1到15号传感器,每个传感器又可以对应一个是否在黑线上的标志位,分别为AD_Code0到AD_Code14,相应在黑线上为1,不在黑线上为0,从而通过对任一时刻传感器标志位的读取就可以知道此时模型车
4、的状态。 为了精确地识别起跑线和终点线,我们在程序中定义了15路传感器的状态之和AD_Code_Count,用于统计所有传感器状态标志位之和,即在黑线上的传感器的数目。为赛道记忆识别起点等提供必要的保障。光电传感器路径识别算法 路径识别算法是我们使用的是模糊算法,这种算法的优点是能够根据传感器返回的状态值,得到车的重心偏离黑线的程度,还可以通过一定的算法,计算出舵机的转向角度,并且在一定程度上具有抗拒微小干扰的能力。具体算法介绍如下:图6 传感器重心取值分配图(1)、将每个传感器进行加权处理,给相应各个传感器的权重值,如图1.6所示。(2)、当传感器检测到黑线时相应的传感器返回所在的权重值,并
5、计算所有传感器的平均加权值,即偏离程度。计算公式为: 式(1 .1)式中,AD_Codei为对应传感器的状态值,AD_Weighti为对应传感器的权重值,AD_WH为传感器的加权平均值。AD_WH_Old=AD_WH; AD_WH=0;AD_Code_Count=0; for(AD_Number=0;AD_Number15;AD_Number+) if(AD_Current_DataAD_NumberAD_ThresholdAD_Number) AD_CodeAD_Number=1; else AD_CodeAD_Number=0; for(AD_Number=0;AD_Number15;AD
6、_Number+) AD_WH+=AD_CodeAD_Number*AD_WeightAD_Number; AD_Code_Count+=AD_CodeAD_Number; 由上程序段即可以计算出此时模型车传感器的加权平均值,由此可以得到模型车的状态,为下一步控制决策提供必要的信息。二、转向舵机控制软件设计方案及算法在这里我们认为舵机转动的角度是和PWM脉宽成线性的正比关系,因此以一次函数来唯一确定PWM脉宽与舵机转动角度之间的关系。建立的一次函数方程为: 式中,Steer_Control为舵机应转的角度,Steer_Center为车轮摆正时舵机PWM脉宽应赋的PWMDTYx的值,AD_WH为
7、由传感器状态求得的偏离程度,PWMHalf为舵机由中心摆到车轮允许的最大值PWMDTYx的变化值,Factor 为影响比例因数。PWMHalf/ Factor即为P控制参数,Kp。由此,我们求出了在不同的传感器状态下舵机应转的角度。三、电机驱动控制系统软件设计方案及算法电机驱动使用飞思卡尔专用电机驱动芯片MC33886。驱动电路如图7 所示。 图7 电机驱动模块电路 电机驱动控制中直道利用p控制加速,检测到弯道开始减速,电机反转,减速到一定程度是停止减速,进入弯道状态。具体程序如下:switch(Track) case(1):Speed_Line_P(20); break; case(2):i
8、f(Speed=16) Track=3; PWMDTY23=0; else PWMDTY01=0; PWMDTY23=500; break; case(3):Speed_Curve_P(16); break; default:break; void Speed_Line_P(char Speed_Line_Wanted) Speed_Line_Offset=Speed_Line_Wanted-Speed; PWMDTY01=400+Speed_Line_Kp*Speed_Line_Offset;void Speed_Curve_P(char Speed_Curve_Wanted) Speed_
9、Curve_Offset=Speed_Curve_Wanted-Speed; PWMDTY01=600+Speed_Curve_Kp*Speed_Curve_Offset;四、其他辅助系统软、硬件设计方案4.1 5V电源电路。在智能车系统中,单片机供电及使能都需要用到5V电源,我们采用LM2940S5.0来获得5V电压,实际电路如图:4.2 测速模块由于考虑到成本需要,我们采用了红外对管和黑白码盘作为测速模块的硬件构成。其中码盘为32格的黑白相间圆盘,如下图8所示: 图8 码盘红外传感器安装在正对码盘的前方,虽然这样做精度比编码器要低很多,但是成本低廉制作容易,如果智能车速度较快,可以考虑再减
10、少码盘上黑白色条的数量即可。当圆盘随着齿轮转动时,光电管接收到的透过光强弱交替变化,由此可以得到一系列高低电脉冲。设置9S12 的ECT 模块,同时捕捉光电管输出的电脉冲的上升沿和下降沿。通过累计一定时间内的脉冲数,或者记录相邻脉冲的间隔时间,可以得到和速度等价的参数值。 测速电路使用的红外透射式光电测速传感器。单片机记录两次中断的时间间隔T。两次中断对应于智能车前进的距离S为:16.5/24 cm, 即0.6875cm,其中16.5cm为智能车后轮实测周长。智能车实时速度V(cm/s)的计算公式如下:4.3 底盘的调整由于这次比赛有坡度在15度之内的坡面道路,包括上坡与下坡,光电管架的不是很
11、高,过弯时不会发生侧翻的情况,为了上坡和下坡不会接触地面,产生振动,影响光电管的探测,底盘的前轮高度保持不变,后轮稍稍降低了重心。4.4 前轮的调整前轮的调整包括前轮主销后倾角,主销内倾角,前轮外倾角,前轮前束的调整。在调试过程中,我们发现这几个参数对赛车直线的稳定性和弯道灵巧性都有很重要的影响。主销后倾角是前轮主销与前轮垂直中心线之间的夹角,也就是主销上端向后倾斜的角度。在赛车上是通过四个黄色的小垫片来调整的。减小主销后倾角可以减小前轮的回正力矩。也就是如果车轮向右转,后倾角可以产生一个向左的回正力,使车轮回正比较快,但又使转向更为费力。设黄色垫片2:2(即前2后2)为0,1:3(前1后3)
12、为23,则我们改为3:1(前3后1),使其倾角为负23。这样则可以减小回正力矩的作用,使转向更为灵活,但也会使回正比原来稍慢。主销内倾角是前轮主销在赛车水平面内向内倾斜的角度,虽然增大内倾角也可以增大回正的力矩,但增大内倾角会在赛车转向的过程中,增大赛车与路面的滑动,从而加速轮胎的磨损,由于轮胎对地的附着力对防止侧滑有很重要的影响,所以如果轮胎磨损则得不偿失,所以内倾角调整为0。前轮外倾角是前轮的上端向外倾斜的角度,如果前面两个轮子呈现“V”字形则称正倾角,呈现“八”字则称负倾角。由于前轮外倾可以抵消由于车的重力使车轮向内倾斜的趋势,减少赛车机件的磨损与负重,所以赛车安装了组委会配备的外倾角为
13、1的配件。前轮前束是前轮前端向内倾斜的程度,当两轮的前端距离小后端距离大时为内八字,前端距离大后端距离小为外八字。由于前轮外倾使轮子滚动时类似与圆锥滚动,从而导致两侧车轮向外滚开。但由于拉杆的作用使车轮不可能向外滚开,车轮会出现边滚变向内划的现象,从而增加了轮胎的磨损。前轮外八字与前轮外倾搭配,一方面可以抵消前轮外倾的负作用,另一方面由于赛车前进时车轮由于惯性自然的向内倾斜,外八字可以抵消其向内倾斜的趋势。外八字还可以使转向时靠近弯道内侧的轮胎比靠近弯道外侧的轮胎的转向程度更大,则使内轮胎比外轮胎的转弯半径小,有利与转向。4.5 后轮距及后轮差速的调整由于速度高,赛车在转弯时容易翻倒,为了增加
14、整车的平衡能力,可用组委会提供的配件把后轮改为大轮距。在拐弯时由于弯道内侧轮比外侧轮的拐弯半径小,则内侧轮比外侧轮的速度小,这就使两轮胎有一定的速度差,称为差速。而赛车的差速机构安装在后轮轴上的,所以只可以调整后轮的差速。经多次调试观察发现差速对赛车转弯有很大的影响。如果差速过紧,即两轮胎的速度很接近时,转弯的时候内侧轮很容易打滑,从而产生侧滑,使赛车滑出赛道。当差速过松时,会使直道的时候两轮打滑,大大的减小了赛车的驱动能力。所以差速调整要适当,才会使直道驱动能力强,弯道转弯灵巧。我们调试差速的经验是把赛车放在赛道上捏住一个轮胎不动让另一个轮胎能在赛道上半滑动时为佳。五、整车运行控制系统设计方
15、案及算法竞赛规则规定,智能车系统采用飞思卡尔的16位微控制器MC9S12XS128单片机作为核心控制单元用于智能车系统的控制。在选定智能车系统采用光电传感器方案后,赛车的位置信号由车体前方的光电传感器采集,经S12 MCU的I/O口处理后,用于赛车的运动控制决策,同时内部ECT模块发出PWM波,驱动直流电机对智能车进行加速和减速控制,以及伺服电机对赛车进行转向控制,使赛车在赛道上能够自主行驶,并以最短的时间最快的速度跑完全程。为了对赛车的速度进行精确的控制,在智能车后轴上安装光电编码器,采集车轮转速的脉冲信号,经MCU捕获后进行PID自动控制,完成智能车速度的闭环控制。光电式车模总体结构如图9
16、:图9 光电式车模总体结构系统总体方框图如图10:图10 系统总体方框图 根据以上系统方案设计,赛车共包括六大模块:MC9S12XS128B主控模块、传感器模块、电源模块、电机驱动模块、速度检测模块和辅助调试模块。各模块的作用如下:(1)、MC9S12XS128B主控模块,作为整个智能车的“大脑”,将采集光电传感器、光电编码器等传感器的信号,根据控制算法做出控制决策,驱动直流电机和伺服电机完成对智能车的控制。(2)、传感器模块,是智能车的“眼睛”,可以通过通过采集赛道上少数孤立点反射亮度进行路经检测,为智能车的“大脑”做出决策提供必要的依据和充足的反应时间。(3)、电源模块,为整个系统提供合适
17、而又稳定的电源。(4)、电机驱动模块,驱动直流电机和伺服电机完成智能车的加减速控制和转向控制。(5)、速度检测模块,检测反馈智能车后轮的转速,用于速度的闭环控制。(6)、辅助调试模块主要用于智能车系统的功能调试、赛车状态监控等方面,如主板上的数码管显示转弯和速度等。六、 CodeWarrior软件使用心得 我们在制作过程中运行的编译环境为 CodeWarrior 4.7 。CodeWarrior4.7是Freescale公司一套比较著名的软件集成开发环境(IDE),具有直观,易用的优点。CodeWarrior 4.7 IDE支持深入的C语言和汇编语言调试:启动/停步、单步、设置跟踪触发器、校验
18、/修改存储器和C变量、结构与阵列、以及执行其他的仿真功能。它包括项目管理,代码生成,语法敏感编辑器等,具有快速下载的特点。CodeWarrior4.7具有在线调试,单步运行程序的功能,同时能够观察到主程序中定义的所有的变量的值。这一功能在进行程序错误检查和改正时起到了至关重要的作用。(1)、创建工程:第一次打开CodeWarrior会出现如图界面,点击Create New Project开始创建工程,单击File菜单下的New Project也可开始创建工程。(2)、随后选择芯片,即MC9S12X128旁边是你选择默认的下载方式,我们选TBDML。(3)、单击下一步,将工程名Project改成
19、自己要命名的工程名,单击选择工程文件放置的位置。左边默认选择C语言即可。(4)、此时单击完成可创建完成一个空的工程;也可以单击下一步添加代码文件,添加完文件后可单击完成工程的创建,也可单击下一步进行更多的工程设置。基本选择默认即可,如下图所示。(5)、然后可以看到系统自动生成了一些项目文件 main.c是用户需要开发的应用程序文件。(6)、在工程中新建文件:也可以自己再创建新的C语言程序文件。步骤如下:单击File目录下的“New Text File”选项新建一个文件,单击工具栏的保存图标,选择保存文件的位置(一般放在工程下的Source文件夹下),并修改文件名为.c或者以.h结尾的名字(.c
20、或者.h不能丢),单击保存,此时在工程左边并不会看到刚新建的文件。接着单击菜单栏的可以选择第一项直接将刚新建的文件添加进工程(此时必须保证当前打开的文件是要添加的文件)。也可以在source文件夹上右击Add Files,选择要添加的文件点击“打开”即可。(7)、编译源文件单击图标即可。(8)、下载程序到开发板当BDM连接到电脑上以后,首先在左侧选择下载工具,如图然后单击debug图标(带绿色小箭头的图标)即可开始下载程序。(9)、BDM下载过程中会弹出芯片选择窗口,选择XS128之后单击“OK”接着会有另一个对话框弹出单击“确定”继续即可,然后会有一个警告对话框,将勾勾选上并单击“OK”就可以下载。七、讨论
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1