1.一种基于深度相机的机械手抓取方法,该方法包括以下步骤:
步骤1、离线阶段建立目标物体的模型数据库;利用已知目标物体的3D模型获得点云数据和初始最佳抓取位姿T0,将点云数据通过体素大小为Vsize=(wv,hv,dv)的滤波器进行下采样,再提取点云数据的点对特征PPF,将相似的PPF放在同一组并存入哈希表中,其中每一对PPF可以表示为:Fm(pm,pn)=(df,θ1,θ2,θ3) (1)
(1)式中,pm和pn是点云数据中的任意两个点,df是点pm与点pn之间的欧式距离,θ1和θ2分别为点pm与点pn法线和这两个点构成向量之间的夹角,θ3为点pm与点pn法线之间的夹角;
步骤2、通过深度相机获取当前环境下的RGB图像数据和深度图像数据;通过深度相机获取当前环境下的RGB图像数据和深度图像数据,采用YOLO‑V5目标检测算法,检测当前环境中的目标物体,获得其在RGB图像中的像素范围:Pixelobj={(xobj,yobj)|(xleft,yleft)<(xobj,yobj)<(xright,yright)} (2)其中,(xobj,yobj)为目标物体的像素点,(xleft,yleft)和(xright,yright)分别像素框的左上像素点和右下像素点;
步骤3、由于深度相机的彩色摄像头和红外传感器位置不同,导致原始的RGB图像和深度图像存在偏差,利用式(3)将深度图像和RGB图像进行对齐;
其中,prgb和pir为在RGB图像和深度图像中相对应的像素点,Irgb和Iir分别为RGB相机和红外相机内参数矩阵,Ergb、Eir、Trgb和Tir为RGB相机和红外相机的外参数;
步骤4、由于检测的边界框和实际物体边界可能存在偏差,需要在深度图像中对像素框范围进行修正;将步骤2中得到的像素框映射到对齐后的深度图像中;
步骤4计算出像素框中心点的深度值dc,设置阈值dt=dc‑d0,d0为常数;计算四条边界框上的像素点的深度值,如果某一条边框上存在深度值小于设定的阈值dt的像素点,则将该条边框向外移动n个像素点,直到四条边框上的像素点的深度值均大于设定的阈值;
步骤5、通过式(4)计算步骤4中纠正后像素框中所有像素点在相机坐标系下的坐标,获得场景点云数据;
其中,xc、yc、zc是像素点(u,v)在相机坐标系下的坐标,d是像素点(u,v)处的深度距离,dx、dy、u0、v0和f是相机内参;
步骤6、将场景点云通过体素大小为Vsize=(wv,hv,dv)的滤波器进行下采样,再估计点云表面法向量;
步骤7、随机生成场景点云的一系列参考点qi,每个参考点qi和场景点云构成点对特征Fs(qi,qj);设置PPF法线角度和距离的筛选阈值θt和dt,通过对步骤1中建立的哈希表进行搜索,在阈值内寻找与场景点对特征Fs(qi,qj)相似的模型点对特征Fm(pm,pn),每一对相似的Fm(pm,pn)和Fs(qi,qj)中qj和pn的转换关系可以表示如下:其中,Tqi和Tpm分别是将点qi和pm转换到相机坐标系原点的变换矩阵,α是将qi和pm变换到原点,并使其法向量对齐x轴后向量 和 间的夹角,R(α)是旋转角度为α的变换矩阵;
步骤8、使用投票策略方法对每一个参考点qi所得到的多个位姿进行投票,得票最高的位姿作为该参考点的位姿结果;对所有参考点的位姿结果采用位姿聚类,对每个聚类进行评分,单个聚类分数等于其中所有位姿投票数的总和,将得分最高聚类中位姿的平均值作为最终结果;
步骤9、使用ICP算法对步骤8中的位姿结果进行修正,设定目标函数为:
其中,N为点对总数,pi和qi为场景点云和模型点云中的邻近点对;设置阈值ft,当目标函数值小于阈值ft时,则接受此时的修正结果R和T,否则继续迭代;
步骤10、将初始最佳抓取位姿T0通过式(7)变换得到当前环境下的最佳抓取位姿,向机器人控制器发送控制命令,完成抓取;
其中,T0为模型初始最佳抓取位姿,R和T为经过ICP修正后的旋转、平移矩阵。