基于单片机的果实品质分类装置设计_第1页
基于单片机的果实品质分类装置设计_第2页
基于单片机的果实品质分类装置设计_第3页
基于单片机的果实品质分类装置设计_第4页
基于单片机的果实品质分类装置设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的果实品质分类装置设计摘要机器视觉简而言之就是利用摄像头拍摄实际图像,通过摄像头模块自动将图像信息转化为对应的电信号,输送给单片机逻辑处理,以此来达到对图像的智能化识别。果实采摘系统中使用机器视觉较多。本文设计了一种基于单片机的果实品质分类装置设计,通过模式识别识别果实表面大体颜色,判断果实是否成熟进一步决定是否对果实进行采摘。采摘后通过果实表面损坏和未损坏的不同反射特性,判断果实的品质,对果实进行分类。主要实现功能:1)通过果实形状大小颜色判断果实是否成熟;2)对采摘的果实进行品质分类。本文首先对本设计的方案进行了阐述,将整个系统分为硬件设计和软件设计。论文首先介绍果实图像识别研究,对果实颜色识别原理以及颜色识别算法进行介绍。系统硬件设计是以STM32单片机为主控芯片,将整个硬件分为识别模块、抓取及剪切模块、果实品质分类模块以及电源模块。摄像头识别模块主要对成熟果进行识别,实现精准到达和精准剪切,并对果实表面损坏程度进行识别,实现果实的品质分类;抓取及剪切模块实现机械臂灵活控制,对成熟果实进行采摘;果实品质分类模块是果实剪切后,对不同品质的果实放到指定位置;电源模块为整个系统供电。其次论文对整个系统的程序进行了设计。最后论文对整个系统进行制作与调试,系统的功能达到设计要求。关键词:图像识别;算法;单片机;采摘;分类

DesignofpickingdeviceofmechanicalarmbasedonsinglechipmicrocomputerAbstractInshort,machinevisionusesthecameratotaketheactualimage,automaticallyconvertstheimageinformationintothecorrespondingelectricalsignalthroughthecameramodule,andtransmitsittothesinglechipmicrocomputerforlogicalprocessing,soastoachievetheintelligentrecognitionoftheimage.Machinevisioniswidelyusedinfruitpickingsystem.Inthispaper,akindoffruitqualityclassificationdevicebasedonsingle-chipmicrocomputerisdesigned,whichcanrecognizethegeneralcoloroffruitsurfacethroughpatternrecognition,judgewhetherthefruitismatureandfurtherdecidewhethertopickthefruit.Afterpicking,thequalityofthefruitwasjudgedbythedifferentreflectioncharacteristicsofdamagedandundamagedfruitsurface,andthefruitwasclassified.Themainfunctionsareasfollows:1)judgingwhetherthefruitismaturebytheshape,sizeandcolorofthefruit;2)classifyingthequalityofthepickedfruit.Firstofall,thispaperdescribestheschemeofthisdesign,anddividesthewholesystemintohardwaredesignandsoftwaredesign.Firstly,thepaperintroducestheresearchoffruitimagerecognition,theprincipleoffruitcolorrecognitionandthealgorithmoffruitcolorrecognition.ThehardwaredesignofthesystemisbasedonSTM32singlechipmicrocomputer.Thewholehardwareisdividedintorecognitionmodule,grabbingandcuttingmodule,fruitqualityclassificationmoduleandpowermodule.Thecamerarecognitionmoduleismainlyusedtoidentifymaturefruit,achieveaccuratearrivalandcutting,andidentifythedamagedegreeoffruitsurface,soastorealizethequalityclassificationoffruit;thegrabbingandcuttingmodulerealizestheflexiblecontrolofthemechanicalarmandthepickingofmaturefruit;thefruitqualityclassificationmoduleistoplacedifferentqualityfruitsinthedesignatedpositionafterthefruitiscut;thepowermodulePowerthewholesystem.Secondly,thepaperdesignstheprogramofthewholesystem.Finally,thewholesystemismadeanddebugged,andthefunctionofthesystemmeetsthedesignrequirements.Keywords:Imagerecognition;algorithm;MCU;picking;classification

目录1绪论 11.1研究背景及意义 11.2国内外研究现状 11.3课题研究要求 22果实图像识别技术研究 32.1数字图像原理 32.2果实颜色识别算法 42.2.1模糊C均值聚类(FCM)算法 42.2.2直方图信息快速FCM算法(FFCM) 52.3果实识别过程 63硬件电路设计 73.1主芯片选择 73.2电源模块 83.3果实识别模块 83.4抓取模块 94系统软件设计 114.1软件开发环境及工具 114.2软件程序设计 124.2.1系统主界面设计 124.2.2图像处理部分 124.2.3系统程序设计 124.3本章小结 135系统制作与调试 145.1系统制作 145.2系统调试 146结论 15参考文献 16附录一 18附录二 19

