电子科大Trinity_第1页
电子科大Trinity_第2页
电子科大Trinity_第3页
电子科大Trinity_第4页
电子科大Trinity_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告 学 校:电子科技大学队伍名称:Trinity参赛队员:孙奎峰 王道川 张瑞带队教师:程玉华 任亦希 关于技术报告和研究论文使用授权的说明 本人完全了解第十届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:孙奎峰王道川张瑞 带队教师签名:程玉华任亦希日 期:2015年8月18日摘 要本文以第十届全国大学生智能车竞

2、赛为背景,介绍了两轮自平衡小车控制系统的软硬件结构和开发流程。该比赛采用大赛组委会统一指定的E型车模,以Freescale半导体公司生产的32位单片机MKL26Z256VLL4为核心控制器,在IAR开发环境中进行软件开发,使用TSL1401系列的线性CCD进行赛道信息采集。整个系统涉及硬件电路设计、控制策略、整车机械架构等多个方面。为提高在高速运行下的稳定性,进行了不同方案的设计,并使用Matlab进行了大量的数据分析以及上位机的设计调试,确定了现有的整车架构和相关控制参数。车模使用飞思卡尔加速度传感器MMA8451Q以及陀螺仪L3G4200D进行角度融合,获取车模姿态,完成平衡直立。根据TS

3、L1401采集到的赛道信息通过软件进行路径规划,通过两轮电子差速实现转向。 关键词:智能车,MKL26Z256VLL4,TSL1401,MMA8451Q,L3G4200DIII 目录第一章引言. 21.1 大赛介绍.21.2 系统设计框架介绍. 2 第二章智能车机械结构调整与优化.42.1 智能车参数要求. 42.2 智能车整体参数调校. 42.3 编码器安装.42.4 姿态传感器安装. 5 第三章硬件电路设计说明. 63.1 单片机最小系统模块. 63.2 电源模块. 73.2 传感器模块. 93.3 电机模块. 93.4 测速模块. 10 3.5 陀螺仪与加速度计模块. 10 3.7 人机

4、交互模块. 11第四章 智能车控制软件设计说明. 12 4.1 MKL26Z256VLL4 片资源简介. 124.2 MKL26Z256VLL4 所用模块简介. 124.3 软件功能与框架. 144.4 控制算法与函数. 15 第五章 系统开发及调试工具. 215.1 辅助调试工具介绍. 215.2 系统调试. 24 第六章 车辆主要参数. 25第七章 总结. 26参考文献. 27附录:部分程序源代码. 28第一章 引 言1.1 大赛介绍参加第九届全国大学生“飞思卡尔”杯智能汽车竞赛的参赛选手须使用竞赛秘书处统一指定的竞赛车模套件,采用飞思卡尔半导体公司的8 位、16位、32 位微控制器作为核

5、心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动、转向舵机控制以及控制算法软件开发等,完成智能车工程制作及调试,于指定日期与地点参加各分(省)赛区的场地比赛,在获得决赛资格后,参加全国决赛区的场地比赛。参赛队伍的名次(成绩)由赛车现场成功完成赛道比赛时间来决定,参加全国总决赛的队伍同时必须提交车模技术报告。大赛根据道路检测方案不同分为电磁、光电平衡组与摄像头组三个赛题组。使用四轮车模通过感应由赛道中心电线产生的交变磁场进行路经检测的属于电磁组;使用四轮车模通过摄像头器件获得赛道信息的属于光摄像头组;使用指定的CCD器件或光电管进行赛道信息检测,同时保持车体直立行走的车

