光交换技术综合报告
光交换技术综合报告
姓名:罗晓学号:专业:通信工程
090642031
光交换技术和ATM交换一样,都是宽带交换的重要组成。在长途信息传输方面,光纤已经占了绝对优势。用户环路光纤化也得到很大发展,尤其是宽带综合数字网中的用户线路必须要用光纤。光技术已经在信息传输中得到广泛应用,并占用举足轻重的地位。同时,现有的大部分情况是光纤在传输部分带宽几乎无限200Tb/s,窗口200nm。相反,在交换部分,仅仅只有几个Gb/s,这是因为电子的本征特性制约了它在交换部分的处理能力和交换速度。所以,许多研究机构致力于研究和开发光交换/光路由技术,试图在光子层面上完成网络交换工作,消除电子瓶颈的影响。当全光交换系统成为现实,就足够可以满足飞速增长的带宽和处理速度需求,减少光电交换的损伤,同时能减少多达75%的网络成本,具有诱人的市场前景。因此,广电交换技术是未来交换技术的发展方向。
光交换技术是指不经过任何光、电转换,在光域直接将输入光信号交换到不同的输出端。即全光通信网络。光交换系统主要由输入接口、光交换矩阵、输出接口和控制单元四部分组成。实现光交换设备是光交换机,光交换器件是实现全光网络的基础,光交换机的光交换器件有光开光、光波长转换器和光存储器。
光开关在光通信技术中的作用一是将某一光纤通道中的光信号切断或开通;其次是将某波长光信号由一个光纤通道转换到另一通道中去;在是在同一通道中将一种波长的光信号转换成另一种波长的光信号。一般有半导体光开光、耦合波导开关、硅衬底平面光波导开关等。波长转换器有直接转换和调制转换两种。直接转换将输入的光信号由光电探测器转变为电信号,然后再驱动激光器,使其输出光信号,即光-电光变换;调制转换只在外调制器的控制端上施加适当的直流偏置电压,实现间接波长转换。光存储器有光纤延迟线存储器和双稳态光二极管存储器二种。
光交换技术可以分成光路交换技术和分组交换技术。光路交换又可分成三种类型,即空分(SD)、时分(TD)和波分/频分(WD/FD)光交换,以及由这些交换组合而成的结合型。光分组交换又分为白分组(OPS)、突发(OBS)、标记(OMPLS)三种。
空分光交换技术就是在空间域上对光信号进行交换,其基本原理是将光交换元件组成门阵列开关,并适当控制门阵列开关,即可在任一路输入光纤和任一输出光纤之间构成通路。空分光交换的功能是使光信号的传输通路在空间上发生改变。它有两种工作状态:平行和交叉两种交换状态。空分光交换按光矩阵开关所使用的技术又分成两类,一是基于波导技术的波导空分,另一个是使用自由空间光传播技术的自由空分光交换。空分光交换可以构成纵横式(crossbar)网络,双纵横式(double-crossbar)网络,Banyan网络和扩张的Banyan网络,Benes网络和扩张的Benes网络。时分光交换是以时分复用为基础,把时间划分为若干互不重叠的时隙,由不同的时隙建立不同的子信道,通过时隙交换网络完成话音的时隙搬移,从而实现入线和出线间话音交换的一种交换方式其基本原理与现行的电子程控交换中的时分交换系统完全相同,因此它能与采用全光时分多路复用方法的光传输系统匹配。波分光交换(或交叉连接)是以波分复用原理为基础,采用波长选择或波长变换的方法实现交换功能的。波分交换是根据光信号的波长来进行通路选择的交换方式。其基本原理是通过改变输入光信号的波长,把某个波长的光信号变换成另一个波长的光信号输出。波分复用是指把N个波长互不相同的信道复用在一起,就可以得到一个N路的波分复用信号。
全光分组交换网可分成两大类:时隙和非时隙。在时隙网络中,分组长度是固定的,并在时隙中传输。时隙的长度应大于分组的时限,以便在分组的前后设置保护间隔。在非时隙网络中,分组的大小是可变的,而且在交换之前,不需要排列,异步的,自由地交换每一个分组。这种网络竞争性较大,分组丢失率较高。但是结构简单,不需要同步,分组的分割和重组不需要在输入输出节点进行,更适合于原始IP业务,而且缓存容量较大的非时隙型网络性能良好。
在光网络设计中,对网络设计者来说,非常重要的是减少当前网络中协议层的数目,保留已有功能,并尽量利用现有的光技术。而光分组交换技术独秀之处在于:大容量、数据率和格式的透明性、可配置性等特点;支持未来不同类型数据;能提供端到端的光通道或者无连接的传输;带宽利用效率高,能提供各种服务,满足客户的需求。把大量的交换业务转移到光域,交换容量与WDM传输容量匹配,同时光分组技术与OXC、MPLS等新技术的结合,实现网络的优化与资源的合理利用因而,光分组交换技术势必成为下一代全光网网络规划的“宠儿”。
扩展阅读:军交1队技术报告
第一届“飞思卡尔”杯全国大学生
智能汽车邀请赛
技术报告
学校:军事交通学院队伍名称:军交参赛队员:郭振东李华郭灿
带队教师:徐友春
1队
":null,"page":{"ph":1263.375,"pw":893.25,"v":6,"t":"1","pptlike":null,"cx":0,"cy":0,"cw":893.25,"ch":1263.375}})
关于技术报告和研究论文使用授权的说明
本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、
使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:郭振东
李华郭灿
带队教师签名:徐友春日期:8月5号
":null,"page":{"ph":1263.375,"pw":893.25,"v":6,"t":"1","pptlike":null,"cx":0,"cy":0,"cw":893.25,"ch":1263.375}})
第一章:引言...............................................................................................................2
1.1设计制作思路.................................................................................................21.2设计方案概述.................................................................................................2第二章:硬件部分.....................................................................................................2
2.1车模组装.........................................................................................................22.2传感器的设计与安装.....................................................................................2
2.2.1传感器的选择及工作原理................................................................22.2.2传感器的布置方案............................................................................32.2.3传感器信号探测及处理电路............................................................42.3系统电路板的设计、安装与连接.................................................................42.4驱动电机和舵机.............................................................................................52.5主要车模参数................................................................................................6第三章:软件部分.......................................................................................................7
3.1控制算法.........................................................................................................7
3.1.1理论介绍..............................................................................................73.1.2程序实现............................................................................................73.2代码设计......................................................................................................10第四章:结论.............................................................................................................10
4.1主要性能........................................................................................................14.2改进方向.........................................................................................................1参考文献.......................................................................................................................2附录:程序源代码.......................................................................................................2
第一章:引言
1.1设计制作思路
为了实现对小车的智能控制,本设计以MC9S12DG128为核心,将传感器得到的路况信息进行综合判别和处理,然后以脉宽调制(PWM)的方式控制舵机转向和驱动电机加速或减速,从而控制小车,使小车能够快速、准确地识别特定路线并按适当速度行驶。多传感器并行工作、CPU的综合数据处理为小车实现自动加速、减速、限速、左转、右转提供了充分的保证。先后经过了组装车模、传感器的选择与布置、系统电路板的设计与安装、开发工具BDM的调试以及控制算法的不断改进等过程,完成对智能车粗略控制到精确控制,并使智能车由低速逐渐向高速过渡。在实验的基础上不断发现问题,并不断调试解决问题,使智能车能够最大限度地沿着轨道快速、准确地行驶。
1.2设计方案概述
本设计方案主要分硬件、软件和结论三个方面进行介绍。硬件部分主要阐述了外部传感器的选择、安装、传感器的探测原理、传感器的探测电路设计,系统电路板的电路设计及安装,驱动电机和舵机的控制。软件部分主要介绍了控制算法的理论知识,程序以及代码的设计。结论部分主要指出了小车的性能以及改进的方向。现在对本技术报告的主要部分概括介绍如下:
传感器部分:本智能车的传感器采用了反射式红外光电传感器,双排布置。在智能车的头部安装了两块电路板,两块电路板的布置形式呈工字形。智能车通电后,光电传感器的发光管发出探测光,如果探测到白色部分,接收管能够接收到反射光;如果探测到黑色部分则探测光被吸收,接收管就接收不到反射光。根据此原理,把电信号转换成数字信号,从而把路面信息反映到控制系统,通过CPU的综合数据处理,对智能车的转向和速度进行控制。
控制系统部分:我们制作了以MC9S12DG128芯片为核心的系统电路板,它给布置线路带来了极大的方便,并可以非常方便地安装在智能车上,使系统得到了简化。
控制算法部分:采用了目前自动控制领域中最常用的控制算法PID控制算法进行车辆行驶控制。在本方案的设计中采用了PID直接计算法。在行驶过程中,由于车辆转向造成车辆中心与黑线有一定的偏差量,我们就选择这一偏差量作为输入的偏差。本设计方案中以前排电路板的中心为车辆中心线所在位置,在车辆行驶过程中,当某一传感器感应到黑线位置时,就以该传感器与电路板中心的距离作为车辆的行驶偏差,以此作为PID控制器的输入量。为了改善控制算法中输入量不连续的问题,我们引入车速作为算法辅助输入量。
开发工具我们采用了主办方提供的BDM调试器,在本报告中就不再赘述。
":null,"page":{"ph":1263.375,"pw":893.25,"v":6,"t":"1","pptlike":null,"cx":0,"cy":0,"cw":893.25,"ch":1263.375}})
第二章:硬件部分
2.1车模组装
严格按照说明对车模进行组装。重点是准确地调整舵机,使舵机和前轮处于最佳的工作位置。
2.2传感器的设计与安装
2.2.1传感器的选择及工作原理根据要求,我们有两个选择。
第一种是采用CCD传感器,以一定的频率对路面信息进行采集。CPU通过图象处理判断小车所处相对的位置。使用CCD进行图象采集和识别的方法,虽然该方案获得的信息较精确,但是不适用在小体积系统中使用,并且还涉及图象采集、图象识别等领域,占用系统资源较多,算法较复杂。
第二种是采用反射式红外光电传感器,以一定的频率向CPU提供路面标志信号。CPU经过比较处理,粗略判断出小车所处的相对位置。该传感器体积小,价格便宜,使用方便,而且该方案占用系统资源较少,算法较易实现。故我们在本设计中采用了这种传感器,鉴于车底盘较低,采用近距离(2cm4cm)有效的传感器。工作原理如图2.1所示:
发射路
面接收探测距离图2.1传感器工作原理图
反射式光电传感器有发射管和接收管组成,工作时由发射管发射红外线,经被探测物体面反射,反射的红外线由接收管接收,接收管把接收的物理信号转换成电信号。被检测物体表面的颜色和粗糙程度影响反射光的强弱,反射面越不光滑,颜色越暗,反射光就会越弱。我们这里就是要运用红外光电传感器对颜色敏感的特点,当检测物体表面的颜色为黑色时,反射光很弱,接收管接收的光线可以忽略,使接收管处于一种状态,例如开关管截止;当检测物体表面的颜色为白色时,反射光较强烈。使接收管处于另一种状态,例如开关管导通。这两种相反的状态表现在电路中就是高低电平组成的脉冲信号。这个脉冲信号就是控制系统的输入信号,并且设高电平的输入信号为1低电平信号输入为0。通过编写控制算法,根据传感器搜集的路况信息,调节PWM的占空比,控制舵机和驱动电机,实现小车的智能控制。
第二章:硬件部分
2.2.2传感器的布置方案
为了减弱外界光线对反射式红外光电传感器的影响,且考虑到小车底盘较低,我们把传感器放置在设计的电路板下,垂直探测地面。传感器的布置方案有单排、双排、W字形排列等。由于W字形排列的算法比较复杂,我们只考虑了单排布置和双排布置的方案。
首先我们选用了单排布置,也就是在车模的头部安装一块电路板,其底部安装8个传感器。通过对传感器探测到黑色导航线的情况的分析,我们用编码的形式把传感器探测到的路面信息表示出来。然后把这些路况信息输入到控制系统通过编写的控制算法就可以控制舵机和驱动电机,实现智能车的加速、减速、左转、右转了。通过不断的实验,来进一步地调整各种编码下,智能车要转的角度的参数。但是这种控制算法对智能车进行控制时,并没有考虑速度对其转向的影响,只是简单地在转弯时减速,在直道时加速。因此在实验中发现智能车在跑道上慢速行驶时还能比较平稳的跑完全程,其速度稍微加大时,智能车在拐弯处即使进行了减速,也会由于惯性常会飞出跑道。改进的方法有二:一是改进算法,采用PID控制算法,它可以解决车辆行驶速度与转向角度大小的相关性问题,行驶轨迹的跟踪及预测问题;二是增大传感器的预描距离,进入弯道时提前减速。我们就双管齐下,增大了传感器探测电路板伸出智能车的距离。同时为了获得PID控制算法比较准确地输入量,就在前排的后面又安装了一块电路板,并在它的下面安装了6个传感器,采集更多的信息。最终我们采用了双排布置,即在智能车的头部安装了前、后两块电路板。其形状及尺寸如图2.2(单位:毫米)所示:
图2.2
两块电路板的布置如图2.3所示:在前排电路板上任意两个相邻的传感器的中心距离位2.5cm;在后排电路板上,中间两个传感器的中心距离为5.0cm,其余的相邻两传感器间的距离也为2.5cm。前后两块电路板传感器分布所在直线间的
第一届全国大学生智能汽车邀请赛技术报告
垂直距离为10.8cm。
2.2.3传感器信号探测及处理电路
图2.3
传感器信号探测及处理电路设计如图2.4所示:
图2.4
D1为红外光电传感器的发射管,D2为其接收管。D1发射红外线,D2接收信号,判断是否有反射信号。如果有则D2输出高电平,如果没有则输出低电平,信号经过三极管、集成运放器输出到CPU的PORTA或PORTB。14个传感器获得的信号并行输入单片机,从而把路面信息反馈到控制系统,实现对智能车的控制。制作电路板后,要把探测电路上的元件一一对应地焊接到电路板上。焊接电阻时,要注意防止虚焊;焊接插件时要注意避免两个焊接点连接在一起造成短路;焊接发光二极管和接收二极管前要用万用表测量一下极性,防止将二极管反向安装。
2.3系统电路板的设计、安装与连接
第二章:硬件部分
我们没有采用主办方提供了核心S12的电路板,自行设计了系统电路板。首先核心S12电路板体积比较大,既不方便在智能车上安装,也不美观;其次在核心S12电路板上找到正确的引脚插线,也显得比较复杂。我们设计的系统电路板就解决了这方面的问题,可以把它很方便地固定在智能车的底盘上,并制作了转用的插槽(如图2.2所示)。我们制作了以MC9S12DG128芯片为核心,并附以复位电路、晶体振荡器及时钟电路、+5V的电源、驱动电机的供电插座、单片机引脚插槽以及其他一些常规电子元件组成的系统控制电路。系统控制电路原理图如图2.5所示:
图2.5
2.4驱动电机和舵机
传感器信息电机MC9S12DG128加减速MC33886PID算法PWM波舵机转向图2.6舵机和电机工作原理原理图
第一届全国大学生智能汽车邀请赛技术报告
驱动电机和舵机是智能车整个系统的执行部件。以MC9S12DG128芯片为核心的控制系统由传感器获得路面信息,通过PID控制算法来调节舵机和驱动电机的PWM的占空比,控制智能车的转向和车速。其工作原理图2.6所示。本次比赛要求不得对驱动电机和舵机进行改造,本文对其不再赘述。
2.5主要车模参数
a)车重:1.1kg长:384mm宽:185mm高:77mm
b)电路功耗:所有电容总容量:1900uFc)传感器种类:反射式红外光电传感器数目:14d)伺服电机个数:0
e)赛道信息检测精度:6mm频率:1000Hz
第三章:软件部分
3.1控制算法
本智能车辆的控制算法部分主要需解决如下问题:车辆直线行驶的稳定性问题,车辆转弯控制问题,车辆行驶速度与转向角度大小的相关性问题,行驶轨迹的跟踪及预测问题等。为了更好的解决设计中存在的问题,本方案采用了目前自动控制领域中最常用的控制算法PID控制算法进行车辆行驶控制。3.1.1理论介绍
PID控制算法包括直接计算法和增量算法,所谓的增量算法就是相对于标准的相邻两次运算之差,得到的结果是增量。也就是说在上一次的控制量的基础上需要增加(负值意味着减少)控制量,例如对于智能小车控制算法,就是智能小车相对于上一次转向角度还需要增加或减少的转向角度。在本方案的设计中采用了PID直接计算法。
(一)PID算法中常用概念解释如下:1、基本偏差e(t)
表示当前测量值与设定目标间的差,设定目标是被减数,结果可以是正或负,正数表示还没有达到,负数表示已经超过了设定值。这是面向比例项用的变动数据。
2、累计偏差:e(t)e(t)e(t1)e(t2)...e(1)公式1
表示每一次测量到的偏差值的总和,这是代数和,是面向积分项用的一个变动数据。
3、基本偏差的相对偏差e(t)-e(t-1)
表示用本次的基本偏差减去上一次的基本偏差,用于考察当前控制对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。4、三个基本参数:Kp,Ki,Kd
这三个参数是做好控制器的关键常数,分别称为比例常数、积分常数和微分常数,不同的控制对象需要选择不同的数值,还需要经过现场调试才能获得较好的效果。
5、标准的直接算法公式
Pout(t)Kp*e(t)Ki*e(t)Kd*(e(t)e(t1))公式2(二)三个基本参数Kp,Ki,Kd在实际控制中的作用:
比例调节作用:是按比例反映系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。
积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分
第一届全国大学生智能汽车邀请赛技术报告
调节就进行直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用就越强。反之Ti越大则积分作用越弱,加入积分调节可使系统稳定性下降,动态相应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。
微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,以被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对于噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。(三)智能车辆PID控制算法中参数的选择
此次参赛的智能车辆主要是寻迹行驶,控制算法所要做的就是控制车辆沿着预先设计好黑线行驶,保证车辆中心线在黑线上。在行驶过程中,由于车辆转向造成车辆中心与黑线有一定的偏差量,我们就选择这一偏差量作为输入的偏差。本设计方案中以前排电路板的中心为车辆中心线所在位置,在车辆行驶过程中,当某一传感器感应到黑线位置时,就以该传感器与电路板中心的距离作为车辆的行驶偏差,以此做为PID控制器的输入量。如图3.1所示:
通过直接算法公式(公式2)计算出t时刻智能车的控制转向角,由此达到对智能车转向进行控制的目的。但是由于输入量取值是由传感器的位置决定,而传感器的数量又是有限的,所以我们只能获得有限的精确输入量,这样通过控制算法得出的控制转角就不是很理想。为了改善控制算法中输入量不连续的问题,我们引入车速作为算法辅助输入量。通过车速、车辆上一次转角、车辆长度等值之间的数学关系,可以计算出车辆中心与黑线中心在一次传感器采样周期内的偏差,以此值与传感器采样值之间做比较,从而获得比较理想的偏差值,为控制算法找到较理想的输入量。车速、车辆上一次转角、车辆长度等数值之间
8传感器车辆中e(t)中心黑线图3.第三章:软件部件
的关系可由图3.2导出:经过△t时间后车辆转过的角度为
vt180R12公式3(0是车辆上一时刻的转角。)公式4
R120cos0sin0
由图上各值的几何关系可知:
图3.2
a1800arctanb902arctan2L1L2L1L2公式5
2公式6
22arccosR22R2L1L2R12R222L1L2222公式7
2L1L2R12R12L1L2cosa公式8
C2R2sin公式9
10LCsinb公式
最后计算出的L即为经过t时间后车辆中心的横向位移,将此值与传感器获得的车辆中心与黑线的偏差进行比较,得到我们需要的输入量。
通过输入量与输出量之间的比较,初步定下PID控制算法中参数Kp,Ki,
":null,"page":{"ph":1263.375,"pw":893.25,"v":6,"t":"1","pptlike":null,"cx":0,"cy":0,"cw":893.25,"ch":1263.375}})第一届全国大学生智能汽车邀请赛技术报告
Kd的值,然后通过实验找到合适的三个控制参数值。3.1.2程序实现
数值分析和变量之间的联系我们通过以上的分析过程已经基本了解,要通过程序将以上过程实现并达到预期的效果,还需要做一些准备工作。首先是将转向舵机和驱动电机的驱动程序设计好,然后测出智能车的最大行驶速度和最大转角,量出车辆轴距以及程序设计中需要用的一些参数。完成这些准备工作之后,画出程序流程图,如图3.3所示:
开始
定义变量和函数并初始化数据
检测端口值的变化并记录到变量中
否是传感器的检
测值=0?
进行数值编码调用PID函数输出控制角度和
调用转向函数和调速函数,调整车速和
转速角否程序是否结束
程序结束图3.3
图3.3
通过程序流程图,很快就可以确定下来编程方案,按照结构化程序设计的要求,对程序中的函数都进行模块化设计,保证程序的可读性和易维护性,实现预期的设计目的。
3.2代码设计
通过以上分析,我们在编程时需要解决以下问题:
第三章:软件部分
(1)PID控制算法的程序实现(2)基本计算函数的编程实现
(3)输入输出量与PID算法之间的结合(4)变量之间数据类型的变化
根据以上的问题提出了下述解决方法:
(1)定义PID计算的结构体如下:typedefstructPID{
floatSetPoint;//设定目标DesiredValue
floatProportion;//比例常数ProportionalConstfloatIntegral;//积分常数IntegralConstfloatDerivative;//微分常数DerivativeConstfloatLastError;//Error[-1]floatPrevError;//Error[-2]
floatSumError;//SumsofErrors
}PID;
(2)定义基本计算函数
floatPIDCalc(PID*pp,floatNextPoint)//PID计算{
floatdError,Error;
Error=pp->SetPoint-NextPoint;//偏差pp->SumError+=Error;//积分
dError=pp->LastError-pp->PrevError;//当前微分pp->PrevError=pp->LastError;pp->LastError=Error;
return(pp->Proportion*Error//比例项+pp->Integral*pp->SumError//积分项+pp->Derivative*dError//微分项);}
floatR(floatx)//计算车辆转弯半径{float
resu=200.0*(cosf(x*3.1415926/180.0))*(cosf(x*3.1415926/180.0))/(sinf(x*3.1415926/180.0));
returnresu;
第一届全国大学生智能汽车邀请赛技术报告
}floatangela(floatx)//计算角度a{
return(180.0+x-51.3);}
floatangelb(floatx,floaty)//计算角度b{
floatrest=(180.0*y*0.025)/(R(x)*3.1415926);returnrest;}
floatangelc(floatx)//计算角度c{
float
resul=acosf((Rnext(x)*Rnext(x)+16400.0-R(x)*R(x))/(256.0*Rnext(x)))*180.0/3.1415926;
returnresul;}
floatRnext(floatx)//计算车辆中心点转弯半径{
float
resaff=R(x)*R(x)+16400.0-2.0*R(x)*128.0*cosf(angela(x)*3.1415926/180.0);
floatreste=sqrtf(resaff);returnreste;}
floatclength(floatx,floaty)//计算部分位移{
return(2.0*Rnext(x)*sinf(y*3.1415926/180.0));}
floatslength(floatx,floaty)//计算最终位移{
return
(clength(x,y)*sinf((90.0+y/2-38.66-angelc(x))*3.1415926/180.0));
}(3)确定输入输出量与定义函数之间的关系intcoding(unsignedcharsensors)
":null,"page":{"ph":1263.375,"pw":893.25,"v":6,"t":"1","pptlike":null,"cx":0,"cy":0,"cw":893.25,"ch":1263.375}})第三章:软件部分
{inta=0;
floatlength=0.0,rIn=0.0;switch(sensors){
case1:length=12.5;;a=1;break;//speed=50case3:length=25.0;a=1;break;//speed=50;case2:length=37.5;a=1;break;//speed=45;case6:length=50.0;a=1;break;//speed=40;case4:length=62.5;a=1;break;//speed=35;case12:length=75.0;a=1;break;//speed=30;case8:length=87.5;a=1;break;//speed=26;case16:length=12.5;a=-1;break;//speed=50;case48:length=25.0;a=-1;break;//speed=50;case32:length=37.5;a=-1;break;//speed=45;case96:length=50.0;a=-1;break;//speed=40;case64:length=62.5;a=-1;break;//speed=35;case192:length=75.0;a=-1;break;//speed=30;case128:length=87.5;a=-1;break;//speed=26;default:a=0;speed=20;break;}
if(length==templength){
rIn=length-slength((tempangle*0.2),angelb((tempangle*0.2),(float)(0.2*(120-tempangle)*125)));
}else
rIn=length;
tempangle=PIDCalc(&sPID,rIn);//PerformPIDInterationif(tempangle":null,"page":{"ph":1263.375,"pw":893.25,"v":6,"t":"1","pptlike":null,"cx":0,"cy":0,"cw":893.25,"ch":1263.375}})
第四章:结论
4.1主要性能
总体上,智能车已经实现了加速、减速、转向、刹车的基本功能,能够沿黑色导航线比较平稳、快速地行驶了。
本智能车辆的控制算法部分主要解决如下问题:车辆直线行驶的稳定性问题,车辆转弯控制问题,车辆行驶速度与转向角度大小的相关性问题,行驶轨迹的跟踪及预测问题等。PID控制算法就可以解决这些问题。它有诸多优点:1)我们采用状态控制。在每个很小的一段时间内,认为车辆状态不变,因而在这段时间内可将车辆作静态处理。转向目的就是减小小车所在的中心线与车辆行驶的黑色导航线的静态误差。状态控制不考虑时间过程,而注重调整前后的状态变化。实际应用过程中,当时间足够小时,由于执行机构的响应能力远远低于单片机的运行速度,实际控制操作效果就如同连续控制一样,保证了控制的准确性。2)控制输出不要求最优。从实际情况可知,在相同的情况下,同一驾驶员两次控制的结果可能不尽相同的,具有一定的随机性,但结果都能完成所要求的任务。因此,对于本智能车的控制输出的转向角,不要求它在当前位置是最优的,而只要求它满足两个条件,即方向正确,转向角度合理。3)控制算法交易实现。比较其他比较复杂的算法,如最优控制必须考虑时间的过程,因而需要了解各执行机构的动态响应特性,以获得准确的传递函数。而本文提供的算法只需要车辆当前的状态信息,即小车的当前位置(由传感器提供)与小车所应处的位置(由算法提供),即可得到转向控制角。整个过程不涉及执行机构的动态响应函数,从而降低了难度。
4.2改进方向
本控制算法还存在一些不足:1)由于传感器的预描距离小(10cm左右),随着车速的提高,要求控制的频率提高。由于系统硬件的限制很难满足高速情况下的转向控制的要求。2)作为辅助输入量的速度并不十分准确,所取的速度是算法赋予小车的速度,并非小车的真实速度。不同的路面,不同的转向对小车的速度都会产生影响,而这些影响是很难量化的。3)算法中参数的调整完全依靠实验人工标定,工作量比较大。这些问题都亟待解决。
":null,"page":{"ph":1263.375,"pw":893.25,"v":6,"t":"1","pptlike":null,"cx":0,"cy":0,"cw":893.25,"ch":1263.375}})
参考文献
01.自动控制原理/蒋大名、戴胜华主编。北京:清华大学出版社、北方交通大学出版
社,201*.6
02.现代传感技术/魏永广著。东北大学出版社,201*.4
03.C程序设计:第2版/谭浩强著。北京:清华大学出版社,201*.6
04.单片机嵌入式应用的在线开发方法/邵贝贝著。北京:清华大学出版社,201*.10
附录:程序源代码
#include#include#include"stdio.h"#include"math.h"#definestart_speed5;
#pragmaLINK_INFODERIVATIVE"mc9s12dg128b"typedefstructPID{
floatSetPoint;floatProportion;floatIntegral;
floatDerivative;floatLastError;floatPrevError;
floatSumError;}PID;PIDsPID;inttemp;intangle;
floatspeed;charflag;floattemplength;
floatcoding(unsignedcharsensors);voidinitial_pwm(void);voidinitial_atd(void);
characc_sensorX(void);characc_sensorY(void);voidsteer_pwm(floatangle);
voiddrive_pwm(signedcharspeed);
voidPIDInit(PID*pp);
floatPIDCalc(PID*pps,floatNextPoint);
floatR(floatx);
floatangela(floatx);floatangelb(floatx,floaty);floatangelc(floatx);floatRnext(floatx);
floatclength(floatx,floaty);floatslength(floatx,floaty);floatR(floatx){
return(200*cos(x)*cos(x)/sin(x));}floatangela(floatx){return(180+x-51.34);}
floatangelb(floatx,floaty){return(180*y*0.025/R(x));}floatangelc(floatx){
return(arccos((Rnext(x)*Rnext(x)+16400-R(x)*R(x))/(256*Rnext(x))));}floatRnext(floatx){
return(sqr(R(x)*R(x)+16400-2*R(x)*128*cos(angela(x))));}
floatclength(floatx,floaty){
return(2*Rnext(x)*sin(y));}floatslength(floatx,floaty){
return(clength(x,y)*sin(90+y/2-38.66-angelc(x)));}voidTimerOverflow(void){.
while(TCNT!=0x0000);while(TCNT==0x0000);flag=1;}
voidinitial_pwm(void){PWME=0X82;PWMCTL=0X80;
PWMCLK=0X80;PWMPRCLK=0X24;PWMSCLA=0X40;
PWMSCLB=0X02;PWMPOL=0X82;PWMCAE=0X00;
PWMPER1=0X40;
PWMDTY1=0X10;PWMPER67=0X2710;PWMDTY67=0X2D0;}voidinitial_atd(void)
{ATD0CTL2=0xC0;ATD0CTL3=0x18;ATD0CTL4=0xA7;
ATD0CTL5=0xb1;ATD0DIEN=0x00;}
floatcoding(unsignedcharsensors)
{floata,length;floatrIn,rOut;
switch(sensors){
case1:length=12.5;speed=50;break;case3:length=25;speed=50;break;
case2:length=37.5;speed=45;break;
case6:length=50;speed=40;break;case4:length=62.5;speed=35;break;case12:length=75;speed=30;break;case8:length=87.5;speed=25;break;
case16:length=-12.5;speed=50;break;case48:length=-25;speed=50;break;case32:length=-37.5;speed=45;break;
case96:length=-50;speed=40;break;case64:length=-62.5;speed=35;break;case192:length=-75;speed=30;break;
case128:length=-87.5;speed=25;break;default:a=0;speed=20;break;}if(length==templength)
{rIn=length-slength(temp*0.2,angelb(temp*0.2,speed));}rIn=length;
a=PIDCalc(&sPID,rIn);
templength=length;
returna;}
voidsteer_pwm(intangle){PWMDTY67=720+angle;PWMCNT67=0;}
voiddrive_pwm(signedcharspeed){PWMDTY1=speed;PWMCNT1=0;}
characc_sensorX(void){charx;
x=ATD0DR0L;
returnx;}
characc_sensorY(void){chary;
y=ATD0DR1L;returny;}
floatPIDCalc(PID*pp,floatNextPoint)
{floatdError,Error;
Error=pp->SetPoint-NextPoint;pp->SumError+=Error;dError=pp->LastError-pp->PrevError;pp->PrevError=pp->LastError;
pp->LastError=Error;
return(pp->Proportion*Error+pp->Integral*pp->SumError
+pp->Derivative*dError);}voidPIDInit(PID*pp){memset(pp,0,sizeof(PID));}
voidmain(void)
{unsignedcharsensor1,stop,tt;characc_X,acc_Y;
TSCR1=0x80;/*enabletimerTCNT*/TSCR2=0x01;/*TCNTprescalersetup*/flag=0;
tt=0;
DDRA=0X00;DDRB=0XFF;DDRK=0XFF;DDRE=0X00;
PORTK=0X02;initial_pwm();
sPID.Proportion=0.5;sPID.Integral=0.5;sPID.Derivative=0.0;sPID.SetPoint=0;
for(;;)
{stop=PORTE;stop=stop&0x03;
if(stop==1){PORTK=0;tt=1;}if(stop==2){
PORTK=0X02;
10tt=0;}if(tt==0){sensor1=PORTA;PORTB=sensor1;
sensor1=~sensor1;acc_X=acc_sensorX();acc_Y=acc_sensorY();
if(sensor1==0xff){PORTK=0;}else{PORTK=0X02;}
if(sensor1==17){angle=0;speed=60;}else{
if(sensor1==0){angle=temp;speed=25;}
else{angle=(int)coding(sensor1);
temp=angle;}}TimerOverflow();if(flag==1){steer_pwm(angle);
drive_pwm(speed);flag=0;}}}
12友情提示:本文中关于《光交换技术综合报告》给出的范例仅供您参考拓展思维使用,光交换技术综合报告:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。