沥青路面裂缝检测机器人设计_第1页
沥青路面裂缝检测机器人设计_第2页
沥青路面裂缝检测机器人设计_第3页
沥青路面裂缝检测机器人设计_第4页
沥青路面裂缝检测机器人设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

-[4]针对阴影路面提出了一种基于局部阈值的路面裂缝分割方法,通过直方图均衡化的方式增加路面图像对比度,并采用分数阶积分的方法对图像进行去噪,选择适当大小的滑动窗口对每个像素进行阈值分割和连通域分析,从而分割出路面裂缝。1.2.2国外研究现状1970年后期,有部分国家把小型摄像机安装在车上,以此来获取道路的破损信息。道路在不断的建设,路面维护和检修的工作量也在不断加大,路面损坏的自动检测技术逐渐产生。就像加拿大的ROADWARE公司在上世界60年代末进行了路面数据采集的探索。由日本设计的Komatsu系统,使用摄像机、信号处理装置、传感装置以及记录图片的设备来对路面的损坏数据进行采集,并且在检测的设备车上装设人工光源来提供光照条件。将路面破损数据采集后,将这些数据全部保存在磁带记录器里面,同时又按照两个步骤来进行对破损数据的图像处理,这两个步骤是并行处理的。第一个步骤是进行图像分割以及路面特征的提取,第二个步骤是实现图像的噪声点去除、子图像的融合以及复原。在当时的硬件技术条件下,该系统是最先进的代表。但是在对裂缝类别的判断上仍然无能为力。除此之外,该系统还具有一些问题,比如只能够在夜间进行检测,因为要控制光照条件,同时检测车的速度要低于10Km·h-1,这些都是该系统没有得到推广的原因。在这一时期,瑞士的学者们在上世纪九十年代中期设计了CREHOS系统,他们的目的是要研发检测范围广、精度高的路面检测系统,以此弥足之前的一些不完善之处,比如在局部清晰度和实时处理技术上。该系统将采集到的路面信息存储下来,通过模拟方法分析得出道路破损情况,并能够对道路的破损进行类别的判断。该系统相比以往能够减短工作时长,在一定程度上提高了检测效率。可是系统所要求的路面环境比较高、路面状况条件要好。并且在进行检测的过程中不能做到全自动检测,需要操作人员来进行图像摄取以及处理分析,所以该系统仍然处于研究阶段。1990年末期,计算机视觉技术和摄影设备取得了很大的突破,CCD技术的进步尤为明显。因此,研发人员利用CCD技术来获取道路的图像信息获得了很大的进展。CCD相机抗冲击与震动能力强、噪声低、图像的畸变小。同时,对于所获取的路面图像信息可以直接通过采集卡来导入至计算机中进行存储或处理。电子元气件不断的发展,CCD相机的成本逐渐降低。因此,利用CCD相机和计算机视觉技术来实现道路破损检测的研究得到了很大的推广。“数字公路数据车”是由阿色州大学设计的路面裂缝检测系统。该系统可以进行实时路面检测,可以对路面裂缝的图像进行检测处理并且提供了系统实现工具。使用CCD相机来采集路面裂缝图片,相机被安设在检测车上。拍摄完成之后,利用GPS模块来对路面裂缝的位置进行确定,同时对于距离信息的获取是利用距离测量设备完成的。这些数据是通过双CPU的微型处理器采集的,采集完成后,这些数据被传输到一个计算机中进行实时的数据分析,该计算机拥有多个CPU,更适合完成大量计算。在该系统的帮助下,能够在比较快速和准确的情况下对路面的裂缝进行采集、检测以及对裂缝类型进行判定,裂缝图像的获取以及检测处理都在该系统中实现。但是由于数据量较大,需要利用强大的计算机来进行处理,对设备要求比较高。此外,美国ETC公司开发的PCES系统、IMS公司开发的PAVUE系统、英国WDM公司设计的路面裂纹检测车等都可以进行路面探测。在检测算法方面,AbdelQaderⅠ等人针对混凝土桥梁裂缝检测问题,比较了Sobel算子、Canny算子、Fourier变换和Haar小波变换四种检测方法的效果,得出结论,在裂缝检测中Haar小波变换是最有效的。MedinaR等人将Gabor滤波器进行改进,并设计出了一种路面裂缝检测方法,使用改良遗传算法设置滤波器参数,对图像的每个像素进行分类,从而实现了对于隧道混凝土裂缝的有效检测,并且可以不考虑裂缝方向,有效检测出任何方向上的裂缝。1.3本文主要内容总体而言,就裂缝检测方面来说,多数检测的方法是通过将设备安装在汽车上进行检测,对于独立的检测机器人而言研究较少。当前,国内路面已逐渐步入养护时期,越来越多的维护工作将会来临,在今后的检测工作中当中,需要一种效率高、精确度高、适用范围广的路面检测手段。可仍然有部分需要更加深入解决的问题,特别是在检测路面的破损情况方面,基于图像的路面损坏检测和识别方法还需要进一步研究,特别是对于裂缝的长度、宽度以及深度进行表征。本课题的主要内容:(1)沥青路面裂缝检测机器人的机身总体设计:主要针对于履带式底盘的机械设计,以及各部分机构的零部件选型;(2)电控模块设计:主要集STM32单片机控制技术、ESP32-CAM图像传输技术、电机控制技术、远距离控制技术于一体,并且配备了远程控制技术。设计出一款能够进行远程控制、实时显示路面检测结果的机器人;(3)裂缝检测算法设计:通过OpenCV中的降噪、形态学操作、边缘检测等算法处理来自图传模块的路面图像,完成裂缝检测。(4)将所有零部件搭接完成,并连接好硬件电路后,对其实物调试。主要对履带式底盘的障碍通过能力,裂缝检测的精确度等调试。2裂缝检测机器人总体方案设计2.1设计目标设计一种具备图像传输和远程控制功能的小型履带式机器人,并在电脑端利用OpenCV来对图像进行处理,完成裂缝检测。该机器人能够进行远程控制,工作人员可以在室内操纵机器人完成沥青路面的裂缝检测,提高检测的准确度与效率。该机器人采用差速驱动,利用两侧轮子旋转方向的不同来控制机器人的运动方向。2.2机械系统方案常见机器人移动方法有很多种,包括履带、三轮、四轮驱动,考虑到检测的路况存在沙粒、石块、陡坡等复杂路况,因此使用履带式底盘更为合适,控制效果也更好。使用履带式底盘时检测机器人在运动过程中表现更加稳定,具备一定的越障能力和防滑能力。为加强车体结构强度,检测机器人车身材料选择了铝合金板。检测机器人可以使用的电机类型种类繁多,其中含有直流电机、交流电机、步进电机、伺服电机等,一般而言运用最多的是直流电机,直流电机的起动和调速特性优异,有着比较广的调速范围,有很强的过载能力,较大的转矩,并且易于进行控制。经市场调研,本设计最终采用直流电机作为检测机器人的驱动电机。2.3电路系统方案设计嵌入式硬件时,首先要选择一款核心控制器,能够满足检测机器人各模块要求并留有一定余量。需要多方面综合考虑:接口数量、串口数量、ADC资源数量、定时器数量、价格、总线规格等。本设计中的检测机器人对串口和定时器有要求,同时又要满足价格较低,综合性能较好的32位单片机。经综合考虑本设计选用STM32F103系列单片机作为核心控制器。设计图传模块时,考虑体积和价格等因素,选择ESP32-CAM来实现实时图像的传输,其不仅可以完成无线图传,而且可以配合OpenCV完成图像处理,实现裂缝的识别与检测。设计降压模块时,由于考虑到该电路有两处都需要降压,因此选取LM2596SDC-DC降压模块来进行12V至10V的降压和MP1584EN降压模块来进行10V至5V的降压。前者用于为TB6612FNG电机驱动模块提供驱动电压,后者用于为单片机和ESP32-CAM图传模块进行供电。设计无线通信模块时,考虑到传输距离较远、环境相对空旷且传输的数据量较少。LoRa模块使用简单、成本低、通信距离远、体积小。因此选择LoRa模块来实现远距离无线通信,完成对机器人的远程控制。选用的直流电机型号为MG513,设计对应的电机驱动接口与电机驱动模块接口电路,便于使用单片机内置的定时器PWM输出口进行直流电机的驱动。TB6612FNG电机驱动模块来带动额定电压12V,额定功率4W,额定电流0.36A,堵转电流为3.2A的直流电机MG513。硬件框图如图2.1所示。图2.1硬件框图2.4软件程序方案图2.2主程序流程图2.4.1单片机程序本设计的电控程序通过STM32CubeMX来对单片机的引脚进行初始化,如图2.3所示。图SEQ图\*ARABIC2.3引脚功能配置图然后通过STM32CubeIDE,利用LL库来进行电控程序编写,电控程序主要包括三方面:第一方面是配置串口以及串口中断,当单片机收到来自LoRa的数据信息时,触发串口中断,在串口中断程序里面来具体判断所接收到的数据,并执行相应的操作;第二方面则是通过定时器配置PWM输出来控制电机的转动速度;第三个方面是配置电机转向的引脚,通过对这些引脚的电平进行置高或置低来控制电机的转向,进而控制机器人的前进、后退、左转、右转等动作。2.4.2图像传输程序图像传输程序是基于Arduino编写的,在图像采集及上传过程中,首先,OV2640摄像模块将采集的图像存储在PSRAM中,然后通过wifi.begin()函数启动ESP32的网络服务,初始化相机后再通过esp_camera_fb_get()函数拍摄图片,经http.begin()函数请求url、通过http.addHeader()函数请求头部信息,最后完成图像上传。2.4.3裂缝检测程序裂缝检测程序是在PycharmIDE上基于OpenCV开源视觉库进行编写的,首先获取ESP32-CAM传输在网页上的视频流,然后利用OpenCV中的功能函数以及将参数进行适当的调节,从而完成裂缝的识别与检测。2.4.4用户界面设计程序本设计的UI界面是由QtDesigner、PyQt5构建的,本UI中设置了QLabel控件、按钮以及对应的槽函数,从而实现相应的视频显示、图片显示、检测结果显示以及机器人远程控制的功能,实现了工作人员远程控制机器人和进行路面裂缝检测。3机械系统设计3.1履带底盘设计由于本路面裂缝识别机器人工作路况相对恶劣,路面可能存在沟壑、裂纹、坡度不一致以及存在凹凸不平的情况。一般的轮式底盘难以胜任此工作路况,故选用履带式底盘更为合适。它是轮式移动机构的拓展,履带可以增大机身对地面的受力面积从而降低压强,并且更容易穿过障碍物。本设计采用单节双履带式底盘,该结构的优点在于设计简单,驱动控制方便。由于本设计是在路面进行检测,不会出现上下楼梯的情况,故选用单节双履带式底盘更为合适。3.1.1连接架设计连接架是整个机器人的基础构件,用于搭载整个电路系统、ESP32-CAM模块及与驱动电机和履带等部分结构进行连接。因此需要满足强度高,质量轻,耐腐蚀等诸多优点。图3.1连接架示意图根据上述要求,本设计主要采用铝合金作为连接架材料。铝合金使用范围广泛,被誉为最有前途的合金。铝金属在空气中氧化,形成致密的氧化膜,因此其有较强的抗腐蚀性,易于焊接。强度较高,特别是抗疲劳强度高。不仅如此,该合金易于加工,比较容易成形。3.1.2侧板设计侧板用于固定主动轮、从动轮、承重轮和履带,是履带行走机构中必不可少的一部分,材质与连接架相同,均采用铝合金材料,通过L型连接件与连接架相连。图3..2侧板示意图侧板的全身开设通孔若干,分别用来固定驱动电机、主动轮、承重轮、L型连接架等零部件。3.2底盘驱动设计本设计的底盘采用履带式底盘,履带将主动轮和其他滚轮进行包围,使得轮子都不直接接触地面,而是通过主动轮的转动,再来带动履带与地面发生相对运动,同时履带在地面上不断地向前架设,进而带动机器人进行移动。3.2.1主动轮设计主动轮是将电动机的输出动力传递给履带,主要由齿圈或滚轮、轮毂及固定和连接件等组成。主动轮有齿圈式和滚轮式,采用齿圈式的较多。齿圈的齿形有凸面、平面和凹面三种。驱动轮与履带啮合的好坏,直接会导致整车运行过程中是否平稳。为保证履带的啮合孔可以顺利地进入和退出啮合,减少啮合时产生的冲击载荷,选择主动轮的齿形为凸性。3.2.2履带选型及设计履带将整车的重量传递给地面,因此履带的面积越大,与地面接触的压强越小,但接触面积多大,也会导致履带过重,转向不便,易脱落等。由于检测时的路况会出现凹凸不平的地面以及散落在地的砂石,因此还要有一定的越障能力。现目前我国的履带设计标准仅适用于部分大型工程机械,因此针对本检测机器人的履带选型设计均采用经验公式。(1)履带的节距t0t0=15~17.5式中:G——整车重量,kg。由于车声整体尺寸较小,以及为了增加运动的平稳性,适当降低履带节距。(2)履带板宽度b。由工作条件所要求的平均接地比压进行决定,宽度与接地比成反比。宽度越大,接地比越小。根据履带设计要求,为了降低平均接地比,以及保证较小的转向阻力,一般参照公式为:b=代入数据得:b=35mm(3)履带轨距B。其主要与履带板宽度有关,基本公式如下:B=3.5~4.5代入数据得,轨距为125mm。(4)履带的接地长度L0L0≈1.073代入数据得,接地长度为150mm。(5)履带接地长度校核。计算所需的L0L式中:B——履带轨距,mm;φ——牵引附着系数,详见下表;f——滚动阻力因数,详见下表;μ——回转阻力因数,详见下表。针对不同的路况“牵引附着系数、滚动阻力因数、回转阻力因数”存在较大差异。通过查阅资料,选取5种典型路况,具体数据如表3.1所示:表3.1针对不同路况的各项系数路况牵引附着系数滚动阻力系数回转阻力系数铺砌道路0.6~0.80.060.64柔软沙路0.6~3泥泞道路0.5~0.60.10~0.150.27收割后草坪0.7~0.9——结冰路面0.20.03~0.040.35以铺砌道路为例,将数据代入得,150满足条件。(6)平均接地比P,即在重力作用下,单条履带对地面的压强,基本公式如下:P=式中:G——整车重量,kg;B——履带宽度,mm;L0因此,根据上式可得,平均接地比P=0.00025kpa 3.2.3驱动电机设计为保证有足够的驱动力来应对凹凸的路面以及陡坡,需要选择出合适的驱动电机。在此选取MG513直流减速电机。该电机结构尺寸小,转矩较大,噪音低,电机实物如图3.3所示。图3.3MG513直流减速电机电机的基本参数如表3.2所示:表3.2MG513直流减速电机基本参数表序号参数名称参数1额定功率4W2电机类型永磁有刷3堵转电流3.2A4堵转扭矩4.5kg∙cm5额定电流0.36A6额定扭矩1.0kg∙cm7减速前转速11000rpm8减速后转速366±26rpm9减速比1:3010输出轴直径6mmD型偏心轴4电路系统设计4.1主控芯片选择本设计中选择STM32F103C8T6单片机为主控芯片,因为该芯片所占空间小、利于集成,耗电量低的同时性能强大。STM32F103C8T6单片机作为主控芯片,其配置了工作频率为72MHz的高性能ARMCortex-M332位RISC内核、高速嵌入式存储器(最高128字节的闪存和最高20k字节的SRAM),以及连接到两条APB总线的大量增强型I/O和外设。STM32F103C8T6提供两个12位ADC、三个通用16位定时器和一个PWM定时器,以及标准和高级通信接口:三个串口、一个USB和一个CAN、最多两个I2C和SPI。此芯片功能完善可拓展性强,性价比高且完全满足本设计外设要求。具体引脚介绍如图4.1所示。图4.1STM32F103C8T6正面引脚图STM32F103C8T6单片机核心板实物如图4.2所示。PB10、PB11、PA11、PA12输出高低电平,为两个电机的转向控制引脚。PB6和PB7为定时器4的PWM输出控制端,可以对电机转动速度进行调节。PA9和PA10分别为串口1的TX和RX引脚,负责接收来自LoRa模块的数据。图4.2STM32F103C8T6核心板实物图4.2电源模块因履带式底盘的动力来自直流减速电机,因此选择11.1V的直流电源。考虑底板空间大小、机器人重量以及续航能力,在此选择狮子品牌的6000mAh、放电倍率为40C的航模锂电池。具体实物如图4.3所示:图4.3狮子6000mAh锂电池实物图电池具体参数见表4.1:表4.1狮子电池基本参数序号参数名称参数1电压11.1V2容量6000mAh3尺寸155*46*30mm4重量约390g5持续放电倍数40C6电芯锂聚合物动力电芯4.3降压模块本设计中的降压模块有两种,LM2596SDC-DC降压模块用于将12V电源降压至10V,MP1584EN降压模块用于将LM2596SDC-DC降压模块输出的10V电压降至5V。4.3.1LM2596SDC-DC降压模块由于电源输出电压为12V左右,但TB6612电机驱动模块VM引脚的额定输入电压为10V以内。因此,无法将电源输出端的正负极与电机驱动模块直接相连,需要对电源进行降压调节。在此选用LM2596SDC-DC降压模块,具体实物如图4.4所示:图4.4LM2596S5降压模块该模块具有高精度电位器,顺时针升压,逆时针降压,并且搭载0.1uf的电容位于电路板两侧,对于除去高频噪声有明显作用。该模块具体参数见表4.2:表4.2LM2596S基本参数序号参数名称参数1输入电压3.2~40V2输出电压1.25~35V3输出电流3A(最大)4转换效率92%(最大)5输出纹波<30mV6开关频率65KHz7工作温度-45~+85℃8尺寸大小43*21*14mm4.3.2MP1584EN降压模块由于电源经过LM2596S降压模块之后电压降至10V,而STM32单片机、ESP32-CAM以及LoRa无线通信模块都需要5V供电,因此必须再加入10V降至5V的降压模块来为上述器件供电。在此选取MP1584EN降压模块,具体实物如图4.5所示。图4.5MP1584EN降压模块该模块体积小,可以实现固定电压输出,能够长时间工作控制在1.8A以内。该模块具体参数见表4.3:表4.3MP1584EN基本参数序号参数名称参数1输入电压7V~26V2输出电压5V3输出电流3A(最大)4转换效率96%(最高)5输出纹波<30mV6工作温度-40~+85℃7尺寸大小22.3*17*4.2mm4.4电机驱动模块根据前文计算,直流减速电机的型号为MG513,额定电压12V,额定功率4W,额定电流0.36A,堵转电流为3.2A。在此选取TB6612FNG电机驱动模块,具体实物如图4.6所示。图4.6TB6612FNG电机驱动模块通过查阅相关数据手册,TB6612FNG驱动模块易于用户使用并且所占空间小,能够以1.2A的恒定电流对两个直流电机进行操纵,其最大输出电流为3.2A。相较于传统的L298N效率上提高很多,在额定范围内,芯片基本不会发烫。该模块共有16个引脚,VM接入10V以内电源,其电压越大,电机转速越高。VCC接入5V电源,给模块供电。STBY控制模块工作状态,接单片机的引脚,单片机引脚置低时,电机全部清零;单片机引脚置高时,可以进行电机控制。通过AIN1、AIN2、BIN1、BIN2来控制两个电机的正反转。PWMA和PWMB接单片机的PWM输出引脚,用于控制电机的转动速度,电机转向控制引脚真值表如表4.4所示。AO1、AO2和BO1、BO2是电机驱动的输出端,分别与两个直流电机相连接。表4.4电机转向控制引脚真值表电机A电机B机器人AIN1AIN2转向BIN1BIN2转向转向00停止00停止停止10正转10正转前进01反转01反转后退01反转10正转左转10正转01反转右转具体参数见表4.5:表4.5TB6612FNG直流电机驱动模块参数序号参数名称参数1驱动电压4.5~10V2输出通道数2路3工作电流1.2A4峰值电流3.2A5控制电压3V~6.5V6尺寸大小20.5*20.4mm4.5无线通信模块由于需要远程控制机器人,而一般的蓝牙模块虽然可以实现无线控制,但距离受限。在机器人工作状态中远程控制的距离达到上千米,在此选取LoRa无线通信模块。其通信距离高达3Km,并且耗电量低、有较强的抗干扰能力,拥有实现功率消耗小以及传输距离远的优点。不仅如此,该模块配置与安装十分简便,容易上手。该模块与其他物联网无线模块相比,其成本更低,在无线通信领域有着更广阔的发展潜力。其使用效果远超过同类型的物联网无线模块。ATK-LORA-01无线串口模块因其体积小、功率低、功耗低、性能强、传输距离远等优点被广泛使用。该模块使用的是高效的ISM频段射频SX1278扩频芯片,其工作频率为410MHz~441MHz,信道以1MHz频率为步进,共有32个信道,可在线修改模块的串口速率、发射功率、空中速率、工作模式和自定义通讯密钥等各种参数,具体实物如图4.7所示:图4.7ATK-LORA-01模块具体参数见表4.6:表4.6ATK-LORA-01模块参数序号参数名称参数1调试方式LoRa扩频2工作频率410MHz~441MHz3通信距离≥3000M(测试条件:晴朗、空旷、最大功率20DB、空中速率2.4Kbps、外接天线)4通信方式串口(TTL)5放射功率100MW(20DB)6空中速率6级可调(0.3、1.2、2.4、4.8、9.6、19.2Kbps)7模块地址65536个地址配置8接口速率默认115200bps9天线形式SMA天线10工作电压3.3~5V11工作电流2.3UA~118MA12工作温度-40~+85℃13尺寸大小36*20mm14发射缓冲区512B大小的环形FIFO缓冲区15接收缓冲区512B大小的环形FIFO缓冲区该模块的引脚中,MD0高电平有效,运行时进入配置状态,可对其地址、波特率等进行更改。AUX引脚与单片机连接后,可以读取该引脚来获取模块的工作状态。RXD和TXD是串口的接收和发送引脚。VCC和GND为电源引脚。该机器人中,将配置两个LoRa模块,接收端位于机器人上,与单片机串口1连接,用于接收操作者发出的控制指令。发送端与操作者的电脑通过一个USB转TTL模块进行连接,用于发送操作者发出的控制指令。本设计中,将两块LoRa的各项参数配置成一样,波特率设置为115200,空中速率2.4K,模块地址为0,通信信道为24,发射功率为20dBm,工作模式配置为一般模式,发送状态配置为透明传输,如图4.8所示。配置完成后,两块LoRa模块之间便可以完成通信。图4.8LoRa模块配置图4.6图像传输模块由于需要将检测路面的情况传回PC端,在PC端进行图像处理,因此需要配置一个图像传输模块来完成此功能。为了达到无线图传、安装方便等要求,故在此选取ESP32-CAM开发板。ESP32-CAM开发板搭载了小型摄像头模块。该模块拥有完善的最小系统,可以单独进行使用,该模块体积小,耗电量低,续航能力强,在物联网领域被广泛使用。该模块采用功耗比较低的双核32位CPU,主频高达240MHz,运算能力高达600DMIPS,内置520KBSRAM,外置8MBPSRAM,支持UART/SPI/PWM/ADC/DAC等接口,支持OV2640和OV7670摄像头,内置闪光灯,支持图片WIFI上传,这一点也是选择该模块的重要因素。将ESP32-CAM与电脑连接在同一个局域网内,从而处理来自ESP32-CAM的图像。具体实物如图4.9所示。图4.9ESP32-CAM开发板4.7GPS模块由于在远程检测的过程之中,在发现比较严重的路面裂缝之后,需要对该裂缝进行定位,便于后期工作人员的进一步检测和修复,因此需要GPS模块来进行精准定位,实时跟踪机器人位置。在此选取集成化好的GPS定位器。该定位器采用的是MYK2503D芯片,位置更新快速。此外,该模块小巧易放,内置高聚能电池,待机时间长。可以通过手机软件和电脑网页来查看机器人的实时位置。5下位机软件设计5.1软件开发环境简介本设计中利用两个软件来进行单片机的开发,一个是STM32CubeMX,其是ST公司开发的一款图形化界面的单片机程序生成软件,利用图形化操作界面,能够相当便捷地配置单片机的一系列外设,时钟,中断,DMA等等各功能的一些参数,之后STM32CubeMX能够直接产生单片机各功能的初始化程序,这让开发的工作者能够将尽可能多的精力用于核心代码的研究之中,软件界面如图5.1所示。以往对于单片机的开发过程中,需要针对单片机的引脚以及外设做很多的初始化工作,非常繁琐。图5.1STM32CubeMX界面图另一个是STM32CubeIDE,这是一种高级C/C++开发软件,该软件能够很方便对STM32单片机进行外设的配置,同时在该软件中可以实现控制程序的编写以及调试工作。它支持集成数以百计的现有插件。STM32CubeIDE与STM32CubeMX配合使用能够加强工作效率,STM32在后者中配置好后,前者能够集成其配置与项目创建功能。两者结合使用可以带来一体化的感觉,能够很大程度上提高开发者工作效率。在界面中选择所使用的单片机型号,对单片机进行预配置,将创建项目并生成初始化代码。开发者在编写控制程序的过程中,随时都可以对外设或引脚进行重新配置,并重新产生初始化程序,在这个过程中也不会对开发者的程序产生影响,软件界面如图5.2所示。该平台来编写检测机器人的控制程序,可以很大程度上提高效率。图5.2STM32CubeIDE界面图ST有着非常丰富和便捷的单片机开发库。截至目前,提供了标准外设库(STD库)、HAL库、LL库三种不同的库。本设计中使用的库为LL库,LL库(LowLayer)对于硬件层更加紧密,对单片机中的外设都适用,但不适合比较繁琐的上层协议,LL库可以直接对寄存器进行操作。使用方法:LL库不需要依赖任何库,可以进行独立开发使用。在应用STM32CubeMX实现完单片机的配置之后,选中LL库进行代码生成即可。5.2引脚输出程序设计本设计中需要对PA11、PA12、PB10、PB11这4个引脚进行初始化,其中PA11和PA12控制电机A的转向,PB10和PB11控制电机B的转向,为了便于编程方便,同时增强程序的可读性,对这些引脚进行宏定义:然后,配置这些引脚的输出模式为推挽输出模式:推挽输出,可以输出最高到VCC,最低到GND的电压,可以很好地作为控制电机转向的引脚输出模式。最后,在主程序文件中包含文件,并对其进行初始化:5.3PWM输出程序设计本设计中需要将TIM4配置为PWM输出模式,在进行PWM信号输出时,有两种PWM模式:PWM1模式和PWM2模式。PWM1模式:递增计数时,当(计数值)<(捕获/比较值)时,输出的电平才有效,否则为无效电平。递减计数模式则刚好相反。PWM2模式:递增计数时,当(计数值)<(捕获/比较值)时,输出为无效电平,否则电平是有效的。递减计数模式则刚好相反。两种模式下的PWM信号波形如图5.3所示。图5.3两种模式下的PWM输出信号图本设计之中配置PWM的工作模式为PWM1模式,如图5.4所示。图5.4PWM1模式配置图同时,还需要设置PWM波的频率。首先,设置单片机的系统时钟频率为72MHz。PWM频率的计算公式为:(5.1)式中,f——PWM频率,HzARR——自动重装载值PSC——预分频系数时钟频率——72MHz本设计中,ARR为7199,PSC为199,经过计算可得f=50Hz,同时,周期为20ms。对PB6、PB7引脚进行初始化,设置引脚模式为复用模式,输出模式为推挽输出:配置完成后还需添加定时器的使能程序:最后,利用LL库函数设置PWM波的占空比即可进行PWM的输出:5.4串口接收及中断程序设计本设计中配置串口1接收来自LoRa模块的数据,将串口1设置为异步通信方式,波特率为115200Bits/s,如图5.6所示。图5.6串口配置图在串口1中,PA9为TX引脚,负责发送数据;PA10为RX引脚,负责接收数据,因此对于PA9引脚的配置应该为推挽输出模式:对于PA10引脚的配置应该为浮空输入模式:当串口1收到数据之后触发串口中断程序:将收到的数据用一个变量保存下来:5.5自定义函数设计为了使用方便以及增强程序的可读性,本设计中定义了6个函数:、、、、、。的作用是输入一个整型数据作为PWM的占空比:的作用是通过改变PB10、PB11、PA11、PA12的高低电平输出来控制两个电机的正转,从而控制机器人的前进:的作用是通过改变PB10、PB11、PA11、PA12的高低电平输出来控制两个电机的反转,从而控制机器人的后退:的作用是通过改变PB10、PB11、PA11、PA12的高低电平输出来控制左电机反转,右电机正转,从而控制机器人的左转:的作用是通过改变PB10、PB11、PA11、PA12的高低电平输出来控制左电机的正转,右电机反转,从而控制机器人的右转:的作用是通过改变PB10、PB11、PA11、PA12的高低电平输出来控制两个电机停止转动,从而控制机器人的停止:6裂缝检测上位机软件设计本设计通过OpenCV开源库来处理图传模块传输的图像,从而完成裂缝检测。OpenCV是一种开源计算机视觉库,它提供了一些用于处理图像和视频的工具和算法。它被用于各种各样的计算机视觉应用程序中,包括人脸检测、目标识别、图像分割、机器人视觉、运动跟踪、手势识别等,本设计中的裂缝检测程序流程图如图6.1所示。图6.1裂缝检测流程图6.1图像获取首先应该在ArduinoIDE中烧录ESP32-CAM的WIFI图传程序,通过串口获取ESP32-CAM的视频流上传网址。在保证开发板与电脑在同一局域网下,利用urllib库,它是

