工业机器人的实时轨迹插补算法(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工业机器人的实时轨迹插补算法
李天友 ,孟正大 ,陈勍奇
(东南大学自动化学院,江苏南京 210096)
摘要:提出了一种实现工业机器人实时轨迹插补的规划算法。该算法既能满足时间上的实时性,又能够在完成机器人当前轨迹插补的同时,实现在线调整插补参数,改变机器人当前插补方程,从而改变机器人运动轨迹与状态。而对于不同插补类型,只要找准对应线长的表示,不需要对算法本身进行修改,就可以完成相应的轨迹插补。本算法应用于“昆山一号”焊接机器人中,表明其满足焊接实时性和可调速性要求。
关键词:工业机器人;实时插补;算法;轨迹规划
示教再现方式下的轨迹插补算法是工业机器人的一个传统课题[1],技术和方法比较成熟有效。文献[2-4]分别解决了直线、圆弧、样条曲线等单一类型的轨迹插补,文献[5,6]讨论了复杂曲线在编程时用分段直线或圆弧进行拟合插补的方法,文献[7]研究了关节空间和笛卡儿空间的通用插补算法,把插补段分为加速段、匀速段、减速段进行插补, 但算法复杂,运算量大,且不能进行实时控制。此外,时间上满足实时性的轨迹插补方法也得到了研究[3,4]。但是既满足实时性要求又能够进行平滑调速并且能够同时完成关节空间和笛卡儿空间各种类型插补的通用轨迹插补算法却比较少见。
本文介绍工业机器人的实时轨迹插补算法。它是为满足“昆山一号”焊接机器人的实时性而设计的,实时性包含两层涵义,一是满足时间上的实时性,即在一个采样周期内能够完成一次轨迹插补,多数算法能够满足这层要求;而实时性第二层涵义是系统能够在完成机器人当前轨迹插补的同时,实现在线调整插补参数,改变机器人当前插补方程,从而改变机器人运动轨迹与状态,本文的算法很好地完成了这层实时性的要求。并且这种算法能够完成PTP (点到点)、多点关节空间、直线、圆弧、样条曲线、FlyBy [8,9]等多种类型的轨迹插补。
本文首先介绍实时轨迹插补算法的提出背景,然后给出了算法基本原理的详细说明,并且运用流程图进一步明确了基本算法,对算法的实时性和调速控制进行了分析,最后阐述了算法在多种插补类型中的实际应用。
1 实时轨迹插补算法
1.1 提出背景
“昆山一号”机器人是我国第一台自主研制的全自动工业焊接机器人,其核心技术“自动控制软件系统”第一版在轨迹插补方面,不仅实现了常见的PTP 、直线、圆弧这些插补方式,而且实现了样条曲线插补和多点笛卡尔坐标空间插补等新型插补方式,丰富了机器人的轨迹插补功能,这些插补算法在实际系统运行中,操作简单方便,机器人运行平稳[10]。
先前的算法是把插补段分为加速段、匀速段、减速段,分别对位置和姿态进行定时插补计算,然后把所有的插补点位姿全部求解出来形成位置和姿态链表。通过对插补点位置和姿态链表进行依次读取执行,来完成各种类型的插补。这种方法虽然能够完成姿态的插补,但是在已知插补类型的情况下,不能对机器人运动轨迹与状态进行控制,也就是不能满足实时性第二层内容的要求,当然也就不能满足“昆山一号”焊接机器人在实际应用中的电弧跟踪实
基金项目:江苏省科技成果转化专项资金项目(BA2007058)和国家高技术研究发展计划资助项目
(2006AA040202
作者简介:李天友(1983-),男,河南民权人,硕士生,
litianyouseu@
时偏差补偿和插补过程中进行调速的需要,所以我们提出了实时轨迹插补算法。
1.2 基本算法
机器人控制系统计算点列并形成轨迹的过程叫插补,插补工作有三个要素:插补的参数、插补的方程、插补形成的轨迹(点列)。只有插补的参数、插补的方程都合乎操作者的需求时,产生的点列才是符合要求的。其中把插补的参数分成两部分:第一部分参数一般包括示教点的位姿如始点位姿和终点位姿、示教点间的插补方式如直线、圆弧等,一般能够规定插补的轨迹方程,第二部分参数一般包括设定的匀速段速度、变速段加速度、始点速度和终点速度等,一般能够规定机器人工具手末端的运动状态。
为方便说明问题,我们定义空间两点始点A 和终点B 以及它们之间的线段为直线段(实际上两点之间可以为圆弧、样条曲线、FlyBy 等任意形状的线段),算法原理图如图1所示。
图1 实时轨迹插补算法原理示意图图2 实时轨迹插补算法关键步骤说明示意图由图1可知第一部分参数有:始点A 位姿startAuxiT6,终点B 位姿
endAuxiT6,该图例表示的插补类型为直线;第二部分参数有:始点A 的速度为Vstart 、终点B 的速度为Vend 、始点A 和终点B 之间的匀速段速度velo 和变速段加速度accel 。
定义当前插补点的位姿为currentAuxiT6、速度为Vcurrent 和距离A 的线长Scurrent ,下一个插补点的位姿为nextAuxiT6、速度Vnext 和距离A 的线长Snext 。定义A 和B 总线长为S ,SA 为A 附近的变速距离(Vstart 按设定加速度
变化到velo 所需要的线长),SB 为B 附近的变速距离(velo 按设定加速度变化到Vend 所需要的线长),SAB 为总的变速距离。定义SAECE 为当前插补点处于末段变速状态时所需的变速距离(Vcurrent 按设定加速度变化到Vend 所需要的线长),SCE 为当前插补点到B 的距离。
输入变量有:startAuxiT6、 Vstart、endAuxiT6、Vend 、currentAuxiT6、Vcurrent 、Scurrent (以上三个变量由上次插补算法计算得到)、velo 、accel 、调速控制量Vrate (通过控制该变量完成机器人的调速,集中反映了该算法通过控制输入变量对机器人的插补状态实行控制)。
输出变量有: Vnext、Snext 、nextAuxiT6(以上三个量作为下次轨迹插补的输入控制量。算法的核心思想:由以上实时性的分析,可以通过控制输入变量对当前插补点状态施加控制,这样就把整段的连续插补变为可以控制插补状态(如插补的速度和姿态)的单步插补。在完成当前插补点轨迹插补的同时输出Vnext 和Snext ,通过计算得到nextAuxiT6,以上三个变量作为下次轨迹插补的输入变量对下次轨迹插补的状态进行控制。所以现在讨论的问题就变为如何通过控制当前插补点输入变量求解下一插补点的Vnext 和Snext 上。
在两个插补点之间,存在两个关键判断点:一是比较SCE 和SAECE ,若SCE 不大于SAECE ,当前插补点进入末段变速段;若SCE 大于SAECE ,则进入非末段的变速段;这就相当于直观的把整条线段分成了两个部分,末段变速段和非末段变速段。
第二个关键判断点是速度的对比。若当前插补点进入末段变速段,首先比较velo 和Vend ,确定变速段是加速状态还是减速状态,然后比较Vcurrent 和
Vend ,确定当前插补要进行相应的运动还是匀速运动。而当前插补点处于非末段变速段的处理方法与处于末段变速
段类似,首先比较velo 和Vstart ,确定本段是加速状态还是减速状态,然后比较Vcurrent 和Vstart ,确定当前插补要进行相应的运动还是匀速运动。其关键步骤说明示意图见图2。