haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 初中教育 > 学科竞赛学科竞赛

第八届飞思卡尔竞赛摄像头组湖南大学-睿思二队

发布时间:2013-11-19 13:53:09  

第一章 引言

第八届“飞思卡尔”杯全国大学生

智能汽车竞赛

技 术 报 告

学 校:湖南大学

队伍名称:睿思二队

参赛队员:方根在

钟旭辉

李 峰

带队教师:黎福海

关于技术报告和研究论文使用授权的说明

本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。

参赛队员签名: 方根在

带队教师签名: 黎福海

日 期:2013-08-3

摘要

关键词:Freescale、单片机、摄像头、机械设计

Abstract

In the background of the 8th National Intelligent Car Contest for College Students, using the 32-bit MCU MK60DN512ZVLQ10 produced by Freescale Semiconductor Company and the camera to identify the road automatically, so that cars can run fast safely on the specific runway Through the camera's imaging principle, we have the collected data transmitted to the MCU through the electronic circuit In the MCU, the car can know the road in front of it through the program that we design. And then it can choose its own path, decide the speed and ensure safe driving The system is a complicated combination of hardware, software and the mechanism structure adjustment, The hardware circuit include the problem about the power management module, motor driver module, the speed of measurement module, auxiliary debugging module, image acquisition and processing module, steering control modules and single-chip module And About the software side, we need to address the single-chip initialization programs, the speed of measurement programs, the speed set-up programs, speed control programs, steering control programs, recognition of image and so on, besides improving and innovating of the mechanism structure adjustment will be one of the most important thing to improve speed in this contest.

Key words: MK60DN512ZVLQ10, Freescale, MCU, Camera, Machine design

目 录

第一章 引言······················································································1

1.1背景介绍··················································································1

1.2赛车总体介绍···········································································1 1.2.1智能车技术参数······································································1

1.2.2智能车硬件电路······································································2

1.2.3智能车软件设计······································································3

1.3本章小结·················································································5

第二章 赛车机械结构介绍和改进···················································6

2.1驱动选择·················································································6

2.2转向轮调整·················································································7

2.2.1转向轮调整··············································································7

2.2.2舵机安装··············································································9

2.3驱动轮调整·················································································9

2.4其他调整·················································································10

2.4.1重心调整············································································10

2.4.2其他调整··············································································10

2.5本章小结·················································································10

第三章 硬件设计·············································································11

3.1电源设计················································································11

3.2传感器选型·······························································12

3.2.1传感器的供电电路·······························································12

3.2.2电机驱动电路···································································13

3.3电路设计··········································································14

3.3.1电源电路·······························································14

3.3.2传感器的信号处理···································································15

3.4系统电路板的固定·····································································16

3.5速度测量模块··········································································17

3.6本章小结················································································17

第四章 软件设计············································································18

4.1图像信号处理············································································18

4.1.1图像信号采集··········································································18

4.1.2图像信号处理···································································19

4.2转向控制策略···········································································23

4.3速度控制策略··········································································23

4.4软件流程图································································24

4.4.1主函数流程图··········································································24

4.4.2行中断流程图···································································25

4.4.3场中断流程图··········································································26

4.5本章小结················································································26

第五章 开发与调试·········································································27

5.1软件开发平台·········································································27

5.2手动设置单元············································································28

5.3状态指示单元···········································································28

第六章 总结与展望·········································································29 参考文献····················································································30 附录一:电路原理图·········································································31 1核心控制电路·······································································31

2电机驱动电路············································································33 附录二:程序源代码·····································································34

第一章 引言

第一章 引言

1.1背景介绍

现在半导体在汽车中的应用原来越普及,汽车的电子化已成为行业发展的必然趋势。受教育部高等教育司委托(教高司函[2005]201 号文),高等学校自动化专业教学指导分委员会主办“飞思卡尔”杯全国大学生智能汽车竞赛,他以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛。

参赛选手须使用竞赛秘书处统一指定并负责采购竞赛车模,自行采用32位微控制器作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等,完成智能汽车工程制作及调试,于指定日期与地点参加场地比赛。参赛队伍之名次(成绩)由赛车现场成功完成赛道比赛时间为主,技术方案及制作工程质量评分为辅来决定。

