Research on Grass Recognition of Mowing System Based on Machine Vision
-
摘要: 为使割草机系统实现青草识别,规划割草机运动路径并自动进行割草工作,采用单步多框检测器(SSD)目标检测算法和卷积神经网络框架(Caffe)在工作机上训练青草识别模型. 通过树莓派(RPi)拍摄割草场地照片并传送到工作机,工作机计算青草在图片中的坐标值并返回至树莓派,树莓派再根据青草的坐标值自动计算车桥转动角度和后轮电动机运行时间及方向,调动割草机机械部分进行割草作业. 实验结果表明,较之于传统的人工机械割草机或围栏式割草机,训练的青草识别模型能正常识别青草,割草机能较好地自动规划割草路径,具有一定除草效果. 研究结果实现了机器视觉和传统机械的结合,为今后智能机械的研究提供一定思路.
-
关键词:
- 青草识别 /
- 单步多框检测器(SSD)模型 /
- 机器视觉 /
- 三维建模
Abstract: In order to realize the grass recognition in the mower system, plan the moving path of the mower and cut the grass automatically, the target detection algorithm of single shot multibox detector (SSD) and convolutional architecture for fast feature embedding (Caffe) were used to train the grass recognition model on the mower. Pictures of grass cutting field were taken by raspberry pie (RPi) and sent to the working machine. The coordinate values of the grass in the picture were calculated by the working machine and returned to raspberry pie, and the axle rotation angle, the running time and direction of the rear wheel motor according to the coordinate value of the grass were calculated automatically, and then the mechanical parts of the mower were mobilized to mow the grass. The experimental results show that compared with the traditional manual mechanical mower or fence mower, the trained grass recognition model can recognize the grass normally, and the mower can better plan the mowing path automatically, which has a certain weeding effect. The research results realize the combination of machine vision and traditional machinery, and provide some ideas for the future research of intelligent machinery. -
对很多学校和大公司来说,草坪修理是需定时进行的一项工作,马振峰[1]介绍了一种用智能视觉和硬件控制的智能割草机,但其研究主要突出其系统的硬件组成,对于机器视觉方面的实现介绍得并不多. 徐伟峰等[2]介绍了一种智能割草机器人,但其研究的割草机主要通过GPS定位控制割草机运动,割草机的智能程度仍有提高空间. 机器视觉近年来在目标检测、自动驾驶领域大量使用,其技术较为成熟,国内研究者也已经进行了相关技术研究[3-5].
现有割草机存在过于依赖人工、噪声大等缺点,为尽量减少人工操作割草机,使割草机能自动、智能地识别工作区域的青草位置,自动规划路径并进行割草工作,本研究将人工智能和传统机械、电气相结合,基于单步多框检测器(Single Shot MultiBox Detector,SSD)、卷积神经网络框架(Convolutional Architecture for Fast Feature Embedding,Caffe)算法和单片机控制系统,研发一种完全自动化的割草机器人.
1. 割草机工作原理
割草机系统由青草识别、局域网、单片机电路、机械组成、数据展示等5个子系统组成,主要零件组成如图1所示. 割草机的工作原理为:1)建立一个局域网络,将割草机搭载的树莓派(RPi)以及搭载青草识别模型的Ubuntu16.04工作机(下文简称工作机)接入此局域网;2)通过树莓派控制安装在割草机上的摄像头拍摄照片,工作机通过局域网下载树莓派拍摄的照片;3)工作机上的青草识别系统用此前训练好的青草识别模型(模型基于SSD算法)识别图片中出现青草位置的坐标信息,并更新工作机上青草识别信息数据库(基于MySQL5.7)里的相关数据信息;4)树莓派通过局域网读取工作机数据库中的相关信息并将这些信息发送至Arduino;5)Arduino将树莓派发送来的信息作为参数传入内部运动函数,控制割草机运动并割草. 当所在区域割草任务完成后,割草机将割草函数返回的数据发送给树莓派,树莓派控制摄像头旋转一定角度拍照,割草机开始重复下一轮识别、割草工作.
2. 割草机系统
2.1 割草机软硬件组成
本研究的割草机实物首先运用SolidWorks进行三维建模,之后再组装各零件,各零件具体名称及组成关系如图1所示. 割草机软件系统组成包括:青草识别系统、局域网树莓派与工作机数据交换系统、单片机运动工作控制系统、网络服务器、数据库网页展示系统.
2.2 青草识别系统
1)选择SSD识别模型
割草机器人采用目标检测[6-8]方式识别青草. 主流识别模型算法有快速区域卷积神经网络 (Faster Region-based Convolutional Neural Networks,Faster R-CNN)、SSD[9-11]和一次检测(You Only Look Once, YOLO). 各检测模型的性能见表1.
表 1 检测模型性能对比Table 1. Performance comparison of detection models检测算法 Map FPS 批尺寸 Boxes 输入归结 Faster R-CNN(VGG16) 73.2 7 1 6000 1000 × 600 Fast YOLO 52.7 155 1 98 448 × 448 YOLO(VGG16) 66.4 21 1 98 448 × 448 SSD300 74.3 46 1 8732 300 × 300 SSD512 76.8 19 1 24564 512 × 512 SSD300 74.3 59 8 8732 300 × 300 表中,Map为检测精确度,数值越高,检测越精确;FPS为检测速度,数值越高,检测越快;Boxes为检测适合物体大小.由表1可以看出,基于Caffe框架的SSD模型系列算法比R-CNN检测模型速度更快,比YOLO模型更准确,因此本研究综合采用Caffe-SSD模型训练目标检测模型. 其中,SSD损失函数表达式为
L(x,c,l,g)=1N(Lconf(x,c)+αLloc(x,l,g)) (1) 式中:L为SSD算法的损失函数;c为置信度;l为预测框;Lconf为置信损失;Lloc为定位损失;α为损失函数分类和回归的权重;N为匹配到的default box的数量;x为预测框与有效数据之间的差异;g为真框.其中,
ˆgcxj=(gcxj−dcxi)dωi ;ˆgcyj=(gcyj−dcyi)dhi ;ˆgωj=log(gωjdωi) ;ˆghj=log(ghjdhi) .损失函数的位置误差为
smoothL(x)={0.5x2,|x|<1|x|−0.5,其他 (2) 置信度误差(Confidence Loss)Lconf公式为
Lconf(x,c)=−N∑i∈Posxpijlog(ˆcpi)−∑i∈Neglog(ˆc0i)whereˆcpi=exp(cpi)∑pexp(cpi) (3) 2)训练青草识别系统
首先,在不同角度、不同光照条件下拍摄一定量青草照片并在网上用爬虫下载一定量青草照片;其次,筛选出可用的青草照片,并用图片标注工具标注出图中青草位置;再次,在Ubuntu上下载配置Caffe-SSD;最后,设置labelmap_voc.prototxt的item参数为grass和background两个类别,改变base_lr、batch_size等参数的值使loss参数逐渐降低并收敛(即调参),获得收敛且可正常识别青草的模型,训练流程如图2所示. 最终获得的青草识别模型的识别准确率为93.73%.
3)使用识别模型并计算出现实长度
目前,路径规划被广泛应用于导航、机器人运动、车辆自动控制等方面[12-13]. 用ssd_detect.py识别照片中的青草区域,识别示例如图3所示. 在ssd_detect.py脚本里加入计算距离函数,计算青草区域偏离割草机的角度函数,向MySQL数据库中插入数据函数,用ssd_detect.py识别出青草所在区域的坐标. 在摄像头竖直方向角度固定的情况下,图片中距离与实际距离呈一定的比例关系,可通过多次测量取期望得出图片与实际距离的比例关系. 最后,将图片中的目标区域坐标转换成实际割草机需要运动的角度和距离,角度计算示意图如图4所示.
图4中,W为青草照片的横向长度(1280 pixel);H为青草照片的竖直长度(960 pixel);(x0,y0)为拍摄照片的左下角坐标;(x2;y2)为割草机在照片中的理想位置(水平中点);(x3;y3)为青草区域右下角的坐标;α为青草区域偏离割草机的角度;L为青草照片中割草机到青草区域右下角的长度,计算式为
L=√(x3−W2)2+y22 (4) 青草区域偏离割草机角度α的计算式为
α=90∘−arctanWx3−W2 (5) 将青草照片的横向长度进行分割,分割公式为
{m1=W×0.2m2=W×0.4m3=W×0.6m4=W×0.8 (6) 式中:m1、m2、m3、m4、
W 分别为将拍摄的青草图片平均分割为5段,距离图片原点边的各段长度. 图片中相关距离、角度通过一定的转换比例可转换为现实中的距离、角度,转换比例公式为
RL={L×10,0⩽L⩽m1m1×10+(L−m1)×30,m1<L⩽m2m1×(10+30)+(L−m2)×50,m2<L⩽m3m1×(10+30+50)+(L−m3)×70,m3<L⩽m4m1×(10+30+50+70)+(L−m4)×90,m4<L⩽W (7) 式中:RL为各图片中用青草识别模型识别出的青草长度对应现实中的距离. 在将图片中的相关参数转换成现实世界中的参数时,最大只能转换整个图片长度的数据.
将计算得到的数据与其他相关数据插入到Ubuntu软件上MySQL数据库的grass表中,并更新表中的字段is_update值为1,表示图片位置数据信息已更新.
4)数据传输与拍照系统
如图1所示,树莓派安装了raspberry pi(32位)系统,其主要功能包括作为服务器存放拍摄的青草照片、从工作机的MySQL中获取青草识别数据、将从数据库中下载的数据发送至Arduino、通过连接到树莓派上的摄像头进行拍照.
具体步骤为:在树莓派上安装Apache服务器和MySQL数据库,并通过局域网系统用Python脚本下载青草数据信息,同时将工作机grass表中is_update字段的值设置为0,将获取的信息通过Python脚本的serial端口发送至Arduino;用Python脚本调用终端的fswebcam命令,通过摄像头拍摄1280 × 720(pixel)的青草照片,并将照片存储在树莓派搭建的服务器目录下,以供局域网中识别青草的工作机获取青草图片;树莓派检测工作机grass表中is_update字段的值是否为1,若为1,便获取目标区域4个实际坐标值与距离、角度等参数,并将这些参数通过字符串函数转换成各数据相连接的字符串,再通过Python脚本里面的serial库函数传输到Arduino.
2.3 Arduino单片机运动及工作控制系统
1)Arduino通过get_prameter函数处理传过来的数据字符串,将其解析为实际距离、实际角度、再通过其他函数将距离转换成电动机运动的时间和舵机运动的角度等. Arduino通过调节电压大小和方向控制机器人的前进、后退、速度. 通过转向舵机转动一定角度带动前轮车桥运动,实现机器人的转向功能. 当割草机一次割草动作完成后向树莓派发送信号,树莓派再通过脚本控制摄像头水平旋转180度拍摄6张照片,Ubuntu通过wget得到图片并进行训练青草识别.
2)割草机主要由2个后轮电机提供动力,由于电机功率较大,所以2个后轮电机都连接了大功率电机驱动模块. 用前轮的车桥系统作为割草机转向系统,割草机通过割草电机和割草刀片组成割草系统.
3)通过安装在Arduino上的APC220无线模块和DFR0008 DFRobot(遥控板)可在1000 m的远程控制割草机的运动及工作开关.
2.4 网页展示系统
此网站由PHP+MySQL开发,将MySQL和Apache部署在Ubuntu上,网站主要功能为显示割草机的各项参数,操作人员也可通过网页改变割草机的各项参数.割草机的总体系统组成和工作原理如图5所示.
3. 实验测试
3.1 软件测试
1)训练模型
硬件环境:联想小新潮7000,Genforce 940MX,GPU一个;软件环境:Ubuntu 16.04,cuda-10.1,cudnn7.4.2.24,nvidia-418.56,Caffe-SSD,opencv-3.4.3;训练时间:30 h;训练样本:200张图片;训练各参数:base_lr=0.0000004, batch_size=2, max_iter=120 000. weight_decay=0.000 5, gamma=0.1;网络标签参数:1)background;2)grass.
2)展示网站开发
网站采用Thinkphp5+MySQL+Html+JS+CSS3开发. Apache服务器和MySQL数据库放置于Ubuntu机上.
3)Arduino控制脚本编写
脚本主要包含解析字符串函数、运动控制、割草机控制函数、远程遥控函数、舵机控制函数以及各参数计算函数,如割草机运行时间、速度等. Arduino通过serial.read()函数读取树莓派和遥控器传送的数据,通过serial.write()函数向树莓派输出信号数据,且需编写能解析从树莓派传送过来数据的函数.
4)树莓派各脚本编写
用Python语言编写fswebcam软件捕获青草图片的shell脚本;配置树莓派上的服务器,将拍摄的图片放置于网站目录下,供Ubuntu获取;用Python语言编写操作Ubuntu数据库的各函数,如update、select,向MySQL读取和更新数据;用Python语言的serial库与Arduino通信,但通信时只能传送字符串,所以树莓派需将从Ubuntu数据库中获取的各字段数据重新组合成正确的字符串.
5)Arduino、树莓派、Ubuntu互相联网开发
此步骤主要是树莓派、Arduino、Ubuntu之间通信脚本的编写与调试. 树莓派与Arduino通过数据线通信,树莓派与Ubuntu通过无线局域网进行通信.
3.2 组装割草机
割草机系统主要由割草机Arduino硬件系统、Ubuntu16.04青草识别系统、以及树莓派无线通信系统组成,其实物如图6所示. 其中:2个后轮电机和割草机电机用24 V可充电电池供电,且采用双路直流电机驱动板模块,正反转PWM调速L298逻辑7 A/160 W模块,割草电机转速为10 000转/min,可满足割草刀片正常割草;割草机通过前轮车桥系统转向,将机电一体化,摄像头云台安装有竖直向、水平向2个舵机,具有竖直、水平2个方向和2个自由度;由于树莓派、Arduino以及各模块运行时会生热,所以采用18号零件(散热风扇为各电子元件散热).
将青草识别模型训练完成后并组装割草机,之后对割草机进行实地测试,割草机系统使用训练好的模型识别出的青草位置,然后使用位置转换算法将图片识别到的青草位置映射到以割草机的摄像头为原点的现实坐标中,最后割草机根据系统计算出割草机的转动角度、方向、运行时间进行割草工作及运动,实际测试如图7所示. 可以看出,割草机系统能正常运转,具有一定割草效果.
4. 结 语
相较于传统围栏式或手推式割草机,本研究的割草机无须架设电子围栏,利用SSD算法模型赋予割草机器人机器视觉,割草机系统能自动识别青草在图片中的坐标,然后将青草在图片中的位置坐标用算法映射为现实青草所在位置坐标,割草机再进行自动除草. 本研究将SSD算法和机械电气相结合,将机器视觉应用于割草机,使割草机更智能化. 通过对割草机实地测试,证明SSD机器视觉算法可与割草机相结合. 研究结果为人工智能和机电结合提供了一种参考思路和方法,今后,研究人员还可在割草机的运行路径规划方面继续进行研究.
-
表 1 检测模型性能对比
Table 1. Performance comparison of detection models
检测算法 Map FPS 批尺寸 Boxes 输入归结 Faster R-CNN(VGG16) 73.2 7 1 6000 1000 × 600 Fast YOLO 52.7 155 1 98 448 × 448 YOLO(VGG16) 66.4 21 1 98 448 × 448 SSD300 74.3 46 1 8732 300 × 300 SSD512 76.8 19 1 24564 512 × 512 SSD300 74.3 59 8 8732 300 × 300 -
[1] 马振峰. 基于智能视觉的割草机自动控制系统设计[J] . 计算机测量与控制,2018,26(7):84 − 87, 142. [2] 徐伟锋, 刘山. 基于PLC的智能割草机器人控制系统[J] . 农业工程,2020,10(1):22 − 25. doi: 10.3969/j.issn.2095-1795.2020.01.007 [3] 谢忠华. 基于视觉导航的割草机器人运动控制[J] . 农业工程,2016,6(5):30 − 32. doi: 10.3969/j.issn.2095-1795.2016.05.012 [4] 马超. 浅谈我国田间机械除草现状及发展趋势[C]//中国农业机械学会第四届青年学术年会论文集. 天津: 中国农业机械学会, 2007. [5] 郭亭亭, 杨然兵, 李娟, 等. 机器视觉喷药机器人的研发[J] . 中国农机化学报,2015,36(5):215 − 219. [6] 高彦杰, 于子叶. 深度学习: 核心技术、工具与案例解析[M]. 北京: 机械工业出版社, 2018. [7] 彭红星, 黄博, 邵园园, 等. 自然环境下多类水果采摘目标识别的通用改进SSD模型[J] . 农业工程学报,2018,34(16):155 − 162. doi: 10.11975/j.issn.1002-6819.2018.16.020 [8] IAN G, YOSHUA B, AARON C. 深度学习[M]. 赵申剑, 黎彧君, 符天凡, 等译. 北京: 人民邮电出版社, 2017. [9] Liu Wei, Anguelov Dragomir, Erhan. SSD: Single Shot MultiBox Detector[J]. 2015. [10] 周瑶. 基于深度学习的舰船目标检测与识别[D]. 哈尔滨: 哈尔滨工程大学, 2018. [11] 赵杰, 胡浩然, 孙启智, 等. 改进果蝇算法的运输车辆路径规划[J] . 黑龙江科技大学学报,2020,30(2):187 − 192, 204. doi: 10.3969/j.issn.2095-7262.2020.02.013 [12] 代峰燕, 高庆珊, 陈家庆, 等. 储油罐清洗机器人全覆盖路径规划研究[J] . 机械设计与制造,2020(2):263 − 266. [13] XU Y, GUAN G F, SONG Q W, et al. Heuristic and random search algorithm in optimization of route planning for robot’s geomagnetic navigation[J] . Computer Communications,2020,154:12 − 17. doi: 10.1016/j.comcom.2020.02.043 期刊类型引用(3)
1. 潘蔚铮,王菊霞,付夏辉,王毅凡,张峰滋,张宇. 果园割草机研究现状与展望. 南方农机. 2024(03): 1-5 . 百度学术
2. 杨天,赵武云,陈伯鸿,辛尚龙,何鹏,毛良. 我国果园割草机发展现状与展望. 农业工程. 2022(01): 5-14 . 百度学术
3. 李志伟,郭亨长,李宏伟,任远红,周武能. 中性笔芯无色硅油注入量检测系统研究. 上海工程技术大学学报. 2022(01): 16-22 . 本站查看
其他类型引用(0)
-