余胤翔 赵宇洋 黄胤政等
摘 要:水面垃圾会造成水体污染,它不仅破坏了水域生态系统平衡,并且对人类社会的生产和生活也产生了巨大危害,还会影响到船只的航行安全。目前,市面上主要的水面垃圾清理船体型庞大,很难应用在一些小型水域。并且多采用人工搜寻和清理的方式,但是人工搜寻效率低,人力成本高。针对该问题,设计了一款基于机器视觉的水面垃圾寻航系统,该装置基于YOLO-V2卷积神经网络模型进行目标检测,寻找水面垃圾等漂浮物,控制船只靠近目标物进行拾取,通过GPS进行导航,使用蚁群算法和完全遍历算法进行路径规划,同时用ESP32-cam和小熊派完成云端数据通信。最终达到自动出航和返航、垃圾自动拾取、远程监控的效果。
关键词:水面垃圾;卷积神经网络;优化算法;PID;路径规划基金项目:本项目由大学生创新创业训练计划项目基金资助
近年来,随着城市建设的飞速发展,不少江河、湖泊、海洋等水面受到水域污染物不同程度的污染[1]。这极大影响了整个水域的生态平衡,甚至影响到了人类社会生活的方方面面,水质富营养化导致大量养殖鱼类缺氧而死,大量垃圾堆积在河面,影响到船只的航行安全等问题。随着人工智能技术的不断发展,针对目前水面垃圾清理船人工成本高、捕捞效率低的问题。为了减少在人工搜寻垃圾时消耗的成本,设计了一套基于机器视觉的水面垃圾寻航系统。
机器视觉是移动机器人最重要的感知手段之一[2]。
通过机器视觉对水面垃圾进行目标检测是现在主流技术实现方法。目前对于一些水面垃圾的检测的方法,学术界已经有多种相关研究。王敏等运用浮雕处理凸显水面区域的边缘灰度,然后利用区域一致性进行边緣检测分割出水面和水上物体[3]。汤伟等提出改进Faster R-CNN卷积神经网络的构建来提升水面垃圾检测的精确度。
即便如此,复杂的水面情况,依旧会给物体的目标检测提升很多难度。例如,河岸上强光的反射,水面波浪和许多普通的水面漂浮物等因素都会干扰到最后的目标检测。在产品的实际测试中,这些方法都不能完全满足全自动水面垃圾清理船的需求。
通过对市面上水面垃圾清理装置进行的调查研究,发现目前该类产品还只停留在垃圾自动捕获和人工驾驶的阶段,但是自动搜寻和导航等相关功能还不完善。
综上所述,这类水面垃圾寻航装置的研究和应用价值非常大。
1 系统整体设计
根据水面环境的特殊性,将多种算法进行有效结合。
通过摄像头获取图像,核心处理器通过二值化处理、优化算法、神经网络、滤波算法等方式进行图像处理,对水面垃圾进行目标检测并获取图像位置信息。
视觉捕捉到水面的垃圾之后,根据垃圾在图像中的位置计算出方位,控制垃圾清理船往垃圾方向移动,最后通过船只自带的捕捞传送带将垃圾捕获,完成垃圾“寻航”和清理的任务。
路径规划方面,分为两个方向,一个方向是整体路径规划,主要通过GPS 导航获取经纬度等信息。先导入整个区域的水域分布图,输入划定的起点和终点的GPS 经纬度进行整体的路径规划。另一个方向是船只识别可见区域内的路径规划,根据船只的可见区域内的垃圾分布,根据距离远近确定优先级,基于优先级的情况下,通过蚁群算法进行短期的路径规划,计算最短路径。
该系统还可以进行自动返航,任务进行的过程中,记录下路径,当任务完成后,结合之前的路径,计算当前位置到终点的最短路径。
系统整体设计如图1,整个系统分为传感器部分、主控系统、控制部分和通信部分。传感器部分主要由风向传感器、风速传感器、光照传感器、摄像头模块、GPS 模块组成,主要负责收集风速、风向、光照、图像、位置等信息输入主控系统中。主控系统为以K210 芯片为核心的核心板。控制部分为垃圾收集装置和两个电机。
通信部分为以STM32L431RCT6 芯片为主控的BearPi-IoT 主板,具备4G 通信功能。
1.1 传感器部分
系统采用精讯畅通公司研发的风速、风向传感器,采用RS-485 通讯方式连接单片机输出信号。风速测量范围为(0~30)m/s,测量精度是±1 m/s 。光照传感器选用光敏电阻传感器模块。GPS 模块选用小熊派社区开源的E53_ST1 案例扩展板,和小熊派通讯连接。摄像头选用OV5640 型号,图像分辨率为500 万像素。
1.2 主控系统
系统选用K210 核心板,K210 采用RISC-V 双核64 位CPU,算力超过Jerson nano, 达到1TOPS 算力。
功耗仅为0.3 W,续航能力强。
1.3 控制部分
图2 为垃圾收集装置,通过设置打捞结构,使用电机带动主动轮转动,从而带动垃圾输送带转动,将水面漂浮的垃圾传送到上料板顶部,然后垃圾掉落到船体顶部的垃圾槽中,这样通过打捞机构各部件之间相互配合能够实现对水面垃圾的自动清理。使用液压缸控制上料板底部上升或者下降,可以让上料板底部离开水面或者下降到水面以下,以此来控制整个装置清理水面漂浮的垃圾。
1.4 通信部分
考虑到系统工作过程中传输数据量比较庞大,因此将数据传输任务分为图像传输和普通数据传输两部分。
图像传输选用的是ESP32-CAM,烧录好代码后,通过电脑浏览器打开局域网进行连接,获取ESP32-CAM 传输的画面,直接作为远程监控器使用。普通的数据传输,选用以STM32L431RCT6 芯片为主控的BearPi-IoT主板,通过连接华为云平台进行云端数据上报,采用LWM2M 通信协议。在华为云平台上,用户可以直接接收到系统发送的风速、风向、光照、经纬度位置等数据信息,同时能直接从云端进行命令下发。如图3 是华为云平台的数据双方交互页面。
1.5 自动控制系统
如图4 为该系统的运行流程图,启航前,先导入水域分布图,通过串口屏的菜单界面设定路线。设定完路线后系统开始进入自动导航模式,系统按照既定路线自动驾驶,当摄像头识别到水面上的垃圾时,对整个图像中的垃圾的位置和数量进行记录,通过蚁群算法计算出最短路径,之后按照规划的路径对垃圾进行捕获操作。
捕获完垃圾后,系统会按照既定的航线继续航行,或者选择进入返航模式。系统进入返航模式后,会根据当前的GPS 坐标和终点停泊位的GPS 坐标进行航线规划。
之后系统会驾驶船只进行自动返航,返航后自动进行停泊。
整个操作过程中,船只经过的航线位置信息以二维数组的形式进行记录,将数组以二值化的黑白图像的方式在屏幕上显示出来,同时将数据通过BearPi-IoT 进行云端数据上报。
2 软件算法
2.1 船体移动控制
整个船只的移动采用双电机结构,当左电机的转速大于右电机的转速,船体就会逐渐向右行驶,反之同理,船只就可以通过两个电机的差速来实现转向的操作。转向的控制算法采用了串级PID。采用串级控制的主要优点是,能直接将干扰量加入到副回路中,由副回路控制并对其进行抑制;同时,副回路的惯性由副回路进行调节,大大提高了系统的响应速度。这里列出船体的左电机PID 公式。
如图5 为用MATLAB 软件生成的PID 结构框图,输入真实速度值、期望速度和偏航角度值等数据,根据公式中原有调试设定的PID 的参数值,得出赋予电机的PWM 值,来达到精准控速的效果。
2.2 卷积神经网络
神经网络在目标检测识别已经得到了广泛应用,出现了RCNN、Fast R-CNN、Faster R-CNN 和YOLO 等模型。YOLO 能够实现从端到端实时的目标检测,但是检测精度较低,YOLO-V2 在YOLO 的基础上进行改进,既能够进行实时检测,而且检测精度也得到了大幅提升[3] 我们选用的K210 芯片自帶卷积神经网络加速器KPU,可以极大提高图像处理的速度。
神经网络的模型训练采用官方提供的网站云端训练模型, 使用的网站是https://maixhub.com/home。如图6为网站页面。
将训练好的模型放到K210 的SD 卡槽中,实现模型的直接部署。烧录完代码后,系统正常运行时,会对摄像头捕获的图像中的水面垃圾进行目标检测。并记录目标在图像中的位置信息(X,Y 中心坐标值),用于系统对于可见区域内进行短期路径规划,通过计算得到的轨道偏差值,导入船体控制的核心PID 公式,进行船体移动控制。
2.3 水域分布与路径规划
在复杂的水面环境中,为了让船只搜寻水面(湖面、河流)的各个角落,需要建立整个水域分布的模型同时进行路径规划。水域分布模型的建立采用完全遍历路径规划的方法[4]。
首先,通过超声波模块进行环境感知,对未知环境进行搜索。当超声波模块探测到陆地岸边,视为船体已经抵达水域范围的边界,通过GPS 导航记录点位,并在水域分布地图图像中进行更新。
这里选取了辽宁科技大学中的一片小水湖作为测试地点进行实验,对实验方法进行验证,首先将该船只放在湖面上进行完全遍历搜寻,生成环境地图,将地图的图像以二维数组的形式进行保存。并通过华为云云端上报数据。电脑保存图像信息,通过MATLAB 软件生成二值化图像,如图7。
2.4 蚁群算法
系统采用蚁群算法作为在船只识别可见区域内的短期路径规划。它的核心实现思想是,蚂蚁在寻找食物的过程中,会留下信息素,信息素的累积会吸引更多的蚂蚁。当一群蚂蚁分布在多条路径中,选择较短的路径的蚂蚁往返的时间更短,频率更高,单位时间内蚂蚁的通行数量更多,因此留下的信息素浓度更高,从而吸引更多的蚂蚁。而新增加的蚂蚁会加快信息素增长的速度,从而形成正反馈,最终蚁群会聚集到最短路径上来,得到最优解。
每个蚂蚁在选择路径时是按照随机的概率进行选择。随机概率的计算公式如下:
公式中,i 和j 分别表 示起点, γ ij(t)是时间 t 内由 i 到 j的信息素强度;δ ij 是能见度,i,j 两点间的距离的倒数;allowedk为尚未访问的节点集合;α、β 是信息素和能见度的加权值;分子是信息素强度 和可见度的幂乘积,而分母则是所有分子的和值[5]。
首先通过MATLAB 软件对蚁群算法进行代码模拟仿真。
先导入各个垃圾分布在图像中的位置信息(数据来源于K210 通过目标检测识别获取的多个垃圾位置信息)。计算各个垃圾之间的距离,将数据存储在数组中。
蚂蚁路径时都会均匀留下信息素,随着时间的变化,信息素也会逐渐蒸发,因此还需要引入参数信息素挥发因子r。那么蚂蚁留下的信息素量减去挥发后的信息素量就是路径上的信息素量。之后导入信息素浓度t、蚂蚁数量m、最大迭代次数maxiter 等重要参数进行设置。
进行迭代,寻找最优路径。每次迭代都会更新路径,最终得到最优解。图8 为部分代码展示。
经过模拟仿真测试后,将核心算法及参数移植到K210 单片机程序中进行应用测试,将规划好的路径在屏幕上显示出来,观察规划速度情况并适当调整参数。
通过调节蚂蚁数量、迭代次数和信息素浓度等参数,提高系统在不同环境变化下的灵活性。
3 运行测试结果
3.1 串级PID仿真
在实际调试PID 前,先用MATLAB 软件进行仿真调试。如图13 为部分代码。
为了使仿真结果更加真实,加入了干扰信号。如图9 为外加干扰信号的波形图。
副调节器采用PD 转向环,其针对阶跃信号的输出响应结果如图10。
主调节器采用PI 速度闭环,其针对阶跃信号的输出响应结果如图11。
3.2 目标检测识别
神经网络模型训练的数据集采用周边河道、湖面上的垃圾进行实地取材。使用VoTT 软件对图片加标签用作训练数据,如图12。
将训练好的模型部署在K210 中,进行摄像头识别测试,如图13。
3.3 路径规划测试
将摄像头通过目标检测识别获取的多个垃圾的位置信息作为蚁群算法的输入值。通过计算得到的最短路径结果、适应度和收敛曲线如图14、15 所示。
4 结束语
本文介绍了一种基于机器视觉的水上垃圾寻航系统,该系统在云端进行模型训练,将YOLOV2 神经网络模型部署到K210 进行使用,实现对水面垃圾的精准目标检测和识别。并操控收集装置自动捕获水面垃圾。
在路径规划方面,该系统能通过GPS模块进行自主定位,运用蚁群算法和完全遍历算法实现整体和局部的路径规划,最后实现自动出航和返航。其搭载的物联网设备,能够实现云端数据上报和无线图传,达到宏观调控的效果。相比于在传统的海洋、湖面进行人工捕捞,效率得到大幅提升,极大节约了人力成本。在环保卫生和水上交通领域,有广阔的市场前景。