intelligent队技术报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四届全国大学生“飞思卡尔”杯智能汽车竞赛摄像头智能车技术报告
学校:成都信息工程学院
队伍名称:intelligent队
参赛队员:陈刘
段钧
张胜齐
指导教师:王国江
邓昌建
关于技术报告和研究论文使用授权的说明
本人完全了解第四届全国大学生“飞思卡尔”杯智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。

参赛队员签名:陈刘段钧张胜齐
带队教师签名:王国江邓昌建
日期:2009-8-10
第一章引言 (1)
1.1背景介绍 (1)
1.2文献综述 (1)
1.3论文结构 (1)
第二章总体设计方案 (2)
2.1道路识别方案 (2)
第三章硬件电路 (3)
3.1电源模块 (3)
3.2驱动电路 (4)
3.3测速芯片 (5)
3.4 HC9S12XS128MAA电路 (6)
第四章底层硬件接口 (8)
4.1 Maa概述 (8)
4.2 速度控制 (8)
4.3 舵机控制 (8)
第五章图像处理 (10)
5.1图像处理 (10)
5.2 二值化 (10)
5.3 提取中心点 (11)
第六章速度闭环控制 (13)
6.1 速度闭环控制方法 (13)
6.2 速度控制算法 (13)
第七章系统调试 (14)
7.1 调试软件 (14)
第八章车模改装 (17)
8.1轮距的调整 (17)
8.2车模重心调整 (17)
8.3 改装后车模各种参数 (17)
第九章总结 (19)
参考文献 (21)
第一章引言
1.1背景介绍
全国大学生智能汽车比赛是经全国高等教育司研究,委托高等学校自动化专业教学指导分委会主办的,旨在培养创新精神、协作精神,提高工程实践能力的科技活动。

比赛要求在组委会提供统一智能车竞赛车模、单片机HCS12开发板、开发软件Code Warrior和在线调试工具的基础上制作一个能够自主识别路线的智能车,它将在专门设计的跑道上自动识别道路行驶。

中心目标是不违反大赛规则的情况下以最短时间完成单圈赛道。

1.2文献综述
智能车大赛主要解决的问题就是如何把黑线从赛道中提取出来,提取出赛道后采用什么控制策略在规则允许的条件下以最快的时间跑完赛道。

根据规则我们参阅了许多论文资料,如卓晴、王琎、王磊的基于面阵CCD 的赛道检测方法,卓晴的智能汽车自动控制器方案设计等等。

还着重学习了有关S12 和控制策略方面的书籍,如邵贝贝的[1]单片机嵌入式应用的在线开发方法、胡寿松的[3]自动控制原理以及[4]运动控制等书籍来完善自己的理论水平以提高工作效率。

1.3论文结构
报告从硬件模块与软件模块两个方面论述整个车模制作过程及技术功能,整个智能车系统被分为上层算法,数据处理算法,接口程序,硬件电路。

第一章引言主要介绍了大赛背景、论文结构。

第二章主要介绍了总体设计方案。

第3章硬件电路。

第4章底层硬件接口。

第5章图像处理。

第6章速度及舵机控制。

第7章系统调试主要介绍了对车模的整体调试过程。

第8章车模改装。

第9章总结了调试的心得体会。

第二章总体设计方案
2.1道路识别方案
本次比赛要求是制作一个能够自主识别路线的智能车,共有两种道路识别方案,一种是使用CCD摄像头,一种是使用红外传感器。

我们这组选择是使用摄像头作为主要的赛道信息获取工具。

CCD传感器是一种新型的光电转换器件,学名是电荷耦合器件,他能存储光产生的信号电荷。

当对它施加特定时序的脉冲时,其存储的信号电荷便可在CCD内做定向传输而实现自扫描。

CCD结构包含感光二极管、并行信号寄存器、并行信号寄存器、信号放大器、数摸转换器等项目。

此次比赛的最终目的就是在规则允许下一最短时间跑完规定赛道路程,故小车需要良好的加减速和转弯性能。