我校在历届“飞思卡尔”杯智能汽车比赛都取得了一定的成绩。在总结了往届的经验和不足后,我们在此基础上重新备战第八届大赛。往界的经验是以‘稳’为主,我们在此基础上,大胆尝试,稳中求快,在电路设计上务求稳定,问题早发现早解决。在已经成熟的技术上做的更加完善和稳定,并对车模的机械结构做出相应的改进与创新,使赛车在稳定的前提下能够更快的完成比赛。

1.2赛车总体介绍

1.2.1 智能车技术参数

此次比赛选用的B型赛车车模,采用反向行驶方式,即驱动轮在车身前侧而转向轮在车身后侧,因此重心位置以及机械性能与往届有所不同,具体车模数据如表1.1:

表1.1 赛车主要技术参数

- 1 -

第一章 引言

1.2.2智能车硬件电路

我们团队采用摄像头进行道路识别,赛车的硬件电路主要有七个部分组成:MK60DN512ZVLQ10单片机,陀螺仪检测模块,速度检测模块,电机驱动模块,舵机驱动模块,电源管理模块,辅助调试模块。

(1) MK60DN512ZVLQ10单片机是系统的核心部分,负责接收赛道图像数据,赛车速度等反馈信息,并对这些信息进行恰当的处理,形成合适的控制量来对

- 2 -

第一章 引言

舵机与驱动电机进行控制。

(2) 陀螺仪检测模块,是用来检测赛道中出现的坡道和障碍物;

(3)速度检测模块,通过编码器读取转速值,实现道路的闭环控制。

(4)电机驱动模块,可以实现电机的正反转。

(5)舵机驱动模块控制舵机的转向。

(6)电源管理模块给整个系统供电,保障系统安全稳定运行。

(7)辅助调试模块有Jlink、串口通信等,主要用于赛车系统的程序烧写,功能调试和测试,赛车状态监控,赛车系统参数和运行策略设置等方面。

本赛车系统的结构示意图1.2

赛道信息 速度信息

MCU 辅助调试

电机控制 舵机控制

图1.2 系统的结构示意图

1.2.1 智能车软件设计

系统硬件对于赛车来说是最基础的部分,软件算法则是赛车的核心部分。如果把一辆车和一个人做个类比的话,我们可以说,赛车的硬件结构相当于人的身体;赛车的软件算法相当于人的思想。只有“身体健康,思想进步”,才会取得好成绩。所以软件系统对于赛车来说至关重要。首先,赛车系统通过图像采样处理模块获取前方赛道的图像数据,同时通过速度传感器模块实时获取赛车- 3 -

第一章 引言

的速度。然后K60 利用边缘检测方法从图像数据中提取赛道黑线,求得赛车于黑线位置的偏差,接着采用PID 方法对舵机进行反馈控制,并在PID算法的基础上,整合加入模糊控制算法,有利于对小车系统的非线性特性因素的控制。最终赛车根据检测到的速度,结合我们的速度控制策略,对赛车速度不断进行恰当的控制调整,使赛车在符合比赛规则情况下沿赛道快速前进。设计赛车系统的软件结构如图1.3所示。

- 4 -

第一章 引言

图1.3 系统的软件方框图

- 5 -

第一章 引言

1.3 本章小结

本章主要介绍了大赛的背景和赛车整体结构设计的概述,硬件,软件和机械部分的有效融合是赛车能否跑出好成绩的关键因素。赛车采用组委会统一提供的车模,由控制处理芯片MK60DN512ZVLQ10,陀螺仪模块,速度传感模块,舵机驱动模块,电机驱动模块和辅助调试模块组成,通过图像采集、黑线提取、速度控制等环节使赛车在规则下沿赛道快速前进。

- 6 -

第一章 引言

第二章 赛车机械结构介绍和改进

本届比赛使用的是B型车模,并且采用反向行驶的方式,因此在原有车模基本调整(如前后轮调整,重心调整,传动调整等)的基础上,要想使车能够更快的行驶就必须对其本身的各种结构进行必要的改进和优化,尤其是各部分的差速的调整,更成为车模机械好坏的重要部分。

2.1 驱动选择

2.2 转向轮调整

2.2.1 转向轮调整

轮定位包括主销后倾角、主销内倾角、前轮外倾角和前轮前束四个内容。车轮定位的作用是使汽车保持稳定的直线行驶和转向轻便,并减少汽车在行驶中轮胎和转向机件的磨损。如图2.3

- 6 -

第三章 硬件设计