1绪论1.1研究背景及意义目前科学技术的发展促进了各个方面的发展,而我国是一个农业大国,毫无疑问科学技术早已渗透到农业当中,根据当今科技发展的趋势,农业自动化是农业发展的重要战略之一。而如今,科技促使各行各业向自动化方向发展,最具典型代表的是机器人的应用。我国是一个农业大国,我国的农作物产量大,在经济飞速发展的同时,人们逐渐的加大了对农产品的投入,不仅注重农作物质量要求,更加注重口感要求,特别是在水果上,人们对其需求越来越大,要求越来越高。水果在我国农产品中占有很大一部分比例,但是目前我国水果的采摘的方式大部分还是依靠人力进行,这就造成了水果采摘的速度十分慢,而且又不能雇佣大量的采摘人员,因为水果只有在一定时候才会大量采摘,这就造成其他“淡季”的劳动力花费增加,对果实养殖户来说,无疑是减少了收入。目前一些科学家提出使用采摘机器人对水果作为进行采摘,并应用到实际采摘中,机器人采摘大大的提高了水果采摘速度,从而降低了采摘成本。目前我国的农业劳动力随着经济的发展逐渐减少,对传统的农业来说是一个巨大的打击,机器人作业概念的推广慢慢的可以解决这一问题。有了采摘机器人并不能立马的解决采摘问题,因为机器相对于人来说,“思考”的过程相对繁琐,而且往往采摘到未成熟的果实,因此对机器人识别的研究至关重要,对实现精准采摘,提高采摘效率有着举足轻重的意义。机器人识别系统,简而言之就是机器的“眼睛”,它的主要原理是通过视像头识别实际三维空间中的图像,将图像根据颜色的不同转化为不同的电信号,然后发送到主控CPU进行逻辑处理,通过提前对CPU进行对的软件编程,使得CPU能够正确识别摄像头传来的电信号对的颜色信息,并经过逻辑控制,发送相应的控制信号,控制对应的模块完成相应的功能,识别技术所设计的学科有很多,基本上包含了所有理工科的学科。从上个世纪中旬开始,机器人识别系统就已经逐渐的被研究,美国的一些科学家在二维空间的基础上,研究了三维空间的识别系统,标志着三维识别技术的开始。随着科学技术的发展,视觉计算机理论拉开了三维识别与计算机相结合的序幕,对以后的识别技术的发展奠定了基础。1.2国内外研究现状在上个世纪中旬,美国科学家就提出了对果实进行自动化采摘,利用机器识别技术对采摘目标进行识别,他们提出识别计算的原理是,通过待采摘目标和其周围的物质对光的反光性质不一样,以此来判断待采摘果实的具体位置,这种识别方法对启发了以后的识别技术。根据这一原理,一些科学家制造了相对应的采摘系统,通过加强苹果的红色和叶子的绿色,利用照相机采集图像,以此来达到识别果实的目的。在随后二十年的发展当中,世界各国的科学家相继投入到机器识别技术当中,根据农场不同的要求,设计出了不同功能的采摘机器人,我国在机器人采摘技术上相对落后一些,但是近年的发展以及十分迅速。在上个世纪六十年代的时候,一些国外科学家提出了采用机器人来自动采摘果实的想法后,各种关于机械臂采摘系统的研究层出不穷。随着科学技术的飞速发展,机器人的研究与人们的生活愈发紧密,特别是在农业自动化应用中,机器人采摘系统的研究络绎不绝。最早科学家们设计的自动采摘装置是利用机械臂摇或者振动的方式,但是由于技术的欠缺,这两种采摘方法对果实的损坏率比较大,而且也不能准确识别果实是否成熟。在第一个机器人采摘系统在国外诞生后,关于的采摘机器人的研究一直没有停,国外研究了许多关于黄瓜、苹果等果实的采摘系统,但是还是无法辨别果实是否成熟。随着科学技术的进步,人们对于采摘机器人的研究集中于采摘机器人的识别系统,主要是对成熟果实与未成熟颜色的差异,通过对颜色识别,来判断哪个果实是成熟的,图像处理技术也愈加成熟。随着科技的进步,人们对机械臂的研究从原先的平面运动,研究到了机械臂的5个自由度,实现对机械臂的三维控制。慢慢的,人们对机械臂采摘装置的研究系统化,研究出整个采摘系统。1.3课题研究要求通过模式识别识别果实表面大体颜色,判断果实是否成熟进一步决定是否对果实进行采摘。采摘后通过果实表面损坏和未损坏的不同反射特性,判断果实的品质,对果实进行分类。主要实现功能:1)通过果实形状大小颜色判断果实是否成熟;2)对采摘的果实进行品质分类。