Python

内置的HTTP请求库。urllib库提供的上层接口,使访问网站上的数据就像访问本地文件一样。urllib.request模块提供了最基本的构造HTTP(或其他协议如FTP)请求的方法,利用它可以模拟浏览器的一个请求发起过程。利用不同的协议去获取URL信息。使用urllib.request模块中的urlopen()方法获取页面,其结果是返回一个类文件对象。再用Numpy库中的numpy.array()函数将列表中的数据转换为数组。最后用OpenCV中的cv2.imdecode函数来读取图像数据并将其转换为图像格式,主要是用来从网络传输数据中恢复出图像。图像获取的流程如图6.2所示。图6.2图像获取流程图6.2图像预处理图像预处理能够尽可能消除原始图像中所存在的干扰点、噪声点,将真实的裂缝边缘信息突显出来,让图像更具备可检测性,并且能够将图像数据信息进行缩减,使得图像处理的计算量减小,处理速度提高。本设计中进行图像预处理的原因是为了将图像锐化、减少杂质的干扰、平滑图像、突显裂缝边缘,使裂缝更加明显、检测更加准确。6.2.1灰度化处理图像的灰度化是指将彩色图像转化为灰度图像的变化过程,其目的是为了简化矩阵,提高运算速度。因为在彩色图像中,每个像素颜色是由R、G、B三个分量来决定的,而每个分量的取值范围都在0-255之间。彩色图像中,每一个像素点就会有2563=16777216种可能性存在,使得计算量比较大。而灰度图像是R、G、B分量相同的一种特殊彩色图像,对计算机来说,一个像素点的变化范围只有0-255这256种。彩色图片的信息含量过大,而进行图片识别时,其实只需要使用灰度图像里的信息就足够了,所以图像灰度化的目的就是为了提高运算速度。当然,有时图片进行了灰度处理后还是很大,也有可能会采用二值化图像(即像素值只能为0或1)。6.2.2图像滤波由于采集到的图像可能存在较多的噪声,因此为了尽可能地避免噪声的干扰,提高裂缝识别的精确度,需要运用滤波器对图像进行预处理,使得图像尽量平滑。针对本次本设计,运用中值滤波的方式来进行滤波操作效果更好。中值滤波是一种非线性数字滤波。它会取当前像素点及其周围临近像素点的像素值,将这些像素值排序,然后将位于中间位置的像素值作为当前像素点的像素值。在OpenCV中,运用cv2.medianBlur()函数来实现中值滤波。当把滤波核设置为3时,滤波效果如图6.2所示。图6.2滤波效果图将其邻域设置为3×3大小,对其3×3邻域内像素点的像素值进行排序(升序降序均可),按升序排序后得到序列值为:66、78、90、91、93、94、95、97、101。在该序列中,中值为“93”,因此用该值替换原来的像素值”78”,作为当前点的新像素值。在实际情况中,中值滤波前后的对比如图6.3所示。图6.3中值滤波前后对比图6.2.3Gamma变换

