APP下载

基于机器视觉的水面垃圾清理装置

2023-03-01李乔硕陈君君姜家旺王文品

智能城市 2023年1期
关键词:水面框架垃圾

周 鑫 李乔硕 陈君君 姜家旺 王文品

(河南科技大学,河南 洛阳 471003)

随着人类社会的发展与进步,垃圾的清理与回收渐渐成为当今的社会焦点问题之一,其中水面垃圾清理回收则一直是急于解决的难题。传统的水面清理往往依靠大量的人力,且对于大面积区域进行集中清理费时费力,难以保证水面长久美观整洁。而本装置采用视觉智能系统,配合动力导航模块,可以实现自动捕捉,巡航,采集一系列清理水面垃圾以及智能化调整清扫任务等功能,可以有效解决所面临的问题。

1 系统总体设计

系统结构图如图1所示。

图1 系统结构图

系统由视觉模块、动力模块、机械臂抓取机构以及基于ROS操作系统的树莓派3B+等模块组成。视觉模块实时拍摄工作场景的图像,主控部分对图像执行识别处理,判断有无垃圾。若有垃圾,主控则返回垃圾的位置数据,主控控制机械臂装置对垃圾进行精确抓取,并放入回收箱中。对图像中的垃圾清理后,由动力系统控制电机驱动螺旋桨,实现装置的移动,进行下一个区域的清理。垃圾清理装置结合GPS的定位导航装置和视觉处理模块能够实现在水面的自主移动。

1.1 树莓派

系统使用树莓派3B+作为垃圾清理装置的主控,树莓派3B+上使用的CPU为64位1.4GHz四核ARM Cortex-A53的BCM 2837B0,具有1GB内存。其CSI摄像头接口接500万像素摄像头,对工作场景实时回传图像,树莓派对实时环境图像抓取处理,进行识别。树莓派运行ROS机器人操作系统,对视觉的实现和装置的运动进行全局管控。

1.2 机械抓取装置

机械抓取装置采用机械连杆结构如图2所示。船箱中的伺服电机向外输出动力能够实现位置精确,方便对垃圾的抓取和船体的移动。向外输出的动力使船体上的导轨滑块移动,带动连杆机构的转动使夹板张开与关闭,实现对垃圾的抓取。抓取装置后臂上的导轨滑块带动连杆机构的转动对前臂进行收放,将抓取的垃圾放到后方垃圾回收箱中。

图2 机械抓取结构

抓取装置常采用伺服电机直接控制张合,多数电路裸露在外,需要进行防水处理,提高了维护成本和使用难度,文章设计装置整个采用连杆机构联动,设备的移动以及转动部分的灵活性较高,能够有效避免电路与水面的接触,免去防水维护。

装置主要以收集塑料等漂浮垃圾为主,材料采用碳纤维材料。碳纤维材料具有高强度、耐高温、抗摩擦、导电、导热及耐腐蚀等特性,材料密度小,质量轻。

2 ROS机器人操作系统

机器人操作系统(Robot Operating System)操作方便、功能强大,适用于多节点多任务的复杂场景。广泛应用于机械臂、移动底盘、无人机、无人车等设备。随着大数据和AI的迅速发展,ROS的发展也日渐成熟。在发展的同时,领域扩展也在不断的创新。ROS作为机器人的软件开发平台,是通信机制、工具软件包、机器人技能和机器人生态系统的集合体,支持C++和Python等多种编程语言,为信息交互提供了便利。ROS为各种结点服务提供各种工具软件包,实现多功能调用,为各模块提供通信框架,将原本松散的框架进行了耦合[1]。

2.1 Navigation Stack工作框架

Navigation Stack工作框架如图3所示。

图3 Navigation Stack工作框架

Navigation Stack包含了ROS在路径规划、定位等方面的package。机器人自主导航功能依靠Navigation 中package,包含定位功能的amcl 和fake_localization、机器人位姿的卡尔曼滤波robot_pose_ekf、路径规划结点move_base 等。Navigation工作框架如图3所示,move_base 位于框架的中心,实现导航功能。move_base使用传感器处理后的数据来对机器人进行路径规划[2]。在实际导航任务中,将结点接入并完成启动,通过传感器提供的数据,规划机器人的路径和速度。

2.2 路径规划

move_base作为Navigation Stack中的核心节点,在导航系统中必不可少,包含垃圾收集装置的路径规划等核心功能模块。ROS作为机器人操作系统,具有路径规划等开源算法软件功能包,使用ROS中的路径规划算法包,对算法进行改进,使功能满足垃圾收集装置的路径航线设置。位于收集装置前方的摄像头执行障碍信息收集,使用光流法结合测距传感器作为move_base的数据输入,为路径规划提供必要数据。通过全局规划算法,在垃圾收集装置开始工作前,形成整个水域的行驶路线,在规定的行驶路线上对水面的垃圾进行清理。收集装置路径规划如图4所示。