图2.3前轮定位原理图

(1)从车前后方向看轮胎时,主销轴向车身内侧倾斜,该角度称为主销内倾角。当车轮以主销为中心回转时,车轮的最低点将陷入路面以下,但实际上车轮下边缘不可能陷入路面以下,而是将转向车轮连同整个汽车前部向上抬起一个相应的高度,这样汽车本身的重力有使转向车轮回复到原来中间位置的因而舵机复位容易。

此外,主销内倾角还使得主销轴线与路面交点到车轮中心平面与地面交线的距离减小,从而减小转向时舵机的拉力,使转向操纵轻便,同时也可减少从转向轮传到舵机上的冲击力。但主销内倾角也不宜过大,否则加速了轮胎的磨损。

(2)从侧面看车轮,转向主销(车轮转向时的旋转中心)向后倾倒,称为主销后倾角。设置主销后倾角后,主销中心线的接地点与车轮中心的地面投影点之间产生距离(称作主销纵倾移距,与自行车的前轮叉梁向后倾斜的原理相同),使车轮的接地点位于转向主销延长线的后端,车轮就靠行驶中的滚动阻力被向后拉,使车轮的方向自然朝向行驶方向。设定很大的主销后倾角可提高直线行驶性能,同时主销纵倾移距也增大。主销纵倾移距过大,会使舵机沉重,而且由于路面干扰而加剧车轮的前后颠簸。

(3)从前后方向看车轮时,轮胎并非垂直安装,而是稍微倾倒呈现“八”字形张开,称为负外倾,而朝反方向张开时称正外倾。前轮外倾角对汽车的转

- 7 -

第三章 硬件设计

弯性能有直接影响,它的作用是提高前轮的转向安全性和转向操纵的轻便性。前轮外倾角俗称“外八字”,如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。所以事先将车轮校偏一个外八字角度,这个角度约在1°左右。

(4)脚尖向内,所谓“内八字脚”的意思,指的是左右前轮分别向内。采用这种结构目的是修正上述前轮外倾角引起的车轮向外侧转动。如前所述,由于有外倾,舵机转向变得容易。另一方面,由于车轮倾斜,左右前轮分别向外侧转动,为了修正这个问题,如果左右两轮带有向内的角度,则正负为零,左右两轮可保持直线行进,减少轮胎磨损。见图

2.3

图2.3前轮约束示意图

2.2.2 舵机安装

舵机转向是整个控制系统中延迟较大的一个环节,为了减小此时间常数,通过改变舵机的安装位置,而并非改变舵机本身结构的方法可以提高舵机的响应速度。分析舵机控制转向轮转向的原理可以发现,在相同的舵机转向条件下,转向连杆在舵机一端的连接点离舵机轴心距离越远,转向轮转向变化越快。这相当于增大力臂长度,提高线速度。

针对上述特性,我们采用“长连杆”方式将舵机放在前面,大大的增加了舵机的力臂,如图2.4

- 8 -

第三章 硬件设计

图2.3舵机安装方式

(1) 改变了舵机的力臂,使转向更灵敏;

(2) 舵机安装在了正中央,使左右转向基本一致;

(3) 增加前轮下压力,从而提高了前轮的抓地力,当然这样也加重了舵机负载易。

2.3 驱动轮调整

差速机构的作用是在车模转弯的时候,降低后轮与地面之间的滑动;并且还可以保证在轮胎抱死的情况下不会损害到电机。

当车辆在正常的过弯行进中 (假设:无转向不足亦无转向过度),此时4 个轮子的转速(轮速)皆不相同,依序为:外侧前轮>外侧后轮>内侧前轮>内侧后轮。此次所使用车模配备的是后轮差速机构。差速器的特性是:阻力越大的一侧,驱动齿轮的转速越低;而阻力越小的一侧,驱动齿轮的转速越高?以此次使

- 9 -

第三章 硬件设计

用的后轮差速器为例,在过弯时,因外侧前轮轮胎所遇的阻力较小,轮速便较高;而内侧前轮轮胎所遇的阻力较大,轮速便较低。

后轮差速的调整主要是调整差速器中差速齿轮的咬合程度,差速的松紧与自己所要求的速度相匹配,已达到自己想要的状态。

2.4 其他调整

2.4.1车体重心调整

