【《大棚蔬菜疾病检测小车系统设计与集成案例》6900字】_第1页
【《大棚蔬菜疾病检测小车系统设计与集成案例》6900字】_第2页
【《大棚蔬菜疾病检测小车系统设计与集成案例》6900字】_第3页
【《大棚蔬菜疾病检测小车系统设计与集成案例》6900字】_第4页
【《大棚蔬菜疾病检测小车系统设计与集成案例》6900字】_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

大棚蔬菜疾病检测小车系统设计与集成案例目录TOC\o"1-3"\h\u3581大棚蔬菜疾病检测小车系统设计与集成案例 1136551.1系统需求分析 1130151.1.1功能性需求 17321.1.2非功能性需求 240191.2系统设计 3120711.2.1总体设计 322551.2.2通信模块设计 4302071.2.3导航模块设计 665041.2.3用户界面设计 886901.3系统集成与测试 9217491.3.1系统集成 9100391.3.2小车移动导航性能测试 12151111.3.3小车通信性能测试 15149761.3.4界面测试 161.1系统需求分析1.1.1功能性需求功能性需求为软件使用者对于软件所应具有的功能提出的要求。本小车的使用者为蔬菜大棚管理者,通过与他们进行交谈,并结合本人设计初衷,本系统应具有如下几种功能:(1)开始、暂停小车巡检功能。本设计中小车可以按照预先设定的巡检频率自动进行巡检,用户也可以手动对小车巡检过程进行控制。有时用户需要小车立即进行巡检,有时需要小车暂停巡检,如蔬菜大棚内正有工人作业时。(2)小车状态查看功能。用户需要了解小车目前处于何种状态。状态有三种:未连接、待机、巡检和故障。(3)手动操作模式。小车具有自动导航巡检的功能,但有时用户可能需要手动操作小车进行移动拍照。本设计应提供手动操作功能,让用户可以手动移动小车并操作小车拍照。(4)实时图片与识别结果显示。在巡检过程中小车会进行采样拍照并对图片进行疾病识别,用户需要了解此识别结果。故需要在计算机端软件提供一个实时显示界面。(5)巡检参数设定。用户可以根据实际使用需求来设定小车的巡检频率以及巡检时的拍照频率,巡检田垄数以及作物种类等巡检信息。如使用场景发病率高则需提高巡检频率,如蔬菜种植较为密集则需提高拍照频率。(6)警报功能。因为用户不可能一直盯着电脑监测识别结果,在检测出疾病时需要及时通过一些方式通知用户。(7)历史数据查询。小车的巡检日志将保存到电脑某文件夹内,包括巡检时间、拍摄图片以及识别结果等信息,以供用户调阅。对于以上的功能需求,采用用例图进行分析,如下图1.1所示。图1.1小车功能需求分析用例图Fig.1.1Trolleyfunctionalrequirementanalysisusecasediagram1.1.2非功能性需求本系统的非功能需求如下:(1)响应时间。在用户进行手动操作时,应保证操作指令的下达以及图片的上传应具有较小的延时,这样才能保证手动操作的有效性。一般应小于100ms。(2)数据存储量。在进行巡检日志存储时,应考虑计算机的存储条件,不可占用太多存储空间。因此只保存较短时间段内的正常数据,以及较长时间段内的患病的数据。(3)易用性。由于本软件的用户为没有计算机专业知识的人员,因此本软件应界面简单,文字通俗易懂,帮助文档清晰。使得用户可以无障碍使用本软件。(4)健壮性。任何软件都需具有健壮性。1.2系统设计1.2.1总体设计本系统首先分为运行在小车端的软件和运行在计算机端的软件,根据需求分析,进一步的对于这些功能性需求进行模块划分,如下图1.2所示。图1.2系统模块设计Fig.1.2Systemmoduledesign计算机端的各个模块的功能如下:(1)故障检测模块。此模块负责检测小车运行是否发生故障。包括通信故障、移动故障等。(2)参数设置模块。负责小车巡检频率以及拍照频率的设置,以及历史数据存储时长的设置。 (3)读写数据模块。主要功能为小车巡检日志的存储以及历史数据的调阅等功能。(4)手动操作模块。负责自动与手动模式的切换以及在手动模式下的小车移动以及控制的功能。(5)通信模块。负责与小车进行通信。接收来自小车的图片,位置信息等信息;向小车传输巡检频率等参数,手动操作指令等信息。(6)疾病识别模块。此模块负责疾病的识别,是4.3节疾病识别算法的整合实现。小车端的各个模块的功能如下:(1)拍照模块。负责小车巡检过程中的图片拍摄,此模块将根据采用频率进行拍摄,并将所拍摄图片交给通信模块传输至计算机。(2)导航模块。分为自动导航和手动导航,自动导航负责小车自动巡检过程中的避障导航,使得小车能够在不发生碰撞的情况下遍历大棚内每一条田垄。手动导航接收用户指令,控制小车移动。(3)通信模块。与计算机端通信模块进行通信,主要向计算机端传输图片,位置信息等。1.2.2通信模块设计小车在巡检过程中,须频繁地与计算机端进行信息传递。在手动模式下进行一次移动和拍照的时序图如下,其中步骤1-5为控制小车移动的步骤,步骤6-16为控制小车拍照的步骤。图1.3手动导航的时序图Fig.1.3Timingdiagramformanualnavigation整个过程由用户开始,各步骤描述如下:步骤1首先用户在操作界面点击小车移动按钮,小车移动按钮包括上下左右四个,分别控制小车前行、后退、左转和右转。步骤2电脑端控制器将移动指令提交给通信类。步骤3和4电脑端通信类传输移动指令至小车端通信类,随后小车端通信类将此指令交给小车端控制器。步骤5小车端控制器调用导航算法,导航算法根据移动指令控制小车移动。步骤6-9与移动时相似,拍照指令一步步地传输至小车控制器。步骤10控制器调用拍照算法进行图片拍摄。步骤11-14将拍摄的图片逐步返回给电脑端控制器。步骤15和16电脑端控制器将图片交给疾病识别算法进行疾病识别,识别完成后将结果返回。由上图可以看出本文的通信模块分为电脑端和小车端两个算法,在一次手动控制操作中需要三次信息传递,分别为第3步将移动指令从计算机端传输至小车端,第8步将拍照指令从计算机端传输至小车端,第13步将拍摄图片从小车端传输至计算机端。总体来说,小车向计算机端传输的信息有小车与计算机之间需要进行通信,根据巡检流程可以了解到,在巡检过程中,小车需要向计算机传输的信息有:(1)拍摄的图片,由于识别过程在电脑端进行,所以小车需要将图片实时传输到电脑端。(2)自身位置信息,在巡检过程中,在电脑端可以实时监测小车位置是必要的。而且在发现疾病时,小车也需要将位置信息上传,以便工作人员了解到疾病发生的位置。计算机需要向小车的信息有:(1)发送开始,结束指令:电脑端应该可以控制小车是否进行巡检。(2)巡检频率:小车自动巡检的时间间隔。(3)移动指令:虽然小车可以进行自主移动,但是也可以改为手动模式进行操作。基于此对通信模块进行设计,其类图如下图1.4所示。图1.4通信类Fig.1.4CommunicationclassPCSocket类为计算机端用于通信的类,是socket通信中的客户端,其包含两个属性,为小车通信程序运行时的IP地址和端口号,通信时程序将首先使用此信息与小车建立连接。此类还包含四个方法,dataRecv()是数据接收函数,负责监听从小车端传输过来的信息。ImgRecv()与localRecv()是具体的接收函数,分别用来接收图片和位置信息,运行时被dataRecv()函数所调用。最后dataSend()是数据发送函数,计算机端向小车端发送的所有信息均通过此函数发出。RobotSocket是小车端通信类,是socket通信中的服务端。其包含三个常量,分别定义了不同信息的代号,为数据解析时用。另一个属性port为此程序的监听端口。此类还包含了三个方法,其中dataRecv()与dataSend()用于数据收发,dataPraser()的功能为解析接收到的数据,判断其为巡检参数、手动操作指令或是其他指令,以便将此数据分发给不同的模块。1.2.3导航模块设计导航模块负责小车所有移动相关的功能,根据小车的移动方式可分为手动导航与自动导航,上文4.1节对自动导航算法进行了设计,本节将详细介绍导航模块的组成与运行流程。在小车开始导航时,算法首先判断此次导航的模式为手动模式还是自动模式,当为手动时,算法会循环接收手动操作指令并操作小车移动,直到接收到终止指令;当导航模式为自动模式时,算法将循环读取超声波传感器的值,并依此判断小车当前位置,然后根据不同位置采取不同操作。本导航算法的流程图如下。图1.5导航算法流程图Fig.1.5Navigationalgorithmflowchart下图1.6为导航模块的类图。此类包含三个属性和八个方法。其中navigationMode表示导航模式,分为自动导航和手动导航,moveInstruction是指移动指令,为二元元组,包含移动方向与移动距离。移动方向有向前直行,向后倒车,左转及右转。当移动方向为前或后直行时,移动距离代表直行的距离,当移动方向为转向时移动距离则代表转向角度。carLocation为小车位置,小车巡检过程中有四个位置:起始位置、田垄内、田垄外和终止位置。图1.6导航类Fig.1.6Navigationclass此类还包含八个方法,其中前两个方法为开始和结束导航。manualPilot()为手动导航算法,当导航模式为手动模式时类的内部将调用此算法;而当导航模式为自动模式时将调用autoPilot(),这一自动导航算法。linearFitting()为一元线性拟合函数,自动导航时将用它来进行拟合。motorControl()为电机控制算法,此方法负责将移动指令转换成相应的PWM驱动信号,从树莓派相应引脚发射出去,以控制电机移动。其中移动指令与PWM波的对应关系在3.1节处已经描述。collisionDetection()函数功能为碰撞检测,在小车测距距离小于阈值则此函数会强制停止小车向这一方向移动并发出碰撞警告。LocationJudge()为小车位置判断函数,包括起始、田垄内、田垄外和结束四个位置。1.2.3用户界面设计本系统需包含一个运行在计算机上的用户界面软件,软件为用户提供显示与操作的平台,用户可以通过此软件设置小车巡检参数,查看疾病识别结果等。具体需要进行显示的信息包括:小车目前状态、实时图像与识别结果、历史数据查询等。需要操作的功能包括:设置IP地址与端口号并与小车连接、设置巡检频率和巡检垄数、设置当前作物种类、更改操作模式及手动操作小车等。界面设计规划如下图1.6所示。图1.7用户界面设计Fig.1.7Userinterfacedesign因本软件功能并不复杂,为使用方便将功能全置于主界面之上,可以一目了然。为避免杂乱本文将功能归类,按类别将界面分为五个区域,各个区域功能如下:1.连接区:此区域负责小车连接配置与小车状态观测,其中连接配置包括IP地址与端口号。2.参数配置区:此区域负责小车巡检参数的配置。具体包括作物种类、巡检垄数以及巡检频率等参数。在参数配置完成后,可在此区域手动启动/停止小车巡检。3.历史数据区:此区域负责保存巡检日志以及历史数据查询等操作。出于对数据存储量以及数据有用性的考量,此软件仅会缓存当次巡检日志,并只保存患病日志。但如果用户想要保存全部日志,则需在此手动保存。4.实时数据区:此区域负责实时显示巡检过程中拍摄的图片以及图片的识别结果等信息。1.手动操作区:此区域负责小车导航模式的更改以及手动操作小车等操作。1.3系统集成与测试本节将机械、硬件、软件三者集成,制造出最终的疾病检测小车,并在真实环境下测试小车的移动导航、拍照、通信等功能。1.3.1系统集成(1)小车组装本小节将根据第3章的机械与硬件设计,购买器件组装小车。其中机械部分因本人不具备相关技术与条件自行制作小车的车体骨架,故只能于市面上选用基本能满足需求的小车型号,然市面上皆是些通用型小车,并无专为大棚场景所设计之,选择起来难免捉襟见肘。不过,仅仅用于测试本文所提算法之有效性,还是足够的了。最终,本文选用PIBOT公司出产的两轮差分小车Apollo,此小车具有两个驱动轮和一个万向轮,车身尺寸为:长25cm、宽18cm、高22cm,基本可以满足需求。机械结构组装完成后为小车配置硬件器件,本文所选用器件名称与类型如下表1.1所示。表1.1小车硬件清单Table1.1TrolleyHardwareList名称类型控制器电机驱动芯片摄像头步进电机RaspberryPi3bL298NRaspberrycamera42BYGH34超声波传感器Hc-sr04以上器件在硬件设计章节有所介绍,将器件安装至小车车体上并固定好。组装完成的小车如图1.8所示。图1.8小车实物图Fig.1.8Physicaldrawingoftrolley(2)软件实现本软件系统开发环境为:硬件配置:CPU型号:Intel®Core™i7-7700HQ,GPU型号:NVIDIAGeForceGTX1050。内存16GB,显存4GB,硬盘空间1TB;软件配置:Windows10操作系统,编程语言采用python3.6,开发工具为Pycharm,界面开发包使用Tkinter。软件运行环境为:小车端软件运行于树莓派3b上,计算机端软件运行于开发所用笔记本上。本软件因使用python语言开发,移植性好,对运行环境要求不高,因软件中包含神经网络算法,故在有独立显卡的环境下运行速度较快。根据1.2节的系统设计,在此使用python语言对软件系统进行实现,并使用Tkinter包进行用户界面设计,实现的程序如下图1.9所示。图1.9软件界面Fig.1.9Softwareinterface用户界面提供了用户所需的基本功能,包括巡检参数配置、巡检流程控制以及识别结果查看等。用户使用本软件可以方便的操作小车进行巡检,用户操作小车进行巡检的流程如下图1.10所示。首先,用户需将小车开机并放置于巡检开始位置,之后在软件上设置IP地址与端口号并尝试与小车进行连接。如果连接成功,则小车状态栏将会显示“已连接”,如并未显示,则说明连接失败,需进行故障排除。在连接成功后,用户需设置巡检参数,然后点击开始巡检按钮启动巡检流程。正常巡检时小车会移动并拍照,用户可以在界面上实时查看所拍摄图片以及识别结果。小车完成巡检任务后会自动停止,用户也可以通过界面操作让巡检过程提前结束。图1.10巡检操作流程Fig.1.10Patrolinspectionoperationprocess1.3.2小车移动导航性能测试本小节将对小车的移动导航功能进行实地测试,实验所用场地为校园南侧一菜地,如下图1.11所示。进行实验时此菜地尚未到种植季节,然经测量,其田垄间距与高度等数据符合蔬菜大棚田垄结构,故可用做实验。实验展开分为手动导航功能测试与自动导航功能测试两步,具体操作如下。图1.11实验场地Fig.1.11Theexperimentsite(1)手动导航测试在手动移动测试中,首先通过用户界面程序与小车建立连接,并将操作模型改为手动模式。随后将小车置于地面,通过按下移动按钮,测试小车的移动能力,测试结果如下表1.2。表1.2手动移动测试结果Table1.2Manuallymovethetestresults移动方向位置测试次数平均移动速度(m/s)/转向半径(m)故障次数前进田垄间100.181田垄外100.250后退田垄间100.171田垄外100.270转向田垄间10/10田垄外1000由上表可知,此款小车基本可以在田垄结构的场景下有效移动,且故障率较低,仅田垄内转向操作无法完成,原因为其长度大于田垄间距,故转向时车身会与田垄相触碰。好在小车正常巡检时只需在出田垄之后进行转向,并无在田垄内转向之要求。(2)自动导航测试小车自动导航过程中的位置包括四个状态:起始位置、田垄内、出田垄与结束位置,其中需重点测试的为小车在田垄内的自动导航效果。首先对不同窗口值,也就是每次拟合使用历史数据量的多少对最小二乘拟合效果的影响进行测试。实验展开如下:首先通过测量设备测量并标记出垄间中心线,然后将小车至于中心线上,手动操作小车前进并记录超声波传感器的测量值。最后将垄间中心线以及测距数据输入到拟合算法之中,并通过改变窗口大小完成对比实验。拟合效果如下图1.12。图(a),(b),(c),(d)分别为将窗口大小设置为5、10、15和20的拟合效果。红点为距离值,黑线为垄间中心线,蓝线为每一步的拟合线。由图可见,在田垄为直线的部分,窗口越大,拟合路径越接近于田垄中心线;而在田垄转弯处,(d)图中拟合路径没能跟立刻做出响应随田垄转弯,而是直到田垄已经转弯一段距离,拟合路径才逐步跟随田垄转弯,表现出延时效应。分析可知,窗口过小,拟合路径受瞬时测量值影响较大,从而田垄不齐的边缘会严重影响拟合路径;窗口过大则拟合路径受历史测量值影响较大,当田垄不直时拟合路径会存在所谓延迟。综上,本文选取窗口大小为15,能兼顾瞬时值和历史值,使得小车可以有效在田垄中移动。图1.12不同窗口大小拟合效果对比Fig.1.12Comparisonoffittingeffectsofdifferentwindowsizes接下来将实地测试不同窗口的导航效果。让小车在垄内移动两米距离,观测是否发生碰撞,并记录所消耗时间以及小车远离田垄中心线的最大偏移角与最大偏移距离,数据如下表1.3所示。其中窗口大小为5与20时发生碰撞,碰撞即小车车体与两侧田垄发生接触。窗口为10与15没有发生碰撞,最大偏离角与最大偏移距离也不分伯仲,但由于窗口15的小车移动时转向操作较少,故完成时间要短一些,由此验证了15为较合适的窗口大小。表1.3自动导航实验结果Table1.3Experimentalresultsofautomaticnavigation窗口大小移动距离(m)消耗时间(s)是否碰撞最大偏离角最大偏离距离(cm)52/是54°4.810212.1否32°2.415210.1否26°2.5202/是47°51.3.3小车通信性能测试本小节将对小车的通信功能进行测试,其中需要测试的指标为小车与计算机之间通信的延时。小车的自动导航过程对通信延时的要求不高,但在手动导航时,由于操作人员需要根据屏幕上小车拍摄的图片判断小车位置,从而下达移动指令,如延时较高则

温馨提示

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

评论

0/150

提交评论