而质量与加速度成反比,所以车做的愈轻愈好。

尽可能提前的获取赛道信息,提前做到速度控制等。

为完成这些,我们使用了速度闭环控制。

这些会在以后的章节详细论述。

第三章硬件电路
3.1电源模块
本次比赛使用的单片机的电源电压为5V,而小车使用大赛统一提供的电压为7.2V的电池。

所以需要一种可以将电压稳在5V的芯片。

摄像头模块本次选择的摄像头使用的是OV6620的芯片。

电源电压为5V,故可以和单片机使用同一块稳压芯片。

舵机供电芯片,由于舵机使用的是和单片机也不一样的电压6V,故需要一片单独的稳压芯片。

同时舵机在转向时要提供很大的扭力矩,需要消耗较大的电流。

根据比较我们选择了LM2576作为稳压芯片为舵机提供电能。

经过比较上面的芯片的特点和价格,最后我们决定采用稳压芯片LM1117-5.0,为单片机及摄像头等部分供电,首先其输出电流最大可达到800mA完全可以满足单片机及摄像头的需要,其次其SOP封装类型质量以及体积都较小。

比较符合我们这次做车的原则。

原理图
第四届全国大学生智能汽车邀请赛技术报告
图3.1 5V供电电路
舵机供电用芯片选择了LM2576T-ADJ 6V,它的电压可调,电流较大,价格便宜正好符合我们的要求,其原理图如图
图3.2 6V供电电路
3.2驱动电路
小车需要较好的加减速性能,而且由飞思卡尔公司提供的33886芯片价格较为昂贵,所以我们选择了使用MOS管搭建H桥,控制驱动电机。

根据萨氏方程,MOS管Vgs电压越高,导通电阻会越小。

当场管工作在线性区(Vds<Vgs-Vth),其漏电流为Id=Kn[2(Vgs-Vth)Vds-Vds*Vds],其中Kn为Un*Cox*W/L,W表示场管导电沟道的有效宽度,L指场管导电沟道有效长度。

在特定工艺下作出的产品其Kn将是一个定值。

在本比赛中不能使用升压给电机供电,故场管的Vds只能
第三章硬件电路
是7.2V。

根据公式则要Vgs越大,那么漏电流Id也就越大,内阻r也就越小。

当然也不是无限制的减小。

大概在电压为15V左右达到最小导通阻值。

图3.3 H桥驱动电路
这样就需要一个升压电路来驱动MOS管,给Vgs一个较高电压。

现在比较稳定的升压方式有使用现成的升压芯片,为了减小电路板面积,使用了斩波升压。

这是一个比较成熟的升压方式。

图3.4 斩波升压电路
3.3测速芯片
根据大赛要求测速选择了红外对管,红外对管检测得到的高低电平根据试验数据为2V---3V,不符合单片机的要求高低电平,故需要一块数字芯片对红外对管得到的波形进行整形,使其变成标准的高低电平。

市场上可供选择的芯片种类
第四届全国大学生智能汽车邀请赛技术报告
繁多,但是更具我们此次比赛的目的之一尽量将小车重量降低,在整形较好的情况下,我们选择了贴片LM393作为比较芯片。

图3.5
3.4 HC9S12XS128MAA电路
因为在电路设计过程中发现xs128单片机(144引脚)的所有的引脚不是都会被用到,所以使用了汽车及芯片MAA(80引脚),而且这块板子的大小可以减小很多,所以质量更为轻便。

图3.6 HC9S12XS128MAA实物图
第三章硬件电路
图3.7
HC9S12XS128MAA 原理图
第四章底层硬件接口
4.1 Maa概述
S12XS 16 位微控制器系列针对一系列成本敏感型汽车车身电子应用进行了优化。

S12X 产品满足了用户对设计灵活性和平台兼容性的需求,并在一系列汽车电子平台上实现了可升级性、硬件和软件可重用性、以及兼容性。