车体重心位置对赛车加减速性能、转向性能和稳定性都有较大影响。重心调整主要包括重心高度和前后位置的调整。理论上,赛车重心越低稳定性越好。因此除了摄像头装得稍高以外,其他各个部件的安装高度都很低。除此之外,车辆重心前后方向的调整,对赛车行驶性能也有很大的影响。根据车辆运动学理论,车身重心前移,会增加转向,但降低转向的灵敏度(因为大部分重量压在前轮,转向负载增大),同时降低后轮的抓地力,影响加减速性能;重心后移,会减少转向,但增大转向灵敏度,后轮抓地力也会增加,提高加减速性能。因此,确定合适的车体重心,让车模更加适应比赛赛道是很关键的。今年我们赛车在车体中心位置上有了很大改革,将摄像头安装在车体靠后位置,这样使得赛车的重心后移,极大地增加了赛车的转向灵活度。

2.4.2其他调整

除以上主要机械调整外,还包括摄像头的安装、电池的的安装、系统板的安装以及一些机械结构的微调。这主要跟所用的电路大小等有关,其中驱动电机的螺丝一定要上紧,并要经常检查,一旦在行驶中松动就会造成零件的损坏。尽量使车辆的重心放低,减少小车行驶过程中的震荡。

2.5 本章小结

本章主要介绍了赛车各个部分的机械结构。机械机构对于整车的性能至关重要,只有在较好的机械结构的前提下,控制算法才能发挥出其应有的效果。总而言之,调整舵机安装时以最大相应速度、较低负载为目标,至于放置位置则根据整车的重心调整决定,前轮和后轮差速则需在转弯性能和加减速性能之间权衡,齿轮传动机构和速度传感器安装则以较低的电机负载和适当的齿轮啮合度为目标,除了以上部分的调整外,还可对主悬架弹簧松紧和底盘高度进行

- 10 -

第三章 硬件设计

适当调整,通过增加避震弹簧的刚性、降低底盘高度、调整齿轮间隙,改善了赛车的行驶表现。

对各个部件的调整需从整车的角度考虑,不能各个击破,需要相互协调、取舍。

- 11 -

第三章 硬件设计

第三章 硬件设计

3.1 电源设计

小车电源系统如下图所示。

图3.1 电源框图

3.2 传感器选型

市场上容易买到的摄像头有 PC 用的 USB 摄像头,安防系统上使用的模拟输 出的单板摄像头,以及数字输出的摄像头模块和感光芯片。

若使用 USB 摄像头,虽然价格低廉,但是需要增加 USB 接口芯片,并需要 充分了解其内部协议,增加了实现的复杂度。因而不考虑使用 USB 摄像头。

若使用模拟输出的摄像头,可采用专用的视频处理芯片对信号进行数字化。 例如,可以使用 LM1881M 对 PAL 制模拟信号实现行、场同步信号分离。可以使 用专用的视频 A/D 转换器,如 XRD4460A,对模拟信号进行采集。因为多用于安 防系统,模拟摄像头的成像质量好,边沿锐利,对比度高。使用模拟摄像头带 来的问题是需要增加额外的硬件电路,容易受外界的干扰,因而对电路设计的 要求也相对高一些

12

第三章

硬件设计

若使用数转换,直接输出量化的图像信号,不需要再增加额外的硬件设备,简化了字输出的摄像头,则可以由感光芯片中的处理器预先进行 A/D硬件设 计,减轻了重量,提高了设计的可靠性。和模拟摄像头相比,数字摄像头的重 量相差不大,而与 DSC 的接口更简单,使用起来更为方便。

综合上面的分析,市场上的摄像头不能满足我们的需求,因此我们自行研发 一款摄像头,如下图所示。

图 3.2 数字摄像头

3.2.1传感器的供电电路

我们选用的图像传感器需要使用3.3V供电,故需要通过线性稳压芯片为其 提供一个3.3V的电源。如图2.2 所示。

图 3.3 摄像头电源模块

13

第三章 硬件设计

3.2.2 传感器的信号处理

数字摄像头输出信号包括图像信号、帧同步信号、行同步信号。DSP 利用帧 同步信号和行同步信号进行同步,然后对图像信号进行采集。

图3.4 数字摄像头采集的图像

由图中可以看出,由于安装角度等原因,采集到的图像产生了梯形失真, 即离小车较近的地方赛道宽,距离远的地方赛道窄。因而随着距离的增加,赛 道分析结果的可靠性也会逐渐降低。