Gamma变换主要用于图像的校正,将灰度过高或者灰度过低的图片进行修正,增强对比度。变换公式就是对原图像上每一个像素值做乘积运算s=ce其中,γ代表输入,s代表输出灰度。伽马变换对图像的修正作用其实就是通过增强低灰度或高灰度的细节实现的,从伽马曲线可以直观理解,如图5.4所示。图6.4伽马曲线从图中可以看出,γ值小于1时,会拉伸图像中灰度级较低的区域,同时会压缩灰度级较高的部分,即使得图片变暗。γ值大于1时,会拉伸图像中灰度级较高的区域,同时会压缩灰度级较低的部分,即使得图片变亮。γ值以1为分界,值越小,对图像低灰度部分的扩展作用就越强,值越大,对图像高灰度部分的扩展作用就越强,通过不同的γ值,就可以达到增强低灰度或高灰度部分细节的作用。本设计中Gamma值大于1,因为在经过中值滤波之后,仍然会出现一些噪声来干扰识别,而这些噪声阴影的灰度级低于裂缝的灰度级,将Gamma设置为大于1,来压缩灰度级较低的部分,从而有效的降低干扰。Gamma变换前后对比如图6.5所示。图6.5Gamma变换前后对比图6.2.4形态学操作形态学主要从图像内提取分量信息,该分量信息通常对于表达和描绘图像的形状具有重要意义,通常是图像理解时所使用的最本质的形状特征,其中腐蚀操作和膨胀操作是形态运算的基础。本设计中对图像先运用cv2.erode()函数进行腐蚀操作,使得图像边界向内收缩,可以消除细微的深色杂质,再运用从v2.dilate()函数进行膨胀操作,使得图像边界向外扩张,让裂缝更为明显,这种操作也被称为开运算。开运算能够去除孤立的噪声点、毛刺等,而裂缝主体基本保持不变。 6.3边缘检测本设计采用canny边缘检测算法,其为一个多级边缘检测算法。该算法能标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报,并且标识出的边缘与实际边缘比较接近。该算法输入为灰度图,输出为二值图像。6.3.1高斯滤波使用高斯滤波器卷积处理图像,使得图像平滑,从而降低噪声给图像处理带来的影响。高斯滤波为一种线性平滑滤波,它会对整个图像进行加权平均,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。其具体操作为:用一个模板扫描图像中的每一个像素,用通过模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。高斯滤波公式为(6.2)其中,是一个恒定值,该值不会改变像素点之间的关系,而且之后都会归一化处理,所以再实际的计算中,将其忽略,即(6.3)其中,(x,y)为掩膜内任一点的坐标;(ux,uy)为掩膜内中心点的坐标,在图像处理中可认为是整数;σ是标准差。该步骤可以在一定程度上减小误识别率,提高边缘检测的准确性。6.3.2Sobel算子计算梯度幅值和方向采用Sobel算子,图像矩阵分别与垂直和水平方向上的卷积核进行卷积,得到dx和dy,总的图像梯度为(6.4)梯度方向为(6.5)但是出现梯度的地方不一定就是裂缝边缘处,只是灰度变化明显的地方梯度较大,因此这是得到的边缘还是不确定的,需要进一步来确定。6.3.3非极大值抑制非极大值抑制是一种边缘稀疏化处理技术。在获得了梯度的幅度和方向后,遍历图像中的像素点,去除所有非边缘的点。具体方法是:如果该点是正/负梯度方向上的局部最大值,则保留该点。如果不是,则抑制该点(归零)。如此一来,就可以将大部分伪点去除,进步确定边缘信息。6.3.4双阈值确定边缘信息完成上述步骤后,图像内的强边缘已经在当前获取的边缘图像内。但是,一些虚边缘可能也在边缘图像内。这些虚边缘可能是真实图像产生的,也可能是由于噪声所产生的。对于后者,必须将其剔除。设置两个阈值,其中一个为高阈值,另一个为低阈值。根据当前边缘像素的梯度值与这两个阈值之间的关系,判断边缘的属性。按照以下三个规则进行:边缘强度大于高阈值的点设置为确定的边缘点;边缘强度小于低阈值的点被剔除;边缘强度位于高阈值与低阈值之间的为虚边缘,需要保留。对于上述过程之中保留下来的虚边缘点,可能是真实的边缘点,也可能是噪声点,因此需要对其做进一步处理。一般通过判断虚边缘与强边缘是否连接,来确定虚边缘的情况。只有这些点能按某一路径与确定边缘点相连时才会被保留。这样做是因为如果只保留确定边缘点,有些边缘可能不闭合。这就需要从满足边缘强度位于高阈值和低阈值之间的点中选取合适的点来进行补充,使得边缘尽可能闭合。而高阈值与低阈值选择的大小也会影响到边缘检测的效果,所以要根据具体情况来设定高低阈值。canny边缘检测结果如图6.6所示。图6.6边缘检测结果图6.4最大宽度计算在识别出裂缝之后,需要检测出裂缝的宽度进而对路面损伤严重程度进行一个表征。本设计中检测裂缝宽度的方法是:先固定每一行,然后遍历每一列的所有像素点,找出每一行之中所有的白色像素点;用后一个白色的像素点来减去前一个像素点的值,从而可以得出两个像素点之间的距离;再从这些距离之中找出最大的值,根据像素点和真实距离之间的关系,即可完成裂缝最大宽度的确定。宽度检测结果图如图6.7所示。图6.7宽度检测结果图6.5用户界面设计用户界面是指对软件的人机交互、操作逻辑、界面美观的整体设计,用户界面(UI)是系统和用户之间进行交互和信息交换的媒介,设计它UI的目的在于工作人员可以更便捷、更高效地操纵机器人进行路面检测,并且能够更加直观地反应裂缝的检测结果。本设计的UI是基于PyQt5设计,其是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成,作为GUI库,其功能强大,并且比较流行。PyQtAPI是一个包含大量类和函数的模块集。QtCore模块包含用于处理文件和目录等的非GUI功能,而QtGui模块包含所有的图形控件。本设计采用QtDesigner进行界面设计,主要包含三个功能部分:视频及图像显示、检测功能按钮、机器人控制功能按钮。6.5.1视频及图像显示首先创建一个QTimer对象,通过setInterval()设置定时时间,本设计中设置的为30ms,即30ms捕获一帧。然后通过QTimer中的start()开始计时,每当计时的时间超过了给定的时间后,就会调用一次timeout.connect()中的函数。而timeout.connect()中的函数主要作用是来获取ESP32-CAM传输的视频,并将获取的图像转变换成Qimage,最后在Qlabel上显示图像。该UI中显示图像的地方一共有两处,一处是可以用于显示实时视频中截取的图像,即通过将视频流中当前帧的图像保存下来,并显示出来。同时也可以通过QFileDialog.getOpenFileName()的方法加载电脑中存储的图片,另一处是用于显示检测结果的图像。其都是通过采用QLabel组件来实现图像显示。6.5.2检测功能按钮检测功能按钮一共有四个:打开摄像头、捕获图片、打开图片、裂缝检测。这四个按钮可以用于实现裂缝检测功能,每个按钮都有相应的槽函数。打开摄像头按钮所对应槽函数的作用是开启定时器,进行视频显示;捕获图片按钮所对应的槽函数的作用是将视频中当前帧的图像保存下来并显示;打开图片按钮所对应的槽函数的作用是将电脑内存储的图片显示出来;裂缝检测按钮所对应的槽函数的作用是利用OpenCV对图像进行处理,完成裂缝检测,并将检测结果显示出来。6.5.3机器人控制功能按钮机器人控制功能按钮一共有五个:前进、后退、左转、右转、急停。这五个按钮用于实现工作人员对机器人的远程控制,同样每个按钮都有相应的槽函数。当按下这些按钮时,电脑就会

温馨提示

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

评论

0/150

提交评论