S12XS 系列可以经济而又兼容地扩展至带XGate 协处理器的 S12XE 系列单片机,从而为用户削减了成本,并缩小了封装尺寸。

S12XS 系列帮助设计者迅速抓住市场机遇,同时还能降低移植成本。

主要特性:
S12X CPU,最高总线速度40MHz
64KB、128KB 和256KB 闪存选项,均带有错误校正功能(ECC)
带有ECC 的、4KB 至8KB DataFlash,用于实现数据或程序存储
可配置8- 、10- 或12- 位模数转换器(ADC),转换时间 3μs
支持控制区域网(CAN)、本地互联网(LIN)和串行外设接口(SPI)协议模块带有 16-位计数器的、8-通道定时器
出色的EMC,及运行和停止省电模式
HC9S12XS128MAA是一块汽车用的单片机,主要性能和XS系列其他单片机相近。

但是他只有80个引脚,在做开发板是可以节约较多的空间。

4.2 速度控制
S12产生PWM信号控制MOS管组成的H桥的状态,从而驱动伺服电机,H 桥工作在开关状态,功耗较低,能得到较好的效率。

PWM的频率太低就会产生电机的正反转或停止,效率极低,使电池产生电压,导致整体电压不稳。

所以PWM应尽量高,产生的电压波更形近似于平均电压。

为了实现伺服电机的正反转,即H桥的双极式驱动,采用用两路相同时钟源的PWM(PWM2和PWM3)来产生两路频率均为5kHz,占空比互补,极性恰好相反,占空比可变的PWM来驱动伺服电机。

如果极性需要翻转,只需要修改极性寄存器,使它们的极性恰好反相。

如果需要调节占空比只需要同时修改它们的占空比寄存器。

4.3 舵机控制
我们的多级采用卧放方式固定。

这样的问题是左右的传动轴距不同,导致两边轮胎在转向时受到的力度不一样。

舵机由PWM信号控制,不同的脉宽对应与不同的转角。

舵机有三种工作状态:左转、右转、回到原来的位置。

是由由频率
第四章底层硬件接口
为50HZ~200HZ的PWM信号作为舵机的控制信号,,舵机安装到车底盘上后,由于底盘的阻挡,车前轮的实际拐角只能达到±30份,车前轮拐角从+30份拐到-30份,为了经可能高的控制舵机专项精度,我们采用了使用8路中的PWM0和PWM1合成一个16位的PWM输出,来控制舵机。

用不对称的步长来弥补舵机
两边转向PWM变化量不对称导致的问题。

int temp;
if( angle<=0 )
temp=(sevo_center+(sevo_center-sevo_left )/30 * angle );
else
temp=(sevo_center+(sevo_right -sevo_center)/30 * angle ) ;
if( temp<sevo_left ) temp=sevo_left;
if( temp>sevo_right) temp=sevo_right;
PWMDTY01=temp;
}
第6章
第五章图像处理
5.1图像处理
图像处理应针对摄像头获得的的图像数据进行处理 ,它包括分析、处理、输出三项功能。

表5.1图像处理流程
5.2 二值化及图像滤波
图像的二值化的基本原理:图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。

即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。

在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。

为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。

所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。

如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。

如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利
第5章图像处理
用阀值选取技术来分割该图像。

动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。

可以通过多次试验,得到一个比较合适的阈值。

在可以滤掉赛道以外的干扰的同时,又可以使赛道黑线得以突出
图像在二值化之后,经过观察发现有得到的图像除了有赛道黑线外,还会有不规则分布的少数黑点,这些点的存在会影响提取信息的最终的结果。

我们发现噪点有如下规律:噪点很少、噪点离散,不会出现连续几个噪点的情况。

针对这种规律,我们采用腐蚀膨胀算法进行滤波。

用在我们图像处理的腐蚀膨胀算法可以解释为两句话:被两黑点所夹的白点是黑点;被两白点所夹的黑点是白点。