2果实图像识别技术研究在设计采摘机器人时,首先应该研究的就是图像识别技术,因为整个系统的关键就在于图像识别。整个系统由摄像头模块获取实际的空间图像,通过识别的技术的逻辑处理,将所识别的图像转换为电信号,并发送给CPU,在主控CPU中与已设定的参数进行对比,以此来确定目标是否符合采摘要求以及目标的位置信号。因此对果实的图像研究十分重要,需将采集的数据经离散采样后转化为数字图像供识别分析。2.1数字图像原理系统由摄像头来获取待采摘目标的图像,并不能直接发送给单片机进行逻辑处理,需要对图像信号进行处理,将图像信号转化为数字信号,简单来说就是将图像由一个M行N列的矩阵fM×N来表示,如式2.1所示。只有将图像进行数字化处理之后,单片机才能够识别到图像信息,而这个矩阵中的每个点包含的值就是我们所说的图像在该位置的像素值。(2.1)现在用来表示空间颜色的模型有很多种,所谓颜色空间模块,也就是在一个指定的空间里,不同坐标处对应的颜色值是唯一的,目前这种模型在识别系统中应用非常广泛。主要由RGB、CMY、CMYK颜色模型,其中我们一般在数字电路中,采用最多的是RGB。但是并不是所有的都使用RGB,在一些彩色打印机中,使用最多的是CMYK颜色模型。但是上述的几种模型并不是最准确的符合人类识别的颜色模型,最符合的还是HIS模型,因为它在颜色的色调等参数,更加符合人类的识别颜色的标准,因此这种模型是实际应用最多的。根据上文所述,RGB模型是硬件采集图像使用最多的,这个模型不同于其他模型,它的像素对应的坐标是在笛卡尔坐标来建立的,如图2.1所示。如果把这个模型中的三维坐标都单位化,那么三维坐标的所有值都集中在[0,1]这个区间范围内。RGB颜色模型成色的原理是,三维坐标每一维都是由256个基本灰度组成,一个颜色由坐标上的x、y、z三个灰度叠加而成的彩色图像,每一个像素的像素深度是24位,由此可以计算出整个模型可以表示的颜色有224=16777216种,其中在三维坐标中(0,0,0)表示最深的黑色,(1,1,1)表示最浅的白色。图2.1RGB颜色模型2.2果实颜色识别算法根据资料资料显示,目前对果实颜色识别的算法有两种,这两种算法分别是模糊C均值聚类算法,简称FCM,以及直方图信息快速FCM算法,简称FFCM。2.2.1模糊C均值聚类(FCM)算法首先提出模糊C均值聚类算法是一个叫Dunn的,后来随着科技的进步,由Bezdek完善了算法,并对其进行推广。一般在对图像进行三维坐标灰度进行分割时,常常会遇到一些不确定的分割方法,这个时候使用本算法可以解决这个问题。这个方法的具体原理是将像素数据集作为聚类样本数据,然后对其进行划分,再对图像进行分割。在使用这种算法时,首先设一个像素数据集X,然后定义X={x1,x2,⋯xn}⊆Rt,在这个集合等式中,参数t表示的是向量xj(j=1,2,⋯n)的维数,然后根据定义,把数据集中的n个元素划分到c(2≤c≤n)个模糊组中,这种划分方法使得式(2.2)可以取到最小值。(2.2)式(2.2)中,uij为像素值xj属于第i个类的隶属度。满足约束:且(0≤uij≤1)。m为加权指数(m>1),dij为第j个像素值到第i个聚类中心vij的欧式距离,如式(2.3)所示。(2.3)对式(2.2)通过使用拉格朗日乘子法的方法,对其输入参数进行求偏导数,得到其取得最小值的条件:(2.4)(2.5)根据以上所述,可以总结本算法具体实施的步骤:首先要根据系统设定算法所需要的聚类数目c以及所要加权的指数,同时也要规定本算法的终止结算的条件ε>0;其次,要对算法所属的矩阵U(0)进行初始化,并且初步设置迭代次数P=1;接着就要计算聚类中心矩阵,首先要求得当前的隶属度矩阵,然后把所得的值带入到是(2.4)中进行计算;紧接着根据式(2.4)得到的结果,带入到式(2.5)中进行求解计算得到隶属度矩阵;最后如果算法在计算中满足,那么这个时候就可以停止计算,不然的话就会出现P=P+1,然后返回到第三步再重复以上的步骤。然后根据上述步骤计算得到的最大隶属度矩阵,以此来分割所要识别的图像。例如,当使用这种算法去分割一个600×600的图像时,根据上述式子可抑制其数据集为360000,因此在计算时,由于数据量太大了,导致分割的速度比较慢。2.2.2直方图信息快速FCM算法(FFCM)由于上述的FCM算法所需要的聚类样本数量太多了,所以科学家们对此方法进行了一些改进,具体是将一个三维的像素分别映射到每一维坐标上,得到每一维灰度的具体值,从而解决了上述问题,大大的提高了算法识别图像的速度。基于FCM改进的算法将FCM中所用到的数据集一一映射到灰度级数据集{0,1,⋯L−1}(L=256)中,然后将对出现的灰度进行加权处理,具体是根据当前灰度所出现的次数来加权,用以下函数来表示各个灰度出现的次数:w(k)=n(k),k=0,1,⋯L−1,其中n(k)表示图像中灰度级为k的像素的次数,满足直方图,(M×N为图像尺寸)。其基本思路为,将式(2.6)作为目标函数:(2.6)式中,参数m表示的是加权指数,并且参数m满足m>1的条件。w(k)函数表示的是上述所提到的参数k表示的灰度所要加权的系数值。参数Dik用来表示第k级灰度到第i类聚类中心vi的欧式距离的平方,其具体的计算方法如式(2.7)所示。(2.7)隶属度矩阵U和聚类中心矩阵V通过下面公式计算:(2.8)根据上述所介绍的FFCM算法,使用该算法的具体步骤是:首先跟FCM一样,根据系统设定算法所需要的聚类数目c以及所要加权的指数,同时也要规定本算法的终止结算的条件ε>0,同时设置迭代次数P=1以及设定初始聚类中心V(0)的值;其次将聚类中心矩阵V(0)的值代入到式(2.7)中进行计算,得到了隶属度矩阵的值;紧接着将隶属度矩阵的值带入到式(2.8)中进行计算,得到聚类中心矩阵的值;然后根据计算得到的聚类中心矩阵的值带入到式(2.7)中,计算得到隶属度矩阵的值;最后如果算法在计算中满足,那么这个时候就可以停止计算,不然的话就会出现P=P+1,然后返回到第三步再重复以上的步骤。2.3果实识别过程如图2.2为果实图像识别流程图。图2.2果实图像识别流程图通过查阅相关的资料,对比两种算法的分割质量。资料中,使用matlab来判断两种算的分割质量,具体方法是在matlab设定两种算法的参数,其中统一设置两种算法所要识别的图像为640×520,分别利用两种算法对其进行分割,通过结果可知两种算法的计算结果相近,但是直方图信息快速FCM算法计算速度更加快,具体表现为分割时间很短且识别图像所需要迭代的次数更少,可以得出在相同条件下,直方图信息快速FCM算法更加有效率。