6、模属于光电平衡组。本论文主要介绍光电赛题组的智能车制作。在这份报告中,我们主要通过对整体方案、机械、硬件、算法等方面的介绍,详细阐述我队在此次智能汽车竞赛中的思想和创新。具体表现在电路的创新设计、算法以及辅助调试模块等方面的创新。1.2 系统设计框架介绍系统是以检测赛道两边黑线为基础,通过单片机处理信号实现对车体控制,实现车体能够准确沿着预设路径寻迹。系统电路部分需要包括单片机控制单元、电机驱动电路、陀螺仪与加速度计电路、CCD器件电路等部分,除此之外系统还需要一些外部设备,例如编码器测速、直流电机驱动车体和控制车体方向。综上所述,本智能车系统包含了以下几个模块:1.电源模块2.单片机最小系统

7、模块3.传感器模块4.电机模块5.陀螺仪与加速度计模块6.测速模块7.人机交互模块系统的整体模块如图1.2.1 所示:图1.2.1 系统框架图第二章 智能车机械结构调整与优化2.1 智能车参数要求1.传感器数量要求:传感器数量不超过16 个:光电传感器接受单元计为1 个传感器,发射单元不计,摄像头算为1 个传感器;2.电机型号:RS-3803.全部电容容量和不得超过2000 微法;电容最高充电电压不得超过25 伏。2.2 智能车车模选择与整体参数调校考虑到E 车模的电机功率和车模整体性具有比较大的优势,因此我们选择了E 车模。智能车的整体参数,包括车体重心、高度、传感器排布方式等,都对整个智能

8、车系统的稳定运行起着至关重要的作用。因此,对智能车机械系统的调节,有助于小车更快更稳定的运行。小车的布局以精简、可靠、稳定为前提,通过对小车的布局,尽量保证小车左右平衡,以及寻找一个合适的重心,保证小车既能稳定快速前进,又能在转弯时流畅。E 车模如图2.2.1 所示:图2.2.1 车模示意图2.3 编码器安装选用可以5V 工作电压的512线mini编码器进行速度的测量,保证测量的精度。速度传感器用螺钉通过支架固定在后轮支架上,这样固定好之后,就有了较高的稳定性。然后调节编码器齿轮,使其与差速齿轮紧密咬合,增大测速的精确性,但是咬合过紧也增大了摩擦,减小了对电机做功的利用率,影响小车的快速行驶,

9、因此减小摩擦同时增强齿轮间的咬合是我们主要考虑的因素。用齿轮润滑油涂抹齿轮有不错效果。2.4 姿态传感器安装姿态传感器是测量小车姿态的传感器,应当与小车连接紧密。我们在调试的过程中发现固定在整个车模中间质心的位置,或者车模的底部,可以最大程度减少车模运行时前后振动对于测量倾角的干扰。与此同时安装角度传感器电路板时应该尽量保证陀螺仪传感器水平安装。如果陀螺仪安装不能够保证水平,则会影响车模过弯道时的速度。表现为车模在过弯道时速度变快或者变慢。分析车模在过弯道使得运动,车模在过弯道时同时具有两种运动:平动和转动。其中转动会带动陀螺仪转动。如果陀螺仪安装不是绝对的水平,那么这个转动就会在陀螺仪的Z轴

10、方向存在一个分量。根据陀螺仪倾斜的方向不同,这个分量有可能是正,有可能是负。从而会使得车模控制“仿佛感觉到在上坡或者是在下坡”,引起车模的速度变慢或者变快。在姿态传感器模块上集成了一片三轴陀螺仪,用于来对方向进行微分控制,消除方向控制中的过冲现象。该陀螺仪的旋转轴需要和陀螺仪的垂直纵轴保持一致。如果对车模转向不需要进行微分控制,那么这个传感器就可以省略。35第三章 硬件电路设计说明本智能车硬件系统以稳定为设计的原则,在有限的条件下做到最好。单片机采用MKL26Z256VLL4。使用tps76850 稳压5V,采用LT1763-3.3 稳压3.3V为各个模块供电,电机驱动使用芯片BTS7971。

