版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、天鹰队技术报告PAGE 第三届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告学 校: 大连理工大学队伍名称: 天鹰队参赛队员: 张元庆 程 敏 王宝财带队教师: 吴振宇关于技术报告和研究论文使用授权的说明本人完全了解第二届“飞思卡尔”杯全国大学生智能车邀请赛关于保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日 期: TOC o 1-3 h z u HYPERLINK l _Toc20
2、7038478 第一章 引言 PAGEREF _Toc207038478 h 4 HYPERLINK l _Toc207038479 1.1 智能车制作情况 PAGEREF _Toc207038479 h 4 HYPERLINK l _Toc207038480 1.2 技术报告内容安排说明 PAGEREF _Toc207038480 h 5 HYPERLINK l _Toc207038481 第二章 机械部分 PAGEREF _Toc207038481 h 5 HYPERLINK l _Toc207038482 2.1 车模系统改装 PAGEREF _Toc207038482 h 5 HYPE
3、RLINK l _Toc207038483 2.1.1 前轮主销后倾角 PAGEREF _Toc207038483 h 5 HYPERLINK l _Toc207038484 2.1.2前轮主销内倾角 PAGEREF _Toc207038484 h 6 HYPERLINK l _Toc207038485 2.1.3前轮前束 PAGEREF _Toc207038485 h 6 HYPERLINK l _Toc207038486 2.1.4 底盘离地间隙 PAGEREF _Toc207038486 h 7 HYPERLINK l _Toc207038487 2.1.5 舵机安置 PAGEREF _
4、Toc207038487 h 7 HYPERLINK l _Toc207038488 2.1.6 后轮距及差速器的调整 PAGEREF _Toc207038488 h 8 HYPERLINK l _Toc207038489 2.2 摄像头的选择与安装 PAGEREF _Toc207038489 h 8 HYPERLINK l _Toc207038490 2.2.1 摄像头的选择 PAGEREF _Toc207038490 h 8 HYPERLINK l _Toc207038491 2.2.2 摄像头的固定 PAGEREF _Toc207038491 h 9 HYPERLINK l _Toc20
5、7038492 2.3 测速模块选择与安装 PAGEREF _Toc207038492 h 10 HYPERLINK l _Toc207038493 2.3.1方案一:测速发电机 PAGEREF _Toc207038493 h 10 HYPERLINK l _Toc207038494 2.3.2方案二:霍尔效应器件 PAGEREF _Toc207038494 h 10 HYPERLINK l _Toc207038495 2.3.3方案三:光电码盘 PAGEREF _Toc207038495 h 10 HYPERLINK l _Toc207038496 第三章 电路设计部分 PAGEREF _T
6、oc207038496 h 11 HYPERLINK l _Toc207038497 3.1 单片机系统板设计 PAGEREF _Toc207038497 h 11 HYPERLINK l _Toc207038498 3.2 电机驱动电路设计 PAGEREF _Toc207038498 h 12 HYPERLINK l _Toc207038499 3.3 串口模块 PAGEREF _Toc207038499 h 13 HYPERLINK l _Toc207038500 3.4拨档开关 PAGEREF _Toc207038500 h 14 HYPERLINK l _Toc207038501 3.
7、5液晶显示模块 PAGEREF _Toc207038501 h 15 HYPERLINK l _Toc207038504 第四章 软件部分 PAGEREF _Toc207038504 h 16 HYPERLINK l _Toc207038505 4.1主函数控制流程 PAGEREF _Toc207038505 h 16 HYPERLINK l _Toc207038506 4.2数据采集和处理 PAGEREF _Toc207038506 h 16 HYPERLINK l _Toc207038507 4.2.1视频图像的采集 PAGEREF _Toc207038507 h 16 HYPERLINK
8、 l _Toc207038508 4.2.2视频图像的处理 PAGEREF _Toc207038508 h 16 HYPERLINK l _Toc207038509 4.3速度信息的采集和处理 PAGEREF _Toc207038509 h 17 HYPERLINK l _Toc207038510 4.3.1速度的测量 PAGEREF _Toc207038510 h 17 HYPERLINK l _Toc207038511 4.3.2电机的PID控制和参数选择 PAGEREF _Toc207038511 h 17 HYPERLINK l _Toc207038512 4.4 决策算法 PAGER
9、EF _Toc207038512 h 19 HYPERLINK l _Toc207038513 4.4.1神经网络 PAGEREF _Toc207038513 h 20 HYPERLINK l _Toc207038514 4.4.2 控制策略 PAGEREF _Toc207038514 h 31 HYPERLINK l _Toc207038515 第五章 开发工具及制作调试过程 PAGEREF _Toc207038515 h 35 HYPERLINK l _Toc207038516 5.1 开发工具 PAGEREF _Toc207038516 h 35 HYPERLINK l _Toc2070
10、38517 5.2 制作调试过程 PAGEREF _Toc207038517 h 36 HYPERLINK l _Toc207038518 第六章 结论 PAGEREF _Toc207038518 h 37 HYPERLINK l _Toc207038519 6.1 模型车的主要技术参数说明 PAGEREF _Toc207038519 h 37 HYPERLINK l _Toc207038520 6.2 总结 PAGEREF _Toc207038520 h 37 HYPERLINK l _Toc207038521 参考文献 PAGEREF _Toc207038521 h 38 HYPERLIN
11、K l _Toc207038522 附录 PAGEREF _Toc207038522 h 39PAGE 67第一章 引言1.1 智能车制作情况在智能车制作的过程中,本小组成员先后学习了控制、传感技术、汽车电子、电气、计算机、机械等多个学科的相关知识,在实践中巩固了所学知识,增强了实践动手能力。本组智能车系统按照功能划分为:电源模块、单片机模块、数字摄像头路径识别模块、直流电机驱动模块、转向伺服模块、速度测量模块等。除摄像头路径识别模块和测速模块以外,我们将剩余模块集中于一块主电路板,将主电路板安置尽量靠近底盘,以降低重心,使小车在运行过程中更加稳定。电机驱动部分我们采用4片大功率MOS管IRF
12、3205组成的H桥电路,以增强对电机的驱动能力。我们别出心裁地采用了一种新的舵机安装方式,使舵机左右臂长相等,使舵机转角灵敏准确。同时我们选择了数字摄像头OV6620模块用作路径识别,解决了AD转换的难题,而且图像精确度大幅度提高基于以上可靠的硬件设计,我们开发了一套比较完备的控制算法,包括电机PID控制算法,路径识别控制算法等,从而使整个小车运行比较加快速稳定。1.2 技术报告内容安排说明此技术文档的正文部分大致分为三个部分:机械部分,电路硬件部分和软件部分。机械部分包括我们对智能车机械结构在大赛允许范围内所做的改装;电路设计部分包括各个模块的电路设计方案以及相关电路;软件部分包括摄像头数据
13、处理、寻迹、和调速等控制策略的说明。第二章 机械部分2.1 车模系统改装2.1.1 前轮主销后倾角主销在汽车的纵向平面内与竖直线有一个夹角,称为“主销后倾角”。由于主销后倾角的存在,使车轮偏转后产生一个回位力矩,纠正车轮的偏转。通过增减上横臂轴上的黄色垫片的数量可以改变主销后倾角大小。通常后倾角值应设定在13度。但我们为了使模型车转向灵活,将主销后倾角设为0度。横臂轴上每侧黄色垫片数量为二。 图2.12.1.2前轮主销内倾角主销在横向平面内与竖直线的夹角称为“主销内倾角”。如图2.2中角。 图2.2 主销内倾角也有使车轮自动回正的作用。当前轮在外力作用下发生偏转时,车轮连同整个汽车的前部被抬起
14、一定高度;当外力消失后,车轮在重力作用下恢复到原来中间位置。主销内倾角不宜过大,否则在转向过程中轮胎与地面间将产生较大的滑动。通常主销内倾角不大于8度。通过改变横臂螺杆的长度来改变主销内倾角,调整范围08度之间为宜。利用试验法确定即可。 本组将主销内倾角调节为60 左右。减小了赛道面作用于前轮的阻力矩,使舵机转向更加轻便,同时车轮自动回正的速度加快。2.1.3前轮前束 汽车两前轮的中心面不平行,两轮后边缘的距离与前边缘的距离之差称为“前轮前束”。图2.3前轮前束可以减小由前轮外倾角带来的不利影响。一般前束值为012mm。前端小后端大的称为“前束”,而后端小前端大的称为“负前束”。改变左右横拉杆
15、的长度即可改变前轮前束的大小。前轮前束要与前轮外倾角相匹配。 2.1.4 底盘离地间隙我们采取摄像头采集路面信息的策略,摄像头安装位置比较高,所以导致整车的重心偏高,在高速过弯时则向心力比较大,同时由于惯性则车很容易向一侧翻倒。为了避免这类事情的发生,不仅需要减轻摄像头架的重量,也要尽量降低小车底盘的高度。我们把车的后轮底盘放低,从而降低整车的重心,防止车翻倒。但由于此次比赛中有坡度在15度之内的坡道,车底盘过低很容易在上坡下坡过程中出现碰触赛道的情况,因此车前部的底盘高度不变。以下是车前后部分底盘高度调整方法: (1)底盘前半部分离地间隙调整:模型车提供的垫片有1mm和2mm两种规格,离地间
16、隙调整范围为912mm。我们未加垫片,从而使小车前部离地间隙为12mm。(2)底盘后半部分离地间隙调整:通过变换卡圈调整底盘后半部离地间隙。小车配件中只有标号为1、2、3的三种规格的卡圈。为了降低小车整体重心,我们采用了标号为3的卡圈,使间隙最小。2.1.5 舵机安置图2.4组委会提供的舵机为S3010,舵机的响应速度对小车是一个很重要的因素,为了加快舵机的响应速度,我们做了以下三个方面的改进。第一,由于舵机响应速度与供电电压有直接的关系,电压越高响应速度越快,但是比赛规则中禁止用DC-DC升压电路给电机供电,因此我们直接用电池电压即7.2V直接给舵机供电,既不违背比赛规则有最大限度的提高了舵
17、机响应速度;第二,将舵机偏前放置,从而增加了舵机到连杆之间的摆杆长度,这样与以前的长度相比让前轮转过同样的角度舵机只需转过比以前更小的角度,虽然舵机本身的动作的速度没有变,但对于转向来说则比以前更快了。第三,舵机水平放置,使舵机位于两轮的中心线上,小车前部相对于舵机左右对称,从而左右横拉杆长度相同,舵机左右转向时受力比较均匀,左右两轮转角相同,使转弯更加稳定可靠。通过以上这些改造,舵机的响应速度提高许多,稳定性增强,为快速灵巧的转向提供了硬件的保证。2.1.6 后轮距及差速器的调整由于小车速度较高,在大角度转弯时容易翻倒,为了增加小车的抗翻能力,可用组委会提供的配件把后轮改为大轮距。在拐弯时由
18、于弯道内侧轮比外侧轮的拐弯半径小,则内侧轮比外侧轮的速度小,这就使两轮胎有一定的速度差,称为差速。而赛车的差速机构安装在后轮轴上的,所以只可以调整后轮的差速。经多次调试观察发现差速对赛车转弯有很大的影响。如果差速过紧,即两轮胎的速度很接近时,转弯的时候内侧轮很容易打滑,从而产生侧滑,使赛车滑出赛道。当差速过松时,会使直道的时候两轮打滑,大大的减小了赛车的驱动能力。所以差速调整要适当,才会使直道驱动能力强,弯道转弯灵巧。我们调试差速的方式是把赛车放在赛道上捏住一个轮胎不动让另一个轮胎能在赛道上半滑动时为准。2.2 摄像头的选择与安装2.2.1 摄像头的选择(1)方案一:采用模拟350线SS200
19、0B黑白摄像头。 黑白摄像头价格便宜,销售量大,比较容易购买,性能比较稳定。MC9S12DG256对摄像头输出的视频信号进行采集时,必须将信号中的行同步信号和场同步信号分离出来,作为中断,用MC9S12DG256内置 AD模块采集视频信号。因此需要增加类似于LM1881组成的视频分离模块,且MC9S12DG256内置AD最高采集频率为2MHz,计算可知,在最高采集频率,8位AD只能采集到300以上个像素中的10个,横向上的分辨率十分低,不能满足识别路径的要求。(2)方案二:采用数字CMOS摄像头OV6620。OV6620是OmniVision公司生产的一款CMOS彩色数字摄像头,支持彩色与黑白
20、两种模式。其像素为101376,远远满足赛道识别要求。支持CIF/QCIF模式。内置两个8位的高速AD转换器,输出8位或者16位的数字图像信息,支持YCrCb4:2:2,GRB4:2:2数据输出模式。图像的行场同步信号分开,由两个引脚单独输出。接口Y0Y7输出图像的灰度值,色度值由接口UV0UV7输出。数据采集处理相对比较容易,但其价格偏高。综上,由于OV6620内置AD,很好的解决了MC9S12DG256内置AD采集速度偏低的问题,而且行场同步信号与图像灰度值分开输出,不仅省去了视频分离模块,也使图像处理变得更加简单,从而增加了图像采集的精度,这点对于起始线识别尤为重要。基于以上原因我们最终
21、选择了CMOS数字摄像头OV6620。 2.2.2 摄像头的固定摄像头的固定直接影响整车的重心,对赛车的影响很大。摄像头位置越高,则前瞻性越好,看到的赛道信息越丰富,有利于赛车的预判和加减速,但对支架的刚性要求越高,采用常规材料如铝合金,往往使支架所占面积较大,从而整车的重心偏高。在高速转弯时,很容易发生翻车等极恶劣的情况。因此摄像头高度与赛车的稳定性是一对矛盾,为了解决这个矛盾我们采用特殊材料碳纤维杆。碳纤维杆非常细,质量很小,而且其刚度很高,足够固定的要求。为了充分发挥碳纤 图2.5维杆的优点,我们用同样具有刚度高重量轻的有机玻璃加工了杆架底座。三根碳纤维杆成三角形固定在赛车地盘上,具有很
22、高的稳定性,赛车高速行驶过程中摄像头抖动很小,数据准确,减小了误判的可能性。见图2.5。 2.3 测速模块选择与安装2.3.1方案一:测速发电机此种方法检测速度准确,但测速电机体积过大且价格昂贵,其安装也不易,所以我们最先放弃了这种方法。2.3.2方案二:霍尔效应器件霍尔器件内部由三片霍尔金属板组成,当外部磁铁正对金属板时,由于霍尔效应,金属板横向导通,产生横向电压。因此可以在车轮上安装磁片,而将霍尔集成片安装在固定轴上,通过对脉冲的计数即可进行车速测量。此方案所构成电路体积小。但小车的车轮较小,磁片安装比较困难,容易产生相互干扰,使测速精度降低,影响速度闭环控制的稳定性。2.3.3方案三:光
23、电码盘光电耦合管的发射端发射的红外光,通过激光雕刻码盘的间隙到达接收端。当电机带动码盘转动时,接收端便以一定的频率接收到红外光线,经过整形电路输出频率与电机转速成正比的方波。由单片机进行数数测频,即可得到电机转速。由于激光雕刻码盘精度很高,所以该方法测速非常准确。图2.6基于光电码盘的优点,本小组最终采用了方案三。为了充分利用空间,安装稳定可靠,我们采用硬质铝板将光电码盘固定于赛车的最后端。如图2.6第三章 电路设计部分3.1 单片机系统板设计我们发现组委会提供的MC9S12DG128B最小系板有很多部分对赛车没用太大作用,冗余部分使整块电路板过重,因此为了让赛车更加紧凑,电路板尽可能简洁,我
24、们重新画了最小系统板。图3.1 主控制板原理图由于本组控制算法比较复杂,代码所占容量较大,为了提高单片机Flash的容量,我们用MC9S12DG256代替MC9S12DG128,同样是飞思卡尔半导体公司16位的处理器,并没有违背比赛的规则。成形的电路板紧贴底盘,使小车的重心比用原来DG128最小系统板时要低很多,这样小车在行驶的过程中就更加得稳定。3.2 电机驱动电路设计组委会提供的后轮驱动电机型号为RS-380,工作在7.2V电压下,空载电流为0.5A,转速为16200r/min,启动电流高达3A。通用的MC33886集成桥式驱动电路在测试中发热偏大,需要加装散热片,不利于小车的稳定。因此本
25、组采用了4片大功率MOS管IRF3205组成的全桥式电机驱动电路,如图3.2。IRF3205的工作温度为-55+175,在温度为100时最大工作电流达80A,最大导通电阻8m图3.3 电机驱动原理图 桥式驱动电路的控制电路由ST微电子公司的TD340组成,大大简化了调速控制系统的硬件电路,而且具有单片机接口,可以很方便地与MC9S12DG256相连。3.3 串口模块在赛车调试过程中,摄像头采集到的图像对程序的编写和修改有极其重要的作用,因此为了实时查看赛车采集到的图像,就需要把图像数据通过最简单串行接口传送到上位机实时显示。我们为动态得到智能车上的数据,选择了无线数传模块来传递。能达到很好控制
26、和检测效果。其中无线数传模块为ZT-TR43C。其特点为有:高抗干扰能力和低误码率、传输性能优良、有大的数据缓冲区 、低功耗、高可靠性、体积小、重量轻等特点。模块如图3.4所示。对应智能车电路的接口电路如图3.5所示。图3.4 PC机与单片机的通信接口图3.5 PC机与单片机的通信接口3.4拨档开关随赛道的难易程度、摩擦系数、弯道的大小等因素的不同,赛车的最优车速不同,而且正式比赛用的赛道只有在当天才能公布,所以为了尽可能的应对赛道改变带来的影响,就需要增设调速模块。 车速设定一般采用两种方式:现场输入设定式,预先设定现场选择式。第一种方式十分灵活,可以针对现场情况设定最佳参数,但是比赛时准备
27、时间短,而现场输入较麻烦,耗时较长,时间把握不好极易导致比赛失败。第二种方法没有第一种灵活,预先将可能情况设定好,现场选定与预先设定最接近的的方案。这种方法较第一种安全,但是如果预测不准,也不能发挥赛车的最佳性能。我们选用第二种方案,采用8位两挡开关(可以更直观的达到不同参数或模式的调制)来实现上述功能,电路原理图如图3.6:图3.6 拨档开关电路图3.5液晶显示模块为了在比赛现场不能用电脑的情况下也能实时查看程序的某些重要参数,我们有增设了NOKIA 6110液晶显示模块。NOKIA5110是一款飞利蒲公司生产的图形液晶,可以显示84*48点,能显示3行中文,每行7个汉字(使用新的显示方法,
28、可以显示4行中文)。使用PCD8544驱动芯片。串口速率达到4Mbit/S。第四章 软件部分开始各模块初始化是否有启动按键?读取按键值,进入主循环获取小车当前所需要的参数控制电机和舵机是否为起始线且圈数为2开始各模块初始化是否有启动按键?读取按键值,进入主循环获取小车当前所需要的参数控制电机和舵机是否为起始线且圈数为2使小车停止结束是否是否4.1主程序流程图主函数在初始化后,检测拨码开关值。并根据拨码开关选择不同的控制模式。小车的控制主要在主循环中完成。循环进行数据采集,舵机、电机控制,起跑线判断等操作,控制流程如图.1所示。4.2数据采集和处理4.2.1视频图像的采集为适应今年识别起跑线的要
29、求,摄像头的分辨率提高对起跑线识别有很大的促进作用。对我们选用的OV6620数字摄像头数据进行选择性提取。为及时提取视频信号,我们选用了PE1作为视频信号的行信号的输入端口,PH0作为视频信号的场信号的输入端口。最终得到Image64107的数组来保存当前的图像信息。并通过发散检测算法和单向检测算法得到较为稳定和准确的一组储存道路路径的数组stack64。4.2.2视频图像的处理滤噪算法是将发散检测算法和单向检测结合起来处理原始图像的。1.发散检测算法和单向检测算法都用于提取每行的有效信息。发散检测算法以某一参考点为中心向两侧的允许范围内扫描。最后将两种方向上的扫描结果比较,根据两种方向上的起
30、始点的关系和平均位置关系选取有效的信息作为赛道信息进行计算。该算法能单独准确地处理绝大多数赛道情况。2.单向检测算法可以根据发散检测的一些数据得到单侧扫描的方向,这里主要由于处理“十字”型道路。对防止数据偏向一侧很有效果。单侧检测算法是以赛道一侧的允许极限为起点向另一侧扫描,到发现与赛道相仿信息时,先判断。当该信息为有效值时,更新赛道数据,结束该次扫描算法。当该信息偏离允许值时,则舍弃,继续沿该方向扫描有效数据,直至到另一侧的有效信息允许极限。这样在前些行可以用发散检测,得到赛道大体走势,如根据信息可能出现“十字”型道路时,则该用单侧检测算法进行数据处理。4.3速度信息的采集和处理4.3.1速
31、度的测量我们选用的光电编码传感器作为我们小车的速度检测模块,该模块传递给单片机的是脉冲,该脉冲和速度成正比,故可以通过检测在一段时间内该脉冲的数量来检测小车速度。其输出波形为如图4.2所示。其中:A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转。 图4.24.3.2电机的PID控制和参数选择 PID控制原理:在模拟控制系统中,控制器最常用的控制规律是PID控制。常规PID控制系统原理框图如图4.3所示。系统由模拟PID控制器和被控对象组成。 图4.3PID控制器是一种线性控制器,它根据给定值和实际值的构成的偏差:公式1公式1将偏差的比例(P)、积分(I)和微分(D
32、)通过线性组合构成控制量,对被控对象进行控制,故称PD控制器。其控制规律为:公式2公式2由于积分项的存在,防止数据溢出,我们选择了增量式PID控制算法。公式3公式3PID参数的选择:采样周期受各种因素的影响,有些是相互矛盾的,必须视具体情况和主要的要求作出折中的选择。在直线电机的单片机控制系统中,PID调节控制过程是在定时中断状态下完成的。因此,采样周期T的大小必须保证中断服务程序的正常运行。在不影响中断程序运行的情况下,可取采样周期T=0.1 为电机系统的纯滞后时间)。当中断程序的运行时间Tz大于0.1时则取T=Tz。因此,采样周期可按下式确定:公式4公式4初始确定数字PID控制参数时,在用
33、上述方法确定的采样周期T的条件下从直线电机的数字PID调节控制回路中,去掉数字控制器的微分控制作用和积分控制作用,只采用比例调节环节来确定系统的振荡周期Tz和临界比例系数Ks。由单片机系统自动控制比例系数Kp,并逐渐增大Kp,直到电机系统发生持续的等幅振荡,然后由单片机系统自动记录电机系统发生等幅振荡时的临界比例度s和相应的临界振荡周期Ts。公式5公式5 式中K s等幅振荡时的临界比例系数。公式6根据所测得的临界比例度s和临界振荡周期Ts,便可初始确定数字PID的控制参数为:公式6Kp=0.6s Ti=0.5Ts Td=0.125Ts采样周期T定位:公式7公式7另外,为提高电机的相应速度,我们
34、同时采用了Bang Bang控制理论来提高相应时间。开始,并传入速度期望值测得当前时刻的速度值速度偏差e(k)Bang_开始,并传入速度期望值测得当前时刻的速度值速度偏差e(k)Bang_进行Bang_Bang控制,全速正转控制PWM占空比结束是否速度偏差e(k)-Bang_是进行Bang_Bang控制,全速反转转否进行PID控制控制PWM占空比控制PWM占空比 图4.44.4 决策算法赛车电机转速,舵机转角与很多因素有关,如赛车的视距、车身与黑线相对位置、赛道弯度、赛道类型等,因此相应的转速与转角就与许多变量有关,而且并不成线性关系,通常的处理方法是使转速,转角与变量近似线性。由于赛道复杂多
35、变,这种方法具有很大的局限性,因此为了让小车适应任何复杂的赛道,我们采用了人工神经网络的控制算法作为小车参数确定的一个辅助手段,同时我们充分依靠高分辨率的视频信息反应当前赛道的情况,并根据不同的赛道来选择不同的控制策略和算法。理论证明三层的神经网络可以解决任何非线性的问题,所以我们对复杂的赛道信息采用了神经网络来解决,为了增强小车的适应能力,在后来我们研究了遗传算法。4.4.1神经网络4.4.1.1神经网络模型 我们介绍一下神经网络模型,一个人工神经元细胞如图1。图4.5.人工神经元细胞左边几个灰底圆中所标字母w代表浮点数,称为权重(weight,或权值,权数)。进入人工神经细胞的每一个inp
36、ut(输入)都与一个权重w相联系,正是这些权重将决定神经网络的整体活跃性。权重可正可负, 如果权重为正,就会有激发(excitory)作用,权重为负,则会有抑制(inhibitory)作用。当输入信号进入神经细胞时,它们的值将与它们对应的权重相乘,作为图中大圆的输入。大圆的核是一个函数,叫激励函数(activation function),它把所有这些新的、经过权重调整后的输入全部加起来,形成单个的激励值(activation value)。激励值也是一浮点数,且同样可正可负。然后,再根据激励值来产生函数的输出也即神经细胞的输出。如果激励值超过某个阀值(,就会产生一个值为1的信号输出;如果激励
37、值小于阀值,则输出一个0。这是人工神经细胞激励函数的一种最简单的类型。一个人工神经细胞可以有任意n个输入,n代表总数。可以用下面的数学表达式来代表所有n个输入:X1, X2, X3, X4, X5, ., Xn。同样 n 个权重可表达为: W1, W2, W3, W4, W5 ., Wn。激励值就是所有输入与它们对应权重的之乘积之总和。神经网络的各个输入,以及为各个神经细胞的权重设置,都可以看作一个n维的向量。4.4.1. 为了创建一个人工神经网络,人工神经细胞也要以同样方式相互连接在一起。我们使用的是前馈网络(feedforword network)图2。网络的每一层神经细胞的输出都向前馈送
38、(feed)到了它们的下一层(在图中是画在它的上面的那一层),直到获得整个网络的输出为止。图4.6前馈网络4.4.1.3神经网络的训练可以分为有监督学习和无监督学习,在我们的控制算法中我们应用的是有监督学习。我们以赛道黑线的坐标和黑线的曲率作为训练的数据,即训练集。调整权重可以采用许多不同的方法,我们采用的是反向传播(backpropagation,简称backprop或BP)方法。 如果网络只能输出一个或一个,是无法控制小车的速度和小车的转角的。因此我们采用一种方法把激励函数的输出由阶跃式改变成为在之间连续变化的形式。我们使用的是一个被称为逻辑斯蒂S形函数(logistic sigmoid
39、function),该函数所实现的功能,本质上说,就是把神经细胞原有的阶跃式输出曲线钝化为一光滑曲线,后者绕y轴0.5处点对称,如图4.7。若f(x)以原点为点对称,则有f(-x)=-f(x)。 图4.7. S形曲线。当神经细胞的激励值趋于正、负无穷时,S形函数分别趋于或。负的激励值对应的函数值都0.5。S形函数用数学表达式写出来则为:公式8公式8e是数学常数,近似等于2.7183,a是神经细胞的激励值,它是函数的自变量,而p是一个用来控制曲线形状变化快慢或陡峭性的参数。p通常设定为1。当p赋以较大值时,曲线就显得平坦,反之,就会使曲线变为陡峭。4.4.1.4我们选择的输入信息是:a.黑线的坐
40、标 (等间距选择10个坐标,如果黑线坐标少于10个,我们将在后面处理)。b.黑线的曲率 (用选择的10个坐标处的曲率)。c.摄像头视野中黑线的长短,即line_jmp 。这样我们一共得到21个输入,因此输入层神经元的数目是22个(为什么是22个我们讲在下面说明),选择隐层神经元的数目是20个,由于需要得到的是小车的速度和转角,因此输出层神经元的数目是两个。所有权重值在-1和1之间。激励值是所有输入*权重的乘积的总和,而神经细胞的输出值取决于这个激励值是否超过某个阀值(t)。这可以用如下的方程来表示: w1x1 + w2x2 + w3x3 +.+ wnxn = t。上式是使网络输出为的条件。因为
41、网络的所有权重需要不断演化,阀值的数据也能一起演化,那是非常重要的。要实现这一点不难。从上面的方程两边各减去t,得:w1x1 + w2x2 + w3x3 +.+ wnxn t = 0该方程可以再换用一种形式:w1x1 + w2x2 + w3x3 +.+ wnxn + t *(1) = 0阀值t可以想像成为始终乘以输入为 -的权重了。这个特殊的权重通常叫偏移(bias),这就是为什么输入层神经元的数目要增加一个的原因。现在,当你演化一个网络时,你就不必再考虑阀值问题,因为它已被内建在权重向量中了。图4.8 带偏移的人工神经细胞。(1).当3=line_jmp10时,我们选择的输入信息是:1.黑线
42、的坐标 (等间距选择3个坐标);2.黑线的曲率 (用选择的3个坐标处的曲率);3.摄像头视野中黑线的长短,即line_jmp;此时输入层神经元的个数是8个,隐层神经元的个数还是20个,输出同样是两个。(2).当1=line_jmp3时,我们选择的输入信息是:1.黑线的坐标 (选择1个坐标);2.黑线的曲率 (用选择的1个坐标处的曲率);3.摄像头视野中黑线的长短,即line_jmp;此时输入层神经元的个数是4个,隐层神经元的个数还是20个,输出同样是两个。(3).当line_jmp=0时,我们选择的输入信息是:1.小车前5个周期的转角;2.前一时刻的line_jmp值;此时输入层神经元的个数是
43、7个,隐层神经元的个数还是20个,输出同样是两个。4.4.1.5网络由于网络输出的数据都在0-1之间,但是小车的转角angle是有正有负的,因此我们需要将网络输出的数据进行转化。我们小车左右最大的转角分别是-70度和+70度,因此我们可以将网络的输出(out-0.5)*140作为小车的转角。我们小车的速度是从0-100的,所以可以用out*100作为小车的速度。我们将网络的输入数据映射到-11之间,黑线的坐标-52=stack=52,所以用stack/52作为网络输入,黑线的曲率crankle一般在-50,50之间,因此以crankle/20作为网络的输入,由于line_jmp在0,64之间,
44、因此以line_jmp/64作为网络的输入。现在输入和输出都已经处理好了,权值在开始时可以随机赋值为-1,1之间的小数。然后我们要做的是训练数据的采集和目标输出的确定。我们以小S为例,采集到的训练数据如下:训练集1:Stack: -39,-50,-52,-52,-50,-42,-31,-27,-30,-39Crankle:7,7,0,1,5,4,-5,-3,-6,-6Line_jmp:64目标输出:Angle:0Speed:100训练集2:Stack: 6,-1,-14,-23,-34,-39,-37,-30,-30,-23Crankle:-5,-4,2,0,3,6,6,0,-3,-6Line
45、_jmp: 64目标输出:Angle:0Speed:100然后我们在PC机上对网络进行训练,提取出得到的网络权值,将提取的网络权值应用到小车得控制程序中。我们通过采集大量的赛道信息,然后训练此网络,可以得到很好的网络权值,采集的信息越多,小车的适应性就越好。我们将得到的权值保存下来,然后在我们程序中应用,这样小车对于未知情况有很好的适应性,可以自主的进行判断,增强的小车的适应性。这种方法在前期需要做大量的赛道信息采集,前期工作量比较大,但在后期应用可以节省很多复杂工作。这种方法前期工作很麻烦,因为需要采集大量赛道数据信息。因此我们引入遗传算法来结合神经网络。这样小车就可以自主学习和进化,从而可
46、以快速的沿着赛道行驶而不需要我们的任何帮助。4.4.1.6人工神经细胞的结构中必须有一个正整数来纪录它有多少个输入,还需要有一个向量std:vector来表示它的权重。神经细胞的每一个输入都要有一个对应的权重。Struct SNeuron / 进入神经细胞的输入个数 int m_NumInputs; / 为每一输入提供的权重 vector m_vecWeight; /构造函数 SNeuron(int NumInputs); ;以下就是SNeuron 结构体的构造函数形式:SNeuron:SNeuron(int NumInputs): m_NumInputs(NumInputs+1) / 我们要
47、为偏移值也附加一个权重,因此输入数目上要 +1 for (int i=0; iNumInputs+1; +i) / 把权重初始化为任意的值 m_vecWeight.push_back(RandomClamped(); 由上可以看出,构造函数把送进神经细胞的输入数目NumInputs作为一个变元,并为每个输入创建一个随机的权重。所有权重值在-1和1之间。神经细胞层SNeuronLayer的结构的源代码定义如下:struct SNeuronLayer / 本层使用的神经细胞数目 int m_NumNeurons; / 神经细胞的层 vector m_vecNeurons; SNeuronLayer
48、(int NumNeurons, int NumInputsPerNeuron);;创建神经网络对象的类class CNeuralNetprivate: int m_NumInputs; int m_NumOutputs; int m_NumHiddenLayers; int m_NeuronsPerHiddenLyr; / 为每一层(包括输出层)存放所有神经细胞的存储器 vector m_vecLayers;public:CNeuralNet(); / 由SNeurons创建网络 void CreateNet(); / 从神经网络得到(读出)权重 vector GetWeights()con
49、st; / 返回网络的权重的总数 int GetNumberOfWeights()const; / 用新的权重代替原有的权重 void PutWeights(vector &weights);。 / S形响应曲线 inline double Sigmoid(double activation, double response); 当已知一个神经细胞的所有输入*重量的乘积之和时,这一方法将它送入到S形的激励函数。 / 根据一组输入,来计算输出 vector Update(vector &inputs); / 类定义结束4.4.1.7void CNeuralNet:CreateNet() / 创建
50、网络的各个层 if (m_NumHiddenLayers 0) /创建第一个隐藏层 m_vecLayers.push_back(SNeuronLayer(m_NeuronsPerHiddenLyr, m_NumInputs); for( int i=O; im_NumHiddenLayers-l; +i) m_vecLayers.push_back(SNeuronLayer(m_NeuronsPerHiddenLyr, m_NeuronsPerHiddenLyr); / 创建输出层 m_vecLayers.push_back(SNeuronLayer(m_NumOutput,m_Neurons
51、PerH iddenLyr); else /无隐藏层时,只需创建输出层 / 创建输出层 m_vecLayers.push_back(SNeuronLayer(m_NumOutputs, m_NumInputs); 4.4.1.8vector CNeuralNet:Update(vector &inputs) / 保存从每一层产生的输出 vector outputs; int cWeight = 0; / 首先检查输入的个数是否正确 if (inputs.size() != m_NumInputs) / 如果不正确,就返回一个空向量 return outputs; / 对每一层,. for (i
52、nt i=0; iO) inputs = outputs; outputs.clear(); cWeight = 0; / 对每个神经细胞,求输入*对应权重乘积之总和。并将总和抛给S形函数,以计算输出 for (int j=0; jm_vecLayersi.m_NumNeurons; +j) double netinput = 0; int NumInputs = m_vecLayersi.m_vecNeuronsj.m_NumInputs; / 对每一个权重 for (int k=O; kNumInputs-l; +k) / 计算权重*输入的乘积的总和。 netinput += m_vecL
53、ayersi.m_vecNeuronsj.m_vecWeightk * inputscWeight+; / 加入偏移值 netinput += m_vecLayersi.m_vecNeuronsj.m_vecWeightNumInputs-1 * CParams:dBias; / 每一层的输出,当我们产生了它们后,我们就要将它们保存起来。但用累加在一起的 / 激励总值首先要通过S形函数的过滤,才能得到输出outputs.push_back(Sigmoid(netinput,CParams:dActivationResponse); cWeight = 0: return outputs; 我们
54、通过实验应用神经网络,发现小车适应性会不断增强,不断进化。因此基于神经网络控制算法将是我们团队以后研究的主要方向。对于简单的赛道我们可以通过物理方法计算来控制小车,然而如果面对复杂的赛道神经网络算法将显示出它强大的优势,面对未知的赛道信息,更能体现小车的智能性。由于我们对神经网络算法的应用还不够成熟,我们会不断的将它完善,我相信神经网络也将会是智能车以后的发展方向,因为它体现了小车的智能性。4.4.2 控制策略4.4.2.1 路径的识别面临越来越复杂的赛道,我们采用位置信息(stack64)、曲率信息(crankle64)来作为决策算法的核心数据来源。其中曲率信息(crankle64)是判断大
55、S、弯道、小S、直道等信息的关键。虽然我们图像信息的横向分辨率较高,但也很难做到真正的曲率稳定。但在用到统计数学的一些算法,能做到对赛道信息的判断。所用到的公式为: slope63=(stack62-stack63)2; slope62=(stack61-stack63)3;i-)/ slopei-1=stacki-3-stacki+1; cranklei=slopei-1-slopei+1; 所加的统计算法为:我们从远处统计十个点的曲率值,统计其中正负数和零点的数量。当正数数量大于某一值时,可以判断赛道右偏;当负数数量大于某一值时,可以判断赛道左偏;当零点大于某一值时,可判断是一直线。但由于
56、要确保准确,以上三个情况都未出现时,则去掉最前端的crankle值,接着在后端补入一个crankle值从新统计,直至满足条件。当满足以上条件时,对应flag标志置1。同时接着向下进行赛道的分析。这样当存在crankle正负界限时,便记录该位置。这样能够准确地得到曲率变化点,确定更好的目标点。不同赛道情况下的视图数据如下:直道:直道一般满足所看到的行数line_jmp60,cranklei值一般较小,且统计10个相邻的cranklei的和似为0。是最简单的赛况,识别较为简单。数据略。图4.9 直道图4.9 直道小S:图4.11 小S的crankle数据图4.10 小S道小S的赛况为line_jm
57、p一般较大,但也可能出现行数较少的情况。当能够发现cranklei的统计值有正负明显界限时,则选取曲率发生正负变化的转折点作为目标点,当不能发现有明显的正负变化时,则主要靠stacki值的约束来判断。图为cranklei对应的电脑截图(i值越大,距离车身越近)。由图知转折点位于i=20点上。图4.11 小S的crankle数据图4.10 小S道大S:图4.12 大S道大S具有明显的特征之一就是:stacki值最近和最远有明显的变化。同时也可能存在曲率crankle的转折点。在不同的位置行数有较大的变化,是很难进行确定的,故我们把大们把S分解为小S和弯道两种赛况来处理。图4.12 大S道以其中的
58、一种赛况为例,大S得到的 crankle值如右图所示。说明:此时crankle对应的图像为上幅实物图。Crankle值可分为两端。这种情况下,小车的走法可以按小S的走法来进行。另一种可弯道相似的赛况,其crankle值和弯道很是接近,故该赛况下的crankle值的变化和参考弯道crankle数组。图4.14 大S的crankle数据R=50cm弯道:图4.14 大S的crankle数据图4.13 R=50cm弯道从其他赛道(如直道)观察和在弯道观察得出的R=50cm弯道的图像有很大的差异。但弯道有个共同的特征就是,最远点的stacki的值为最大或最小。且当stacki为正时,crankle值在
59、较远处的值总体上是正值;当stacki为负时,crankle值在较远处的值总体上是负值。当从弯道外部经过时,由于数据较少,可以打很大的角度,以及时矫正。其一中情况下的crankle和stack值对应如下图所示:图4.13 R=50cm弯道图4.16 弯道的crankle数据图4.15 弯道的stack数据图4.16 弯道的crankle数据图4.15 弯道的stack数据R=90cm大弯:图4.17 R=90cm弯道图4.17 R=90cm弯道这种赛道曲率较小,且line_jmp较大,可以当作直道来走。我们以最远方的点作为参考点来处理的。程序中并没有特殊处理之。只要矫正系数较好的话,小车可以以
60、很快的速度驶过。stack,crankle数组对应图略。4.4.2.2 速度和舵机的控制对应不同的赛道,我们根据crankle值对目标点进行优化。当crankle前端大于零时,对目标点进行右移;当前端统计值小于零时,对目标点stackmid进行左移。同时根据不同的赛道得到对应的midpot和midstack值。根据以上两个值便可进行角度和速度的控制。角度值控制函数为:angle=(int)(midstack)*speed_k1/(Line_C-midpot);速度值控制函数为:speed_set=Speed_max-(Speed_max-Speed_mid)*absf(angle)/Angle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年及未来5年市场数据中国货币基金行业市场全景评估及投资策略咨询报告
- 零售业财务知识
- 集资犯罪类培训课件
- 2026年高合金属材料公司设备档案管理制度
- 集中隔离点培训
- 主体结构施工方案
- 食管裂孔疝腹腔镜课件
- 一级消防工程师考试试题解析及答案
- 新疆维吾尔自治区克拉玛依市小升初入学分班考试数学考试真题含答案
- 2026年医学综合考试题库试题附答案完整版
- (2026年春新版本)人教版二年级数学下册全册教案
- DB15-T 4265-2026 零碳产业园配套新能源规划编制规范
- 2025年度康复科护理质控工作总结与2026年规划
- 2026年保育员初级考试试题及答案
- 2025至2030电阻式随机存取存储器行业调研及市场前景预测评估报告
- 新人培训主播课件
- 2026年苏州工业园区服务外包职业学院单招职业技能考试备考试题附答案详解
- 铝合金门窗安装打胶方案
- 贵州省贵阳市2024-2025学年高一上学期期末监测物理试卷(含解析)
- 管路开挖施工方案(3篇)
- 兽药行业兽药研发工程师岗位招聘考试试卷及答案
评论
0/150
提交评论