3硬件电路设计本设计是基于STM32单片机,如图3.1所示是本设计的方案框图。整个系统主要由识别模块、STM32主控CPU、果实抓取模块以及果实分类模块组成。首先通过摄像头智能识别成熟果实,将果实位置信息发送给单片机,由单片机矢量控制机械臂升降,精准的达到果实的位置,并进行采摘,此时摄像头再次识别果实表面损坏程度,由单片机矢量控制机械臂对果实进行品质分类。图3.1系统方案框图3.1主芯片选择整个装置的主控芯片采用STM32F103VET6。STMicroelectronics公司一直致力于开发出高科技芯片,为用户提供高性能、低功耗的32位数字处理器。其开发了一系列基于ARMCortex-M处理器的32位闪存微控制器产品,其主流的MCU是STM32F103VET6,它是增强型的32位的控制器,这个控制器是以ARM为核心的。Cortex-M3有32位的处理器,不仅如此,其内部的存储器等一些设备都是32位的。这个处理器的内部是将数据和地址总线分开,每个都有自己独立的线路,因此不用担心地址和数据冲突,提高了处理器的效率。图3.2为STM32F103VET6单片机最小系统电路。图3.2STM32F103VET6单片机最小系统电路3.2电源模块STM32F103VET6系列单片机的电源电路如图3.3所示,其供电电压一般为2.0~3.6V之间。如图所示MDB12-24S5芯片将24V的直流电压降压为5V的电压。通过转换开关选择是否供电,+5V电源通过AMS1117-3.3芯片将电压转换为3.3V,C1、C2电容起到滤波、稳压作用。STM32F103VET6系列的单片机有一些模拟电源的管脚,在电路设计中,数字电路和模拟电路分别单独供电,以降低系统的噪声,其中图中的R1、R2、C5和C6组合的主要作用就是过滤掉数字电路中的噪声,提高模拟电路的稳定性。图3.2电源电路3.3果实识别模块本设计采用摄像头模块来采取果实的颜色。摄像头识别模块用的是OpenMV,这个装置价格低廉、极具可开发性的颜色采集识别模块。这款摄像头内部自带IDE,这个IDE的主要功能是自动提示代码,也就是说它可以将图像处理的代码高亮,而且这个摄像头有一个特点就是内部自带一个窗口,可以看到摄像头所要识别的图像,便于系统编程处理。使用该模块对水果进行颜色识别,该摄像头模块主要原理是提取所拍到图像的RGB三个单通道灰度图像,根据对不同成熟度果实的颜色识别,发送给单片机处理,判断不同果实的成熟度。其次根据对果实的颜色识别,以此来获取果实在坐标系中的具体位置,并与中心平面像素对比,以此来获取坐标差值,并发送给单片机,由单片机进行逻辑处理,并控制机械臂在空间移动,准确到达果实所在位置并进行采摘。如图3.3为该模块实物图。图3.3摄像头识别模块实物图本设计所采用的摄像头识别模块是一款价格低廉、带有很多功能的模块。本模块主要由CPU、摄像头芯片等组成,CPU采用STM32芯片系列中的STM32F427CPU,摄像头芯片采用的是OV7725,该模块采用C语言实现对图像颜色的采集,同时本模块还提供可编程接口,支持Python语言,这一功能是的该模块在众多识别模块中脱颖而出。目前该模块广泛的应用到各种需要图像识别的系统中,例如人脸识别、边缘检测等。在工业或制造业中,可以用力筛选残次品,或者对某个固定的物品进行标记,由本模块组成的系统跟踪。并且该模块可支持Python代码,只需要写入一些简单的代码,即可完成复杂的功能。该模块和机器人的结合,可使机器人更加智能化,可以让智能机器人通过识别周围空间颜色,做出比较人性化的动作。从硬件角度来看,该模块采用STM32F427CPU,具有许多接口,包括UART,I2C,SPI,PWM,ADC,DAC等接口,可以支持众多的外围电路。3.4抓取模块本设计采用舵机实现抓取任务,实现果实的抓取和果实放到指定位置。本设计采用舵机MG995。舵机主要是一种可以控制舵面的电动机,它的基本工作原理是由主控对它发出控制命令,使其发生转动,转动的角度和控制命令的脉冲宽度有关。舵机的主要由舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等部分组成。整个舵机系统对外有三根线,一根是电源线、一根是地线、另一根是控制线,其基本控制结构图如图3.4所示。舵机主要有5V电源电压供电,由电源线接入;控制线主要是由控制CPU发出信号,控制舵机转动,控制信号是不同脉冲宽度的PWM信号,通常情况下一个信号的周期是20ms,脉冲宽度不同,舵机旋转的角度也就不同,其对应关系如图3.5所示,脉宽由0.5ms到2.5ms,舵机与之对应的角度为-90°到90°,并且成正比关系,控制信号输出的脉冲信号幅值是5V,且控制信号发出后,舵机就会旋转到对应的角度,直到下一次命令,它才会转动。图3.4MG995舵机控制示意图图3.5舵机的输出轴转角与输入信号的脉冲宽度之间的关系