5.3 提取中心点及赛道类型判别
OV6620数字摄像头采集的图像,经过S12单片机的读取,为一个171*93的二维数组,存储的各点的灰度信息,上层算法无法直接使用,需要经过图像处理程序提取出一幅图像的有用信息——黑线位置。

我们在171*93的长方形图像建立坐标,以第一排为X轴,以第一列为Y轴,以每个像素点的长度为单位长度建立直角坐标系,则每个点都对应了一个坐标。

那么一帧图像就简化为一个二维数组。

经过观察发现在每一行数据中黑线部分会有4—12个黑点,究竟用它们如何控制小车的转角?经过思考后,和研读他人论文我们认为可以使用中心点,来描述图像中黑线的变化趋势。

即每一行数据从第一个黑点开始一直到最后一个黑点止,用两个黑点坐标相加然后除以二,就得到黑线中心点的坐标。

这个坐标作为转向以及速度控制的参考值。

得到中心点后,还需要对赛道类型进行识别。

将赛道分为直道,S型弯道(包括大S和小S),弯道(左弯右弯)。

如何使用语句让单片机可以将这些赛道分开?而S12的一大特点就是具有非常方便的模糊控制指令。

这样就可以通过设定参考类型的方式去区分跑到类型。

可以在赛道上取五个点将它们偏移中心点(以每一行第86个点作为赛道虚拟中心线)个数进行累加作为判断依据:
第四届全国大学生智能汽车邀请赛技术报告
以下是部分算法控制
void Get_Center(void)
{int i=0;
if(start_line==-1)
{
black_line_number=0;
for(i=0;i<MAXCOL;i++)
{
if(data[i]<=Threshold && index==0)
{
start=i;index=1;
}
if((data[i]>=Threshold || i==MAXCOL-1) && index==1) {
end=i; index=0;
length=end-start;
if(length>7 && length<20)
{
black_line_number++;
if(black_line_number==1)
{
center[row]=Line_Mid-(start+end)/2;//=100
Min_Angle=Max_Angle=start_line=row;
}
else
{
rowflag=3;//TIE &= ~0X02; //禁止行中断//出错 start_line=-1;
}
}
}
}
第六章速度闭环控制
6.1 速度闭环控制方法
要实现的快速加减速和稳定的运行速度,必须实现对小车速度的闭环控制。

通过速度传感器(本系统采用的是红外对射式传感器)将当前的速度采集出来作为控制PWM的参数能够实现对速度的闭环控制,这样做可以取代直接改变PWM的占空比的开环控制。

要实现速度的闭环控制,首先就要有控制量,反馈量等。

控制流程如下:
6.2 速度控制算法
在控制算法上,由于速度控制对精度要求不是很高,没有采用PID算法,而
是使用了bangbang算法来控制电动机的正反转,来实现速度的加减。

由于使用MOS管搭建H桥的驱动能力相当优良,可以再极端的时间内实现速度的加减。

所以控制算法整体来说还是比较简单。

以下是部分代码:
void speed_auto_control(int speed)
{
Int pwm_23;
if(speed-speed_real>5)
pwm_23 = 80%
if(speed-speed_real< -9)
pwm_23 = 0.8%}
第七章系统调试
7.1 调试软件
使用了组委会提供的软件开发平台CodeWarrior IDE4.7版,其工作界面如
图7.1
使用VB程序编写了图像显示软件,可以实时显示赛道信息。

其工作界面如下
图7.2
第五章图像处理
调试时使用清华大学的BDM和CodeWarrior IDE 4.6自带的hiwave.exe用户能够很方便的进行一系列的调试工作,如修改PC,监控寄存器的值,设置程序断点等等。

这样能缩短软件的开发时间,为车模性能调试提供更多宝贵的时间。

第8章车模改装
第八章车模改装
8.1轮距的调整
车模后轮轮距的大小关系着车模在高速过弯当中的平稳性,后轮距越宽在速度相同的情况下小车越不易出现侧翻和侧滑的情况。

在比赛中出现侧翻和侧滑的情况是非常危险的,为了避免侧翻和侧滑又要提高车模的最大过弯速度,我们将后轮改装如图
图 8.1
8.2车模重心调整
车模的重心在整个车模的机械参数当中至关重要,直接影响车模的运行状态。

重心太高的小车在高速过弯时会出现侧滑甚至侧翻情况,故将车模地盘的高度降低了大约2mm左右,如图
图8.2
8.3 改装后车模各种参数
车模完成后照片
图8.3
第四届全国大学生智能汽车邀请赛技术报告
表8.
第9章总结
第九章总结
从开始坐车我们就坚持一个原则,一切都要做到尽量小,尽量轻。

所以从一开始的器材选择上都遵循这个原则,使用的电容,电阻以及各种芯片,在满足性能要求后尽量选用了贴片封装。

单片机也选用xs128系列的汽车用型号128MAA可以节约很多的开发板面积。

可是也带来了很多问题,比如开发板保护做的不好,所以在程序以及硬件电路不是很成熟的情况下游客能会少单片机。

还有因为引脚太少,造成IO 口不够用等。

下图是我们完整的车模:
从中可以看到(图略)
使用MOS管做得驱动板,可以比两片33886节约很多的空间。

再有就是在车模制作过程中是一个很好的学习过程,也是体现一个团队配合能力的时候。

在制作过程中需要很多方面的知识,例如:这次比赛中我们用到的各种软件有VB6.0、、protelse99、CodeWarrior IDE4.7等。

如果单靠一个人,是很难完成的。

所以要做好的就是三个人的分工协作。

第9章总结
参考文献
[1] 邵贝贝. 单片机嵌入式应用的在线开发方法. 北京:清华大学出版社. 2004 年10 月第1 版
[2] 卓晴黄开胜邵贝贝. 学做智能车. 北京:北京航空航天大学出版社. 2007 年
3 月第一版
[3] 谭浩强C程序设计北京:清华大学出版社. 2005 年7 月第三版
[4] 甘威等成都信息工程学院快车队技术报告
附录:程序源代码
Vb程序
Dim b(20) As Long
Dim a(20) As Byte
'Dim b(43200) As Long
'Dim a(43200) As Byte '假设文档中100个数据
Private Sub Command1_Click()
Dim x As Long
Dim y As Long
Dim p As Long
For y = 0 To 4 Step 1
For x = 0 To 3 Step 1
Picture1.PSet (x, y), b(4 * y + x) * (65536 + 256 + 1)
'For y = 0 To 287 Step 1
'For x = 0 To 149 Step 1
'Picture1.PSet (x, y), b(150 * y + x) * (65536 + 256 + 1) Next
Next
End Sub
Private Sub Command3_Click()
Dim i As Long
Open "c:\1.txt" For Input As #1
'For i = 0 To 86401 Step 1
For i = 0 To 41 Step 1
'=Val("&H" & 十六进制数)
'比如:
' =Val("&H" & "10")
'用CInt?CLng也行:
' =CInt("&H" & 十六进制数)
' =CLng("&H" & 十六进制数)
Input #1, a(i / 2)
b(i / 2) = CInt("&H" & a(i / 2))
'If b(i / 2) > 45 Then
'b(i / 2) = b(i / 2) * 2 + 100
'End If
i = i + 1
Next
Close #1
End Sub
Private Sub Command4_Click()
'Text1.Text
'For i = 0 To 20 Step 1
'Text1.Text = b(i / 2)
'Text1.Text = Text1.Text & Chr(13) & Chr(10) & b(i / 2) 'Next
Text1.Text = ""
Dim s(20) As Integer
Dim i As Integer
Randomize
For i = 0 To 9
s(i) = Int(b(i / 2) * 100 + 10)
Text1.Text = Text1.Text & s(i) & " "
Next i
End Sub。

相关文档
最新文档