第一届智能车大赛清华二队技术报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一届“飞思卡尔”杯全国大学生
智能汽车邀请赛
技术报告
附件 B 智能车光电传感器布局对路径识别的影响研究
附件C智能模型车底盘浅析
附件D 智能车赛道记忆算法的研究
附件E 基于离散布置红外光电传感器的连续路径识别算法
学校:清华大学
队伍名称:清华大学二队
参赛队员:李立国
刘旺
郝杰
带队教师:黄开胜
目录
第一章引言 (1)
1.1. 概述 (1)
1.2. 整车设计思路 (1)
1.2.1. 工作模式 (1)
1.2.2. 电源分配 (2)
第二章硬件设计 (3)
2.1. 传感器设计 (3)
2.1.1. 连续采样的优势 (3)
2.1.2. 连续采样的实现 (3)
2.1.3. 双排传感器的优势 (3)
2.1.4. 前瞻的作用 (3)
2.2. 模型车机械设计 (4)
2.2.1. 传感器支架的设计安装 (4)
2.2.2. 底盘参数选择 (4)
2.3. 电路设计 (5)
2.3.1. 红外发光管供电电路 (6)
2.3.2. 红外传感器发光触发电路 (6)
2.3.3. 单片机供电电路 (7)
2.3.4. 电机驱动电路 (7)
第三章软件设计 (9)
3.1. HCS12控制软件主要理论、算法说明 (9)
3.3.1. 基于传感器的连续算法 (9)
3.3.2. 转向控制策略 (10)
3.3.3. 车速控制策略 (10)
3.3.4. 道路记忆——M算法 (11)
3.2. 开发工具及安装调试过程 (12)
3.3. 代码设计简介 (13)
3.3.1. 代码分类 (13)
3.3.2. 复杂函数说明 (13)
第四章赛车主要技术参数 (17)
第五章结论 (18)
第一章引言
1.1.概述
为响应教育部关于加强大学生的创新意识、合作精神和创新能力的培养的号召,我们组队积极参加第一届“飞思卡尔”杯全国大学生智能汽车邀请赛。
从2005年12月开始着手进行准备,历时9个月,经过设计理念的不断进步共制作出6代赛车传感器及相关算法。
从最开始的小前瞻单排圆弧形排布连续发光离散采样传感器,到脉冲触发式大前瞻离散采样传感器,再到脉冲触发式大前瞻单排连续采样传感器,最终通过大量的实验和基础性能测试,我们选择了大前瞻双排连续采样传感器。
与之相配合,电路设计上我们在电源管理、噪声抑制、驱动优化等方面也都进行了大量的研究工作,这些成果使我们的智能车取得了质的飞跃。
本技术报告将针对我们的最新一代大前瞻双排连续传感器布置方案,从传感器设计安装、底盘参数选择、电路设计、HCS12控制软件主要理论、控制算法等方面具体的阐述智能车的设计制作过程,并列出了模型车的主要技术参数。
1.2.整车设计思路
1.2.1.工作模式
智能车的工作模式如图1.1所示:红外传感器探测赛道信息,转速传感器检测当前车速,电池电压监测电路检测电池电压,并将这些信息输入单片机进行处理。
通过控制算法来实现对舵机转向和电机加减速的控制。
第一届全国大学生智能汽车邀请赛技术报告
图1.1 智能车工作模式
1.2.2.电源分配
智能车各系统工作电压如图1.2所示。
图 1.2 智能车电源电压分
第二章硬件设计
2.1. 传感器设计
2.1.1.连续采样的优势
本参赛队采用的是红外传感器进行路径探测。
大赛要求传感器个数最多为
16,除掉一个转速传感器,可用于探测路径的传感器为15个,而传感器允许的布置宽度为25cm,如果用离散方式布置传感器,在算法不是很复杂的情况下,
对道路的探测精度只能达到17mm左右,对应十几个转角,这样赛车在前进过
程中会出现明显的转向不灵活现象。
离散采样的劣势就在于它丢掉了路径探测
中的大量信息。
我们所采用的路径的连续探测就解决了这个问题。
从理论上连续可以极大的提高路径探测精度。
根据我们的实车试验,已经可以将路径探测的精度提高
到1mm的程度。
这样传感器采集的信息就能保证单片机比较精确地控制前轮的
转向,从而为提高车速提供了转向保证。
2.1.2.连续采样的实现
要实现连续采样,需要保证赛车在垂直赛道的不同位置上,传感器能给出不同的变化情况,这需要单个传感器有较宽的检测范围。
红外传感器的发光和接
收都是锥角一定的圆锥形,所以欲得到较宽的检测范围,或者提高传感器高度,
或者增大传感器接收锥角。
而即使只增大接收锥角,传感器也要有一定的离地
间隙。
但离地间隙大,发光强度就会衰弱,相应地,信号就会减弱。
为了保证
在离地间隙大的情况下仍然有足够大的发光强度,我们想到了用大电流脉冲触发发光的发光方式。
这样,通过单片机控制发光和信号采集的时序,就能准确
探测赛道的位置。
2.1.
3.双排传感器的优势
随着传感器的改进,已经可以用较少的传感器来实现对赛道单排的连续检
测,所以我们采用了双排来获取更多的道路信息。
从而为控制算法的优化提供了更大的空间,可以通过对更多的信息的处理来得到更好的算法。
2.1.4.前瞻的作用
由于舵机、电机和车都是高阶惯性延迟环节,Array从输入到输出需要一定的时间,越早知道前方道路
的信息,就越能减小从输入到输出的滞后。
检测车
前方一定距离的赛道就叫前瞻(见图2.1),在一定
的前瞻范围内,前瞻越大的传感器布局方式,其极
限速度就会越高。
为了有进一步的理论作为前瞻的指导,我们应
用Plastid软件进行了相应的仿真模拟。
仿真结果表
图2.1 前瞻
明,当赛车具有一定的前瞻的时候,其行驶过
程中贴线程度非常高。
据此我们做出实车,实车试验也表明了前瞻的巨大作用。
第一届全国大学生智能汽车邀请赛技术报告
前瞻确实实现了为舵机和电机状态的改变争取到了时间。
不仅如此,前瞻在过弯过程中也显现出独特的优势。
由于能探测到赛车前方较远位置的赛道的信息,在过弯过程中,有大前瞻的赛车就会出现不完全是沿线走,而是在拐弯内侧前进的现象,这样就缩短了赛车实际走过的路线长度,有利于提高成绩。
同时也正是大电流脉冲发光,为实现大前瞻提供了保证。
如果没有大电流脉冲发光,即使知道前瞻的巨大优势也是不能将其实现的。
2.2. 模型车机械设计
由于赛车和电机、舵机等都是不能做改动的,模型车机械设计较少,我们主要进行了传感器支架的设计安装和底盘重要可调参数的设定。
2.2.1.传感器支架的设计安装
由于我们采用的是大前瞻双排传感器,所以
传感器的安装比较复杂。
传感器向前探出比较远,
并且高度比较高,所以就比较容易振动,而支架
又不能太重。
为方便找到最合适的前瞻距离,还
需要能比较方便地调节前瞻的程度。
经过几轮大
的改进,最终,我们的设计满足了这些苛刻的条
件(见图2.2):采用打孔的板子,以减轻质量;采
用铝合金支撑杆,强度刚度大,质量轻;传感器支架与减震器相连,以减小传感器震动。
铝合金支撑杆、斜拉杆和车体之间形成稳定的三角形结构,增强了稳定性。
传感器与支架之间位置调节方便,可以调节传感器高度、前瞻程度和角度,便于找到最佳的传感器布置形式。
2.2.2.底盘参数选择
模型车底盘采用的是等长双横臂式独立悬架(见图2.3),当车轮上下跳动时,车轮平面没有倾斜,但轮距会发生较大变化,故车轮发生侧向滑移的可能性较大。
我们对模型车底盘重要可调参数的设定如下:
(1)主销后倾角
前轮主销后倾的作用是在车轮偏转后形成一
回正力矩, 阻碍车轮偏转。
本车模可通过调整黄色垫片(见图2.4红圈内所示)的数量来改变主销后倾角。
我们车模的主销后倾角设定为 3,这样既使车模在高速行驶时具有足够的回正力矩,又避免产生过大的回正力矩使转向沉重。
图2.3 悬架
图2.2 传感器支架
图2.4 主销后倾角调节
(2)主销内倾角
车模通过螺杆的长度来改变主销内倾角,调整范围为 100 。
其对模型车的性能影响不大,我们设置为0 。
(3)前轮外倾角
与模型车的侧滑关系较大,如为补偿侧滑,可增大前轮前束。
需与前轮前束相匹配,我们设为0 。
(4)前轮前束
主销在垂直方向的位置确定后,改变左右横拉杆的长度即可改变前轮前束的大小。
左杆短,可调范围为10.8mm -18.1mm ;右杆长,可调范围为29.2mm -37.6mm (见图2.3红圈所示)。
前轮前束需与前轮外倾角相
匹配,为0 。
(5)底盘离地间隙
在独立悬架下摆臂与底板之间可以通过增减垫
片来调整底盘离地间隙(见图2.5红圈内所示)。
垫片有1mm 和2mm 两种规格。
一片垫片不加,车前
部离地间隙为9mm ,故离地间隙的调整范围为9mm -
12mm。
我们采用悬吊的大前瞻传感器布置结构,为 保证车模高速行驶时的稳定性并降低重心,将地盘
离地间隙设为最低的9mm 。
(6)后轮距
后轮距可通过更换零件来调整。
图2.6中已安
装零件比未安装零件长4mm ,故后轮距两档可调。
为了弥补等长双横臂独立悬架造成的较大侧向滑移,
我们采用长零件增大后轮距,减小了车模转弯时的
侧向滑移,同时也增强了车模的侧倾稳定性。
表2.1 赛车底盘参数
2.3. 电路设计
该电路由+1.6V 、+5V 、功率驱动三个系统混合组成。
这就决定了必须非常注意电源系统的分开供电。
对此,我们采用分别供电的方式,使得相互之间的图2.5 底盘离地间隙调节 图2.6 后轮距调节
第一届全国大学生智能汽车邀请赛技术报告
影响尽量降低。
2.3.1. 红外发光管供电电路
经实验测试,发光管发光时两端的压降一般为1.6V 。
为有效利用电池资源,此处我们直接通过宽电压输入高效低噪声输出电压可调的DC-DC 变换得到1.6V 的电压来给发光管供电。
根据实验测试,发光管在发光时,经过的电流约为0.5A 。
如果用15个传感器,则瞬时电流为7.5A 。
这样大的电流肯定会对电池电压造成一定的冲击,不利于整个系统的正常运行,所以我们将前后排传感器的发光时间错开,通过两套触发电路来控制发光。
这样就有效减小了红外发光管发光时对电池电压的冲击。
我们所采用的DC-DC 芯片,可以连续输出3A 的电流,电压调节范围从1.23V 到一个很高的电压,所以完全能满足带动发光管这样的负载的要求。
2.3.2. 红外传感器发光触发电路
此处的触发电路,采用三极管和场效应管来实现将控制信号转化为功率信号。
由于所采用的低内部电容的场效应管,所以系统响应很快,完全能够满足
图2.7 红外发光管供电电路
图2.8 红外发光管触发电路
发光频率1kHz 的要求。
2.3.3. 单片机供电电路
在调试过程中我们发现,由于电机和红外发光管的发光,会使电池电压瞬间被拉低,如果用简单的低压降线性稳压器(LDO ),单片机容易出现重启。
而单片机的重启,会影响赛车的正常前进,这在比赛中是需要极力避免的。
所以我们选择了宽电压输入,高效低噪声的DC-DC 稳压控制芯片作为给单片机供电的电路的电源芯片。
当输入电压在1.8V-11V 变化时,输出电压都可以稳定在5V ,并且带负载能力为500mA ,这就从根本上解决了单片机重启的问题。
通过电压监视电路给出电池电压低的报警信号(报警电压可以通过调整分压电阻来调整,初步设置报警临界电压为5.5~6V ),使电池电压低报警指示灯DS31点亮,同时电压低报警的低电平信号通过1路数字量输入单片机。
2.3.4. 电机驱动电路
图2.9 单片机供电电路
图2.10 电机驱动电路
第一届全国大学生智能汽车邀请赛技术报告
图2.11 电机驱动逻辑控制电路
电机驱动电路(见图 2.10)部分包括控制信号部分和功率驱动部分。
我们采用MC33883作为预驱动芯片,配合4个低内阻、高带负载能力的场效应管和逻辑控制电路(见图2.11),实现对电机的驱动。
驱动部分的内阻大约只有20m Ω,最大驱动能力为15A,这样就能完全满足电机的驱动要求。
由于MC33883需要有四个控制信号输入,而控制信号之间具有一定的相关性,所以我们采用单片机的三路数字量输出来对电机的运行状态进行控制。
其
逻辑真值表如下:
表2.2 逻辑控制电路真值表
其中前进、后退、FastStop三种状态都可以被PWM信号调制,但FreeRun状态
不受PWM信号控制。
DR1、DR2、PWM8-1见图2.11。
第三章 软件设计
3.1.HCS12控制软件主要理论、算法说明
3.3.1. 基于传感器的连续算法 3.1.1.1 模拟信号采集
硬件上采用了新一代传感器,性能上满足实现连续控制的条件,这样就可以利用AD 口采集模拟信息,对模拟量进行处理。
由于实际得到的都是接受管感光的电压值,对他们进行归一化处理后得到各个传感器相对的电压值,这样就消除了传感器之间的差异,然后将曲线进行分段线性化处理,做直线处理利于软件程序上的编写,同时也把模型更加合理化,更加接近于传感器的理论特性。
实验测得的曲线与拟合直线的吻合程度如图3.1所示:
3.1.1.2 实现连续
从图3.1中可以看出,在距离赛道中心线-15 ~ +15 cm 的范围内都被各个传感器所覆盖,这就是我们实现连续的前提,根据传感器的百分比值,利用拟合的直线得到对应的偏移量,实现了较大范围内偏移量的连续测量。
由于选用传感器对于不同的赛道产生的特性各不相同,所以每次出发前都要进行传感器的标定,即提前获得赛道的信息,这样以后在赛车运行时采集到
图3.1 前排传感器特性图及曲线拟合
-15-10-5051015
01020
304050
60708090
100
赛车相对中心线的偏移量传感器测得电压百分比
前排传感器特性图及曲线拟合
第一届全国大学生智能汽车邀请赛技术报告
的信息都以此为参考,具有广泛的适应性。
连续算法为我们舵机控制的稳定性提供了极大的帮助,当前双排传感器的处理方法都是如此。
3.3.2.转向控制策略
3.1.2.1 痴呆算法
根据目前采用的传感器布置策略——双排连续,我们相应的在软件上进行设计。
由于双排传感器较单排可以采集到更多的信息,利用前、后排传感器得到的距赛道中心线的偏移量,可以求得中心线相对于车身纵轴线的斜率,从而可以得知当前状态下车身的姿态,进而进行转向控制。
具体算法介绍如下:由于前排采用大前瞻,探测距离远,能提前对转向角进行控制,故由前排传感器确定的偏移量应作为最终转向控制确定因素之一,这里设定为该项确定的转角为PF;利用前后排传感器得到的中心线斜率信息判断得到的转角记为SF,最终的转向角度的确定公式为:
A = K1 * PF + K2 * SF 公式1
采用这样的控制策略,可以实现对车实际姿态的开环控制,大大提高过弯速度,减少由于探测精度问题带来的决策累积误差。
另外,大前瞻与双排的双重组合,达到了对正常弯道提前转弯,对于S弯道迟滞转向的特性——即所谓的“痴呆”。
3.1.2.2 转向PID调节
为了使舵机更好的对给定的转角值做出响应,采用PID调节,通过不断改变P、I、D三个参数进行实验,得到最理想的转向响应速度的一组参数。
选择合适的参数,可以使得在高速时车保持很高的稳定性,从而大大消除由于传感器带来的误差。
3.1.2.3 转向漂移算法——立国第II算法
此算法与路径记忆算法相匹配为最优,当通过路径识别出前方出现大弯道时,赛车出现严重转向不足,这时立即采取紧急制动,制动时间用与速度相关的时间长度进行控制,此时车身会出现“侧旋”——即由后轮侧滑引起的车身旋转,由此弥补转向不足,调整车身方向,当车身位置已相对中心线达到合适位置时,开始全力加速冲出弯道。
当然这种算法需要基于道路记忆,并且能够较为准确的判别前方道路,由于实际中的控制难度比较大,顾目前还处于研究阶段。
3.3.3.车速控制策略
3.1.3.1 转速PID调节
由于硬件上加装了车速传感器,这样利用HCS12 单片机上的脉冲捕捉端口PT,通过计算由光码盘接受到的脉冲数转换得到当前车速,采用PID闭环控制,可以及时快速调节车速达到预定值。
通过PWM波调制给驱动电机输入一定的占空比,使电机工作在一定转矩,由于车在赛道上行驶是,负载不断变化带来了电机工作时的波动,影响了车的实际速度,采用定速策略,可以就是根据实际中的不同负载状况及时快速调整PWM波,使车稳定于某一车速。
图 3.2、3.3
是在调节过程中得到的中间曲线:
由试验测得的一组效果很好的车速调节曲线。
PID 调节最理想的状态就是能够让上升段快速升至目标点,并且不出现超调,又能稳定在这一目标点,就如图3.4所示。
3.1.3.2 车速控制策略——立国第I 算法
为了尽量提高车速,采用在直道上设定最高目标车速,定速控制,接近弯道处开始降速,正式转入弯道时,将车速调整到过弯极限车速,将要出弯道时提前加速。
3.3.
4. 道路记忆——M 算法 3.1.4.1 M 算法的实现
首先该算法要在保证赛车行驶两圈的前提下才可以实现, 赛车第一圈时通过记录转速传感器采集到的脉冲数来实现对未知道路信息的记忆,根据脉冲的正负、宽度、个数来判断区分直道、弯道、S 弯道以及转弯的方向与转弯半径等等信息,这样在进入第二圈后,就可以直接利用这些信息进行控制策略的制定。
3.1.4.2 基于M 算法的转向及转速策略
根据第一圈记录的数据信息,对第二圈的各个道路点进行分段处理。
直道上采用最高速加速,在进入弯道之前提前进行减速,减至过弯的极限最高车速,
图3.4 PID 调节理想状态图
图3.2 中间曲线1
图3.3 中间曲线2
第一届全国大学生智能汽车邀请赛技术报告
对于不同半径的弯道,选择不同的车速。
M算法的优势在于对于复杂的S弯道,它可以实现类似CCD探测头达到的效果,选用小的转向角度通过,这样可以大大缩短时间。
具体的关于M算法的理论请见附录中已发表的相关论文。
3.2.开发工具及安装调试过程
软件开发工具为Codewarrior3.1 ,调试软件为Codewarrior4.1,调试器为清华大学工程物理系开发的BDM。
软件编写初期进行调试,只要让车在静态状态下,边采集传感器信息,边通过hiwave.exe程序的窗口中读取通过软件处理的数据,通过与理论值进行对比来判断程序的正误。
利用BDM可以即时的对软件和硬件进行监控,在调试过程中可以方便的设置断点、选用单步运行的方式,同时查看各个寄存器的值,EEPROM中的数据掉电之后不会丢失,可以用来记录数据再进行后处理。
这些强大的功能,都为我们的软件调试提供了极大的便利。
下面介绍我们具体的调试过程:
(1)传感器的标定过程:
为了从软件角度真实的取得传感器性能曲线,我们可以实地进行测量,在一定距离范围之内沿垂直于中心线方向移动传感器,得到的就是传感器特性与偏移量的关系曲线(如上文中展示),根据这个曲线优化出传感器的模型即可。
(2)在线调试:
正如上面介绍的开发工具,使车处于静止状态,利用BDM将数据从单片机传入电脑,可以直接在线分析数据,对错误和故障进行诊断。
这个调试方法适用于初期软件编写。
(3)离线调试:
在经过编译调试正确之后,就可以进行离线调试,由于传感器存在动静态的差异,所以离线调试主要是测量车在动态过程中采集到的信息并对其进行处理。
常用的手段是:
A.编程采集道路或者车速传感器的信息记录到EEPROM中,在单片机重起之后可以仍然可以利用串行通信端口将数据读出,再进行分析。
我们在调节转速PID、进行转向阶越匹配标定等等过程的时候,就是利用这种离线测试的办法,通过不断的试验、分析数据曲线,最终确定一组最合适的参数。
B.不用EEPROM记录数据,直接通过观察来分析结果。
在一些现象比较明显的调试阶段使用。
总体上,我们是可以充分利用了现有的调试工具和通信设备,得到了我们所需要的数据和结果,以便更好的为我们的决策进行优化。
(4)其他辅助调试工具:
在算法最初选定阶段,我们使用由我们自己开发的Plastid仿真工具进行预仿真,以观察在实际应用中的效果。
MATLAB目前在我们后期数据处理,算法
验证及离线仿真的过程中起到了关键作用。
3.3.代码设计简介
3.3.1.代码分类
整体的软件代码设计分为两种类型,一类是与硬件相关,作为驱动程序的代码,另一类是纯算法设计的代码,下面就这两种类型进行说明。
表3.1 代码类型说明
3.3.2.1 路径记忆函数course.c:
第一届全国大学生智能汽车邀请赛技术报告
图3.5 路径记忆算法函数图
A.初期策略:
采用赛道记忆算法的智能车,在第一圈的主要目的就是将赛道的一些重要特征按特定的格式记录下来,作为第二圈策略的参考。
一般而言,赛道是由一系列的直道和与之相切的不同曲率半径和弧度的弯道组成的。
因此,初圈最终要记录的数据的横坐标一般为行驶的路程,而纵坐标则为赛道此点的曲率半径。
对于横坐标来说,由于初圈一般为匀速驶完,一般可以直接用时间来表示即可,也可以用车速传感器的当前脉冲数来表示。
而对于纵坐标,则无法第一时间取得当前点的曲率半径,它需要通过原始数据进行相关处理后才能得出。
在初圈中,我们能记录的只是当前的转角设定值,可用舵机占空比或者直接转换过来的角度值表示。
B .数据分析与处理
图3.6是在2004年韩国比赛赛道中初圈记录下来的转角变化曲线图。
赛道中的直道部分在曲线中的体现为值为0的直线,但会有一定的波动,如图中的点A 部分;弯道的旋转方向则体现在曲线中转角值的正负。
弯道的曲率半径和弧度体现在曲线中转角值大小和长度上,如C 部分,它的转角值较大,在正负之间短暂切换,在实际赛道中就是那段波浪曲线段(图3.7中C 部分)。
综上所述,在第一圈时将转角值记录下来的变化曲线,如果对其加以分析和处理,它是完全可以体现赛道的特征的。
虽然我们已经能够方便地从初圈记录下的曲线图中判断出赛道的特征,但是我们还需让单片机能自动识别出这些信息,并过滤掉一些毛刺和波动。
得到的处理曲线如图3.8所示,处理值为0时表示此时车处于直道上;当处理值大于0时表示车处于向左转的弯道上,曲率半径与处理值成正比关系;反之亦然。
这样,第二圈就可根据此信息进行相应的最优决策。
图3.6 韩国比赛赛道初圈记忆曲线 图3.7 2004年韩国比赛赛道图
图3. 处理后曲线图。