4系统软件设计第三章介绍了整个系统的硬件电路部分,但要完成整个系统的设计还需要进行系统软件设计才能完成控制功能,因此要有软件程序进行支撑,从而与硬件部分形成相辅相成形态,因此设计整个系统的软件也是实现系统功能一个重要的环节。4.1软件开发环境及工具MDK和IAR都能作为嵌入式编程开发工具,处于使用习惯方面考虑,语音和红外控制家用电器系统在软件代码编程时采用的是MDK,MDK主要适用于各种需要嵌入式开发的处理器。它具有强大的Simulation设备模拟等功能,此外它内部集成了Flash烧写模块,可以自动配置启动代码。使用MDK进行嵌入式开发时,其中左边是编程的目录,右边是编码区间。RVMDK是MDK的全称,该软件是由KEIL公司研发出来的,该软件广泛应用于嵌入式的编程,也已作为现在学校学习单片机的指定软件,随着KEIL软件的不断使用与研究,软件版本也在不断地跟新,开发比较成熟且应用普遍的包括KEIL3.0、KEIL4.0、KEIL5.0,5.21是现在最新的版本,这些版本的跟新变化主要是在操作界面、兼容性、安装库上的变化,以往的芯片库中包含了STM32F1、STM32F2、STM32F3、STM32F4等芯片库函数,而最新的KEIL版本是要先选择添加芯片库然后在进行嵌入式编程,芯片库函数因此也大大减小,从而节省了软件容量,MDK采用最新的Cortex-M4核处理器,自带库函数省去了底层代码编写所需要的时间,编译的代码更小使得编译等待的时间缩短了,软件具有的调试仿真功能能观察每一步编译的结果。就总体编辑环境而言,不仅很容易上手也可以进行很复杂的代码集成。安装包可以进行新芯片支持,该支持是独立于工具链,也能升级中间库,MDK组成部分如图4.1所示。从图中可以得知MDK的具有的功能有代码的编辑、代码的编译、库函数自带的底层驱动以及跟踪调试,包安装器包括能进行芯片支持的Device,软件接口标准用于微控制器CMSIS和升级中间库。图4.1MDK组成4.2软件程序设计系统软件是嵌入在硬件中的操作系统和开发工具。系统装置可以分为上位机(数据显示)、下位机(数据采集)、串口通讯(数据传输)这三部分,上位机可以直接发出操作命令,在该检测装置中的作用主要是使用者能直接从显示屏上观测到数据,并能进行查询以及手动操作来发送指令;下位机主要是检测设备能直接从现场获得需要采集的数据。对这三部分进行软件设计,能将各个硬件模块连接在一起并进行控制。软件部分的设计使得整个装置的运行速度以及效率都显著提高,设计也更加人性化。4.2.1系统主界面设计本设计为了让系统调试比较方便,在主系统的界面设计中考虑到这一因素。因此在设计中,把系统的主界面分为以下两个部分:一种是可以手动调试,可以支持在线调试。一种是系统主控可以自己生成小车运动的指令,然后发送个电机驱动模块,控制小车达到指定位置。手动调试的话主要考虑到机械臂采摘时,机械臂的运动能够最简单化,另一种是对小车的运动路径最简化。为了使整个系统的机构可视化,在界面上显示了系统各部分的系数,比如机械臂参数,当前角度以及机械臂的尺寸等。此外最重要要显示当前识别的果实是否成熟,是否符合采摘标准。4.2.2图像处理部分图像处理使用Openmv。图像的识别包括图像颜色识别与图像形状识别。系统软件在通过thresholds()函数来设置颜色识别的阈值,这个阈值来自OpenMV模块通过IDE对图像进行图像二值化处理得到的,可以得到不同果实的阈值,这里设置成熟果实的阈值为(51,79,7,-60,61,14),系统通过设置修改thresholds()函数,以此来设定哪个颜色的果实可以判定为成熟果实,然后系统通过find_blobs()函数查找对应阈值的摄像头所排到的图像,并进行标记。并返回给单片机标记的位置在空间中的坐标值,系统采用area()函数来识别果实的形状,使用img.get_statistics()函数进行像素的颜色统计,当区域中的众数在所设置的阈值范围,就说明这个区域为需要寻找的物体4.2.3系统程序设计摄像头作为整个系统的眼睛,要识别果实成熟度和果实形状。首先机械臂作为果实抓取的主要部件,需要做到的就是精确的寻找到成熟果实的位置。机械臂作为柑橘抓取的主要部件,需要做到的就是精确的寻找到果实的位置。由图像识别模块识别果实图像具体的位置,通过与图像中心对比,得到与中心坐标的差值,并发送给单片机处理,由单片机输出控制信号,控制舵机运动到达对应果实位置,并对对果梗进行剪切,最后将果实放到指定位置。具体程序流程图如图4.2所示。图4.2系统程序设计流程图整个程序流程开始首先初始化STM32单片机,通过摄像头和各种传感器检测到果实采摘点的具体位置,由单片机逻辑运算控制采摘机运动到对应的果实采摘点,到达指定点时,如果检测不是果实采摘点,则会返回摄像头和各种传感器检测到果实采摘点的具体位置这步。达到果实采摘点后,由摄像头传递果实颜色信息,对成熟果实位置进行识别判断,此时经过单片机逻辑运算,控制机械臂的舵机移动到成熟果实位置,进行剪断果梗抓取果实,此时摄像头再次对果实表面损坏程度进行识别,对果实进行品质分类,并控制舵机将不同品质的果实放到指定位置,如果没有成功抓取果实,则返回到摄像头识别这步,由摄像头重新识别果实颜色,并采摘,依次循环。4.3本章小结本章通过MDK的开发环境对机械臂采摘装置的软件设计部分进行了程序编写与调试,首先提出了整个系统的总体设计,然后分别对程序设计中各部分进行了介绍,给出了整个程序设计的流程图,通过流程图介绍整个程序的工作过程。系统软件的设计符合课题功能要求。

5系统制作与调试5.1系统制作实物焊接是否正确直接影响系统的的功能,同样的,元器件是否正确也决定系统功能是否正常,为此实物焊接的步骤如下:(1)首先根据原理图以及PCB来核对所购买的元器件是否符合封装和参数要求,利用万用表测量电容、电阻等器件的精度是否符合要求,其次对比PCB中器件的封装尺寸,以确保实物能够焊接到PCB上。(2)核实好器件无误后,按照PCB对应关系从左到右依次焊接元器件,确保无虚焊、焊锡过多、短路等情况出现。(3)对一些有极性或者方向的芯片,按照PCB对应关系,放置好器件再进行焊接。一般先焊接小的、低的。5.2系统调试本装置对成熟准确快速的识别定位并正确反馈目标坐标数据是实现机械臂采摘装置采摘作业的基础。在实地不同成熟程度的果实下进行目标识别定位实验时,为了体现本采摘装置控制系统对成熟果实识别的准确度,特意选取不同成熟度的果实较多的地方,达到要求的果实均被识别,此外还人工损坏果实表面,本装置均能对果实品质进行分类。在采摘装置进行采摘时,整个系统的识别装置也在正常工作,如果发现采摘信号不准确,即并未采摘到对应果实时,系统会停止当前动作,并重新对目标果实进行识别定位。经过实验机械臂采摘装置对成熟果实的识别正确率较高,且采摘率也很高。这就表明本设计的机械结构、硬件设计、软件设计能实现对应功能,整个装置符合系统设计设计要求。