14

第三章

硬件设计

3.3 电路设计

3.3.1 电源电路

在电源上加一个大电容滤波。通过示波器观察,由于电机启动时瞬间流过 大电流,会导致电池电压瞬间被拉低,稳压模块可能不能输出稳定的电压,所 以稳压芯片采用低压差的稳压芯片 TPS7350,将 TPS7350 配置成不同的输出即可 得到稳定的输出电压。

图 2.5 为电源电路,LED 用来指示电源状态。

图 3.5 电源

图3.6 所示为 7.2V 转 6V 的线性稳压模块,用来给舵机供电。

图 3.6 6V 稳压模块

15

第三章 硬件设计

图 3.7 为 7.2V 转 3V 的线性稳压模块。

图 3.7 3.3V 稳压模块

3.3.2 电机驱动电路

为了保证驱动电路的性能,提高设计的可靠性,我们选用了在比赛中使用 较多的 BTS7960 电机驱动芯片。

BTS7960 是英飞凌公司制造的大电流电机驱动芯片,其最大电流为 43A,导 通电阻为 16 毫欧。使用 2 片 BTS7960 可以组成一个 H 桥。我们共使用了 4 个 I/O 端口控制 4 片 BTS7960 来驱动 C 车的两个电机,可以实现电机的正、反转控制。

图 3.8 BTS7960 芯片框图

16

第三章 硬件设计

电机驱动电路如下图所示。

图 3.10 BTS7960 电机驱动电路

3.4 系统电路板的固定及连接

利用车模自身的减震支撑,将电路板固定在小车前端。电源使用较粗的导

17

第一章 引言

线连接 T 形插头引入,因此可以有效防止电源接反。传感器使用排线引入,接

插件使用了防反插设计,保证了连接的可靠性。

3.5 速度测量模块

为了使得赛车能够平稳地沿着赛道运行,需要控制车速,使赛车在急转弯时速度不至过快而冲出赛道。通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因素影响,例如电池电压、电机传动摩擦力、道路摩擦力和前轮转向角度等。这些因素会造成赛车运行不稳定。通过速度检测,对车模速度进行闭环反馈控制,即可消除上述各种因素的影响,使得车模运行得更稳定。

车速检测的方式有很多种,例如用测速发电机、转角编码盘、反射式光电检测、透射式光电检测和霍尔传感器检测。经过对去年测速方案和其它学校方案的比较,本次设计中速度传感器采用的是OMRON公司生产的E6A2-CS100型光电编码器。它由5-12V的直流供电,速度传感器用螺钉固定在塑料片上,塑料片固定在后轮支架上,这样固定好之后,就有了较高的稳定性。速度传感器通过后轮轴上的齿轮与电机相连,车轮每转一圈,速度传感器转过2.75圈。这样能够很好的稳定工作,且能很准确的得到电机的转速,比较可靠。

3.6本章小结

本章主要介绍了整辆车的硬件电路部分,如果说机械结构是赛车的手足的话,那么硬件电路就是它的感官和大脑,所有的反馈都是由它获得,所有的图像处理和控制也经由它处理。硬件设计以稳定为主,特别是核心控制板,因为为了要提高指令执行速度,单片机是通过锁相环超频使用,所以时钟模块的电路设计应尽量避免电磁干扰。驱动电路板设计则应以小内阻、大电流为目标,以尽可能提高整车的加减速性能

- 17 -

第五章

开发与调试

第四章 软件设计

4.1 图像信号处理

4.1.1 图像信号采集

图 4.1 为数字摄像头的信号输出格式。其中 FRAME_VALID 为帧同步信号, LINE_VALID 为行同步信号,DOUT(9:0)为图像信号。

图4.1 视频信号

图 4.2 同步信号处理

CPU利用帧同步和行同步信号对采集过程进行同步。 具体采集过程主要如下。

(1)利用外部中断口IRQA和IRQB响应帧同步信号和行同步信号。

(2)当行同步信号来临时,产生中断,进入中断子程进行图像信号的采集。

(3)在行中断子程中读取图像,并对读取的图像进行二值化处理,得到赛 道图像信息。

(4)当帧同步信号到来时,进入帧中断子程序,帧中断子程序完成图像采 集的初始化,准备进入下一幅图像的采集。

18

第五章 开发与调试

4.1.2 图像信号处理

