杨向东,潘文彬,麦铠芮,张陈宏,周汶锋
(广州华立学院 机电工程学院,广东 广州 511325)
目前,具有爬墙功能的机器人仍处在从理论研发向实际产品过渡阶段,市场上的擦窗机器人产品并不多,且价格昂贵,很容易留下清洁死角。本项目根据玻璃幕墙清洁的需求,利用机械视觉和负压吸收基本原理,设计了一款负压吸收式手动擦窗机器人,从而达到了对玻璃窗不同范围内的净化功效。通过样机负载测试与擦试效果测试,取得了较好的试验效果。
视觉智能擦玻璃机器人通过OpenMV采集周围环境的信息情况,然后对采集到的目标图像进行识别与定位,再结合摄像头不同角度的反馈测得目标与擦玻璃机器人直接的距离,最后通过驱动来控制机器人履带的电机,机器人将会运动到目标位置进行清洁工作。
采用了嵌入式机械视觉的智能擦玻璃机器人,系统主要包含了硬件电路部分和软件部分。系统硬件电路大致分为主控芯片STM32 F103及其外围集成电路、OpenMV、风机、电源、操舵装置、超声波传感器和L298N电机,硬件的运作流程如图1所示。
图1 运作流程
视觉擦玻璃机器人一般使用的STM32 F103为主控制设备,而STM32 F103则包括较中低端的3个ARM微控制器,其核心为Cortex-M3,最大运算频率达7 MHz,在存储器的零等待循环使用时限内可达到1.5 DMIPS/MHz。
采 用 了OpenMV3与CamM7,OpenMV开 源,特别适用于机械视觉,软件功能强劲且性价比高。以STM3F767CPU为内核,并整合了OV7725摄像机芯片,在小巧的硬件系统模组上,可以通过C语言所提供的简单算法完成机械图像视觉功能,同时支持Python编程,实现更多功能。
智能擦玻璃机器人的外观主要采用长方形机器人构造,其机构主要分为摄像头转动部分舵机、机器人行驶部分电动机和底盘吸附部分风机。
智能擦玻璃机器人的底盘采用正方形底盘结构,底盘由一对履带轮进行带动,由STM32 F103信号输出,两个履带由PWM控制,1 V供电的L298N直流电机驱动,通过控制两条平行履带轮实现机器人差速转动,可以实现360°无死角的旋转与移动。
吸附部件采用无刷电机,利用STM32 F103对转速进行控制,实现对玻璃的吸附。OpenMV能够实现全方位旋转的,其旋转过程主要是由OpenMV通过驱动控制来完成,而该结构也可以使机器人的视野更加宽广。OpenMV质量较轻巧,所以可以选用工作力矩略小的MG90S模拟操舵装置来对质量较轻的OpenMV的转动方向加以控制。
主控芯片STM32 F103CPU,通过调节PWM脉冲信号的最高电平占比,达到准确调节舵机旋转的角度,舵机装置所需要电流的多少和反应速度相关,所以MG90S模拟操舵设备的电源使用4.8 V的电流进行输出以保证操舵装置顺利工作。
该机器人采用C语言编程STM32 F103主板,运用Keil uVision5编程软件以及ST-LINK仿真器烧录。OpenMV采用MicroPython并用OpenMV IDE软件进行编程,同时STM32 F103与OpenMV通信,OpenMV将位置信息传递到STM32 F103,再由STM32 F103进行一系列的运作。
图像识别模块通过OV7725摄像头芯片实现图像采集,并通过OpenMV-IDE对所采集图像信息进行了编程和管理,包括颜色空间变换、图像增强、消除阴影、目标分离、特征提取和目标辨识。
OpenMV主要用于识别以及跟踪污点,当识别到污点时,通过与MG90S舵机共同运作,OV7725摄像头会锁定此污点,且保持让此污点在可识别范围内,当机器人行走到污点位于视觉盲区内时,则会继续直行。
在OpenMV IDE里,运用了Lab色彩空间进行图像处理。Lab色彩空间既是一个与设备无关的色彩模型,也是一个基于人类生理特性的色彩模式。
亮度(L),a 和b是两个颜色通道。a包括的色彩范围从深翠绿(低亮度值)到灰度(中光度值)再到亮粉红色(高亮度值);b由亮蓝(低亮度值)到灰白(中亮度值)再到黄色(高亮度值)。经过阈值调试后,污点的Lab阈值为(13,49,18,61,6,47)。OpenMV机器视觉模块硬件如图2所示。
图2 OpenMV机器视觉模块硬件
通过舵机转动摄像头识别玻璃上的污点,获取到污点的信息后,通过PID算法把污点信息传送至STM32 F103,进而使用STM32 F103控制机器人的电机来移动机器人,机器人到达目的位置后,擦除污点,完成任务。
定位目标视觉既需要准确又要具有成本效益。在最常见的视觉定位中,为了获得目标污点的位置,必须测量图片中的目标污点,从而把图片位置转化为实际位置坐标系。在电脑视觉中,主要包括了四种坐标系间的切换,即图形坐标系、摄影机坐标系、像素坐标系及其世界坐标系。目标位置都采用了双目视觉,但由于采用双目视觉的所匹配算法比较烦琐,所以在本文中把单眼视觉直接用到了图形位置中,并采用了相似的三角形原理,并且利用相机角度反馈和设置高度来定位目标。
如图3所示,机器人到目标的一段距离使用的是摄像机头视角反馈定距法,该计算使用正切函数公式,如图3中点B为摄像机的安装位置,点A为目标所在地点,BC为摄像机到地面的垂直距离;使用MG90S进行舵机反馈的角度测量可以得到θ,在实际观测后得到摄像机头的离地高度BC,即可得出工业自动化机器人离目标的间距AC。
图3 OpenMV模块摆放位置
在整个过程系统中,按误差的比率(Proportion)、面积(Integral)和微分(Derivative)加以限制的PID控制器,是目前使用得较为普遍的一类0.5自动控制器。
在STM32 F103zet6开发板中运用PID算法对于本项目的擦玻璃机器人的电机提供了准确的速度和RAM计算。
通用加速分割检测(Adaptive and Generic Accelerated Segment Test,AGAST)算法相对于角点探测(Features from Accelerated Segment Test,FAST)算法准确率高、像素延迟低、追踪效果好。同时,AGAST算法(AGAST)对特征点的提取进行了细化处理,如式(3)所示,AGAST算法采用“非较亮”与“非较暗”对P点邻域像素点的状态进行扩展。
当图像像素点过多时,为提高检测效率,可以只检测1,5,9,13这四个像素点的灰度值,如图4所示,当四个点中有三个满足成为特征点的条件后,在检测该点的全部邻近点,运用此方法进行初筛,可以快速遍历图像中所有的像素点,只保留特征明显的像素点。
图4 算法演示
因此,在STM32 F103zet6开发板中运用AGAST算法,目的是使机器人准确地捕捉到污渍。
将玻璃放在室内玻璃上,根据玻璃上的污迹来擦拭玻璃,擦玻璃机器人既有固定的行走路程,又可以按照玻璃上的污迹准确地完成擦拭。
试验场地尺寸为100 cm×100 cm,出发区在玻璃右下角约30 cm×30 cm的地方;机器人尺寸(长×宽×高)为30 cm×30 cm×8.5 cm;机器人全自主完成擦拭工作;在实验时将机器人置于模拟区域,场地中有不同颜色深度的目标污点,机器人将目标污点擦除,统计目标污点擦除数目。机器人实物图如图5所示。
图5 机器人实物图
将擦玻璃机器人启动并吸附在玻璃上,并且使用弹簧测力计将擦玻璃机器人从玻璃上拉开,f为履带与玻璃面的产生的驱动摩擦力,G为重力,S为受力面积(此处选整个机器人的底面为受力面积)。
图6 机器人吸附力试验原理图
擦玻璃机器人通过把污点作为目标物进行擦拭,在处于不同的环境的玻璃反复进行测试,并于未优化的算法进行比较,得出的结果见表1。
由表1可知,机器人通过改进前的算法,在正常光照的状况下对污点的识别率为66%,对污点的擦除率则为77%;在强光照耀下污点的识别率约为50%,而污点擦除率则为66%,但在弱光环境中,污点的识别率为50%,污点擦除率为66%。
表1 试验数据对比
由表1可知,机器人采用改进后的算法,在正常光照射的情况下,污点的识别率为93%,污点擦除率为100%;在强光照射下其中有五个污点未能识别;在弱光环境中,由于环境太暗,未能识别其中六个污点。
试验对比了机器人改进前与改进后的算法得出,识别率与擦除率都极大地提高了,达到预期的试验设计效果,实现了对玻璃污迹的擦除,节省了人力资源,降低了高空作业的危险性,提高了人工智能化的运用。
项目通过上述算法与试验验证,结论如下:
1)在正常光照射的情况下,污点的识别率为93%,污点擦除率为100%。
2)采用像素延迟低的通用加速分割检测算法(AGAST),可提高样机的定位准确度。