11、调试过程中,采用OLED、NRF2401 等模块辅助,方便小车的调试。3.1 单片机最小系统模块以MKL26Z256VLL4 为核心的单片机最小系统是本智能车的核心。作为Freescale最新一系列32 位单片机,MKL26 具有丰富的外设资源和优异的处理性能,能很好满足直立车对处理器性能的要求。图3.1.1 MKL26 特性表图3.1.2 主板电路3.2 电源模块使用tps76850 稳压5V,采用LT1763-3.3 稳压3.3V 为各个模块供电,同时使用TVS 瞬间二极管进行电路保护,我们在调车过程中由于队员误操作使电池接反出现短路时,TVS 起到了很好的电路保护作用,避免了很大的损失。

12、图3.2.1 TPS76850 稳压电路图3.2.2 LT1763-3.3 稳压电路图3.2.3 TVS 电路保护3.3 传感器模块线性CCD是光电组小车最重要的模块之一,能够分辨白色的赛道及黑色的边线,对道路状况的检测起着至关重要的作用。TSL1401线性CCD传感器包含128个线性排列的光电二极管。每个光电二极管都有各自的积分电路,以下我们将此电路统称为像素。每个像素所采集的图像灰度值与它所感知的光强和积分时间成正比。一般来说线性CCD模块的焦距是固定的,因此要想得到清晰的图像就需要通过调节镜头的进出来解决。如果镜头拧的位置合适,则会得到清晰的图像,CCD输出的数据在波形上会表现的比较尖锐

13、。3.4 电机模块电机采用芯片BTS7971,其应用非常简单,只需要向芯片第2 引脚输入PWM 波就能控制。当系统中只需要单向控制时,只需要让电机一端接地,另一端接BTS7971 第4 引脚。如果需要电机双向旋转控制,则需要另一片BTS7971 共同组成全桥。由于小车使用双电机,所以我们使用4片BTS7971构成两个全桥分别控制两个电机。图3.4.1 电机驱动电路3.5 测速模块本小车使用512 线的mini编码器进行小车的测速,以保证测量精度,并且直接有方向输出,使用方便。TPS76850 为其提供5V 工作电压。3.6 陀螺仪与加速度计模块我们采用陀螺仪型号为L3G4200D和加速度计型号

14、为MMA8451Q,这两款传感器均为数字传感器,分别使用SPI和I2C接口和单片机进行通讯。电路图如下:图3.6.1 姿态传感器原理图3.7 人机交互模块为了方便调试,本车有本车NRF2401 无线模块上传给上位机数据进行处理便于调试,有效进行运行参数之间的传送,除此之外,还设置了键盘、液晶显示屏,以方便控制参数的修改和智能车的调试。图3.7.1 上位机处理数据第四章 智能车控制软件设计说明4.1 MKL26Z256VLL4 片资源简介MKL26Z256VLL4微控制单元作为Kinetis 系列的32位单片机,由标准片上外围设备组成,Cortex-M0+内核,、256KB的Flash 存储器、

15、32KB的RAM、两个异步串行通信接口、两个串行外围接口,DMA模块,TPM、LPTM定时器模块,一组6通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8 通道10 路模数转换器、6通道脉宽调制模块、一个字节数据链路控制器、29路独立的数字I/O接口、20路带中断和唤醒功能的数字I/O 接口、5个增强型CAN总线接口。同时,单片机内的锁相环电路可使能耗和性能适应具体操作的需要。MKL26Z256VLL4片内资源表如图4.1:图4.1 MKL26Z256VLL4 片内资源4.2 MKL26Z256VLL4 所用模块简介在整个系统设计中,用到了5 个单片机基本功能模块:时钟模块、PWM 输出模块、

16、ADC 模块、串口通信模块以及普通IO 模块。根据系统实际需求,对各个模块进行了初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。4.2.1 时钟模块MK26 单片机中有四个不同的时钟,即外部晶振时钟、锁相环时钟、总线时钟和内核时钟。当前电路板采用的是8MHz 的有源晶振,因此外部晶振时钟为8MHz;默认设置下,锁相环时钟为80MHz,总线时钟为32MHz,内核时钟为48MHz。锁相环时钟与外部晶振时钟的倍、分频关系由SYNR、REFDV 两寄存器决定。总线时钟用作片上外围设备的同步,而内核时钟则用作CPU 的同步,它决定了指令执行的速度。时钟模块初始化程序如下:void P