在采集出图像信号后需要对其进行处理以提取赛道信息,同时,由于杂点、 交叉线、起跑线、光线、赛道连接处、赛道上的杂物,以及赛道以外图像的干扰,得到的图像有很多干扰,软件上需要排除干扰因素,对有效赛道进行识别, 并提供尽可能多的信息供决策使用。图像信号处理中提取的赛道信息主要包括:

(1) 每一行的赛道中心位置

(2) 每一行的赛道宽度

(3) 赛道的曲率

(4) 赛道的变化幅度由于摄像头倾斜放置导致的梯形畸变,这使得同一段赛道位于摄像头视域的不同区域时(近端、远端,边缘、中间)的表征会有所差别。为了还原出真实的赛道信息,我们根据摄像头的放置位置、角度等参数,对图像进行了梯形失真校正,使得图像的处理更接近真实空间。 图像信号处理中实现容错性的算法主要包括以下有效性的验证:

(1) 图像连续性判断

(2) 赛道一阶、二阶连续性判断

(3) 赛道宽度有效性验证 图4.3为小车摄像头实际拍到的图像。图3.4及图4.5为处理后的图像和信息。

图 3.3 摄像头拍到的实际图像

19

第五章 开发与调试

图 4.4 二值化的结果

visual studio 上位机效果

20

第五章 开发与调试

图4.5 原图像(573*480)

21

第五章 开发与调试

图4.6 标定并放大后图像

图4.7 赛道获取后图像(包括检测范围和检测到的道路)

22

第五章 开发与调试

4.2 转向控制策略

为了使舵机能更好的对给定的转角值做出响应,采用PID调节,通过不断改 变P、I、D三个参数进行实验,得到最理想的转向响应速度的一组参数。选择合 适的参数,可以使得在高速时车保持很高的稳定性,从而大大消除由于传感器 带来的误差。

具体的调整方式大致为:

(1)P环节与转向的准确性和快速性相关;

(2)I环节与转向的准确性相关;

(3)D环节与转向的快速性相关。另外,由于智能车系统较为复杂,为非线性系统,因此单一的PID参数很可

能难以满足实际控制效果需要,因此也可以考虑采用多PID参数或分段PID参数 的方式来改善控制效果。

4.3 速度控制策略

目前使用采集有效行数与速度的线性关系进行速度调节,等方向控制调整好后再加上PID控制模块,使用编码器与PID结合进行速度的控制与稳定调节。

23

第五章 开发与调试

4.4 软件流程图

4.4.1 主函数流程图

如图 4.9 所示,主函数完成的功能为等待视频信号输入,之后调用信号处 理函数对视频信号进行处理,提取赛道信息并进行分析计算。

24

第五章

开发与调试

4.4.2 行中断流程图

如图4.10 所示,行中断流程图完成的主要功能是读入单行的视频信号。

图4.10 行中断流程图

25

第五章 开发与调试

4.4.3 场中断流程图

如图4.11 所示,场中断完成的主要功能是执行输出,以及变量清零,为下 一场图像的接收做准备。

- 26 -

第五章 开发与调试

第五章 开发与调试

5.1 软件开发平台

软件开发平台为Code Warrior10.2软件。其使用界面如图5.1所示。

图 5.1 开发界面

图5.1所示为CodeWarrior开发界面。CodeWarrior的功能非常强大,可用于绝大部分单片机、嵌入式系统的开发。用户可在新建工程时将芯片的类库添加到集成环境开发环境中,工程文件一旦生成就是一个最小系统,用户无需再进行繁琐的初始化操作,就能直接在工程中添加所需的程序代

- 27 -

第五章 开发与调试

5.2 手动设置单元

通过按键可以设定当前工作模式,这样就可以根据现场情况决定采用不同 的控制策略。

图 5.2 手动控制按

5.3 状态指示单元

为了在调试过程中指示小车的状态,本设计采用了LED 指示灯(如图4.3所 示)、数码管和蜂鸣器。

图 5.3 状态指示单元

- 28 -

第一章 引言

第六章 总结和展望

文中介绍了赛车机械结构和调整方法,赛车各个主要模块的工作原理和设计思路,并叙述了系统开发过程中所用到的开发工具、软件以及各种调试、测试。

综合来看,智能赛车分硬件和软件两部分。硬件部分主要是赛车的安装和调整,以及电路板的设计。软件部分是

(1)图像处理