图4 收集装置路径规划

垃圾收集装置通过静态地图获取水面区域信息,内置算法进行路径规划,从A点开始沿图中所示路径行驶,发现水面有垃圾时,通过垃圾回收功能实现对垃圾的清理。在设备视觉范围内检测无垃圾时,按预定行驶路线继续巡视监测。若检测到行驶路径超预定范围时,通过GPS定位导航纠偏,校正行驶路线[3]。

3 垃圾识别程序设计

垃圾识别系统整体框架如图5所示。

图5 垃圾识别系统整体框架

由于水面垃圾形状不一,如果仅识别垃圾外形轮廓,易出现识别误差,且程序逻辑设计较难。采用机器视觉,计算机深度学习,建立神经网络模型进行垃圾识别,通过垃圾图像的数据集建立模型,基于Keras框架建立深度学习模型,摄像头采集的图像使用OpenCV库进行处理,使用Numpy库进行数值运算,通过训练所得模型实现对垃圾的识别检测。

3.1 Keras框架

Keras是神经网络的API,由Python语言编写,程序设计使用Keras框架,以TensorFlow作为后端运行。Keras框架的核心数据结构为神经网络模型models,使用较多的为Sequential顺序模型,由多个神经层线性堆叠而成。在训练模型之前,需要配置学习过程,主要通过compile方法完成,其中的优化器,损失函数和评估函数三个参数尤为重要。训练模型使用fit方法,应用训练完成的模型进行测试集预测[4]。

3.2 OpenCV

OpenCV是基于Apache2.0许可发行的计算机视觉和机器学习软件库,实现了图像处理和计算机视觉方面的多种通用算法。OpenCV由C++语言编写,具有C++,Python,Java和Matlab接口,支持多种系统。垃圾识别程序设计采用OpenCV-Python。Python对比C/C++等语言程序处理速度偏慢,但逻辑简单性、代码可读性强使得解决计算机视觉处理更加简捷。程序可采用C/C++语言进行扩展,底层复杂密集的代码框架由C/C++编写,通过Python来封装。

垃圾识别模块所需数据来自摄像头捕捉。采用OpenCV对图像进行预处理,主要完成图像的滤波降噪和图像分割。在对图像预处理后,再应用OpenCV中的边缘检测算子。边缘检测容易受噪声影响,可以先通过高斯滤波除去噪声。Sobel算子计算水平和竖直方向的一阶导数,根据公式推测像素点方向和梯度[5]。其中Gx代表图像x方向梯度的幅值,Gy代表图像y方向梯度的幅值。在OpenCV检测边缘时,其算法程序已经封装好供外部使用,因此只需调用cv2.Canny()函数即可。

3.3 模型建立

模型建立前,首先准备测试集和训练集,即各种分类完成的垃圾图片。对已分类图片进行数据预处理,深度学习需要大量测试集,如果测试集数据量较少,可以对图片执行旋转、平移、剪裁等方式进行数据补充。搭建神经网络模型进行训练,数据集经过卷积池化等操作输出分类结果,最后对测试集进行预测得出准确率。模型建立框架如图6所示。文章训练数据共有2 536张图片,包含纸、塑料瓶、纸板等水面漂浮垃圾。

图6 模型建立框架

构建神经网络后,模型通过卷积和池化运算,对数据集的图片进行特征提取与训练。运行程序发现,当迭代步数为126步时,对训练好的模型进行测试准确率最高。在模型训练过程中可以通过图形可视化,直观的显示准确率和损失率。Epochs每一步的批量大小对测试的准确结果产生一定影响,由实际情况和效率而定。当模型训练损失不断上升时,说明模型进入过拟合状态,可以停止训练。迭代步数与测试准确率如表1所示。

表1 迭代步数与测试准确率

4 结语

随着近年来旅游业的发展,许多景区或者公园内的湖泊存在漂浮垃圾情况。目前的水面垃圾清理主要依靠人工打捞,费时费力,效率较低,对于适航能力较强的视觉识别垃圾抓取装置发展空间大,应用前景广阔。

猜你喜欢

水面框架垃圾
框架
垃圾去哪了
广义框架的不相交性
水黾是怎样浮在水面的
那一双“分拣垃圾”的手
倒垃圾
创造足以乱真的水面反光
争夺水面光伏
关于原点对称的不规则Gabor框架的构造
一种基于OpenStack的云应用开发框架