用于清洁机器人的障碍物识别方法
技术领域
本发明涉及图像识别技术领域,具体为一种用于清洁机器人的障碍物识别方法。
背景技术
扫地机器人的发展历史有近20年,最早来源于欧美市场,随着技术的不断革新,扫地机器人从早期的随机式清扫到现在的根据激光定位来规划导航清扫。
著名传统吸尘器品牌Dyson于在2014年重返扫地机器人市场,推出了高端扫地机器人360Eye。它利用顶部搭载的摄像头全方位观测并分析周围环境,利用算法得出房间的地图和做出导航,并根据前后图像中各个地标的位置变化来判断当前的移动路线,并对其所构建的环境模型进行更新与调整。
Neato扫地机器人于2010年推出,使用一个可以360度旋转的激光测距仪扫描周围的环境并进行即时定位与环境地图构建(SLAM),在此基础上进行合理规划清扫路线,但是现有的扫地机器人依旧存在一下问题:
1.路径规划依赖前挡板碰撞,遇到较轻物体容易推着走(如拖鞋、鞋子、插线板、书本),有时还会卡在狭小区域来回碰撞,过于依赖挡板也会导致故障率上升;
2.无判别的清扫容易导致扫到不该扫的东西(如笔、钥匙、线、抹布),导致清洁机出现异常或损坏
3.对于比激光雷达低矮的物体难以识别(如拖鞋、充电器等)。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种用于清洁机器人的障碍物识别方法,解决了上述的问题。
(二)技术方案
为实现上述所述目的,本发明提供如下技术方案:一种用于清洁机器人的障碍物识别方法,包括以下步骤:
S1:图像采集,
其中图像采集的步骤为:第一步打开机器使硬件初始化、软件初始化并读取软件库,第二步模型导入内存,第三步打开相机并读取相机数据;
所述S1中打开相机有两种结果及处理方式:
第一种打开相机成功,然后直接开始读取数据;
第二种打开相机失败后,进行初始化失败报警,最后终止程序。
所述S1中读取相机数据有两种结构及处理方式:
第一种读取相机数据成功,然后直接进行图像预处理;
第二种读取相机数据失败,然后重新控制打开相机,直至读取相机数据成功。
S2:对采集到的相机数据进行图像预处理,
其中对采集到的相机数据进行图像预处理的步骤为:将读取到的相机数据从1080p图像缩放到256*256算法大小的图像;
S3:使用算法分析处理图像,
其中使用算法分析处理图像的步骤为:第一步将256*256的图像带入神经网络模型进行计算,第二步基于YOLO-V3 Tiny算法框架进行修改,第三步将检查结果由网络输出;
S4:图像内目标检测,
其中图像内目标检测分为检测到目标和未检测到目标两种状态,当图像内未检测到目标将会返回S1中重新读取相机数据,当图像内检测到目标进入下一步骤;
S5:估测目标距离,
其中估测目标距离的步骤为:第一步根据摄像机标定原理,获得摄像机的内参矩阵,第二步采集含有目标的单帧图像,并识别出图像中目标所在区域,计算出该区域像素坐标纵坐标最大值,及其对应的横坐标的平均值,将组合得到的坐标作为观测点,第三步基于图像像素点获得观测点在体坐标系下的三维信息,根据观测点在体坐标系下的三维信息计算观测点的距离;
S6:估测目标角度,
其中估测目标角度的步骤为:第一步以图像左上角为坐标原点,已知相机镜头在图像正中间,图像大小为256x256,得出镜头坐标为(128,128),第二步根据目标框中心位置坐标(x,y),用反三角函数算出中心点相对镜头的角度;
S7:目标信息上报清洁机控制线程。
优选的,所述S2中的图像预处理还包括以下步骤:
一、从相机读取每帧图像,并做图像白平衡处理;
二、使用高斯滤波减噪,使图像数据归一化。
优选的,所述S3中第二步基于YOLO-V3 Tiny算法框架的具体修改为:
一、输入尺寸由416x416x3改为256x256x3;
二、用size=3,stride=2,pad=1的卷积层代替最大池化层(maxpool),最大池化的操作引入了非线性(丢失了部分临近像素点的相关性);
三、检测层(yolo层)之前多***一个卷积层,以少量计算量代价弥补模型准确度;
四、根据数据集做了聚类,修改了anchor box,加快模型收敛;
五、删除了部分计算量特别大的卷积层(filters=512/1204)和连接它们的池化层。
优选的,所述S1中的图像采集步骤由清洁机器人专用相机完成;
所述S2中的图像预处理由图像预处理模块完成;
所述S4中的图像内目标检测由目标检测算法模块完成;
所述S5和S6的步骤由目标信息分析模块完成;
所述图像预处理模块、目标检测算法模块、目标信息分析模块都是基于底层的操作***和第三方的应用软件。
一种基于图像识别技术的清洁机器人专用的障碍物识别***,包括识别装置,所述识别装置包括OpenCV图像处理库,OpenCV图像处理库输出端与图像预处理模块输入端之间电连接,图像预处理模块输出端与目标检测算法模块输入端之间电连接,目标检测算法模块输出端与目标信息分析模块输入端之间电连接,目标信息分析模块输出端与线程通讯模块输入端之间电连接,线程通讯模块输出端与操作***输入端之间电连接,操作***输出端与驱动软件库输入端之间电连接,驱动软件库输出端与OpenCV图像处理库输入端之间电连接。
优选的,所述图像预处理模块、目标检测算法模块、目标信息分析模块都是基于底层的操作***和第三方的应用软件。其中驱动软件库是第三方的应用软件,负责扫地机器人的硬件操作,如前进、后退等动作,并且和操作***建立双向连接。
优选的,所述OpenCV图像处理库是第三方的图像处理库,“用于清洁机器人的障碍物识别方法”从图像预处理模块开始,图像预处理后利用模型算法对图像中的物体进行目标检测,如检测到目标,进行目标信息分析,目标信息分析算法负责根据目标大小分析距离,根据目标在图中的位置预测角度,最后通过线程通讯模块将程序分析的目标信息上报给清洁机控制模块。
优选的,所述OpenCV图像处理库、图像预处理模块、目标检测算法模块、目标信息分析模块、操作***和驱动软件库位于RK3288和Ubuntu 18.04环境下运行,且目标分析模块中的检测装置为单目相机,目标检测算法模块能够将检测到的目标信息上报给目标信息分析模块,同时通过目标分析模块对检测到的目标进行相对距离的估算和相对角度的估算。
(三)有益效果
与现有技术相比,本发明提供了一种用于清洁机器人的障碍物识别方法,具备以下有益效果:
1、该用于清洁机器人的障碍物识别方法,通过目标检测算法模块和目标分析模块进行检测,机器人在进行清洁时,能够清楚有效的识别物体,并推算出自身与物体之间的角度和距离,从而更好的对物体进行避让,避免物体被拖着走,同时也降低了机器人的故障率。
2、该用于清洁机器人的障碍物识别方法,通过操作***来对机器人进行简单控制,在机器人运行出现错误时,操作***会将错误反馈到驱动软件库,从而使机器人强制停止运行,降低了机器人的故障率,同时也避免机器人操作错误而损坏。
3、该用于清洁机器人的障碍物识别方法,采用基于图像识别技术的清洁机器人专用识别视觉模块,这样可以比现有的清洁机器人更有效的识别物体(如笔、钥匙、线、抹布、拖鞋以及袜子等)。
4、该用于清洁机器人的障碍物识别方法,输入尺寸由416x416x3改为256x256x3,输入尺寸缩小了,识别准确度必然会降低,但同时计算量也会快速减少,在算力有限的情况下,帧率得已大幅提高,响应速度大幅提升。
5、该用于清洁机器人的障碍物识别方法,用size=3,stride=2,pad=1的卷积层代替最大池化层(maxpool),最大池化的操作引入了非线性(丢失了部分临近像素点的相关性),用卷积层可以实现池化层的功能并略微提升识别能力。
附图说明
图1为本发明***结构图;
图2为本发明***运行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,一种用于清洁机器人的障碍物识别方法,包括以下步骤:
S1:图像采集,
其中图像采集的步骤为:第一步打开机器使硬件初始化、软件初始化并读取软件库,第二步模型导入内存,第三步打开相机并读取相机数据;
所述S1中打开相机有两种结果及处理方式:
第一种打开相机成功,然后直接开始读取数据;
第二种打开相机失败后,进行初始化失败报警,最后终止程序。
所述S1中读取相机数据有两种结构及处理方式:
第一种读取相机数据成功,然后直接进行图像预处理;
第二种读取相机数据失败,然后重新控制打开相机,直至读取相机数据成功。
S2:对采集到的相机数据进行图像预处理,
其中对采集到的相机数据进行图像预处理的步骤为:将读取到的相机数据从1080p图像缩放到256*256算法大小的图像;
S3:使用算法分析处理图像,
其中使用算法分析处理图像的步骤为:第一步将256*256的图像带入神经网络模型进行计算,第二步基于YOLO-V3 Tiny算法框架进行修改,第三步将检查结果由网络输出;
S4:图像内目标检测,
其中图像内目标检测分为检测到目标和未检测到目标两种状态,当图像内未检测到目标将会返回S1中重新读取相机数据,当图像内检测到目标进入下一步骤;
S5:估测目标距离,
其中估测目标距离的步骤为:第一步根据摄像机标定原理,获得摄像机的内参矩阵,第二步采集含有目标的单帧图像,并识别出图像中目标所在区域,计算出该区域像素坐标纵坐标最大值,及其对应的横坐标的平均值,将组合得到的坐标作为观测点,第三步基于图像像素点获得观测点在体坐标系下的三维信息,根据观测点在体坐标系下的三维信息计算观测点的距离;
S6:估测目标角度,
其中估测目标角度的步骤为:第一步以图像左上角为坐标原点,已知相机镜头在图像正中间,图像大小为256x256,得出镜头坐标为(128,128),第二步根据目标框中心位置坐标(x,y),用反三角函数算出中心点相对镜头的角度;
S7:目标信息上报清洁机控制线程。
优选的,所述S2中的图像预处理还包括以下步骤:
一、从相机读取每帧图像,并做图像白平衡处理;
二、使用高斯滤波减噪,使图像数据归一化。
优选的,所述S3中第二步基于YOLO-V3 Tiny算法框架的具体修改为:
一、输入尺寸由416x416x3改为256x256x3,输入尺寸缩小了,识别准确度必然会降低,但同时计算量也会快速减少,在算力有限的情况下,帧率得已大幅提高,响应速度大幅提升;
二、用size=3,stride=2,pad=1的卷积层代替最大池化层(maxpool),最大池化的操作引入了非线性(丢失了部分临近像素点的相关性),用卷积层可以实现池化层的功能并略微提升识别能力;
三、检测层(yolo层)之前多***一个卷积层,以少量计算量代价弥补模型准确度;
四、根据数据集做了聚类,修改了anchor box,加快模型收敛;
五、删除了部分计算量特别大的卷积层(filters=512/1204)和连接它们的池化层。
优选的,所述S1中的图像采集步骤由清洁机器人专用相机完成;
所述S2中的图像预处理由图像预处理模块完成;
所述S4中的图像内目标检测由目标检测算法模块完成;
所述S5和S6的步骤由目标信息分析模块完成;
所述图像预处理模块、目标检测算法模块、目标信息分析模块都是基于底层的操作***和第三方的应用软件。
一种基于图像识别技术的清洁机器人专用的障碍物识别***,包括识别装置,所述识别装置包括OpenCV图像处理库,OpenCV图像处理库输出端与图像预处理模块输入端之间电连接,图像预处理模块输出端与目标检测算法模块输入端之间电连接,目标检测算法模块输出端与目标信息分析模块输入端之间电连接,目标信息分析模块输出端与线程通讯模块输入端之间电连接,线程通讯模块输出端与操作***输入端之间电连接,操作***输出端与驱动软件库输入端之间电连接,驱动软件库输出端与OpenCV图像处理库输入端之间电连接,所述图像预处理模块、目标检测算法模块、目标信息分析模块都是基于底层的操作***和第三方的应用软件。其中驱动软件库是第三方的应用软件,负责扫地机器人的硬件操作,如前进、后退等动作,并且和操作***建立双向连接,所述OpenCV图像处理库是第三方的图像处理库,“用于清洁机器人的障碍物识别方法”从图像预处理模块开始,图像预处理后利用模型算法对图像中的物体进行目标检测,如检测到目标,进行目标信息分析,目标信息分析算法负责根据目标大小分析距离,根据目标在图中的位置预测角度,最后通过线程通讯模块将程序分析的目标信息上报给清洁机控制模块,所述OpenCV图像处理库、图像预处理模块、目标检测算法模块、目标信息分析模块、操作***和驱动软件库位于RK3288和Ubuntu 18.04环境下运行,且目标分析模块中的检测装置为单目相机,目标检测算法模块能够将检测到的目标信息上报给目标信息分析模块,同时通过目标分析模块对检测到的目标进行相对距离的估算和相对角度的估算。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。