6结论本设计题目是一种基于单片机的果实品质分类装置设计,通过模式识别识别果实表面大体颜色,判断果实是否成熟进一步决定是否对果实进行采摘。采摘后通过果实表面损坏和未损坏的不同反射特性,判断果实的品质,对果实进行分类。主要实现功能:1)通过果实形状大小颜色判断果实是否成熟;2)对采摘的果实进行品质分类。本文首先对本设计的方案进行了阐述,将整个系统分为硬件设计和软件设计。论文首先介绍果实图像识别研究,对果实颜色识别原理以及颜色识别算法进行介绍。系统硬件设计是以STM32为主控芯片,将整个硬件分为识别模块、抓取及剪切模块、果实品质分类模块以及电源模块。摄像头识别模块主要对成熟果进行识别,实现精准到达和精准剪切,并对果实表面损坏程度进行识别,实现果实的品质分类;抓取及剪切模块实现机械臂灵活控制,对成熟果实进行采摘;果实品质分类模块是果实剪切后,对不同品质的果实放到指定位置;电源模块为整个系统供电。其次论文对整个系统的程序进行了设计。最后论文对整个系统进行制作与调试,系统的功能达到设计要求。在实际设计当中遇到了很多困难:1)首先是整个方案的确定,根据所要实现的功能确定整个系统分为哪几个模块;2)其次是确定好模块后,如何去选择对应的芯片,再查阅了大量的相关书籍和芯片手册后,确定了本系统索要使用的芯片;3)在系统硬件设计的时候,遇到很多关于AD软件和硬件电路上的问题,于是上网自学了AD软件,查阅相关的硬件电路设计手册,逐步解决了问题。本论文设计的智能点滴系统基本上实现了通过模式识别识别果实表面大体颜色,判断果实是否成熟进一步决定是否对果实进行采摘。采摘后通过果实表面损坏和未损坏的不同反射特性,判断果实的品质,对果实进行分类。但是在整个系统果实识别精度上做的还是不够完善,后续会在这些方面继续深入研究。通过本次毕业设计,我学到了很多知识,主要包括:1)单片机的相关知识;2)原理图的设计,硬件电路相关的许多知识;3)程序的编写等一些专业知识。其次我还学到做好毕业设计要十分用心,在拿到题目时要认真分析系统的具体要求,根据具体要求将整个系统分为不同的模块,以达到实现对应的功能,在毕业设计的每一步当中,遇到困难不要放弃,要沉着冷静分析问题原因,善于查阅资料以及咨询老师等,只要自己坚持不懈,一定会完成自己的毕业设计,这对我以后的人生有着很大精神上的帮助。

参考文献[1]陈景郁,朱洪雷.基于ST-Link的STM32单片机多路固件烧录方法研究[J].机电信息,2020(09):76-77.[2]田勇军,黄采伦,张念,陈俊竹,刘袁庆子.基于内循环除湿的密集烤房烘烤控制系统[J/OL].江苏农业科学:1-8[2020-03-28]./10.15889/j.issn.1002-1302.2020.04.041.[3]杜警,窦艳艳.基于STM32的地铁电动客车空调控制器设计[J].电力机车与城轨车辆,2020,43(02):51-53.[4]谷学静,周自朋.基于STM32单片机的数据手套设计[J].网络安全技术与应用,2020(03):49-51.[5]姚文俊,杨加东.基于STM32的汽车安全及灯光系统设计[J].南方农机,2020,51(05):154-156.[6]甘礼福,彭博齐,邓金海,邓展鹏,苏其强,张声岚.基于STM32实验室环境监测系统的研究与设计[J].轻工科技,2020,36(03):65-68.[7]李颀,王康,强华,马琳.基于颜色和纹理特征的异常玉米种穗分类识别方法[J].江苏农业学报,2020,36(01):24-31.[8]孙艺珊,李晓洁,赵凯.改进LBP和HSV颜色直方图相结合的地表状态识别[J].测绘通报,2020(02):29-36+71.[9]魏国莲,林成全.果蔬自动化采摘机的机械结构设计与试验[J].农机化研究,2020,42(09):117-124.[10]阮浩洁,王春亚,王辉,刘晓东.基于图像识别的保护压板状态识别技术研究与应用[J].电力设备管理,2020(01):139-140.[11]付长斐,叶宾,李会军.基于HSV颜色空间的运动目标识别[J/OL].控制与信息技术,2020:1-5[2020-03-28]./10.13889/j.issn.2096-5427.2020.01.600.[12]李巨虎,范睿先,陈志泊.基于颜色和纹理特征的森林火灾图像识别[J].华南理工大学学报(自然科学版),2020,48(01):70-83.[13]闫建伟,苏小东,赵源,刘进平.基于图像颜色特征的高粱胚芽鞘识别及定位方法[J].江苏农业科学,2019,47(23):252-256.[14]郄磊澎,龚家元,毕栋,司熙鹏,朱政泽,周诗薇.基于OpenCV的锥桶识别技术研究与实现[J].湖北汽车工业学院学报,2019,33(04):50-53.[15]周诗薇,龚家元,郄磊澎,毕栋,朱政泽.基于OpenMV的云台追踪系统设计[J].湖北汽车工业学院学报,2019,33(04):54-56.[16]祁浩.基于颜色名特征增强的行人重识别方法研究[D].南京邮电大学,2019.[17]任晓智,李福敏,江山,沙诗琴,韦磊.机械臂夹剪苹果采摘机的仿真设计与制造[J].农机化研究,2020,42(08):112-117.[18]刘铮,刘英,沈鹭翔.青梅采摘机器人设计[J].林业机械与木工设备,2019,47(10):23-28.[19]张同勋.棚架葡萄采摘机械臂的定位与运动控制研究[D].山东农业大学,2019.[20]王毅,滕举元,张哲,许洪斌.六自由度采摘机械臂采摘姿态规划研究[J].机械设计与制造,2019(08):235-238+242.[21]刘富成,田壮.一种并联采摘机器人研究[J].湖北农机化,2019(13):127.

谢辞人们在面对即将逝去的日子时,总会不由自主感叹时光如梭。四年前,我怀揣着许多梦想,仰着青春青涩的脸庞走进北京理工大学珠海学院,如今,四年的大学生活即将结束,对于我来说,不仅预示着大学时光的结束,更是象征着我学生时代的结束。在这美好的四年里,北理工为我许多实际或者漂浮的梦想提供了舞台,严谨的科研氛围与学习风气使我打下坚实的专业知识基础,它的博大包容情怀培养我脚踏实地、勇敢直前的魅力人格,并形成正确的人生观、价值观与世界观。

