基于ROS的机器人去跑偏板坯毛刺自主规划
2021-04-19蔡永祯许四祥杨宇方建中
蔡永祯,许四祥,杨宇,方建中
(安徽工业大学 机械工程学院,安徽 马鞍山 243000)
现代大型连铸机一般使用数控火焰切割方法将钢坯切割成固定的尺寸,切割过程中,热熔钢液向下流动导致板坯底部形成一条呈冰柱状的毛刺,影响板坯的表面质量和输送辊道的使用寿命。现有去除毛刺方法主要有锤刀式去除法和刮刀式去除法,都具有去除效率低,噪声大,刀具寿命低的缺点,无法满足实际生产需要[1]。许四祥等[2]提出了一种等离子去板坯毛刺的新方法,在去除板坯毛刺效率上有很大提升。郝奇等[3]依据此方法采用ROS对机器人去除板坯毛刺进行框架建设,但局限于板坯处于理想情况能取得较好效果。实际上,板坯在经过输送辊道输送时往往出现一定程度跑偏现象,该去除方案无法满足工业现场要求,基于此,提出一种机器人结合深度相机自主运动规划去除跑偏板坯毛刺的方法,以期望取得良好效果。
1 跑偏板坯角点定位
1.1 跑偏板坯角点定位理论
对于在运输中发生跑偏的板坯,机器人采用传统示教方法无法完成去除板坯毛刺的工作,故考虑采用深度相机对板坯进行三维点云重建,利用点云点筛选方法对板坯角点进行定位,从而指导机器人完成去除毛刺工作。
点云三维重建是使用PCL点云库把二维像素变换为三维空间点云。使用深度相机对实物进行扫描,灰度值代表着像素点到深度相机所在垂直平面的距离值,可通过结构光直接测得。深度图像的像素坐标(u,v)和世界坐标(X,Y,Z)的映射关系如图1所示,可由此计算点云点空间坐标。
图1 像素坐标系和世界坐标系映射图
由坐标映射关系可知:
(1)
点云点的三维坐标为:
(2)
式中:Cx和Cy为主点像素坐标,fx和fy为像素表示的焦距长。
为了获取所需角点,对点云进行筛选。利用点云识别顺序可以对点云点进行坐标筛选,点云的扫描识别是自左而右,自上而下的进行扫描工作的。其每下一点相较于前一点的坐标都有着明确的大小关系,可以利用此特性,进行板坯角点的点云点筛选。
在确定了点云三维重建原理,以及点云排布顺序原理两种原理后,设计角点定位算法流程如图2所示:
图2 角点定位算法流程示意图
(1)使用深度相机对板坯进行深度扫描,并完成点云三维重建;
(2)利用点云排布顺序原理根据点云点坐标的筛选识别板坯的一个角点;
(3)更改点云扫描区域,找到位于板坯两角点连线上的一中间点;
(4)利用之前已知条件,进而得出第二角点。
1.2 跑偏板坯第一角点定位
如图3所示,深度相机三维重建的是板坯上表面的点云,因此对于跑偏板坯,只需要找到其在世界坐标系下Y坐标最大值,对于正常状态下的板坯,其边线P上的任一点都是其Y轴最大值点,这些点中X坐标最大值一定是其右角点。所以,当板坯正常状态或者左跑偏状态,定位算法可以定位其右角点。当板坯右跑偏时,定位算法定位左角点。
图3 跑偏板坯第一角点定位示意图
具体筛选方法的部分python代码如下:
k=points_arr
#设定初始点云识别数组。
a=k[0][0],b=k[0][1],c=k[0][2]
#设定初始点。
for i in range(len(k)):
#设定关于k[i]的循环。
m=k[i][0],n=k[i][1],q=k[i][2]
#设定m,n,q为第i点的x,y,z值。
if k[i][0]
#设定点云识别阈值d.
if(m>=a or n>=b):
p=k[i]
#当下一点x或y值大于前一点,继续循环。
1.3 跑偏板坯的第二角点定位
以左偏状态板坯为例,如图4(a)所示,通过改变第一角点定位方法中的阈值d,可以得到在指定区域N中一个满足筛选条件的点B.显然,所得出的点是位于边线上的中间点。
如图4(b)所示,根据第一角点A与中间点B,得出一个边线向量AB,最终以通过角点A,中间点B,以及板坯宽,即可得出第二角点C.
图4 左偏板坯定位示意图
2 跑偏板坯去除毛刺仿真
为了验证所设计定位算法,采用一个仿真方案来证明算法的可行性。
设计仿真采用ROS机械臂控制系统,ROS机械臂控制系统一般以MoveIt架构为核心,其中主要包含了MoveGroup类,传感器与位置控制器相关接口,python、c、c++算法的MoveIt_commander接口以及RVIZ可视化接口,参数服务器接口等。其中传感器与位置控制器相关接口主要获得关节信号,并发送给MoveGroup类进行正运动学,逆运动学求解及规划轨迹[4-6]。其设计流程如图5所示,具体流程如下:
图5 仿真流程示意图
(1)构建板坯去毛刺的三维模型并导入urdf,在ROS中插入深度相机组件,并配置深度相机位置精度等参数,将urdf文件转化为xacro模型文件。
(2)进行MoveIt-Gazebo仿真,完成跑偏板坯去毛刺的系统架构。
(3)利用确定的点云定位原理定位两角点。
(4)机器人接收角点信号,对两角点进行笛卡尔运动。
2.1 基本模型的搭建
在Solidworks中绘制模型如图6所示,并将模型转换成urdf文件,urdf文件是一种适用于机器人仿真的特殊模型文件[7-8]。
图6 机器人工作站示意图
2.2 深度相机的配置和点云三维重建
使用深度相机进行仿真点云三维重建,深度相机包含感知深度的IR红外发射和接收器,另外还有一个RGB传感器用于感知RGB图像[9-10]。根据RVIZ可视化界面内的板坯点云的生成效果,调整深度相机至合适位姿,完成整体仿真的配置工作。联合仿真界面如图7所示。
图7 联合控制相应配置
2.3 基于ROS的角点定位算法的仿真
通过角点识别算法,获得两角点位置信息。利用mark标记显示获取的角点,对位置信息进行检验。可视化界面显示如图8所示。如图可知,两个角点在仿真界面中成功识别。
图8 角点定位显示图
为了验证算法对不同姿态板坯定位的稳定性,分别验证正常,左偏,右偏情况下得出的角点坐标以及角点显示如图9所示:
图9 角点定位验证图
经过程序的反复试验,角点定位算法可以在仿真界面下成功定位三种状态下的板坯角点。
2.4 机械臂轨迹规划
根据定位的两个板坯角点,对机器人切割路径进行轨迹规划。
机械臂需要根据所识别的两个角点规划去除工作,调用Move Group规划组,让机械臂到达工作初始位置,在终端接收点云话题以及定位程序发布的角点话题,机器人成功识别角点的位置信息。对识别角点的位置保留一定余量并调整rpy参数保证割炬切割到下边线且不碰撞到板坯。执行程序,机械臂自主运行到下端第一角点。当机械臂在不加任何约束从第一角点运动到第二角点情况下,机械臂将随机运动到第二角点,与实际所需的切割直线的目的不相符,需要对机械臂运动规划进行约束。
使用笛卡尔运动规划算法进行规划约束,规定板坯下端边线路径的自主直线插补,笛卡尔轨迹规划原理是为末端执行器设定目标的位姿,通过将一段轨迹拆分成若干个短路线,达到直线运动的目的[11-12]。机械臂成功规划一条运动轨迹。
当机械臂运移动到第一角点,结合笛卡尔运动规划算法,在无碰撞板坯前提下,将两角点之间距离拆分成若干小段直线距离,成功完成板坯毛刺的去除,切割轨迹示意图如图10所示,由图可知,机械臂成功切割跑偏板坯下端,切割过程自主化,切割线性程度高,且与切割轨迹与识别出的上边线平行,可以证明实验方法基本实现跑偏板坯去毛刺的工作目的。
图10 机械臂去跑偏板坯毛刺示意图
利用rqt_plot工具,添加终端关节状态话题,生成的rqt分析图像如下图11所示,图像显示出机器人各关节角度变化平缓,运动稳定。
图11 rqt分析图
3 结论
针对现今板坯去毛刺方法无法适应跑偏状态下板坯毛刺去除工作,设计一种结合深度相机的板坯角点定位方法。通过深度相机扫描板坯,进行跑偏板坯点云三维重建,利用点云排布原理筛选得出跑偏板坯第一角点,改变筛选阈值得出中间点,利用向量计算得出第二角点,成功识别跑偏板坯的两个角点。
通过笛卡尔运动规划算法实现机械臂自主运动规划及执行。通过上述所有流程,完成了在ROS平台下针对跑偏板坯去毛刺的自主规划执行仿真。为机器人去板坯毛刺提供新的思路。