刘 虹,张得军
(1.合肥工业大学 机械工程学院,合肥 230009;2.合肥工业大学智能制造技术研究院,合肥 230009)
近年来,世界主要大国都在工业生产中大规模应用各类工业机器人,在工业机器人技术飞速发展的同时,工业机器人开发过程中也面临着一些问题:例如机器人控制系统的封闭性[1];工业机器人智能化程度低;模块化和系统化不足;编程效率低下[2];机器人开发时间长、成本高等。为了解决机器人研究工作量大、耗时长,难以在现代社会普遍应用的问题,机器人研究者开发了大量的机器人软件平台,在这些开发平台中,机器人操作系统ROS受到了广泛关注,为解决当前机器人开发面临的问题提供了新的方法。ROS是机器人系统设计的软件框架,具有跨平台、多语言支持、代码复用等多个优点,为各种机器人开发提供了极大的便利[3]。ROS-I在复用ROS已有的框架和功能上,对工业领域进行了针对性的扩展,极大的降低了工业机器人的开发的难度。
本文首先简单介绍了ROS-I项目并基于ROS-I搭建了埃夫特弧焊机器人仿真平台,然后通过Descartes运动规划库完成了弧焊机器人笛卡尔空间运动规划仿真,最后通过机械动力学软件ADAMS对规划的结果进行验证。
ROS是一个面向机器人的开源操作系统[4],其中包含了大量的用于机器人开发的工具和库,提供了统一的机器人开发框架和标准的接口[5]。在2011年,为了将ROS软件的强大功能扩展到工业领域,美国西南研究所(SwRI)和Willow Garage公司以及安川机器人公司率先将ROS引入工业自动化领域,发起了ROS-Industrial项目。
在ROS中,MoveIt!是一个功能非常强大的机器人运动规划工具。它集成了很多已经被广泛使用的第三方库,包括运动学和动力学库KDL、开放运动规划库OMPL和快速碰撞检查库FCL等。MoveIt! 能够自动实现碰撞检查,由随机采样的运动规划算法库OMPL规划的轨迹会避开障碍物和自身干涉等碰撞状态[6]。在默认情况下,ROS中机器人的正、逆运动学的计算是使用KDL库完成的,为了提高运算的效率,用户可以利用OpenRave的IKFast模块生成解析器插件,从而可以将运动规划求解的速度提高三个数量级。ROS-Industrial的体系结构框图如图1所示。
图1 ROS-Industrial的体系结构框图
MoveIt! 目前主要专注于机器人抓握和取放操作方面的应用,但是在实际的工业应用中,比如弧焊机器人执行焊接作业任务,既要指定机器人末端执行器的起始位姿和目标位姿,还要插补出其中间点的位姿。为了解决约束条件下的笛卡尔轨迹规划问题,ROS-Industrial项目开发了Descartes规划库。
Descartes规划库主要用于规划具有笛卡尔路径的机器人动作轨迹,它能够快速规划出性能优异的规划轨迹并将规划的结果保存在内存中,即使当机器人路径发生变化,Descartes库也能够快速规划新的关节轨迹。
在ROS中要对工业机器人进行仿真,首先必须创建能够描述机器人结构的URDF(Unified Robot Description Format)文件[7]。URDF是一种用于描述机器人连杆件和关节的XML格式文件,不仅能够抽象描述一个机器人的硬件,还可以描述整个机器人的工作空间。
本文研究的工业机器人三维模型来自埃夫特公司官网。通过SolidWorks处理后的机器人模型如图2所示。
图2 弧焊机器人三维模型
为了快速将机器人三维模型转换为相应的URDF文件,在SolidWorks中通过SW2URDF插件创建包含机器人URDF文件的功能包,然后即可通过Rviz[8]显示出机器人的仿真模型。
为了帮助机器人开发者快速配置MoveIt!,其提供了一个具有用户界面的设置助手(MoveIt! Setup Assistant)[9],它可以帮助机器人开发者定制机器人和运动规划框架的初始配置,简化了设计编译工作。这些配置包括自碰撞矩阵、虚拟关节列表、规划组定义、机器人姿势、末端执行器设置以及被动关节列表[10]。
弧焊机器人在执行焊接作业时,其末端执行器沿着给定的路径运动,那么就需要在笛卡尔空间进行轨迹规划[11]。所谓笛卡尔轨迹规划就是在已知机器人末端的初始状态和终止状态的条件下,通过插补算法求解出运动轨迹的中间轨迹点的状态,然后使用逆运动学求解出各中间轨迹点状态所对应的关节角度值[12]。本文主要针对弧焊机器人的笛卡尔空间轨迹规划问题进行讨论。
已知弧焊机器人末端执行器的起点A(xA,yA,zA)和终点B(xB,yB,zB),机器人末端执行器按照直线运动从起点运动到终点,则起点和终点之间的插补点坐标为:
xi=(1-t)xA+txB
yi=(1-t)yA+tyB
(1)
zi=(1-t)zA+tzB
假设机器人末端从起点P1(x1,y1,z1)经过中间点P2(x2,y2,z2)到达终点P3(x3,y3,z3),则圆弧轨迹规划的步骤如下:
步骤1:求圆心坐标P0(x0,y0,z0)和半径R。已知在空间中三个不共线的点可以构成一个平面,则相邻两点构成的线段的垂直平分线的交点即为圆弧的圆心,而圆弧的半径为:
(2)
步骤2:建立坐标系o-uvw。取圆心Po为坐标原点,设POP1方向为u轴的方向,则POP2和POP1的叉乘所得向量方向就是w轴的方向,v轴方向可由w轴和u轴方向向量叉乘得到。
(3)
步骤4:在新坐标系上对圆弧进行插补。设圆弧上有一点P,在坐标系o-uvw的坐标为(u,v,w),相应的归一化时间算子为λ,POP和POP1的夹角为θ,POP1和POP2的夹角为θ0,则:
θ=λθ0
(4)
(5)
步骤5:将插补结果变换到基坐标系。设点P在机器人基坐标系的坐标为(x,y,z),则有:
(6)
即为基坐标系下圆弧位置插补点的坐标值。
对于直线运动轨迹规划,以角焊接为例,取直线焊缝的起点A的位置坐标为(1.2,-0.4,0.26) ,终点B位置坐标为(1.2,0.4,0.26),然后采用前面的直线轨迹规划算法进行插补运算,如图3所示。
图3 直线轨迹规划
rqt_plot 是ROS 下的一个绘图插件,可以实时绘制出机器人关节角度的变化曲线[13]。弧焊机器人末端执行器沿着直线轨迹时,机器人各个关节角度变化如图4所示。
图4 机器人6个关节的角度变化
对于圆弧轨迹规划,以管-板相贯线焊接为例,相贯线焊缝的半径为0.2,圆心的坐标为(1.0,0,0.26),焊缝的起始点为(1.2,0,0.26),运动一周之后再次回到焊缝起始点。采用前面的圆弧轨迹规划算法进行插补运算,总共插值40个点,如图5所示。
图5 圆弧轨迹规划
弧焊机器人末端执行器沿着圆形轨迹运动时,各个关节角度变换如图6所示。
图6 机器人6个关节的角度变化
为了对Descartes库的规划结果进行验证,将上面的机器人6个关节的角度数据进行处理并导入到机械动力学软件ADAMS中进行仿真,得到弧焊机器人执行直线焊接时,焊枪末端的位移、速度和加速度曲线如图7~图9所示。
图7 焊枪末端的位移
图8 焊枪末端的速度
图9 焊枪末端的加速度
从弧焊机器人焊枪端点的位移、速度和加速度曲线图中可以看出:弧焊机器人焊枪末端的位移非常平稳,速度和加速度也没有出现较大的突变。弧焊机器人的焊枪末端在X轴和Z轴方向的位移始终分别保持在1.2m和0.26m,在Y轴方向从-0.4m匀速增加到+0.4m。说明弧焊机器人的焊枪沿着机器人的基座Y轴方向几乎做水平匀速运动,符合实际的运动情况。
弧焊机器人执行圆形焊接时,焊枪端点的位移、速度和加速度数曲线如图10~图12所示。
图10 焊枪端点的位移
图11 焊枪端点的速度曲线
(a)X方向的加速度
(b)Y方向的加速度
(c)Z方向的加速度图12 焊枪端点的加速度曲线
从弧焊机器人焊枪末端的位移、速度和加速度曲线中可以看出:焊枪末端在机器人基座的X方向为余弦运动,在Y轴方向为正弦运动,在Z轴方向始终保持0.26m,与实际情况相符,弧焊机器人焊枪末端的位移和速度曲线较平稳,说明弧焊机器人在执行焊接时没有出现较大的冲击,能够很好的完成焊接任务。
本文基于ROS-I搭建了弧焊机器人仿真平台,完成了机器人笛卡尔空间的直线和圆弧轨迹的构建并通过Descartes库对弧焊机器人的直线和圆弧轨迹规划进行了运动仿真,在轨迹规划的基础上,通过机械动力学软件ADAMS得到了机器人在这两种情况下焊枪末端的位移、速度和加速度曲线。研究结果表明,ROS-I平台的Descartes库不仅能够提高机器人笛卡尔运动规划的效率,降低机器人笛卡尔运动规划的难度,而且其规划的结果具有较高的精度和可靠性,为弧焊机器人在复杂环境中的轨迹规划提供了一个可供参考的方案。