在图像处理部分,我们只是把黑线的位置提取出来了,并没有进一步判断出它的实际意义,也就是说,单片机下一步根据黑线决定方向和速度的过程和人的思考过程还是有很大差别的。这种模糊的判断可以保证系统正常工作,是由于我们的跑道比较简单,一旦面对复杂的道路信息就不行了。所以在软件方面可以尝试向智能化发展,模拟人的思维,让系统可以应付更加复杂的道路。

(2)车体控制

车体控制主要分为速度控制和舵角控制。速度控制相比去年有了很大进步,更短的控制周期使加减速更及时,也是速度更加平滑。更好的加减速性能使小车在不同赛道跑出响应的极限速度。舵机控制关系到方向的选择,好的舵机控制不仅要准确循线,还要能够沿最优路线前进。

总结整个设计过程,我们学到了很多,也克服了种种困难,不仅使我们得到了对已有知识进行实践的机会,更培养了一定的科研能力,拓宽了知识面,尤其是在硬件电路方案的确定过程中,经过不断的反复试验,最总确定了现在这套成熟稳定的方案。展望未来,智能车技术必将在更广阔的领域得到广泛应用。

- 29 -

第一章 引言

参考文献

[1] 王锦标,方崇智.《过程计算机控制》.北京:清华大学出版社出版,2003.

[2] 邵贝贝编,单片机嵌入式应用的在线开发方法.北京:清华大学出版社,2004.

[3] 卓晴,黄开胜,邵贝贝编著.学做智能车.北京:北京航空航天大学出版社,2007.

[4] National Semiconductor .LM1881 Video Sync Separator.National

Semiconductor, Inc,2003.

[5] Freescale Semiconductor MC33886,Technical Data Freescale Semiconductor,

Inc,2005.

[6] Motorola MC34063A DC-DC Converter Control Circuits National

Semiconductor,Inc,2003.

[7] 俞斯乐等.电视原理(第五版).北京:国防工业出版社,2000.

[8] 孙景琪等.视频技术与应用.北京:北京工业大学出版社,2004.

[9] 孙忠献.电机技术与应用.福建:福建科学技术出版社,2003.

[10] 王益全.电动机原理与实用技术.北京:科学出版社,2005.

[11] 陶永乐编著.新型PID控制及其应用(第二版).北京:机械工业出版社,2002.

[12] 迈克?普瑞德科.机器人控制器与程序设计.北京:科学出版社,2004.

[13] 崔屹编著.图像处理与分析-数学形态学方法及应用.北京:科学出版社,2000.

[14] 阮秋琦.数字图像处理学.北京:电子工业出版社,2001.

[15] 章毓晋.图像处理和分析.北京:清华大学出版社,1999.

[16] 罗飞.运动控制系统.北京:化学工业出版社,2001.

[17] Todd D Morton. 嵌入式微控制器.严隽永译. 北京:机械工业出版社,2005.

[18] (日) 船仓一郎.机器人控制电子学.北京:科学出版社,2004.

[19] 李世华,田玉平.移动小车的轨迹跟踪控制.控制与决策,2000,15(5)::626~628

- 30 -

第一章 引言

附录一:电路原理图

1.核心控制电路图

- 31 -

- 32 -

2.电机驱动电路

- 33 -

附录二:主要程序源代码

/** ################################################################### ** Filename : ProcessorExpert.c

** Project : ProcessorExpert

** Processor : MK60DN512ZVLQ10

** Version : Driver 01.00

** Compiler : CodeWarrior ARM C Compiler

** Date/Time : 2013-03-12, 20:54, # CodeGen: 0

** Abstract :

** Main module.

** This module contains user's application code.

** Settings :

** Contents :

** No public methods

**

** ###################################################################*/ /* MODULE ProcessorExpert */

/* Including needed modules to compile this module/procedure */

#include "Cpu.h"

#include "Events.h"

#include "FRAME_INT.h"

#include "CAMERA_INPUT.h"

#include "DMA_LINE.h"

#include "DMA_CFG.h"

#include "DMA_TRIGGER.h"

#include "SCI.h"

#include "ServoPWM.h"

#include "MotorPWM.h"

#include "KEYBOARD_INPUT.h"

#include "LED_Onboard.h"

#include "I2C.h"

#include "Motor_Ctrl.h"

#include "OLED_IO.h"

/* Including shared modules, which are used for whole project */