17、ll_Init(void)CLKSEL = 0x00; / disengage PLL to systemPLLCTL_PLLON = 1; / turn on PLLSYNR = 0x53; / 注意VCOFRQ7:6;SYNDIV5:0;fVCO= 2*fOSC*(SYNDIV+ 1)/(REFDIV + 1);fPLL= fVCO/(2 POSTDIV);BUS= fPLL/2REFDV = 0x07; / REFFRQ7:6;REFDIV5:0POSTDIV = 0x00;_asm(nop);_asm(nop);while(!(CRGFLG_LOCK = 1); /when pll i

18、s steady ,then use it;CLKSEL_PLLSEL = 1;/engage PLL to system;4.2.2 PWM 模块脉宽调制模块有8 路独立的可设置周期和占空比的8 位PWM 通道,每个通道配有专门的计数器。该模块有4 个时钟源,能分别控制8 路信号。通过配置寄存器可设置PWM 的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(八个8 位通道还是四个16 位通道)。PWM 模块的初始化设置过程为:void PWM_Init(void)PWME = 0x00; /输出通道使能位。1 可对外输出波形;0 不能对外输出波形。设置之前先禁止

19、PWM 2 5 6 7PWMPOL = 0xff; / 通道对外输出波形先是高电平然后再变为低电平PWMCLK = 0xff; /用clock_A,clock_BPWMCAE = 0x00; / 0 为左对齐输出;1 为居中对其输出。只有输出通道关闭情况下才可设置。PWMCTL = 0x00; /把PWM 不级联/PWMPRCLK = 0x33;/ 时钟预分频, 时钟A 和B 与分频结果CLKA=CLKB=E=5M./ PWMPRCLK0-7 PCKA 0 1 2 PCKB 4 5 6/ CLKA= Bus clock / (2 PCKA) CLKB= Bus clock / (2 PCKB)

20、/ CLKA=40M / (2 3)=5M CLKB= 5MPWMPRCLK = 0x00;PWMSCLB=8;PWMSCLA=8;PWMPER0 = 250;PWMPER2 = 250;PWMPER4 = 250;PWMPER7 = 250;PWMDTY0 = 0; /初始时电机占空比为0,即电机转速为0./占空比=PWMDTYx/PWMPERxPWMDTY2 = 0;PWMDTY4 = 0;PWMDTY7 = 0;PWME = 0xb5; /PWM 使能4.3 软件功能与框架(1)各传感器信号的采集、处理;(2)电机 PWM 输出;(3)车模运行控制:直立控制、速度控制、方向控制;(4)车

21、模运行流程控制:程序初始化、车模启动与结束、车模状态监控;(5)车模信息显示与参数设定:状态显示、上位机监控、参数设定等。图4.3.1 主程序框架程序上电运行后,便进行单片机的初始化。初始化的工作包括有两部分,一部分是对于单片机各个应用到的模块进行初始化。第二部分是应用程序初始化,是对于车模控制程序中应用到的变量值进行初始化。 初始化完成后,首先进入车模直立检测子程序。该程序通过读取加速度计的数值判断车模是否处于直立状态。 如果一旦处于直立状态则启动车模直立控制、 方向控制以及速度控制。车模的直立控制、速度控制以及方向控制都是在中断程序中完成通过全局标志变量确定是否进行这些闭环控制。图4.3.

22、2 中断服务程序在图4.3.2中,使用定时器,产生一毫秒的周期中断。中断服务程序的任务被均匀分配在 0-4 的中断片段中。因此每个中断片段中的任务执行的周期为 5 毫秒,频率为 200Hz。将任务分配到不同的中断片段中,一方面防止这些任务累积执行时间超过 1 毫秒,扰乱一毫秒中断的时序同时也考虑到这些任务之间的时间先后顺序。 这些任务包括: (1)电机测速脉冲计数器读取与清除。累积电机转动角度。累积电机速度,为后面车模速度控制提供平均数; (2)启动 AD 转换。进行CCD模拟量采集,然后计算路径的中心点。(3)车模直立控制过程。包括车模角度计算、直立控制计算、电机 PWM 输出等。 (4)车

23、模速度控制:在这个时间片段中,又进行 0-19 计数。在其中第 0 片段中,进行速度 PID 调节。因此,速度调节的周期为 100 毫秒。也就是每秒钟调节 10 次。 (5)车模方向控制:根据前面读取CCD的扫描到路径的中心数值,计算偏差数值。然后计算电机差模控制电压数值。4.4 控制算法与函数4.4.1 直立控制程序设计平衡控制算法最重要的是滤波算法和控制算法。这里滤波的主要作用是使用加速度计滤除陀螺仪的漂移,也可以说是将加速度计和陀螺仪的数据融合。其中滤波算法有卡尔曼滤波,官方的互补滤波,不滤波。控制算法有PID和LQR线性二次型调节器。卡尔曼滤波因为过于复杂而没有使用,官方互补滤波和卡尔

24、曼滤波效果相似而且简单, 最终我们选用了官方互补滤波。static void Complementary_Filter(double accel,double gyro_y,double *pOutputAngle)static uint16_t i;/开机时先以较大的Kt值进行融合,把陀螺仪积分角度尽/快地修正到加速度计测得的角度if(i =3)if( fDelta 0 )g_fSpeedControlIntegral += fI;else if( g_fSpeedControlIntegral 0 )g_fSpeedControlIntegral += fI; elseg_fSpeedCo

25、ntrolIntegral += fI;fCarSpeed_old=fCarSpeed;4.4.3 方向控制程序设计车模方向控制利用线性 CCD 采集到的赛道中心值与车身中心值的偏差值来计算车模电机差值驱动电压。程序如下:void DirectionControl(void)static float fDelta,fDelta_Old;float fP,fD,Direction_P,Direction_D;UINT8 loss_flag=0;UINT8 fDelta_H,fDelta_L,fcenter_H,fcenter_L;int nfDelta,nfcenter;if(left_loss

26、_flag=0)&(right_loss_flag=0)fDelta=(left_edge+right_edge)/2-PHOTO_CENTER;center = (left_edge+right_edge)/2;else if (left_loss_flag=0)fDelta = left_edge + half_plus -PHOTO_CENTER;center = left_edge + half_plus;else if (right_loss_flag=0)fDelta = right_edge - half_plus-PHOTO_CENTER;center = right_edge

27、 - half_plus;elsefDelta=fDelta_Old;fP = fDelta*Direction_P*0.01;fD = fDelta_error*Direction_D*0.01;fDelta_Old = fDelta;g_fDirectionControlOutOld=g_fDirectionControlOutNew;g_fDirectionControlOutNew =fP +fD;4.4.4 CCD图像处理与识别以白色PVC跑道铺于深色背景为例,线性CCD在白色跑道区域返回的电压模拟量高,深色背景区域返回的电压值较低(如图4.4.4.1为利用MATLAB展示出的采集到

28、的电压值),利用此特点提取跳变沿,再结合算法确定中心点控制转向。 图4.4.4.1 CCD电压值展示图 提取跳变沿采用最小二乘法对数据进行拟合,根据所得系数判断是否为跳变沿。分别用一次函数,三次函数,根号三次函数进行拟合,三次函数拟合效果最好,但计算量庞大。经实验,一次拟合亦可满足要求,故最终采用一次拟合方案。如图4.4.4.2为对数据进行一次拟合所得的系数变化。 图4.4.4.2 一次拟合系数波形图第五章 系统开发及调试工具5.1 辅助调试工具介绍一个好的调试工具可以加快小车的制作的过程,在实际制作当中我们也尝试过不同的上位机,主要有以下三种:方案一: 直接使用freescale codew

29、arrior 自带的调试工具True-Time Simulator &Real-TimeDebugger,使用该工具可以单步调试程序,在全速运行的情况下,调到Periodiacl mode ,模式,还可以实时的观察各个变量、存储器以及寄存器的值,但此功能还远远不能满足小车调试的需要。方案二:使用串口猎人,如下该软件使用串口通信的方式与下位机进行通信,如果使用蓝牙,还可以进行无线数据传输,便于车在行驶的过程中实时观察数据变化。该软件还可以自行设计通信协议,同时可以显示多条波形,可以满足大部分的调试需求,具有普适性,但对于某些特殊的要求,该软件还是有一些欠缺。方案三:使用Labview 开发工具自

30、行设计上位机,LabVIEW 是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C 和BASIC 开发环境,但是LabVIEW 与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW 使用的是图形化编辑语言G 编写程序,产生的程序是框图的形式。labview 拥有非常强大的库函数,图像处理、机器人控制、信号处理、各种通信、FPGA、英特网接口等等。使用Labview 的VISA 串口控件、图形显示控件就能实现下位机参数的接收和实时显示,但仅仅是接收和显示还不能满足我们的需要,因此,我们还使用了Labview 的文件文件I/O 控件进行参数的保

31、存,这样,把之前的数据调出来就可以进行对比分析,十分方便,对所存数据的读取显示由另外两个子Vi 来完成。调试工具的制作,除了使用Labview 外,还可以使用Matlab,Matlab 的数据处理能力非常强大,但对于小车的制作来说,由于数据量不算太大,所以仅仅使用Labview就可以满足。综上,我们在最后的调试选择了方案三。5.2 系统调试开发工具使用的IAR 开发环境,如图5.2.1 所示。它能够为单片机MK26提供与之配套的应用程序开发模块。在目标程序的下载方面,通过JLINK 与单片机之间的连接下载程序。在调试方面,使用MKL26 的SWD 进行在线调试,利用NRF2401 与上位机通信

32、实现赛车运行时参数的调试,使用串口调试工具或PC 的超级终端进行程序的调试。使用Altium Designer 设计硬件电路。图5.2.1 IAR 开发环境第六章 车辆主要参数车模主要参数名称参数车模重量0.900kg车模长度25cm车模宽度21cm车模高度30cm传感器种类及数量CCD*1、陀螺仪*1、加速度计*1、编码器*2红外接收管*6电路电容总量1200uf赛道信息检测频率100次/秒赛道信息检测精度10mm第七章 总 结经过长达半年时间的准备,我们队终于完成了设计计划中所需完成的任务。从车模的安装,机械结构的调整,到电路板的制作,传感器方案的制定,从算法的调试改进,到赛道的实际测试,

33、最终确定了我们的最终硬件作品。文中介绍了如下内容,智能车机械结构的设计和制作方法,以及如何将智能车优化为适合竞速的模型;智能车各个模块的工作原理和设计电路,如电源模块、电机驱动模块、测速模块等;智能车速度控制算法和角度控制算法:系统开发过程中所用到的开发工具、软件以及调试过程。综合来看,智能车包括硬件和软件部分,是综合多学科知识的平台,对于我们专业课的学习和知识面的扩展有极大的帮助。通过本次比赛,我们都学到了很多知识,对于汽车的机械结构、光电传感器、软件设计有了深入的了解,最关键的是掌握了一套较为完善的系统开发流程。致 谢经过了近五个月的努力,我们终于完成了赛车制作。在此,对帮助过我们的老师同

34、学表示深深的谢意。感谢飞思卡尔公司和主办方为我们提供了一个展示自我的舞台。感谢在后面默默无闻的支持我们的指导老师和学长,在参加比赛的过程中,为我们提供及时的指导和帮助,对我们关爱有加。感谢其他车队的同学,在和他们的交流中,使我们学到了很多东西。感谢电子科技大学为我们提供经费,场地,设备。最后,向审阅本报告的各位专家教授表示深深的谢意。参考文献1 邵贝贝. 嵌入式实时操作系统LCOS-(第2 版)M. 北京清华大学出版社20042 谭浩强,C 语言程序设计M.清华大学出版社,2006.13新型PID 控制及其应用2002 年作者:陶永华主编4周金萍等MATLAB6.5 实践与提高,中国电力出版社

35、5 易大义,“计算方法M”, 浙江大学出版社,19956 俞斯乐著,“电视原理”,国防工业出版社,2005.8.17 余永权,“单片机在控制系统中的应用”,电子工业出版社,2003.108 卓晴,黄开胜,邵贝贝,“学做智能车”,北京航空航天大学出版社9 邵贝贝著,“单片机嵌入式应用的在线开发方法”10 余志生,“汽车理论-(第4 版)”, 机械工业11 邓兆祥,褚志刚等,“汽车前轮定位参数优化设计”,重庆大学机械传动国家重点实验室12 邓鲁华等,“数字图像处理(原书第3 版)”,机械工业出版社13Michael J.Young, “Visua l C+6 从入门到精通”,电子工业出版社附录:部

36、分程序源代码void main()uint8 i = ROW,j = 0;allinit();gyroadj();while(1)if(samplecomplete & (!processcomplete)gpio_set (PTE26, 1);change();第一届全国大学生智能汽车邀请赛技术报告if(bufflag=1)imagepro(ImageBuf);elseimagepro(ImageBuf1);gpio_set (PTE26, 0);if(comm=0)OutPut_Data();else if(comm=1)processcomplete=0;else if(comm=2)p

37、rintf(Gyro_Offset = %d n,(int)GYROSCOPE_OFFSET);printf(dGyro_Offset = %d n,(int)DIRECTION_OFFSET);printf(G_Offset = %d n,(int)GRAVITY_OFFSET);printf(LEFT 脉冲计数为:%dn, g_nLeftVoltageSigma);printf(RIGHT 脉冲计数为:%dn, g_nRightVoltageSigma);printf(carspeed = %dn,(int)(g_fCarSpeed*100);printf(cardirect =%dn,(

38、int)(g_fDirectionControlOutNew*100);printf(Speedset = %dn,(int)(CAR_SPEED_SETfDelta*100);printf(DIRset = %d n,(int)(g_fDIR*100);printf(D_P = %d n,(int)(DIR_CONTROL_P*10000);printf(D_D = %d n,(int)(DIR_CONTROL_D*10000);DELAY();else if(comm=3)- 5 - 5 -if(processcomplete=0)continue;if(sentflag = 0)uart

39、_putchar (UART0, 0xff);sentflag = 1;if(i = ROW)i = 0;processcomplete = 0;sentflag = 0;continue;/ uart_putchar (UART0, 0x00);/ uart_putchar (UART0, 0x01);/ uart_putchar (UART0, 0x00);if(bufflag=1)if(j COL)if(ImageBufij = 0xff) ImageBufij-;uart_putchar (UART0, ImageBufij);j +;elsej = 0;i +;elseif(j = 0 ; j- )/左边白线起始点if(uint8)pDatastartlinej +(uint8)pDatastartline-1j + (uint8)pDatastartline-2j 300 )Leftlinestartline = j;Leftlinestartline-1 = j;Leftlinestartline-2 = j;LSLinelostFLAG=0;break;- 7 - 7 -/寻找起始线右边缘/中间向两边遍历for( j = 77 ; j = COL-1 ; j+ )/边白线起始点if(uint8)pDatastartli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论