在毕业论文完成之际,我要向所有关心、帮助我的人们表达我的谢意。首先要感谢我的论文指导老师邵立伟老师,谢谢您在忙碌的教学工作中抽出时间对我的论文进行细致的指导,在毕业论文设计阶段给予我悉心的指导和点拨,从选题到定题,从资料的搜集到论文的写作和修改,邵老师无不耐心指导,为我解答各种问题。我能够顺利地完成这篇论文离不开老师的帮助和指导,再次诚挚地感谢您!其次我向北京理工大学珠海学院自动化专业的所有老师表示衷心的感谢,四年的学习生活,我遇到了许许多多的良师。袁鹏老师的大气豪迈;许强强老师的和蔼亲切;方宇杰老师的批判性思维;赵慧元老师的中庸智慧;彭文亮老师的风趣幽默;张宛农老师的淡泊随性;还有论文导师的严谨认真都是我大学四年最宝贵财富。或许我会忘记大学所学过的知识,但你们在教学的传授我们做人的道理永远都不会忘记,你们孜孜不倦的教诲让我在走向社会工作过程中也会时刻铭记!

最后感谢一直陪伴在我左右的同学和朋友,谢谢你们给予我的支持和帮助,因为有了你们,我才能度过充实快乐的大学生活。在这篇论文完成的那一刻,也意味着我即将踏入人生的新阶段,能够在最后四年的求学生涯遇见各位老师和同学,我感到很荣幸。同时,我要感谢支持我的室友。他们在我论文写作期间,从生活上的帮助到文献资料的提供,在这一并表示感谢。在此,向你们表达我最真诚的感谢,谢谢你们!

在论文的写作过程中,从一开始的迷茫、手足无措,过程中的细心严谨,到最后成果的展现,我不仅可以重温了一遍我大学四年学习的专业知识,更能体会到科研过程中的严谨细致的意义,或许未来不会再有机会让我从事学术研究,但学术研究的精神将我贯彻至我的工作当中去,以最严谨细致的态度去对待工作。我希望我能用我的毕业设计与论文,为我的大学生活交上一份完美的答卷,在未来的人生道路上,不会停止追求梦想的脚步,永不放弃!附录附录1STM32主控制板原理图

附录2源程序代码COORDATAtempData;Std::vector<COORDATA>allData;Std::vector<COORDATA>finalData;Std::vector<double>TwoCoor//调用摄像头返回数据Std::vector<double>::iteratoriter;allData.clear();finalData.clear();TwoCoor=OutputCoor();For(i=0;i<TwoCoor.size();i=i+3){tempData.x=TwoCoor[i];tempData.y=TwoCoor[i+1];tempData.y=TwoCoor[i+2];allData.push_back(tempData);}intrecord_tree=0;doubletwo_point_len;doubletwo_point_lenx;doubletwo_point_leny;for(intk=0;k<finalData.size();k=k+3){Bool_b_twoplen_true;B_twoplen_true=true;//intj=0;//intrecord_tree[10];For(inti=0;i<finalData.size();i=i+3){If(i=k)Continue;Doubleangle;Doublex1,y1,x2,y2;x1=ceil(finalData[k].x*1000)+30;x2=ceil(finalData[k].x*1000)+30;y1=ceil(finalData[k].x*1000)+382;y2=ceil(finalData[k].x*1000)+382;two_point_len=sqrt(pow((x1-x2),2)+pow((y1-y2),2);str.Format(“two_point_len=%f”,two_point_len);MessageBox(str);angle=(x1-x2)*x1+(y1-y2)*y1;angle=angle/two_point_len/sqrt(pow(x1,2)+pow(y1,2);angle=acos(angle);two_point_len_x=two_point_len*sin(angle);two_point_len_y=two_point_len*sin(angle);str.Format(“two_point_len_x=%f,two_point_len_y=%f,two_point_len_x,two_point_len_y”);MessageBox(str);Boolb_two_point_len;B_two_point_len=two_point_len_x>300;B_twoplen_true=b_twoplen_true&&b_two_point_len;Doubletheory_clamp_x;Doubletheory_clamp_z;Doubletheory_clamp_y;m_return_z1=ceil(-finalData[k+1].y*1000+674);m_return_z2=ceil(-finalData[k+2].y*1000+674);m_return_x1=ceil(-finalData[k+1].x*1000+30);m_return_x2=ceil(-finalData[k+2].x*1000+30);m_return_y1=ceil(-finalData[k+1].x*1000+382);m_return_y2=ceil(-finalData[k+2].x*1000+382);UpdateData(FALSE);Boolb_abs_x,b_abs_y,b_abs_z;B_abs_x=abs(m_return_x2-m_return_x)>400;B_abs_y=abs(m_return_y2-m_return_y)>400;B_abs_z=abs(m_return_z2-m_return_z)>400;If(b_abs_x&&b_abs_y&&b_abs_z){m_return_x1=m_return_x;m_return_y1=m_return_y;m_return_z1=m_return_z-100;m_return_x2=m_return_x;m_return_y2=m_return_y;m_return_z2=m_return_z-100;}b_abs_x=abs(m_return_x1-m_return_x)>400;b_abs_y=abs(m_return_y1-m_return_y)>400;b_abs_z=abs(m_return_z1-m_return_z)>400;if(b_abs_x&&b_abs_y&&b_abs_z){m_return_x1=m_return_x;m_return_y1=m_return_y;m_return_z1=m_return_z-100;m_return_x2=m_return_x;m_return_y2=m_return_y;m_return_z2=m_return_z-100;}theory_clamp_x=(m_return_x1+m_return_x2)/2;theory_clamp_y=(m_return_y1+m_return_y2)/2;theory_clamp_y=(m_return_y1+m_return_y2)/2;doubletheta;theta=-atan(theory_clamp_x/theory_clamp_y);C3DPointP1(m_return_x1,m_return_y1,m_return_z1);C3DPointP1(m_return_x2,m_return_y2,m_return_z1);P1.rz=-theta;Ptheory.rz=-theta;P1.changecood_rz();Ptheory.changecood_rz();C3DPointPt(P1.x-Ptheory.x,P1.y-Ptheory.y,P1,z-Ptheory.z);Doublealpha;Doublebeta;Alpha=-atan(Pt.x/Pt.z);Pt.ry=alpha;Pt.changecood_ry();Beta=atan(Pt.y/Pt.z);Alpha=alpha;Beta=-beta;Str.Format(“alpha=%f”,alpha*180/3.14);MessageBox(str);m_motor5_endpos=beta;m_motor6_endpos=alpha;m_motor5_midpos=beta;m_motor6_midpos=alpha;

