一种基于rgb-d的实时避障系统
技术领域
本发明涉及图像识别和移动机器人的
技术领域
,具体涉及一种基于RGB-D的实时避障系统。背景技术
当前智能无人化搬运机器人正在飞速发展,移动机器人技术已经与工业生产息息相关。当智能搬运机器人在实际的复杂多变的工厂环境中,准确的检测到障碍物并进行有效的避障是移动机器人需要的一项基本能力之一。特别的对于人等关键性障碍物需要格外进行关注以免发生事故。在现有的技术下,避障通常依靠激光雷达以及超声波雷达等传感器。然而激光雷达造价昂贵,超声波雷达更是无法检测到障碍物的大小具有很大的局限性。
相对于激光雷达、超声波等传感器视觉相机价格低廉,同时视觉相机可以实时得到整个视野平面的RGB信息以及深度信息具有探测范围宽、信息容量大等优势,也因此视觉避障技术得到了广泛的应用。目前,移动机器人普遍采用双目相机、RGB-D相机和TOF相机来进行视觉避障。RGB-D相机和TOF相机与双目相机相比具有受物体颜色影响小,可得到较高分辨率深度图的特点,这使得RGB-D相机在视觉障碍物检测方面得到广泛应用。但是,众所周知视觉图像处理需要快速的运算能力,目前采用RGB-D相机避障的移动机器人的避障方式会有处理速度不够、忽略了对空间障碍物的避障,同时视觉障碍物检测容易受到外界环境影响误检测率高,不能对不同的障碍物进行执行不同的避障策略。因此,针对现有的视觉避障方法,需要提供一种基于RGB-D相机的实时避障系统。
发明内容
在现有的复杂工厂环境下,针对现有移动机器人未考虑空间障碍物与易受外界影响导致检测误检率高实时性不足的问题,本发明实施提出了一种基于RGB-D的实时避障系统。该系统不仅能够针对不同优先级的障碍物做出不同的避障决策,同时还能根据不同的地形设置不同的ROI区域减少计算量,同时能在障碍物检测的基础上进行二次判定,能够提高相机的检测精度,降低障碍物检测的误检率,整个系统模块通过多线程技术并行处理拥有良好的实时性。
本发明的目的是通过以下技术方案实现的:本发明提供的一种基于RGB-D的实时避障系统,所述系统包括:
图像采集模块、标定模块、普通障碍物检测模块、特殊障碍物检测模块、验证模块、避障决策模块和移动控制模块。
所述图像采集模块用于采集RGB-D相机原始的深度信息以及障碍物的RGB信息并分别输出给标定模块、普通障碍物检测模块和特殊障碍物检测模块;
所述标定模块用于获取图像采集模块得到的深度信息来标定地面背景和标定相机安装角度,以获取地面深度信息以及相机安装角度信息;
所述普通障碍物检测模块用于处理图像采集模块输出的深度信息和RGB信息,提取出障碍物并经过验证模块进行二次判断,确保障碍物是真的障碍物而不是误检测,最终精准检测出障碍物并输出障碍物的位置信息;
所述特殊障碍检测模块用于根据图像采集模块输出的深度信息和RGB信息,检测出行人和其他机器人,并输出障碍物位置信息;
所述避障决策模块用于处理普通障碍物检测模块与特殊障碍物检测模块输出的障碍物位置信息生成避障策略;
所述移动控制模块用于根据避障决策模块输出的避障策略控制机器人的移动实现避障功能。
进一步地,所述RGB-D相机安装在移动搬运机器人的顶部,相机倾斜角度保证相机视野范围内看不见机器人车体的任何部位。
进一步地,实时避障系统采用多线程技术,模块之间并行计算且根据移动搬运机器人运行速度自动调整检测帧率。
进一步地,所述的标定模块获取地面深度信息与相机安装角度信息,包括以下步骤:
步骤1-1:使RGB-D相机面对一块平整的地面,通过图像采集模块获取相机深度信息。
步骤1-2:开始标定相机安装角度,随机选取深度图中部的四个像素值,转换求出像素点对应的深度相机坐标系下的Y值。
步骤1-3:从0开始选择相机安装角度每次递增1度直到180度结束。
步骤1-4:通过相机安装角度计算四个像素点在水平深度相机坐标系下的Y值。如果四个像素点的Y之间的差值的绝对值在阈值范围之内,保存角度否则返回步骤1-2,其中水平深度相机坐标系由深度相机坐标系绕坐标系原点旋转至Z轴与地面平行得到。
步骤1-5:标定角度结束开始标定地面背景信息。
步骤1-6:获取深度图,经过阈值滤波以及孔洞填充方法,限制数值超过7000的深度值,填补数值为零的深度值为深度数值上限。
步骤1-7:统计600帧处理以后的深度图,计算每个像素点深度值的均值,每个像素点对应水平深度相机坐标系下的Y值以及每一行像素中像素点的最大差值并分别进行保存。
进一步地,步骤1-2与步骤1-4计算四个像素点在水平深度相机坐标系下的Y值的具体计算过程如下:
其中是深度相机内参矩阵用于将相机坐标系转换到像素坐标系,(fx,fy)代表将相机坐标系与成像平面的关系,代表了u轴与v轴上的缩放,(Cx,Cy)是相机光学中心,θ是相机的安装倾斜角(右手坐标系),是在深度图像上像素点(ud,vd)在水平深度相机坐标系下的三维坐标。Zd是在(ud,vd)像素点上的深度值。
进一步地,所述普通障碍物检测模块包括预处理模块、轮廓提取模块和障碍物坐标输出模块;
所述预处理模块包括以下步骤:
步骤2-1:从图像采集模块获取连续的三张深度图。
步骤2-2:对获取的三张深度图进行两倍下采样以及形态学膨胀处理。
步骤2-3:三张深度图分别在设定ROI区域与标定的地面背景信息做差,满足差值阈值的点的数值设置为255,不满足阈值的点的数值设置为0。
步骤2-4:抽取第二张深度图命名为二值图P1,将三张深度图叠加在一起得到二值图P2。
步骤2-5:对得到的二值图P1和二值图P2进行形态学闭操作处理。
所述轮廓提取模块包括以下步骤:
步骤3-1:分别计算二值图P1和二值图P2中障碍物的轮廓以及凸包信息。
步骤3-2:分别计算二值图P1和二值图P2中的凸包面积和凸包中心的像素位置,依据凸包中心像素所在区间的不同设置不同的面积阈值过滤阈值以下的凸包。
步骤3-3:计算凸包中心像素在水平深度相机坐标系下的Y值与保存的地面信息中相同像素点Y值,对小于地面Y达到一定阈值的凸包进行保留反之进行滤除。;
所述障碍物坐标输出模块包括以下步骤:
步骤4-1:计算步骤3-2滤除后剩余凸包的最小外接形框。
步骤4-2:去除重叠的矩形框,合并连接的矩形框。
步骤4-3:当存在多个矩形框时,只保留矩形框内深度平均值最小的矩形框。
步骤4-4:将深度图上矩形框映射到RGB图中。
映射公式如下:
其中Zd是在(ud,vd)像素点上的深度值;是深度图像素点(ud,vd)在深度相机坐标系下的三维坐标;是像素点(ud,vd)在RGB相机坐标系下的三维坐标;(uc,vc)是在RGB图像上的像素坐标。R和T分别是深度摄像头到RGB摄像头的旋转矩阵和平移矩阵。Kd是深度相机内参矩阵,Kc是RGB相机的内参矩阵。
步骤4-5:计算矩形框的面积,将面积大小满足阈值条件的RGB内的矩形框送入验证模块,验证是地面还是障碍物。
步骤4-6:如果验证模块输出为0,表示判断矩形框内物体为非障碍物则返回步骤4-1,如果输出1表示矩形框内是障碍物则执行下一步骤4-7。
步骤4-7:计算障碍物矩形框中的每个像素点在水平深度相机坐标系下X坐标轴上的值,去除掉X坐标轴上数值在阈值范围之外的像素点,在剩余像素点中找到障碍物的最近距离,并输出给避障决策模块。
进一步地,所述验证模块的处理过程包括:
步骤5-1:加载训练好的ghost二分类模型,利用TensorRT构建推理引擎,保存引擎并用c++加载并部署引擎。
步骤5-2:当有图像数据送入时,利用引擎进行推理判断如果判断为非障碍物输出0,反之判断为障碍物输出1。
进一步地,所述特殊障碍物检测模块检测障碍物包括以下步骤:
步骤6-1:加载训练好yolov5模型(模型识别类别为行人和移动搬运机器人),经TensorRT推理构建推理引擎,并保存引擎。
步骤6-2:加载并部署引擎,接收图像采集模块的RGB图像进行推理。
步骤6-3:获取推理后得出的在RGB图像中目标矩形框左上角像素坐标以及长宽。
步骤6-4:将RGB像素转换到深度图像素,获取矩形框内的像素值在深度相机坐标系下的三维坐标。
步骤6-5:去除水平深度相机坐标系下X轴上数值不满足阈值的像素点,在剩余的像素点中经过滤波得到障碍物点在深度相机坐标系下的三维坐标并输出给避障决策模块。
进一步地,所述避障决策模块分别对普通障碍物与特殊障碍物检测模块设置有不同避障范围,同时在避障范围内划分三个避障等级区域。一级避障减速30%,二级避障减速60%,三级避障直接停止。
进一步地,所述避障决策模块处理避障信息做出避障决策,具体过程如下:
步骤7-1:接收普通障碍物检测模块与特殊障碍物检测模块输出的障碍物坐标信息。
步骤7-2:如有障碍物出现在三级避障区域同时处理普通障碍物检测模块与特殊障碍物检测模块输出的障碍物信息,如障碍物出现在一级或二级避障区域,那么优先处理特殊障碍物检测模块输出的障碍物信息。
步骤7-3:对障碍物的距离信息进行中值滤波和限幅滤波处理。
步骤7-4:根据最终处理后得到的障碍物距离信息判断障碍物处于三个等级避障区域中的哪一块区域,根据障碍物所在区域判定使用相应的避障策略并将策略输出到运动控制模块控制移动搬运机器人执行避障碍策略,最终实现避障功能。
本发明的有益效果是:本发明提供了一种可靠、快速、高精度、低误检的实时避障系统。该系统不仅能够针对不同优先级的障碍物做出不同的避障决策,同时还能根据不同的地形设置不同的ROI区域减少计算量,同时能在障碍物检测的基础上进行二次判定,能够提高相机的检测精度,降低障碍物检测的误检率,整个系统模块通过多线程技术并行处理拥有良好的实时性。
附图说明
图1为本发明实现总流程图。
图2为智能移动搬运机器及相机安装及相机坐标系示意图。
图3为普通障碍物检测模块预处理流程图。
图4为普通障碍物检测模块障碍物距离输出流程图。
图5为特殊障碍物处理模块流程图。
图6为避障决策模块流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
本发明提供了一种基于RGB-D的实时避障系统。该系统如图1所示包含图像采集模块、标定模块、普通障碍物检测模块、验证模块、特殊障碍物检测模块、避障决策模块、移动控制模块。
如图2所述RGB-D相机传感器在实际工程中应安装在智能搬运机器人顶部安装角度往下倾斜同时保证再相机视野范围内看不见车体的任一部位。
所述标定模块用于,获取图像采集模块得到的深度信息标定地面背景和标定相机安装角度以获取地面深度信息以及相机安装角度信息;
所述普通障碍物检测模块用于,处理图像采集模块输出的深度信息和RGB信息,通过普通障碍物检测模块提取出障碍物并经过验证模块进行二次判断,最终精准检测出障碍物并输出障碍物的位置信息;
所述验证模块用于,对普通障碍物检测模块检测的障碍物进行二次判断,确保障碍物是真是障碍物而不是误检测;
所述特殊障碍检测模块用于,行人和其他搬运机器人并输出具体位置信息;
所述避障决策模块用于,处理普通障碍物检测模块与特殊障碍物检测模块输出的障碍物位置信息指示移动搬运机器人执行避障操作从而实现避障功能;
所述移动控制模块用于,处理处理避障决策模块输出的避障策略控制机器人的移动实现避障功能;
所述系统首先要运行标定模块进行地面背景信息与安装角度标定并且将数据进行保存在智能搬运机器人的工控机中,同时在实际工程应用时会在摄像头上贴滤光片滤除可见光,且保证运行场地内没有光源发出的光线会直射相机摄像头。
所述的标定模块获取地面深度信息与相机安装角度信息包括以下步骤:
步骤1-1:使相机面对一块平整的地面,通过图像采集模块获取相机深度信息。
步骤1-2:开始标定相机安装角度,随机选取深度图中部的四个像素值,转换求出像素点对应的深度相机坐标系下空间坐标的Y值。
步骤1-3:从0开始选择相机安装角度每次递增1度直到180度结束。
步骤1-4:通过角度的计算四个像素点在水平深度相机坐标系下的Y值。
步骤1-5:如果四个像素点的Y之间的差值的绝对值在阈值范围之内,保存角度否则返回步骤1-3,其中水平深度相机坐标系由深度相机坐标系绕坐标系原点旋转至Z轴与地面平行得到。
步骤1-6:标定角度结束开始标定地面背景信息。
步骤1-7:获取深度图,经过阈值滤波以及孔洞填充方法,限制数值超过7000的深度值,填补数值为零的深度值为深度数值上限,在实际实施中超过7000的深度值会被更改为7000。
步骤1-8:统计600帧处理以后的深度图,计算每个像素点深度值的均值,每个像素点对应水平深度相机坐标系下的Y值以及每一行像素中像素点的最大差值并分别进行保存。
具体地,步骤1-4像素点在水平深度相机坐标系下的Y值的具体计算过程是
其中是深度相机内参矩阵用于将相机坐标系转换到像素坐标系,(fx,fy)代表将相机坐标系与成像平面的关系,代表了u轴与v轴上的缩放,(Cx,Cy)是相机光学中心,θ是相机的安装倾斜角(右手坐标系),是在深度图像上像素点(ud,vd)在水平深度相机坐标系下的三维坐标。Zd是在(ud,vd)像素点上的深度值。
标定完成后可进行后续普通障碍物,特殊障碍物检测以及避障碍决策处理。普通障碍检测与特殊障碍物检测同时进行互不干扰。
普通障碍物检测模块根据RGB-D相机的深度信息经过预处理模块分割出障碍物,再经过轮廓提取模块提取出障碍物的轮廓以及凸包最后由障碍物坐标输出模块输出障碍物的三维位置信息。
所述普通障碍物检测模块包括预处理模块、轮廓提取模块、障碍物坐标输出模块。
如图3所示为预处理模块及轮廓提取模块的流程图,首先接收图像采集模块发出的深度图并进行两倍下采样减少处理数据量,接着根据不同阈值将原始深度图分成两张处理深度图,一张负责低矮障碍物检测,一张负责较高障碍物检测可以降低误检率提高检测效率。
具体处理步骤如下:
步骤2-1:从图像采集模块获取连续的三张深度图。
步骤2-2:对获取的三张深度图进行两倍下采样以及形态学膨胀处理。
步骤2-3:三张深度图分别在设定ROI区域与标定的地面背景信息做差,满足阈值的点的数值设置为255,不满足阈值的点的数值设置为0
步骤2-4:抽取第二张深度图命名为二值图P1,将三张深度图叠加在一起得到二值图P2。
三张深度图叠加原则如下:
同一个像素点只有255数值个数为3时该像素点数值设为255,如果255数值的个数小于3该像素点数值设置为0。
步骤2-5:对得到的二值图P1和P2进行形态学闭操作处理。
步骤2-6:分别计算二值图中障碍物的轮廓以及凸包信息。
步骤2-7:分别计算两幅二值图中的凸包面积和凸包中心的像素位置,依据凸包中心像素所在区间的不同设置不同的面积阈值过滤阈值以下的凸包。
步骤2-8:计算凸包中心像素在水平深度相机坐标系下的Y与保存的地面信息中相同像素点Y值进行比较,对小于地面Y达到一定阈值的凸包进行保留反之进行滤除。
有了障碍物凸包信息后开始计算障碍物在符合避障碍空间范围的三维坐标信息。
如图4所示为障碍物坐标输出模块的流程图,步骤具体如下:
步骤3-1:加载训练好的ghost二分类模型,利用TensorRT构建推理引擎,保存引擎。
步骤3-2:用c++加载并部署引擎。
步骤3-3:计算滤除后剩余凸包的最小外接形框。
步骤3-4:去除重叠的矩形框,合并连接的矩形框。
步骤3-5:当存在多个矩形框时,只保留矩形框内深度平均值最小的矩形框。
步骤3-6:将深度图上矩形框映射到RGB图中。
映射公式如下:
其中Zd是在(ud,vd)像素点上的深度值;是深度图像素点(ud,vd)在深度相机坐标系下的三维坐标;是像素点(ud,vd)在RGB相机坐标系下的三维坐标;(uc,vc)是在RGB图像上的像素坐标。R和T分别是深度摄像头到RGB摄像头的旋转矩阵和平移矩阵。Kd是深度相机内参矩阵,Kc是RGB相机的内参矩阵。
步骤3-7:计算矩形框的面积,将面积大小满足条件的RGB内的矩形框送入验证模块。
步骤3-8:当图像数据进入验证模块时,会利用步骤3-2部署的引擎进行推理判断如果判断为非障碍物输出0,反之判断为障碍物输出1。
步骤3-9:如果验证模块输出为0,表示判断矩形框内物体为非障碍物则返回执行步骤3-3,如果输出1表示矩形框内是障碍物则执行下一步骤3-10。
步骤3-10:计算障碍物矩形框中的每个像素点在深度相机坐标系下X坐标轴上的值,去除掉X坐标轴上数值在阈值范围之外的像素点,在剩余像素点中找到障碍物的最近距离,并输出给避障决策模块。
同步进行特殊障碍物检测。
如图5所示为特殊障碍物检测模块的流程图。
特殊障碍物检测模块检测障碍物包括以下步骤:
步骤4-1:加载训练好yolov5模型(模型识别类别为行人,搬运机器人),经TensorRT推理构建推理引擎,保存引擎。
步骤4-2:加载部署引擎,接收图像采集模块的RGB图片进行推理。
步骤4-3:获取推理后得出的在RGB图像中目标矩形框左上角像素坐标以及长宽。
步骤4-4:将RGB像素转换到深度图像素,获取矩形框内的像素值在水平深度相机坐标系下的三维坐标。
步骤4-5:去除水平深度相机坐标系下X轴上数值不满足阈值的像素点,在剩余的像素点中经过滤波得到障碍物最近点在水平深度相机坐标系下的三维坐标并输出给避障决策模块。
所述避障决策模块分别对普通障碍物与特殊障碍物检测模块设置有不同避障范围,同时再避障范围内划分三个避障等级区域。一级避障减速30%,二级避障减速60%,三级避障直接停止。
如图6所示为障决策模块处理避障信息的流程图,具体步骤包括以下:
步骤5-1:接收普通障碍物检测模块与特殊障碍物检测模块输出的障碍物坐标信息。
步骤5-2:如有障碍物出现在三级避障区域同时处理普通障碍物检测模块与障碍物检测模块输出的障碍物信息,如障碍物均出现在一级和二级避障区域,那么优先处理特殊障碍物检测模块输出的障碍物信息。
步骤5-3:对障碍物的距离信息进行中值滤波和限幅滤波处理。
步骤5-4:根据最终处理后得到的障碍物距离信息判断障碍物处于三级避障区域中的哪一块区域,根据障碍物所在区域判定使用相应的避障策略并将策略输出到运动控制模块控制搬运机器人执行避障碍策略,最终实现避障功能。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种驾驶人身体条件检测方法、系统及终端机