基于STM32的自动泊车系统的设计与实现_第1页
基于STM32的自动泊车系统的设计与实现_第2页
基于STM32的自动泊车系统的设计与实现_第3页
基于STM32的自动泊车系统的设计与实现_第4页
基于STM32的自动泊车系统的设计与实现_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

随着车辆的激增,汽车自动驾驶技术的不断创新与发展,自动泊车系统尚未普及,为降低当下人工停车的难度,设计了一种基于STM32F103ZET6实现自动倒车入库和侧方位停采集到的数据传送到处理器,处理器将数据转换为电信号驱动小车的控制L298N驱动模块,这些模块在KeiluVsion5编译环境下整合到一起,在路径规划下对小车进系统根据停车位识别在模拟停车环境下控制小车进行入库操作,满足了在不同的停车环境下进行智能化自动泊车,此系统属于嵌入式系统兼容于多数汽车实现侧方位泊车和倒车入库并自行细微调整,实现更稳定的入库停车。TheAutomatedParkingSystem(APS)isoneoftheimportanttechnologyforAutonomousvehicles.Withtherapidincreaseofvehiclesandthecontinuousinnovationanddevelopmentofautomotiveautomaticdrivingtechnology,automaticparkingsystemshavenotyetbeenpopularized.Inordertoreducethedifficultyofmanualparkingatpresent,thereisTheautomaticparkingsystemusesinHC-SR04module,trackingTCRT5000module,andstandardIperformenvironmentaldetection,realizeobstaclerecognitionTransmittedtotheprocesunderpathplanningThealgorithmdesignofthecameetstheintelligentautomaticparkingindifferentparkingenvironmmorestableparking.1.1项目意义 11.2研究内容 11.3论文结构 22系统需求分析 22.1控制器的需求分析 22.2传感器的需求分析 32.3驱动部分需求分析 32.4系统可行性分析 32.4.1经济可行性分析 32.4.2技术可行性分析 43系统设计 43.1主板设计 43.1.1芯片选择 43.1.2集成开发板 53.1.3开发环境 73.2驱动设计 93.2.1电机驱动 93.2.2红外遥控设计 3.3传感器设计 3.3.1循迹模块 3.3.2红外避障模块 3.3.3超声波模块 3.4小车成品 3.5泊车算法设计和环境搭建 3.5.1侧方位泊车 3.5.2倒车入库 4.系统测试 5.总结与展望 错误!未定义书签。11系统概论工业革命带来的极大生产力使得全球的汽车保有量逐年激增,国内的个体私营经济的快速发展,道路的不断完善,促进了私人汽车购买的热潮。根据汽车数据共享,全球汽车数量一个十五年两倍增长量,到2019年中国汽车保有量以2.53万亿成为全球第一超越美国2.5万亿的汽车保有量,迄今为止全球的汽车保有量已经超过10万亿辆。一方面随着我国城镇化和机动化进程的快速推进,国家为更好地支持、规范和引导城市停车设施建设,将其写入了《“十三五”规划纲要》,智能化泊车系统与城市停车设施的建设相辅相成,致力于解决这一民生问题,泊车系统这一智能技术也是非常有效的投资领域。另一方面智能化的全球覆盖,自动泊车系统一直处在研究历程中:①1992年由大众概念车IRVWFutura上搭载APS②2005年,雪铁龙研发CityPark系统③2007年丰田安装IPA系统④2008年德国奔驰、大众等企业将CityPark的低造价和IPA结合在一起⑤2010年中国德赛西威开发出2D全景泊车系统⑥2016年中国德赛西威推出3D全景泊车系统。随着目前汽车智能化研究如火如荼的发展和进步,特别是传感器技术的快速发展,各国均把更为便利的自动泊车系统作为自动驾驶系统发展的重要组成部分。11.1项目意义目前我们所能见到的汽车企业大多数都控制在L2级半自动驾驶,其中包括半自动泊车系统:传感器技术的组成配合下收集精确的环境信息实现“泊车路径规划”、系统进行“车辆控制”等功能,在部分自动泊车(高级泊车辅助APA)系统的辅助下驾驶员可以在监控下实现泊车动作。现实中,车辆激增带来的停车问题变得更加复杂,大城市停车空间有限,将汽车驶入各式各样的停车位置是每个驾驶员一项必备的技能。与之相随而来的交通压力、复杂多样的停车环境、有限苛刻的停车空间,停车难成为众多驾驶员的一大难题。泊车过程中出现的轻微碰撞以及剐蹭事件的频繁发生,市场需求的增长,环境检测基础的相对成熟,推进了自动泊车系统研究的技术发展。1.2研究内容而影响自动泊车的关键技术有两部分:停车位检测和车辆控制系统。泊车对停车位检测做的越精确,我们对车辆所在的环境下的控制效果就更好,而控制转向系统主要是速度和方向的算法设计。现状自动泊车系统属于汽车中的超前配置,所以在前期技术开发模拟下,可使用模型小车进行测试完善。(1)速度转向控制的算法控制和路径规划的数据收集:2速度转向控制主体为:驱动设计、电机控制、红外遥控设计、WIFI视频显示,这一部分提供了模拟汽车行驶的一些基本条件,最后利用本系统的处理将相关的控制信号通过通用输入/输入口发动给个执行器来达到速度转向控制车辆进行泊车动作。路径规划主体为环境检测模块:循迹模块、红外避障模块、超声波模块。利用传感器收集的数据确定小车的实时行驶轨迹,以及车位四周的环境信息,这是本设计主要的难点也是主要的研究方向(2)模块测试与环境搭建,最终目的功能测试:逐一模块的进行测试环境搭建,并设计出模拟各类停车的停车环境,将所有的传感器熟悉掌握,最终集成,根据泊车的不同方式,设计算法搭建出最终的路径规划实现自动泊车。在汽车智能化技术下,国内泊车系统的稳定性和安全性方面还稍有不足,但在场景识别率和自动化程度等方面甚至已经实现了弯道超车,可以看出国内厂商技术创新和装车速度是首屈一指的。反观国外厂商选择更加稳健的路线,他们放缓了功能迭代速度,但从结果看,流畅度还是可靠性都要比国内更胜一筹。本设计致力于帮助驾驶员解决停车效率、实现停车规范、降低泊车操作、提高驾驶员的舒适度,也为国家拥挤的大城市城市停车设施建设提供了更好的条件。1.3论文结构本论文开头通过对汽车增长的背景下进行概括,提出泊车系统的研究意义,指出自动驾驶下的泊车系统拟解决的问题,包含系统设计的研究方向。随后主要描述构成泊车系统各个模块的需求分析、可行性分析:以便于寻找适合本系统和符合技术条件下的的硬件模块,主要部分为系统详细设计,文中详细的写出了每一个模块的详细介绍和实践,以及在本系统设计中的实现方法、配置方法、拟实现的目的,再结合模块进行测试环境的搭建。最后一部分描述核心算法设计过程:包括侧方位泊车算法和倒车入库泊车算法,在配合各个模块的算法计算下组合而成的泊车功能,在搭建的测试环境下进行测试数据收集,体现在测试环境中的结果,最终进行总结与展望。2系统需求分析2.1控制器的需求分析需要精确检测到小车周围的环境,这就意味会有多个外设加入到系统中来,对于芯片的选型优先考虑高性能、低成本、低功耗的嵌入式处理器。本设计使用的STM32F103ZET6芯片拥有3个ADC、11个定时器13个通信接口。可以实现快速数据处理,提高系统的运算速度和停车效率。其他处理芯片提供了与STM32单片机串口通信,容易做到两款MCU进行串口通信。32.2传感器的需求分析就如人本身的身体感官一样,我们通过感知来得知外界环境,要完成汽车自动驾驶下的自动泊车。小车周身需要安装一些”感官”,跟随现代传感器精度的提高,本设计需要加入传感模块要能够做到分辨障碍物,感应停车线,停车时的实况,包含了多种等收集环境信息,适配于不同环境条件下进行自动泊车。需要满足对线条的产生区别,本设计采用的TCRT5000传感器对黑、白色吸收作用平HC-SRO4超声波测距提供2cm-40cm的非接触式距离感测功能,摄像头模块在车尾可2.3驱动部分需求分析为了更真实模拟汽车运作状态,本设计采用了四个电机,用开发板上的L298N来驱动,L298N是ST公司生产的一种高电压、大电流电机驱动芯片。基于转向可以通过控制两边差速,开发板上只焊接了两个L298N驱动芯片。控制部分采用红外遥控来实现对小车的初步控制,红外线遥控是目前使用最广泛的一种通信和遥控手段,从原理上来讲,通用红外遥控的芯片有发射和接收两部分,遥控还可以通过WIFI模块以串口的方式跟主控板实现通信对小车进行控制,WIFI模块采一个TTL232串口,支持无线安全功能WAP-PSK/WPA2-PSK加密。2.4系统可行性分析本系统属于嵌入式系统,系统由功能模块组成,具有强大的扩展型,每一个独立的模块具有特别的功能,集成到一起组成了自动泊车系统。通过STM32F103ZET6主控芯片处理这两个关键部分的数据,车位检测:两个超声波传感器、五路红外循迹模块,两个红外避障模块、摄像头图像采集;控制系统:WIFI无线传输控制,控制转向算法设计,车速检测模块,电压显示。最后通过模型小车在设计好的环境下进行测试,使之实现对2.4.1经济可行性分析系统的设计可以不完全要求在实际汽车上运行,本设计使用小车进行汽车的模拟运作,各类模块的普及也使得价格大大降低,相比于整个汽车的系统集成,这套自动泊车系统只需要几款成本不高的传感器和摄像头,主控芯片STM32系列专为要求高性能、低成本、低功耗的嵌入式应用系统专门设计。42.4.2技术可行性分析中为主的研究方向是路径规划,而基于路径规划的环境检测技术也为重点。如今传感模块的成熟,使得与MCU的通信变得更加容易,解决了这一技术难点,便可实现自动泊车系统。3系统设计3.1主板设计3.1.1芯片选择意法半导体公司中的STM32系列芯片:增强型的32位ARM微控制器STM32F103ZET6的配置参数如下:高速存储器:高达512K字节的闪存和64K字节的SRAMSTM32F103ZET6的正常工作参数如下:丰富的增强I/O端口和联接到两条APB总线的外设,一系列的省电模式保证低功耗应用的要求,完美支持了多种传感器数据以高速率传送给主控,STM32F103ZET6器件功能和配置如图2.1所示。定时器8个定时器8个DAC12通道ADC12通道图3.1芯片器件功能STM32F103ZET6高密度性能线系列提供六种不同的器件根据所选设备的不同,5DMA总线矩阵包含了从64引脚到144引脚。包括外围设备,可在72MHz频率的高速嵌入式存储器(最大512KB的闪存和SRAM(最大64KB),以及广泛的增强型1/O和外设连接到两个APB总线。所有器件均提供三个12位ADC,四个通用16位ADC。四个通用16位定时器加上两个PWM定时器,以及标准和高级通信接口:最多两个12C,三个SPI,两个l2S,一DMA总线矩阵ICodeICodeCortex-M3SRAMFSMCSDIO正企复位和时钟DC1DMA请求SAFSPIITIM1TIM8TIM4TIM3JSARTDMA请求ai14800c通道7GPIOCGPIODGPIOGPIOFCDKSPI3N²SSPI2N2SWDG桥接2桥接1TIM7TIM5UARITSUART4USART3ANWiWRKP通j道!EXTiAFIODMA1ADC3DMAPB1B2图3.2芯片系统架构包含着五个驱动单元:ARMCortexM-M332内核DCode总线(D-bus),和系统总线(S-bus)通用DMA1和DMA2,以太网DMA。三个被动单元:内部SRAM,内部闪存存储在时钟树的配置上,所有外设加入后的时钟配置根据功能模块所在的桥上进行配置,在使用一个外设之前,必须设置寄存器3.1.2集成开发板芯片的总体结构架构如图2.2,在确定了自动泊车系统以STM32F103ZET6为主控控制核心,支持引进多种传感器模块构成路径规划,并由系统运算控制小车进行自主泊车运算,采用由STM32F103ZET6的集成开发板如图2.3。6不年自而三上二当制有对情为对到廷对或粥制声事不年自而三上二当制有对情为对到廷对或粥制声事memeGND:PD7PD5恶PAIEPDIIFD9FBISFBITONDGNE正要FBS图3.3开发板的芯片引脚图开发板的芯片引脚图如图3.3,144个通过输入/输出口能够承载多个传感器和控制器的加入。购买的开发板讲芯片的管脚引出,外设的加入可使用杜邦线连接,相应的模块加入可以根据自己选择的IO口进行配置,集成开发板如图3.4所示。73.1.3开发环境是一家业界领先的微控制器(MCU)软件开发工具的独立供应商,它提供了包括C编译器、宏编译、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案。当创建一个完整的ARM项目,需要先在官网下载相应的功能C文件和头文件如图misc.estm32f10xadc.cQ22610xbkpstm32f10xcec.c☑stm32f10xcrc.c*22610ydbamcu32610ydmatstm32f10xrtc.cstm32f10xtim.c2010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310;392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:392010-04-2310:39大生C文件46KB43KB3.5需引进的文件件路径,选择编译器版本。后期也可以由他来完成仿真调试的动作下载器如图3.6所示s.CVKs.CVKSTMe&STM32STMe&STM328OptionsforTarget'armdemo'DeviceTarget|OutputSTMicroelectronicsSTM32F103ZEARMCompiler:ARMCompiler:V5.06update6(build750)STM32F103cx.svdRead/WnteMemoryRead/WnteMemorydefaultoff-chipon-chipdefaultoff-chipon-chipStartupROM1:ROM2:ROM3:on-chipx20000000Ox10000☑●√IROM1:x20000000Ox10000☑●0K8ancelDefaultsHelpx-MTargetDrwBwintwet|oatatBwintwet|oatat]listingllelcew|n|tisuSberlnilitis|SeergAlgerieSeergAlgerieFTuk可SeingResTeeUaSeedsProgramversyResTeeUaSeedsProgramversyResatandRun√Aetosand√AetosandT√Be*pors√Be*pors☑WachWntewyTobespmVh?SrtmWe08000000H-0807FFFFHDeviceSire512kDemiceOn-chipTreeRash√MeTM32F10x√MenenDpsaart「saart「AddfaltNelpfaltdistance_cm_ifdistance_cm_ctrl_comm*return;确理取满确理取满if(dist对项目进行的设置和将程序写入到开发板中的设置并进行仿真调试的设置如图3.7控制电机的占空比可以在AnalysisWindows查看波形输出,红外遥控解码之后的控制值可以在Watch中通过变量值的实时变化来进行调试,与之超声波测距的距离也可以通过计算形成变量在Watch中查看,定时器的计数器状态、串口的发送与接收、传感器接收到的不同电平值等等都可以被监控。另外一种则是进行选择烧录方式进行有实物的芯片仿真。强大的仿真功能提供了多个模块的监控,我们可以看到寄存器的状态和移位操作,也可以看到变量的实时变化,也可以通过AnalysisWindows查看PWM波形输出等。仿真窗口的选择如图3.8所示。9mmsIE新建文件夹\4-1、STM32-4WD-FileEditViewProjecFlash智能小车2017板\4-1。STM32-4WD-智能小车2017版)1、STM32DebugPeripheralsToolsSVCSWindowHelp智能小车视频教程38课\27、STM32智能小车视频数程STM32趋声波魔术手实验\超声波魔术)0.00002899Power,ResetandClockControlWatchdogTimenDLEDTogsle(LEDPIN):57.40x8000r0,[r4,*0x00]r0,#Ox0s)interfsce46.IWDGnit():nM1nM10NM11NM12NM13TM14NM2SPIU5BWWDGUltraScServolrwhile(1)ifwhile(1)ifTCK=0;3.8仿真窗口3.2驱动设计3.2.1电机驱动为了更真实模拟汽车运作状态,本设计安装了四个电机,如图3.10所示。本设计通过PWM占空比来调节直流电机的转速,并通过控制前后轮的不同速度完成小车的转向。电机用到了主控板的8个IO口,通过对电机的高低电平控制使之正反转,电机分有正负极,前进时:先将正极的电平置1,负极复位0;后退则正极复位0,负极置1;停止则都复位0。对于电机通用输出\输入的IO口的配置如下表:表3.1电机与芯片管脚配置表GPIO_Pin_13GPIO_Mode_Out_PPGPIO_Pin_11B正极GPIO_Pin_11B负极GPIOPin_0BDOWNC正极GPIOPin_6C负极GPIO_Pin_9GPIO_Pin_2小车由于左右两边各用一个驱动,所以A和C两个电机只需要C电机控制,B和D电机只需B控制,这里将D电机控制脚当电机使能:将DUP和DDOWN的电平置1。使用TIM2定时器来产生1US的定时,TIM2的时钟为72Mhz,通过分频,时钟分为10000HZ。配置的代码如图3.11所示TIMTimeBaseInitS.TIMPeriod=100-1;TIM_TimeBaseInitS.TIMPrescalTIM_TimeBaseInitS.TIM_ClockDivision=0;图3.11TIM2分频设置初期,占空比来实现对小车速度初步的控制,开启芯片的TIM2定时器,启用TIM2的时钟,配置分频频率,采用向上计数模式,配置的频率公式如下:72MHz/72/100=10000Hz①开启中断,使用中断更新的状态来编写中断函数来达到us级计数器。电机驱动部分是由开发板上的L298N来实现,常见的15脚Multiwatt封装的L298N双H桥直流电机驱动芯片的基本参数如下类型:全桥输入类型:非反相输出数:4电流-输出/通道:2A电流-峰值输出:3A电源电压:4.5V~46V额定功率:25W。工作温度:-25℃~130℃安装类型:通孔内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机,并联时可以驱动四台电机,L298N电机驱动原理图如图3.12所示。小车由于两边各用一个驱动,所有A和C两个电机只需要C控制,B和D电机只需B控制,左右电机的电机驱动原理图如图3.13所示图3.13左右电机原理图并同时开启TIM2定时器的IRQ中断,设置中断级别,编写中断函数,在中断函数中设置了一个控制电机占空比的变量值speed_count:在定时器中还可以设定其他变量值,以此来作为其他精准定时的延时计数。中断函数如图3.14所示170日{172白176白181日if(TIM_GetITStatus(TIN2,TIM_IT_Update)!=RESET)tick_5ms++;if(speed_count>=50)speed_count=0;Motor_Control();图3.14中断函数配置通过与speed_count差值对比,并赋值给每个电机不同的变量值来达到占空比以此实现对速度的控制,而在这里一个周期为50US,假设赋值电机速度为20US,那么会有20US的高电平和30US的低电平。控制电机正转和反转速度算法如图3.15所示。B_GO;B_STOP;elseif(B_SPEED_DUTY<0)//向后B_BACK;else//停止//停止B_//停止B_STOP;图3.15电机控制函数3.2.2红外遥控设计用户码:00FF图3.16红外遥控器本次采用红外遥控来实现对小车的初步控制,红外线遥控是目前使用最广泛的一种通信和遥控手段,具有体积小、功耗低、功能强、成本低的优点。通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,发射部分包括键盘、编码调制、LED、红外发送器;接收部分包括光、电转换放大器、解调、解码电路。红外遥控器发送和接收如图3.16、图3.17所示输入设备键盘输出设备红外发光管输入设备红外接收头输出设备XXXX图3.17红外遥控器图3.18红外接收及解码在开发板上的红外接收头的主要参数如下:工作电压:4.8~5.3V接收频率:38kHz峰值波长:980nm静态输出:高电平输出低电平:≤0.4V输出高电平:接近工作电压1.引导码:MCU检测到正确的引导码之后确认接收后面的数据,以此来保证数据的稳定性和正确性,2.客户码:区分不同红外遥控设备3.操作码:客户操作时产生的编码,通过操作的不同产生不同的码值,等待红外接收头接收。4.解码:芯片通过接收到的电平信号,解析操作码的码值,MCU在根据码值做出相应动作。红外接收端原理图如图3.19所示。VCCP3.2在本次设计中,我用了9ms而按键则是按照键值:0:0.56ms的高电平+0.565ms图3.19红外接收端原理图的高电平和4.5ms的低电平来作为引导码:的低电平的低电平最终根据键值发送二进制数码给红外接收端进行解码。波形图如图3.20所示图3.20波形图作为红外遥控控制,自然而然的采用中断控制法,在本次设计中,我采用了通过外部中断边沿检测器。初始化相应的GPIO管脚配置外部中断源并进行中断源和GPIO的连接编写相应中断源的中断处理程序,在中断后,接收到红外遥控信号便进行解码,随后通过MCU处理来实现相应的动作。红外的中断函数配置及中断函数如图3.21所示。EXTI_InitStructure.EXTI_Line=IRIN_EXITLINE;//将对应的GPI0口连接到中断线上EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//中断事件类型,下降沿EXTIInitStructure.EXTIMode=EXTIMode_Interrupt;选择模式,中断型EXTIInitStructure.EXTILineCmd=ENABLE://使能该中断EXTI_Init(&EXTI_InitStructure);//将配置好的参数写入寄存器voidEXTI15_10_IRQHaEXTI_ClearITPendingBit(IRIN_EXITLINE);//清除中断标志IRIntIsr);图3.21EXIT中断函数配置8留的留的留留思即品根据遥控器提供的键码,优先满足小车的基本运动,前进、后退、左转、右转、以及停止,设计算法,短按则为200MS运作,长按则持续运行。预留其他按钮进入自动驾驶状态,即:循迹模式、避障模式、超声波模式、摄像头模式、侧方位自动泊车,倒8留的留的留留思即品车入库自动泊车等。功能分布如图3.22所示。基本动作,左右0测方位自动泊车动泊车图3.22遥控按键分配根据引导码的持续时间,再计算高电平的时间,最后讲解码所得到的数值存在数组里面,再经过转换,根据红外标志位的判断对小车进行初步控制,小车的基本模型便已解码得出的基本指令代码如图3.23所示。|//指令定义|//指令定义if(ir_rec_flag==1)//接收到红外信号ir_rec_flag=0;CarCo):break:CarBack();break;CarLeft();break;CarRight();break;sensor_flag=0;CarStop();break;’A’//前进 图3.23按键指令经过设计如果按键长按时间达到1S,将持续运行所按下的指令,如果短于1S只运行一次,这样的设计利于自动泊车中的转向角度精准和速度控制,以至于实现更完善的自动泊车。机动控制部分中包括的转向控制和刹车控制在此基础上便于后期与传感检测的互相融合。3.3传感器设计3.3.1循迹模块图3.24循迹模块遵循既有的道路现状,给定小车相关的循迹算法,基于一个三路循迹和两个二路循迹的循迹模块,使得小车自动行驶在路劲规划下,称为循迹技术。三路循迹(左)二路循迹(右)如图3.23所示。对于循迹模块通用输出\输入的IO口的配置如下表:表3.1.1电机与芯片管脚配置表三路右GPIO_Pin_13GPIO_Mode_Out_IPU三路中GPIO_Pin_8三路左GPIO_Pin_11二路左GPIO_Pin_1二路右GPIO_Pin_3TCRT5000传感器的红外发射二极管不断发射红外线,当发射出的红外实现没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,若反射回来的强度足够大,光敏三极管达到饱和,便输出一个高电平,点亮二极管,三路循迹和二路循迹的原理图如图3.25所示VCC三路寻线VCCVC图3.25循迹原理图对于停车规范来讲,车辆处于停车线内即可,在停车线与地面的颜色上有明显的区别,循迹模块在本系统设计中为车辆的环境检测提供重要的一环,在车辆自动驾驶技术下,通过收集的停车线的颜色进行车位的判断是至关重要的一步,当采集到停车线的时候,循迹模块给MCU一个信号,MCU进而对车辆与停车线所处的位置进行处理,并配合其他模块采集的数据进行车辆控制虽而实现自动泊车。本设计将三路循迹模块放在车两路循迹模块采集到一个信号,对车辆进行停车操作。当两路的循迹模块都压过停车线时,车辆的转向已经足够,并由此进行下一步的操作。当采集到循迹模块反射的信号时,进行车辆控制的测试算法编写,测试算法编写如图3.26所示14中2if(SEARCHM_DATA==BLACK_AREA&&SEARCHLDATA==BLACK_AREA&&SEARCH_R_DATA==BLACK_AREA)CarGo();return;if(SEARCHRDATA==BLACK_AREA)//右//ctrl_comm=COMM_RIGHT;CarRight():elseif(SEARCHLDATA==BLACK_AREA)//左//ctrl_comm=COMM_LEFT;elseif(SEARCH_M_DATA==BLACK_AREA)//中CarGo():/ctrl_comm=COMM/ctrl_comm图3.26循迹控制利用红外对管循迹法:利用黑、白色对红外线的吸收作用不同来进行判断。为测试模拟停车的垂直停车线和平行停车线,并用与小车大小相近的障碍物模拟已经停好的其他车辆,由此对路径规划的部分进行完善,为车辆控制算法提供基础。3.3.2红外避障模块图3.27红外避障模块红外光电传感器(HJ-IR2),发射出探测的脉冲,当在一定距离中探测到物体会重新输入到MCU中进行处理,它相当于一个红外开关,检测到障碍物输出低电平,未检测到则反之。在得知在停车过程中遇到的障碍物可以依据此对小车进行控制避免碰撞,此为接收管接收到信号之后,经集成电路进行放大,会点亮模块的LED灯管,并同时输出给MCU一个低电平信号。红外避障放大电路如图3.28所示图3.28红外避障放大电路基本硬件:红外发送管和接收管,通过对502可调电阻和103可调电阻的调节来实现探测距离的不同,变送电路:模拟量:数字量:将模拟量经过比较器输出开关量。采用两个避障模块,分别安装在小车尾部的左右两侧,可以随之判断停车时障碍物所在位置,使MCU进行相应处理。在自动泊车的路径规划中,遇到各种障碍物也是本设计重点考虑的一点,现实停车中,车位前后又或者车前左右是会有各类车辆,本设计中不论车辆还是一些固定的物体统称障碍物,红外避障模块的加入为周围的环境检测有否符合停车的条件,在另外一方面也在停车中保留了车辆与障碍物的安全距离。本设计将红外避障模块加在了车尾的两端,当车辆在缓速行驶寻找可供停车的车位对于红外避障模块通用输出\输入的IO口的配置如下:右避障左避障3.3.3超声波模块HC-SRO4超声波测距可提供2cm-40cm的非接触式距离感测功能测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。本设计利用超声波传感器来达到对自动泊车中精细调整。小车在进入自动泊车模式后,环境检测部分会通过超声波收集左右部掐障碍物的具体位置,在侧方位泊车中可以利用检测前后车辆的停车距离,倒车入图3.29超声波模块超声波的工作环境和工作原理:1、给超声波模块接入电源和地。2、给脉冲触发引脚(trig)输入一个长为20us的高电平方波3、输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚(echo)端的电平会由0变为1;(此时应该启动定时器计时)4、当超声波返回被模块接收到时,回波引脚端的电平会由1变为0;(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长。5、根据声音在空气中的速度为344米/秒,即可计算出所测的距离。首先MCU先发送至少10us的高电平,触发HC-RSO4,模块内部发出信号是传感器自动回应的,我们不用去管它。输出回响信号是我们需要关注的。信号输出的高电平就是超声波发出到重新返回接收所用的时间。本次设计利用TIM3定时器,可以把这段时间记录下来,算出距离,由于波的来回性,最后结果要除于2,因为总时间是发送和接收的时间总和。超声波测距的算法工作如图3.30所示//延时的方式读取距离值voidGetDistanceDelay(void)//发送触发信号Tr1g_SET;otatus=1;TIM_SetCounter(TIM4,0);IINCmd(TIM4,ENABLE)://打开定时器while(TIM_GetCounter(TIM4)<11);//延时超过10umatatus-2;Trig_RESET;TIM_SetCounter(TTM4,0);while(Echo-0)//等待回向信号起始位置1r(TT_GetCounter(TIN4)>60000)//回应时间超出正常范围TIM_Cmd(TIM4,DISABLE);//关闭定时器return;//本次失败TIM_SetCounter(TIM4,0):1)//算长度intcount-TIMGetCounter(TI4):1t(count>60000)//回应时间超出正常范围:cm=0://失败后就后退TIMCmd(TIM₄,DISABLE)://关闭return;//本次失败d1gcount=TIM_status-~0;//准备下次发送图3.30超声波计算函数本设计模拟倒车途中的后视摄像头,将倒车时的情景展示在与上位机的屏幕当中,模拟出更真实的停车环境,实时监控倒车时的情况,并通过WIFI模块,在上位机编写WIFI模块采用标准的IEEE802.11n、带有1个10/100MbpsLAN/WAN复用网络接口一WIFI热点名称为:hjwifi2014。WIFI中的固件包括着一款芯片,可以同单片机进行串口通信,在上位机发送指令给本设计用Windows10作为上位机对WIFI发送指令,需要用到Microsoft.NETFramework,它是用于Windows的新托管代码编程模型。它强大功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并启动PC端软件,可以看到设计好的画面中的操作指令,指令也可以通过软件中修改,来达到不同的控制。软件名称如图3.31所示2017/1/2810:36文件夹Config2017/1/2810:372017/1/2810:362017/1/2810:36文件夹文件夹配置设置HJduino2017/1/2810:33应用程序HJduindWifRobot.vshost2017/1/2810:332017/1/2810:33ProgramDebug应用程序WifRobot.vshost.exe.manifest2016/7/1619:44MANIFEST文件图3.31PC控制软件软件中的界面基本满足对小车的基本控制,附带有打开摄像头的指令,在设置中也可以按照需求编写新指令发送给主控芯片。操作界面如图3.32所示舵机1舵机2舵机3能机4能机5舵机呻叭设置拍昭视频车灯异步收发器,它利用分数波特率发生器进行高速数据通信。RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器同时用于数据的发送和接收。PC端操作指令修改如图3.33所示。在本设计中,同时开启数据的收发,根据收到的WIFI信号进行判断,串口WIFI解/*Readonebytefromthereceivedataregister*/rec_data=USART_ReceiveData(USART3);if(start!=O&&rec_data!=Oxff)//如果已收到包头并且当前收到的不是包尾{buf[start-1]=rec_data;//缓存数据『elseif(start!=O&&rec_data==Oxff)//如果收到包尾{mode[0]=buf[O];//给状态存储数组赋值mode1=1;//指示主函数循环检测一次elseif(rec_data==0xff&&start==0)//如果收到的是包头}PC端可以修改相关的指令代码,修改指令如图4.11所示。图3.33PC端指令3.4小车成品本设计将超声波安装在车身中位,红外避障模块安置在车尾的两端,两路循迹模块安置在车尾两端,三路循迹模块则安装在车尾中部。成品的小车如图3.34所示图3.34小车车尾摄像头则安装在车尾处,可以观察倒车时后视的环境,也适用于作为图像处理的后续功能推进,WIFI模块在开发板的下方,不影响信号的前提下也得到了合理的空间放置。各个模块在本系统辅助的功能都不相同,但又息息相关。避障模块可以检测前方是否有障碍物,超声波模块可以根据障碍物的距离进行车辆调整,循迹模块根据停车线的位置来对小车的路径规划,由图3.35所示图3.35小车功能模块分布图3.5泊车算法设计和环境搭建常见的泊车方式有:侧方位泊车和倒车入库泊车,本设计根据两种泊车方式设计了3.5.1侧方位泊车1.侧方位泊车环境分析与搭建侧方位停车位的设置主要是为了道路的宽度而设置,机动车驾驶证考试中的科目二就有一项侧方位停车法。本设计由科目二驾驶中的侧方停车为标准,侧方位泊车如图图3.36侧方位泊车示意图本设计使用底色为白色的纸板粘接而成,在纸板上先用铅笔画出固定面积的侧方位停车位,停车线的宽度为1CM,颜色要和白色地板有明显的区分,采用黑色记号笔涂满1CM宽度的停车线。测试环境中设计为三个停车位和一条道路中心线,可以根据停车的不同场景,将障碍物和代替小车的物体放在相邻的停车位。2.侧方位泊车算法设计根据停车的不同场景,本设计通过收集的环境信息进行了不同的处理,并作出不同的控制电信号。如果未扫描到障碍物和相邻小车,系统主要通过循迹模块对停车线反射的强度不同来定位停车位的具体位置。具体算法逻辑如流程图3.37所示:选择侧方位泊车N车位满足停车条件调整小车位置Y左转左循迹模块=1左转右循迹模块=1左转200MS前进(速度减右转100MS摆正车身中循迹模块=1中循迹模Y后退(速度减半)N泊车完成图3.37侧方位泊车流程图以车位在车辆的左后方开始设计泊车算法:1、按下遥控器按钮平行泊车模式,开始检测周围环境信息,如果超声波反射回来的距离小于10CM则判断为障碍物,大于10CM则判断为无障碍物。2、减速后退直到超声波判断距离大于10CM且红外避障无感应。4、左循迹模块感应到停车线,系统收集到此时车辆左转角度,然后继续左转。5、右循迹模块感应到停车线,系统收集到此时车辆位置信息,由于小车左转角度还不足,系统此时再给予一个200MS的左转信号。6、车辆左转角度已经足够,停车时的车辆速度不能过快,修改高电平的占比,降低速度,给出一个持续前进的电信号7、中循迹模块感应到边缘停车线,小车停止。8、开始摆正车身,根据左转的角度,给出相同延时右转信号摆正车身9、右转进行时,对中循迹模块进行判定,如果收集到电信号,对小车进行后退调整,相关算法设计如下代码if(LL_DATA==BLACK_AREA){delay_ms(18000);}}if(RR_DATA==BLACK_AREA){delay_ms(18000);delay_ms(6000);delay_ms(18000);}}elseif(auto_flag==3)『{{}}}{SPEED_DUTY=20;delay_ms(4000);}3.5.2倒车入库1.倒车入库环境分析与搭建倒车入库是多数停车场中的停车建设,停停车场都有较为规范的停车线规划和停车建设,对于线条的感应也更容易,倒车入库示意图如图3.38所示图3.38倒车入库示意图本系统针对倒车入库的设计流程如图3.39所示选择倒车入库泊车N超声波距离>8cm后退调整左转左循迹模块=1右循迹模块=1前进(速度减半)后退100MS中循迹模块=1车身是否摆正N三路循迹对齐后退100MSY泊车完成图3.39倒车入库流程图1、按下遥控器按钮垂直泊车模式,开始检测周围环境信息,如果超声波反射回来的距离小于10CM则判断为障碍物,大于10CM则判断为无障碍物。2、减速后退直到超声波判断距离大于10CM,且红外避障未感应到障碍物,开始左转3、左循迹模块感应到停车线,系统收集到此时车辆左转角度,然后继续左转。4、右循迹模块感应到停车线,系统收集到此时车辆位置信息,5、车辆左转角度已经足够,调整车身,左转至车身垂直。6、根据车身调整位置,三路循迹在同一条直线上,给出前进信号。7、倒车入库完成。算法相关代码如下voidAUTO_Vertical(void){{{if(distance_cm<15){}{}{delay_ms(18000);}}{f(SEARCHLDATA==BLACK_AREA){delay_ms(18000);auto_flag=2;ʃSPEED_DUTY=10;if(SEARCH_M_DATA==BLACK_ARE

温馨提示

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

评论

0/150

提交评论