捷键与一些电脑小技巧HYPERLINKwinkey+d:

这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口……只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口!

--这个就是winkeywinkey+f:

不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按winkey+f就会弹出搜索窗口。

winkey+r:

在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框……”。其实,还有一个更简单的办法,就是按winkey+r!

alt+tab:

如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标●,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。

winkey+e:

当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了!

小提示:

winkey指的是键盘上刻有windows徽标的键●。winkey主要出现在104键和107键的键盘中。104键盘又称win95键盘,这种键盘在原来101键盘的左右两边、ctrl和alt键之间增加了两个windwos键和一个属性关联键。107键盘又称为win98键盘,比104键多了睡眠、唤醒、开机等电源管理键,这3个键大部分位于键盘的右上方。

再补充点

F1显示当前程序或者windows的帮助内容。

F2当你选中一个文件的话,这意味着“重命名”

F3当你在桌面上的时候是打开“查找:所有文件”对话框

F10或ALT激活当前程序的菜单栏

windows键或CTRL+ESC打开开始菜单

CTRL+ALT+DELETE在win9x中打开关闭程序对话框

DELETE删除被选择的选择项目,如果是文件,将被放入回收站

SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是

放入回收站

CTRL+N新建一个新的文件

CTRL+O打开“打开文件”对话框

CTRL+P打开“打印”对话框

CTRL+S保存当前操作的文件

CTRL+X剪切被选择的项目到剪贴板

CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板

SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置

ALT+BACKSPACE或CTRL+Z撤销上一步的操作

ALT+SHIFT+BACKSPACE重做上一步被撤销的操作

Windows键+D:最小化或恢复windows窗口

Windows键+U:打开“辅助工具管理器”

Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置

Windows键+E打开资源管理器

Windows键+F打开“查找:所有文件”对话框

Windows键+R打开“运行”对话框

Windows键+BREAK打开“系统属性”对话框

Windows键+CTRL+F打开“查找:计算机”对话框

SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单

SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo

rd的时候按下不放,可以跳过自启动的宏

ALT+F4关闭当前应用程序

ALT+SPACEBAR打开程序最左上角的菜单

ALT+TAB切换当前程序

ALT+ESC切换当前程序

ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换

PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板

ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板

CTRL+F4关闭当前应用程序中的当前文本(如word中)

CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前

一个窗口)

在IE中:

ALT+RIGHTARROW显示前一页(前进键)

ALT+LEFTARROW显示后一页(后退键)

CTRL+TAB在页面上的各框架中切换(加shift反向)

F5刷新

CTRL+F5强行刷新1.打开“我的电脑”-“工具”-“文件夹选项”-“查看”-在“显示所有文件和文件夹”选项前打勾-“确定”

2.删除以下文件夹中的内容:

x:\DocumentsandSettings\用户名\Cookies\下的所有文件(保留index文件)

x:\DocumentsandSettings\用户名\LocalSettings\Temp\下的所有文件(用户临时文件)

x:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\下的所有文件(页面文件)

x:\DocumentsandSettings\用户名\LocalSettings\History\下的所有文件(历史纪录)

x:\DocumentsandSettings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)

x:\WINDOWS\Temp\下的所有文件(临时文件)

x:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)

x:\WINDOWS\DriverCache\i386下的压缩文件(驱动程序的备份文件)

x:\WINDOWS\SoftwareDistribution\download下的所有文件

3.如果对系统进行过windoesupdade升级,则删除以下文件:x:\windows\下以$u...开头的隐藏文件

4.然后对磁盘进行碎片整理,整理过程中请退出一切正在运行的程序

5.碎片整理后打开“开始”-“程序”-“附件”-“系统工具”-“系统还原”-“创建一个还原点”(最好以当时的日期作为还原点的名字)

6.打开“我的电脑”-右键点系统盘-“属性”-“磁盘清理”-“其他选项”-单击系统还原一栏里的“清理”-选择“是”-ok了

7、在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少了。删除系统备份文件吧:开始→运行→sfc.exe/purgecache近3xxM。(该命令的作用是立即清除"Windows文件保护"文件高速缓存,释放出其所占据的空间)

8、删掉\windows\system32\dllcache下dll档(减去200——300mb),这是备用的dll档,只要你已拷贝了安装文件,完全可以这样做。

9、XP会自动备份硬件的驱动程序,但在硬件的驱动安装正确后,一般变动硬件的可能性不大,所以也可以考虑将这个备份删除,文件位于\windows\drivercache\i386目录下,名称为driver.cab,你直接将它删除就可以了,通常这个文件是74M。

10、删除不用的输入法:对很多网友来说,WindowsXPt系统自带的输入法并不全部都合适自己的使用,比如IMJP8_1日文输入法、IMKR6_1韩文输入法这些输入法,如果用不着,我们可以将其删除。输入法位于\windows\ime\文件夹中,全部占用了88M的空间。

11、升级完成发现windows\多了许多类似$NtUninstallQ311889$这些目录,都干掉吧,1x-3xM

12、另外,保留着\windows\help目录下的东西对我来说是一种伤害,呵呵。。。都干掉!

13、关闭系统还原:系统还原功能使用的时间一长,就会占用大量的硬盘空间。因此有必要对其进行手工设置,以减少硬盘占用量。打开"系统属性"对话框,选择"系统还原"选项,选择"在所有驱动器上关闭系统还原"复选框以关闭系统还原。也可仅对系统所在的磁盘或分区设置还原。先选择系统所在的分区,单击"配置"按钮,在弹出的对话框中取消"关闭这个驱动器的系统还原"选项,并可设置用于系统还原的磁盘空间大小。

温馨提示

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

评论

0/150

提交评论