#include "PE_Types.h"

#include "PE_Error.h"

#include "PE_Const.h"

#include "IO_Map.h"

/* User includes (#include below this line is not maintained by Processor Expert) */

- 34 -

#include "inc\common.h"

//#include <math.h>

void main(void)

{

/* Write your local variable definition here */

// sint32 kkk = 1, ii;

// float ddd;

/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init();

/*** End of Processor Expert internal initialization. ***/

/* Write your code here */

/* For example: for(;;) { } */

Init();

/*#define max_out 21000

#define min_out 13400

#define cnt_max 9000

uint32 i, ii, jj;

{

for(i = 17100; i < max_out; i ++)

{

Servo_Out_PWM(i);

for (ii = 0; ii < 10000; ii++);

}

for (ii = 0; ii < cnt_max; ii++)

for (jj = 0; jj < cnt_max; jj++){;}

for(i = max_out; i > 16600; i --)

{

Servo_Out_PWM(i);

for (ii = 0; ii < 10000; ii++);

}

while (1);

}

/*

while(1)

{

for (ii = 0; ii < 1000; ii ++)

{

ddd = atan(kkk);

- 35 -

kkk = ddd * 18000 / 3.1415926;

}

for (ii = 0; ii < 1000; ii ++)

{

ddd = atan(kkk);

kkk = ddd * 18000 / 3.1415926;

}

}

*/

do

{

GetStatus();

} while (_SetFunc(Status.status, Status.level));

_MAIN(Status.level);

/*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/

for(;;){}

/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/

/* END ProcessorExpert */

/*

** ################################################################### **

** This file was created by Processor Expert 5.3 [05.00]

** for the Freescale Kinetis series of microcontrollers.

**

** ################################################################### */

/* This file is define gear1's flow path function

* Create by dzcong1988

* Create at 2013/3/18

*/

#include "inc\common.h"

- 36 -

#include "string.h"

#include "Gear_1\inc\gear.h"

#include "Gear_1\inc\gear_sci.h"

#include "Gear_1\inc\gear_servo.h"

#include "Gear_1\inc\gear_motor.h"

static sint32 Variable_reset()

{

Image.start_dael_flag = 0;

Image.Complete_flag = 1;

memset(&left_inf, 0, sizeof(_edge_inf));

memset(&right_inf, 0, sizeof(_edge_inf));

}

static sint32 Gear_fun_init(sint32 level)

{

// LED_Onboard_SetFieldValue(null, ONBOARD_LED, 0x00); _Frame_int = frame_int1;

_DMA_complete_int = DMA_complete_int1;

Line_need_init();

Line_correct_init();

Variable_reset();

Image.odd_even = 0;

Image.buff_ptr = Image.buff0;

return 0;

}

static sint32 buff_change()

{

Image.deal_ptr = Image.buff_ptr;

if (Image.odd_even == 0)

{

Image.odd_even = 1;

Image.buff_ptr = Image.buff1;

}

else

{

Image.odd_even = 0;

Image.buff_ptr = Image.buff0;

}

last_left_inf = left_inf;

last_right_inf = right_inf;

}

- 37 -

sint32 main_gear1(sint32 level)

{

Gear_fun_init(level);

Motor_wake();

Frame_Interrupt_On();

while (1)

{

if (Image.start_dael_flag)

{

int ii;

ServoOut(Servo.m_DirOut);

MotorOut(Motor.m_SpeedOut);

buff_change();

Variable_reset();

_RowScanVaribleReset();

LED_Onboard_SetFieldValue(null,ONBOARD_LED,0Xfe); for (ii = 0; ii < CAMERA_LINE; ii++)

{

_RowScan(ii);

}

_FrameScan();

if (Image.FrameEffectFlag != 0)

{

Control.m_Dir.m_Ex = Gear_servo_expect();

Control.m_Speed.m_Ex = Gear_motor_expect(level); }

else

{

left_inf = last_left_inf;

right_inf = last_right_inf;

}

Control.m_Dir.m_Out = Gear_servo_out(); Control.m_Speed.m_Out = Gear_motor_out(); Servo.m_DirOut = Control.m_Dir.m_Out;

Motor.m_SpeedOut = Control.m_Speed.m_Out; // Frame_Interrupt_On();

LED_Onboard_SetFieldValue(null,ONBOARD_LED,0Xff); }

}

return 0;

}

- 38 -

网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com