北洋追风技术报告.docx
- 文档编号:10551475
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:49
- 大小:1.36MB
北洋追风技术报告.docx
《北洋追风技术报告.docx》由会员分享,可在线阅读,更多相关《北洋追风技术报告.docx(49页珍藏版)》请在冰豆网上搜索。
北洋追风技术报告
第一届“飞思卡尔”杯全国大学生
智能汽车邀请赛
技术报告
学校:
天津大学
队伍名称:
北洋追风队
参赛队员:
李镜亮
赵宇
李义
带队教师:
孟庆浩教授
关于技术报告和研究论文使用授权的说明
本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:
参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:
带队教师签名:
日期:
第一章引言
能够参加第一届“飞思卡尔”杯全国大学生智能汽车邀请赛,“北洋追风”组成员感到非常荣幸,参赛的过程中小组成员也投入了不少精力。
一个好的工作集体必然要有恰当且有效的分工,在本次大赛中,“北洋追风”组的成员赵宇和李义主要负责程序软件方面的调试与仿真;小组成员李镜亮主要负责硬件电路的设计;针对控制算法,小组成员进行了共同讨论。
整个小组各司其职、通力合作,在孟庆浩老师的悉心指导下圆满完成了智能车的制作。
具体制作过程可分为以下三个阶段:
第一个阶段,3月2号到4月初。
参加培训会后,我们主要进行了资料查找、熟悉单片机以及传感器选型等前期工作,并在一开始就将目标选定在光电传感器上,放弃了CCD的检测方法。
在文献〔1〕和〔2〕中,详细阐明了光电传感器的原理,并列举了不同类型的光电传感器检测方法。
基于此次比赛的检测要求,我们选定了型号为TCRT5000的传感器,并就其数字和模拟输出分别进行了相应的电路设计。
第二个阶段,从4月初到6月底,主要进行了各部分电路的搭建与程序调试。
我们完全采用了组委会提供的MC9S12DG128开发板和MC33886电机驱动芯片,设计并制作了电压变换电路与电机驱动电路,编写了AD转换与模糊路径识别程序。
在实际实验中,我们发现模糊算法增加了程序的复杂性,降低了实时性,较难达到控制要求,所以决定放弃此算法,而采用数字输出式传感器以及经验控制算法。
同时我们还就传感器布局进行了一系列的仿真,最终采用了“W”型布局。
第三个阶段,从7月初到参加比赛,正是暑假期间,可以将精力完全投入到制作中。
我们做好整个系统后,根据智能车的运动状况对程序进行了一遍一遍的修改与调试,并对硬件电路进行了相应的改进,取得了快速性与稳定性的协调统一,最终完成了智能车的制作。
本技术报告的正文包括以下几部分内容:
第二章主要介绍智能车的硬件与安装,包括电路设计以及机械安装。
具体内容有两个部分:
第一部分是信息检测相关模块的设计,如所采用的测速系统、黑带检测方法及传感器布局。
第二部分是开发板外围电路的设计,如电源管理模块,单片机与传感器电路的接口等。
主要介绍了自行制作的集成以上电路的电源驱动电路板的设计及其安装固定。
第三章主要介绍开发工具、算法仿真及调试过程。
第四章主要介绍基于HCS12控制软件的主要理论、算法说明及代码设计。
第五章为报告总结,概括说明模型汽车制作过程中的整体情况和各项技术指标,并指出了其中存在的问题和未来进一步改进的方向。
第二章硬件电路设计
2.1路径识别电路
智能车要实现自动导引功能就必须要感知导引线,感知导引线相当于给机器人一个视觉功能。
自动寻迹是基于自动导引小车(AGV—auto-guidedvehicle)系统,实现小车自动识别路线,判断选择正确的行进路线。
在本次比赛中采用一定宽度的白色纸作赛道,与白色有较大反差的黑色线条作引导,这就需要我们使用传感器感知此导引线以使车模实现自动地按路径行进。
2.1.1传感器选择
实现智能车的视觉功能有多种方式,我们认为针对此次比赛大体有以下两种方案:
1)使用CCD摄像头进行图像采集和识别。
我们认为此种方案不适用于小体积系统,具体识别过程还涉及图像采集、图像处理及识别等步骤。
此种方法虽然有分辨率比较高,对路面的信息处理准确等优点,但对硬件处理速度和软件算法的要求都比较严格,实时性欠佳,且成本较大。
2)使用反射式光电传感器进行路径识别。
这种传感器在智能识别技术中有着广泛的应用。
它可以用来检测地面明暗和颜色的变化,也可以探测有无接近的物体。
这种光电传感器的基本原理是,自带一个光源和一个光接收装置,光源发出的光经过待测物体的反射被光敏元件接收,再经过相关电路的处理得到所需要的信息(如灰度值)。
采用这种方法易于实现,响应速度较快,算法相对于CCD较简单,实时性比较好,成本较低。
缺点也是显而易见的,分辨率不高,易受外界环境光线影响,同时占用单片机端口比较多。
经过慎重分析选择,我们小组最终选定了第二种识别方案,即采用反射式传感器进行路径识别。
反射式光电传感器的光源有多种,常用的有红外发光二极管、普通发光二极管以及激光二极管,其中普通发光二极管消耗功率比较大,而激光二极管发出的光的频率虽然较集中,传感器只接收很窄的频率范围信号,不容易被干扰,但成本较高。
我们采用的是红外发光二极管。
红外反射式传感器可以采用红外对管自行制作,由于自行制作的传感器发射管与接收管位置难以保证在同一水平线上且固定安装比较困难,容易造成传感器性能不一致,我们放弃了自行制作,而直接采用了成品红外光电传感器。
目前市场上的红外反射式光电传感器种类很多且价格低廉,经查阅大量产品资料,在对6个型号的传感器测试后,我们选用了价格、性能基本适合的反射式红外传感器TCRT5000。
在使用约40mA的发射电流,没有强烈日光干扰(在有日光灯的房间里)探测距离能达3cm,完全能满足探测距离要求。
图2.1红外反射式光电传感器TCRT5000
2.1.2传感器电路设计
红外传感器的电路有多种形式,根据路径识别算法的不同可设计成模拟量输出与数字量输出。
对于模糊控制算法,需要传感器输出模拟量经AD转换后输入单片机,模拟量输出的传感器电路如图2.2所示。
若采用传感器阵列经验判断方法,则可采用数字量输出式传感器电路,如图2.3所示。
图2.2模拟量输出光电传感器电路
图2.3数字量输出光电传感器电路
经过一系列实验,我们发现模糊算法增加了程序的复杂性,实时性难以达到控制要求,决定放弃此算法,而采用数字输出式传感器以及经验控制算法,我们采用了图2.3的电路形式。
这里我们采用了脉冲调制式,即VO是震荡电路产生的脉冲电压,去点亮发光二极管,很容易滤除外界干扰,虽然电路相对比较复杂,但足以保证小车的稳定行驶。
若VO为直流5V电压时,传感器就是连续直流式的,虽具有电路简单、易于调试等特点,但它同时也很容易受到外界光源的干扰,无法适应场地更换时不同背景光源的影响,因此我们放弃了这种方法。
图2.3所示电路原理是这样的,发射管由脉冲电流点亮,
起限流作用,接收管电流在
上成为电压信号输出送入比较器LM339,经与由电位器
设定的直流电压值比较后输出逻辑电平信号送入单片机,其中LM339是开路输出的,3.3K的电阻
是为了使输出电压正确。
经实验测试,当接收管处于黑线上时为高电平,白纸上则为低电平,反应灵敏,满足了比赛要求。
我们所采用的震荡电路是由555定时器构造的(图2.4),电路中将高电平触发端THR和低电平触发端TRIG短接,并在放电回路中串入电阻
。
这里的
、
和C为外接电阻和电容,它们均是定时元件(图中没有
)。
图2.5为工作波形。
工作原理:
由于接通电源后,电容器两端电压
=0,故THR端与TRIG端均为低电平,RS触发器置1(Q=1),输出
为高电平,放电管V截止。
当电源刚接通时,电源经
、
对电容C充电,使其电压
按指数规律上升,当
上升到(2/3)
时,则RS触发器置0(Q=0),输出
为低电平,放电管V导通,我们把
从(1/3)
上升到(2/3)
这段时间内电路的状态称为第一暂稳态,其维持时间t1的长短与电容的充电时间有关。
充电时间常数τ充=(
+
)C。
由于放电管V导通,电容C通过电阻R2和放电管放电,电路进入第二暂稳态。
放电时间常数τ放=
C。
随着C的放电
下降,当
下降到(1/3)
时,RS触发器置1(Q=1),输出
高电平,放电管V截止,电容C放电结束,
再次对电容C充电,电路又翻转到第一暂稳态。
如此反复,则输出可得矩形波形。
由以上分析可知:
电路靠电容C充电来维持第一暂稳态,其持续时间即为t1。
电路靠电容C放电来维持第二暂稳态,其持续时间为t2。
电路一旦起振后,
电压总是在(1/3~2/3)
之间变化。
所以震荡周期为:
,显然,改变
、
和C的值,就可以改变振荡器的频率。
图2.4555定时器构造的多谐震荡器图2.5震荡器输出波形
2.1.3传感器布局
传感器阵列是智能车的眼睛,眼睛看的好坏直接影响到后续的认路正确与否。
因我们采用了数字式输出的传感器电路,处理速度比较快,传感器数量可不受程序时间限制,经多次仿真实验,我们最终确定了传感器数量和布局(具体布局方法可见第四章)。
一共采用了13个传感器,分为两排,第一排8个,第二排5个,前后两排间距为3.5cm。
我们放弃了单排放置传感器的方法,让前后两排有间距,使其对赛道有一定预测功能。
又因为寻迹黑线宽度为2.5cm,为保证传感器能骑在黑线两测用于检测是否跑偏,我们设置同排传感器间距为3cm,稍大于黑线宽度。
制作完成的路径检测电路板(如图2.6所示)。
为防止其它元器件对传感器造成阻挡等不良影响,特将所有传感器焊于电路板底面。
在智能车前端原有两安装孔,间距为6cm,故在电路板后端设置间距为6cm的二固定孔,安装时将电路板与车体用带孔的长铁片连接,其上以螺母固定。
可通过调整铁片倾向来调整传感器与地面的夹角与距离,十分方便。
图2.6路径检测电路板
2.2测速系统电路
车速的测量有很多方法,第一种是可以采用采用霍尔集成片。
根据霍尔原理,利用工业用的霍尔元件可以较容易测量出小车的行驶速度。
方案二受鼠标工作原理的启发,采用对射式光电开关。
由于该开关是沟槽结构,可以将其置于固定轴上,再在车轮上均匀地固定多个遮光条,让其恰好通过沟槽,车轮转动时产生连续脉冲。
通过脉冲的计数,对速度进行测量。
以上两个方案中,由于小车的车轮较小,方案一的磁性材料密集安装十分困难,且测量精度比较低,很难精确控制小车;相反,方案二能够适应这种条件,可以在车轮上加较多的遮光条来满足脉冲计数的精度要求,因此我们采用方案二。
借用数字式输出光电传感器的原理,我们设计了如图2.7所示的测速电路。
采用的对射式光电传感器型号为MOCH22A,电容C1起滤波作用。
图2.7采用对射式光电传感器的测速电路
将电路板固定在智能车后面的车架上,同时在车后主动轮电机轴承上安装一个遮光板,板圆周上均匀地分布着若干个小孔。
车轮转动时,小孔依次通过沟槽,光电开关便得到通断相间的高低电平信号,经整形后送入单片机便可实现车速检测和路程计算。
车速:
,
路程:
其中n为单片机读入的脉冲数,D为后轮直径,t为采样计时时间,C=38为遮光板上小孔数,常数4.44表示啮合齿轮轮径比。
2.3电机驱动电路
我们完全采用了组委会提供的MC33886芯片设计制作了电机驱动电路。
其电路如图2.8所示,为提高对电机的驱动能力,特将两个OUT1、OUT2分别连接在一起接到电机的两个输入端上。
图2.8MC33886电机驱动电路
2.4电源管理电路
智能车系统需要根据各部件正常工作的要求,对配发的标准车模用7.2V2000mAhNi-cd蓄电池进行电压调节。
其中,单片机系统、路径识别的光电传感器和接收器电路、车速传感器电路需要5V电压,伺服电机工作电压范围6V,直流电机可以使用7.2V2000mAhNi-cd蓄电池直接供电。
7.2V变5V电路如图2.9所示,采用LM2940芯片输出直流5V电压。
图2.97.2V变5V电压电路
7.2V变6V电路如图2.10所示,采用LM2575ADJ芯片通过调节可调电阻输出6V电压。
图2.107.2V变6V电压电路
2.5电源驱动电路板设计与安装
在程序开发过程中,我们完全采用了组委会提供的S12核心开发板。
为给S12核心开发板供电,同时为了安装调试方便,我们制作了一块电源驱动电路板,上面集成有S12核心开发板与此板的插针式接口、单片机与光电传感器舵机测速系统的信号接口、总电源接口和拨动开关、电源管理的两个变压电路和MC33886电机驱动电路,如图2.11所示:
使用时将S12核心开发板插于其上即可,方便可靠。
图2.11电源驱动电路板
为给电路板提供安装场所,我们借助车模底部原有的孔与支架,用有机玻璃板搭设了一个平台。
有机玻璃板10cm×11.5cm,根据车模原有孔的位置打了三个孔,用螺钉和铜螺栓将玻璃板固定在车体上。
然后将插于一起的电路板平放其上,用红色绝缘胶带将其固定在有机玻璃平台上。
平台下的空间恰好可放置7.2VNi-cd蓄电池,同时用胶带固定在车模底部的支架上。
如图2.12所示:
图2.12有机玻璃安装平台
第三章算法仿真
本章简要介绍仿真软件Plastid(试用版)的特点与使用,并以Plastid为平台,介绍智能车传感器布局的仿真以及两种经验控制算法的评估。
仿真软件Plastid(图3.1)提供了三种不同的仿真方案,单片机在线仿真、DLL调用仿真、子VI算法仿真。
由于本系统是一种定性分析的工具,定量上很难准确评估,所以我们主要是采用DLL调用的离线仿真。
图3.1仿真软件Plastid
3.1Plastid的特点与使用
Plastid智能车仿真系统是本次智能车大赛提供的官方仿真软件。
它是基于LabVIEW虚拟仪器技术所开发,可以针对不同赛车、不同赛道、不同路径识别方案、控制策略进行相关分析与仿真。
具体的特点有以下几点:
1、赛道与赛车环境模拟
使用者可以根据需要分别对赛道和赛车进行绘制。
赛道可以设计成不同弯道、直道的组合;赛车可以根据需要设计成不同尺寸,不同传感器布局。
2、控制算法的仿真验证
该系统提供了三种不同的仿真方案,单片机在线仿真、DLL调用仿真、子VI算法仿真。
使用者可以根据需要选择方案进行仿真。
3、路径识别的方案分析
系统提供了光电传感器的仿真模型,方便使用者模拟不同传感器布局的效果。
提供了一个定性分析效果的平台。
4、离线/在线仿真相结合
系统除了提供离线仿真以外,还可以通过CAN通讯与单片机相连,进行在线仿真。
3.2传感器布局仿真
传感器的布局在智能车的设计中有着举足轻重的作用,不同的布局结合不同的算法对智能车的效果有很大影响。
传感器布局对应的控制算法可以有:
经验算法、模糊控制。
经验算法的主要原理是以中心传感器为比较点,比较两边传感器与中间传感器的差值,用实验经验做出判断。
经验算法比较简单,实时性较好,硬件易于实现。
模糊控制的主要原理是利用模糊控制理论,将传感器的差值模糊化,模糊推理,反模糊化,继而进行判断。
模糊算法的精度高,但算法(模糊推理)比较复杂,实时性较差,并要求传感器为模拟量输出以及有A/D转换装置。
基于以上考虑,我们以后的仿真都采用了经验算法。
以下将以经验算法为基础,针对几种典型的布局进行分析。
3.2.1“一”字形传感器布局
所谓“一”字形的传感器布局,就是把多个传感器按照“一”字排开(如图3.2)。
这种传感器布局方式最为常见,安装方便,算法在理论上易于实现,由于本次大赛对车宽、车长有了明确规定,所以这种布局所需要的传感器数目不是很多,一般在8个左右。
图3.2“一”字形传感器布局
这种布局的优点是常见且安装方便。
不足之处在于:
由于传感器只有一排,且安装在智能车的头部,对赛道的曲率几乎没有任何预测功能。
智能车在弯道会突然减速,直道会突然加速,机械磨损较大。
出于对稳定性的考虑,避免赛车在直道进入弯道时冲出赛道,赛车在连续直道时不能开足马力,全速前进,影响了完成比赛的速度。
3.2.2“W”形传感器布局
所谓“W”形的传感器布局,就是把多个传感器按照“W”形排开(如图3.3)。
根据比赛的车长限制,前后两排传感器的距离一般在3.5cm左右。
这种传感器的布局方式对传感器的数目没有太大的限制,一般在7到15之间均可。
图3.3“W”形的传感器布局
“W”形的传感器布局相对于“一”字形传感器布局有了明显的优点。
由于传感器分布在两排上,使得智能车对弯道有了一定的预测功能,这种预测功能特别体现在直道进入弯道时刻。
后一排传感器仍在直道时,前一排传感器已经进入弯道(如图3.4)。
图3.4“W”形的传感器进入弯道
“W”形的传感器布局的不足之处在于:
由于布局在两排上,控制算法的复杂程度有了很大的增加,判断舵机的旋转方向时,往往需要上一次的检测数据。
经验判断的可能性也随着传感器的数量增加而增加。
具体举例在前面的第三章已经有所介绍,在此不做过多的解释。
3.2.3“W+2”形传感器布局
受到昆虫两个触角的启发,“W+2”形的传感器布局,就是在传感器按照“W”形排开的基础上,在前排传感器前端再加入两个专门用于预测弯道的传感器,这两个传感器主要控制电机减速,即:
当检测到弯道时,实施逐渐减速策略。
(如图3.5)。
图3.5“W+2”形的传感器布局
“W+2”形的传感器布局相对于“W”形的传感器布局而言,把预测功能从“W”形的传感器中分离出来,对弯道的预测功能更强。
根据大赛对于车长的规定,我们让赛车的两个“触角”距离“W”形的传感器约7cm。
在程序编写时,我们参考这两个传感器上一时刻的状态,判断是否进入弯道,如果进入弯道,则实行减速策略,避免赛车因速度过快而冲出赛道。
有了这两个传感器的保障,智能车可以在直道以最快速度前进,并以尽可能快的速度通过弯道而又不冲出赛道。
两个传感器的具体编程思路为:
S14(左)、S15(右)是探头传感器,直线状态下,二者都是“0”输出,当进入左拐弯道时,S14为真(逻辑“1”),上一时刻S14为“0”,所以判断为左转弯道;同理,S15为真(逻辑“1”),上一时刻S15为“零”,所以判断为右转弯道。
不论左还是右弯道,电机都将减速。
3.3两种经验算法
当智能车的传感器布局确定以后,就需要编写一个合理的经验算法与之配合。
经过讨论,我们最终将目光所定在两种算法上,我们自己称之为:
“普通经验控制”、“经验反馈控制”。
所谓“普通经验控制”就是前面第三章提到的控制算法,是一种以上时刻的数据为依据的完全经验算法,整个控制系统是开环的。
具体程序和设计思路同第三章一样,可参见附录。
下面具体说明我们仿真的另一种算法:
“经验反馈控制”。
“经验反馈控制”的设计思路是:
在原有的“普通经验控制”的基础上,加入PID控制的思想,即:
引入比例、积分、微分三个控制常数,实施反馈,并采用积分分离的控制方法。
而与经典PID控制有本质不同的是,经典PID控制需要知道控制对象(伺服电机)的传递函数;“经验反馈控制”则将整个控制对象当成一个比例常数,系统的给定值则有经验给出。
“经验反馈控制”的另一个特点是:
通常条件下,在智能车的系统中,速度变量和角度变量是两个独立的变量,没有必然的联系;而在实际比赛中,智能车存在这样的逻辑关系:
角度越大(入弯道),速度应该越低;角度越小(出弯道),速度应该越高。
在“经验反馈控制”中,我们通过几何关系把赛车的速度与舵机的角度建立函数关系,将检测到的速度值转换为角度值,与给定角度进行比较后得到误差信号,再经过PID调节后输出速度(或加速度)。
系统框图见图3.6。
给定值的确定是由经验得出的,在此不再多述,详细代码参见附录A。
以下几个程序将简要介绍PID控制函数和速度转换角度的函数及转换原理:
图3.6“经验反馈控制”系统框图
以下是定义的基本参数:
doubleS_C_ang;//定义角度的给定值
doubleS_AccSpeed;//定义加速度的给定值
doubleTm;//定义仿真周期// doubleR;//定义旋转半径//
doubleSpeed_2_Ang;//定义由速度转换后的角度//
doubleE1;doubleE_last=0;//定义偏差//
doubleKp;//定义比例系数//
doubleTi;//定义积分时间//
intKL;//定义积分的逻辑量//
doubleE0;//定义积分分离值//doubleTd;//定义微分时间//
doubleSum=0;//定义中间变量求和//
doubleU;//定义控制器输出//
doubleP;doubleI;doubleD;
DLL的具体主函数:
voidAI(unsignedlongintSenser,doubleSpeed_in,doublePre_Data[],double *C_ang,double*Acceleration)
{//类PID控制//
Tm=0.015;
R=0.65;//仿真周期和半径的初始化//
Kp=0.7;Ti=0.9;Td=0.3;E0=0.5;//控制参数初始化//
S_Ang(Senser);//计算转角给定值//
S_Speed(Tm,R,Speed_in);//根据速度推算角度//
E1=S_C_ang-Speed_2_Ang;//求出偏差//
P=Kp;I=Kp*Tm/Ti;D=Kp*Td/Tm;//计算PID控制系数//
Sum=Sum+I*E1;
if(E1 elseKL=0; U=P*E1+KL*Sum+D*(E1-E_last); E_last=E1; *C_ang=S_C_ang;//输出参数// *Acceleration=0.7-0.016*U; } 速度转换角度的函数的转换原理,如图3.7,Tm是系统的一个控制周期,Speed_in是当前的智能车速度,L就是在一个控制周期内赛车冲出的距离,Speed_2_Ang是赛车在此速度下因该转的角度。 由平面几何可知: Speed_2_Ang=2*A。 图3.7 速度转换角度的函数的转换原理说明 仿真函数如下: voidS_Speed(doubleTm,doubleR,doubleSpeed_in)//速度转换为角度函数体// { doubleL;doubleA; L=Tm*Speed_in; A=atan2(L,R); Speed_2_Ang=2*A; } 第四章信号检测及循线控制算法的软件实现 本章通过模块化的方式给出了基于HCS12单片机的智能车控制的具体软件实现过程以及相关代码,其中各模块如图4.1所示。 图4.1程序模块框图 4.1S12工作频率初始化模块 通过串口调试的时候,由于在监控程序中已经写好关于系统时钟的初始化,因此不用对其进行设置,在用BDM调试的过程中,由于没有了监控程序,用BDM进行实验初始阶段由于没有对系统时钟进行设置,程序的运行始终和预期结果不同,进行分析后,发现没有进行时钟的设置。 以下通过子程序Initial_Clock来实现对系统时钟的初始化。 voidInitial_Clock(){ REFDV=0x01;//内部系统时钟为48MHZ,总线时钟为24MHZ SYNR=0x02;//根据书P376的监控程序给出SYNR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北洋 追风 技术 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)