化猛奇,许四祥,蔡永祯,宋超群
(1.特种重载机器人安徽省重点实验室,安徽马鞍山243032;2.安徽工业大学机械工程学院,安徽马鞍山
243032)
钢铁冶金行业中,板坯在连铸连轧成型后需按一定长度进行火焰切割,再被送入输送辊道。切割过程中熔融钢液向下流动导致板坯底部粘连有一条不规则的熔渣毛刺,传统去毛刺方法有刮刀式去除法与锤刀式去除法,两者均属于机械式去除法,存在去毛刺效率不高、刀具寿命影响生产效率等问题。针对这些问题,许四祥等提出一种去板坯毛刺的新方法,利用数控等离子弧配合板坯定位装置进行切割作业,实验结果表明此方法具有较高的工作质效,但由于板坯定位装置采用光电开关进行定位,若板坯偏离预定位置,则切割作业无法正常进行,造成错切、漏切现象。江天琦等通过Robot Studio软件对工作站进行建模与仿真,基本实现了机器人等离子去板坯毛刺工作站所需功能,但定位装置依然采用光电开关,且软件开源性不足,无法对工作状态信息如轨迹、行进速率、传感器数据等进行反馈。姚志生等提出一种基于背景差分法的双目视觉定位与测距方法,利用背景差分的方法从背景中提取板坯图像并进行测距,但由于在帧差过程中对源图像进行腐蚀、膨胀、二值化等操作,易导致关键角点信息缺失,在特征角点检测准确度上存在不足。
针对上述问题,提出基于双目视觉定位的机器人去板坯毛刺方法。使用双目相机代替光电开关改进板坯定位装置,运用改进的尺度不变特征变换(scale-invariant feature transform,SIFT)算法对双目相机拍摄源图片进行处理,在开源的机器人操作系统(robot operating system,ROS)框架下进行机器人切割板坯毛刺的运动规划仿真,以期增强机器人去板坯毛刺定位系统的鲁棒性,精确获取板坯角点位置信息。
在机器人操作系统(ROS)中,机械臂的控制由MoveIt架构实现,其中包含MoveIt的核心Move_group节点、接收机械臂控制指令的用户接口、存储机器人运动学数据与配置信息的参数服务器接口、获取机器人运动状态信息的控制器与传感器接口等。Move_group节点作为整合器,从参数服务器接口加载机器人配置信息如模型尺寸等,从用户接口接收控制指令如轨迹规划等,从传感器接口获取机械臂关节信息(joint states),调用运动规划算法求得所需机械臂运动的正逆运动学解并生成轨迹数据(joint trajectory action);与机器人控制器接口交换轨迹数据,驱动机械臂运动,实现用户指令。
Gazebo软件为ROS提供一个接近现实的三维物理仿真平台,可用于进行机器人运动学、动力学仿真,同时能够模拟机器人常用的传感器。将双目相机获得的角点三维信息由用户接口传递给MoveIt生成轨迹数据;通过关节运动数据控制Gazebo中的机械臂运动。MoveIt与Gazebo的联合仿真控制系统简图如图1。
图1 MoveIt与Gazebo联合仿真框架Fig.1 Architecture of MoveIt and Gazebo co-simulation
仿真系统配置的主要步骤分为两步:使用SolidWorks软件绘制工作空间模型,利用sw_urdf_exporter插件生成标准化机器人描述格式(unified robot description format,URDF)文件并优化为Xacro 文件格式;使用MoveIt配置助手(Setup_assistant)配置机械臂的控制功能包,然后为MoveIt与Gazebo配置统一的控制器与传感器插件,实现联合仿真。
1.2.1 URDF与Xacro文件的创建
使用SolidWorks绘制机器人工作空间模型,如图2。模型包含机械臂主要连杆及配套的辊道与底座等,并在每个连杆上添加参考坐标系与旋转轴。利用sw_urdf_exporter插件依次定义关节限位、子父系link、连杆参数等,即可导出URDF文件,文件中使用<link>与<joint>等标签描述机器人结构与属性。
图2 机器人模型Fig.2 Robot model
Xacro 使用宏定义,并提供可编程接口,具有精简化、可复用、模块化的优势,可看作优化后的URDF 文件。Xacro内部参数使用<xacro>标签对传感器和控制器插件等进行包含,通过添加gazebo_ros_control插件与transmission传动标签等保证ROS与Gazebo之间正常通讯。
1.2.2 MoveIt与Gazebo联合仿真框架的配置
机械臂控制功能的实现来源于其配置。MoveIt 为用户提供一个图形化界面,Setup_Assistant 为任意机械臂配置MoveIt功能包,包含加载机器人Xacro文件、自碰撞检测、添加规划组与运动求解器、设置默认位姿等步骤。为实现MoveIt与Gazebo的联合仿真,需配置关节位置控制器(joint_position_controller)接收MoveIt规划的轨迹数据,并控制Gazebo中的机械臂关节运动;配置关节状态控制器(joint_state_controller)监视机器人的转动角度、角速度等信息,并反馈给MoveIt,建立一个闭环联合仿真系统。
配置的仿真界面如图3。
图3 工作站仿真系统可视化界面Fig.3 Visual interface of workstation simulation system
左侧图像为可视化图形界面,可视化仿真工作站的数据信息;白色透明直立模型为机器人默认位姿home;末端带球前伸模型为规划的目标位姿;右侧Gazebo界面显示模拟真实物理环境,表示机器人真实所处的位姿及物理环境;中间终端反馈加载信息与运行结果。
利用双目视觉对图像进行处理,由ROS中提供的标定功能包对双目相机进行标定,获取相机的内外参数后,对图像进行校正获取行对准图像;结合双目视觉运用改进的SIFT算子,精准定位角点并计算三维信息;将角点的三维信息传递给MoveIt进行轨迹规划。
双目视觉一般由双摄像机从不同角度同时获取物体的两幅数字图像,提取物点在两幅图像上的像素坐标,找到两幅图像上的对应点,计算对应点之间的偏移量(视差),即可根据三角测量原理恢复物体的深度信息。双目视觉模型采用如图4 所示的平行结构。图中:f为相机焦距;O与O分别为左右相机光心,也可看作左右相机坐标系原点,B点为基线距,即为O与O之间的距离;L,L分别为左右相机的光轴;P 为三维空间中某点,其在左右图像上的成像点坐标依次为P(x,y)与P(x,y),点P 在相机坐标系中坐标为(x,y,z)。
图4 双目视觉模型Fig.4 Binocular vision model
在平行双目模型中物点在左右图像中的y 坐标相同,即y=y,,则根据三角测量原理有:
设视差D=x-x,则P 点在相机坐标系下的三维坐标为:
由相机的针孔模型与畸变模型能将外部的三维点投影到相机内部成像平面,构成相机的内参数与畸变系数,由双目相机模型获得右相机相对于左相机的旋转与平移,构成相机的外参数。为准确获得空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,需通过相机标定获得以上相机参数。文中通过ROS 中提供的基于张正友标定法的camera_calibration功能包标定双目相机,标定过程如图5。
图5 双目相机标定Fig.5 Binocular camera calibration
标定完成后得到相机内外参数与畸变系数,包含焦距、基线距等参数。利用得到的参数对相机拍摄图片进行校正。校正后的板坯模型图如图6。由图6可看出,添加辅助线后左右图像的板坯位置在y方向上几乎一致。
图6 校正后的行对准图像Fig.6 Corrected line alignment image
采用尺度不变特征变换(SIFT)算子检测出的特征点具有尺度不变性,对图像的尺度变化具良好的鲁棒性。但SIFT算子提取的特征点是尺度空间中的极值点,并不是文中所需的板坯有效角点。对于灰度图像,加速分割检测特征(features from accelerated segment test,FAST)角点检测算法的判断依据是若该点的灰度值比其周围领域内足够多的像素点灰度值大或小,则该点可能为角点。文中所需的板坯有效角点满足这种条件,但FAST算子存在一个明显的缺陷,即不具备尺度不变性。故将SIFT算子与FAST角点检测算子相结合,使检测出的特征点既包含角点特征又具尺度不变等性质,板坯角点三维信息的提取步骤如下。
式中:σ 表示尺度空间因子;(x,y)表示在σ 尺度下的图像像素坐标。将I(x,y)与不同尺度下的高斯函数进行卷积,得到高斯金字塔。通过高斯金字塔中相邻高斯尺度空间的图像相减,得到高斯差分(difference of Gaussians,DoG)金字塔影像,即
式中k 为两个相邻尺度空间的倍数,为常系数。
2)FAST角点检测。在DoG金字塔内采用FAST算子在不同尺度下检测图像的特征点,判断该点的灰度值比其周围领域内足够多的像素点灰度值大或小。
3)SIFT特征描述。在所选的尺度空间中,计算特征点邻域内的局部图像梯度,将梯度转换成一种具尺度、旋转、光照不变性的特征描述向量形式。
4)最近邻、次近邻约束后的匹配。通过度量特征点的特征描述向量之间的欧式距离,完成匹配,假设点D是左图特征点集合中的点,计算D与右图特征点集合中的最近邻距离(即欧式距离最小),记为CN,次近邻距离记为SCN。将CN与SCN的比值设为阈值,判断是否为正确匹配。设置阈值为0.5,最近邻、次近邻约束后的匹配图像如图7。由图7可看出,4个板坯角点均被检测出来,但仍有其他非理想角点被检测并匹配。
图7 添加约束后的匹配点对Fig.7 Matching point pairs after adding constraint
5)有效角点的定位。针对出现的非有效角点,以左图的特征点坐标为原点P,以10个像素的长度为半径R。设定区分背景与工件所占像素的灰度阈值,将圆上56个像素点中工件所占像素点记为a,背景所占像素点记为b,定义r=a/b。以此区分角点、边缘点与工件表面上的特征点,获取4个角点的坐标后,对坐标进行分类比较,得到所需的两个有效角点,如图8。两个有效角点的坐标分别为P(x,y)与P(x,y),将其代入式(2)计算出两角点的三维坐标。最终计算得角点间的距离为301.11 mm,板坯真实距离为302 mm,绝对误差为0.89 mm,相对误差为0.29%,误差保持在合理范围之内。
图8 有效角点匹配Fig.8 Effective corner matching
6)角点信息的发送。将图像处理程序作为一个节点,将两个角点的三维信息以话题的形式从用户接口传递到MoveIt中,供MoveIt进行轨迹规划。
在搭建的工作站仿真环境中,依据切割工作要求对机械臂末端进行笛卡尔空间的直线轨迹规划,以满足实际任务要求。采用MoveIt默认的运动学和动力学库(kinematics and dynamics library,KDL)插件求末端位姿的逆运动学解。已知机械臂末端起点坐标A=(x,y,z),终点坐标B=(x,y,z), 沿直线从A 运动到B,插补的次数为N,则中间插补点的坐标(x,y,z)为:
式中:i=1,2,3,…,N。具体计算过程可将由A 到B的直线轨迹分解为N 段进行插补,利用KDL 插件计算出每一段直线轨迹对应的关节量,将关节信息传递给控器。在仿真界面中,依据获得的角点信息规划的直线轨迹,结果如图9。观测后台机械臂关节角度如图10。由图10可知,仿真过程中机械臂运行平稳,符合期望仿真结果。
图9 机械臂的直线运动轨迹Fig.9 Linear motion trajectory of manipulator
图10 机械臂关节角度变化曲线Fig.10 Change curves joint angle of manipulator
针对去板坯毛刺过程中板坯定位装置缺少鲁棒性的问题,提出使用双目相机并运用改进尺度不变特征变换算法检测板坯特征点,且在机器人操作系统(ROS)中进行仿真。结果表明:该方法能够准确定位板坯的角点特征,通过坐标转化与节点间通信可引导机械臂的切割作业,ROS框架下双目视觉可用于引导机器人去除板坯毛刺。