基于符号的关节臂矩阵运算实现

2020-11-10 04:38焦培金
电脑知识与技术 2020年27期
关键词:机械臂

摘要:针对D-H建模[1]的机械臂齐次变换矩阵的旋转平移运算参数多且运算过程烦琐问题,本文探讨了正、逆运动学中基于字符多项式矩阵运算的化简和应用,解决了推导繁复的问题,结果可读性强,可大幅度减少建模设计周期。

关键词:机械臂;字符多项式;矩阵乘法;逆矩阵

中图分类号:TP393 文献标识码:A

文章编号:1009-3044(2020)27-0211-02

开放科学(资源服务)标识码(OSID):

多关节机械臂在制造、医疗等众多领域因其具有精准、高效等特点应用日益广泛嘲。要解决机械臂能耗低,速度快,寿命长问题,合理建模是一个关键环节。而采用DH表示法建模是当下行之有效的方法,它通过对串联关节依次建立坐标系,利用机器人正、逆运动学中变换矩阵、逆矩阵连乘即可求解。我们发现任意不同自由度机械臂关节旋转平移矩阵相同,可设计算法统一来计算关节之间的关系,这样可将设计理念快速实践于初始参数与结果的验证,重心转移到建模是否合理上。但多关节机械臂矩阵参数多,大幅度增加了其合理性验证难度。人们往往通过matlab定义烦琐变量实现矩阵转换[3],过程较烦琐。鉴于目前没有成形算法来完成数、串混合的多参矩阵运算,本文主要解决机械臂基于字符多项式的矩阵、逆矩阵运算,实现一种快捷求解。

机械臂常见自由度有5、6、7三种。自由度越高,灵活度会越高,但其矩阵运算更加复杂。本文以KINOVAJac02球形7自由度臂为例,根据提供电气参数实现算法,与其他自由度运算可通用。

1 机械臂运动学模型

以Denavit-Hartenberg表示法建模的机械臂,通过对各关节建立坐标系相邻关节以齐次变换矩阵表示转动和平移关系,依次矩阵连乘可确定基座与末端姿态的关系。其中每个連杆含长度a,扭角α,间距d,关节角度0四个参数。

1.1 正运动学模型

2 基于字符串的矩阵运算

字符串矩阵运算,先解决字符多项式四则运算,后进行矩阵运算。

2.1字符多项式四则运算

字符多项式由操作数和操作符组成,与常规代数多项式逻辑相同,只是符号不同。它既含数又有字符串,如(cosαsinβ*a)*(cosθ1+5),计算机无法区分cos、cosθ1、1中哪一个是“变量”。我们将构建一套基于人直觉思维模式的类专家系统,利用遵循约定俗成且符合人们直觉的规则,进行语义分析,从而有效识别字符多项式[6][7],为三角函数、矩阵、逆矩阵运算奠定基础。

计算机多项式运算,通常有前缀表达式、中缀表达式和后缀表达式(又叫逆波兰表达式)三种方法。逆波兰表达法嘲,通过简单人栈和出栈完成所有多层嵌套的四则运算,生成机器码效率高,不但纯数值运算方便,字符运算同样出众,故本文用该表达法实现。

为实现字符多项式运算,将基于常规逻辑的数值运算规则扩展到字符范畴,它们会在矩阵、三角函数反复用到,为此我们做如下主要约定:

Rulel-符号多项式转换符号单项式规则

Rulel-I有效算符法则:①五种合理的组合映射:卜+,+一,一,++,++,(+,一(}->{-,+,+,+,*,(,-l*};②八种非法组合:(-*,+*,一),+),**,*),(),)();③三种非法头算符:(*),+】;④四种非法尾算符:((,+,一,*】;

Rulel-2操作数分隔法则满足rulel-1,对操作数“变量”分隔,做如下主要约定:

①长度为1的多项式合法,算式{-}>{1),其他算符非法,操作数合法;②介于两个算符之间,提取字符串,视为操作数。

Rule2操作数对象化约定规则后缀表示法中无括号,但有“正”“负”字符串。逆波兰的字符表达式构建如下对象:{Opd[01,02.,],Opt[+/一,+/_,,],len),其中len≥l。

Rule3字符多项式运算法则基于规则rulel、rule2,有如下主要约定:

①加法约定式a+式b;②减法约定式a+(一1)*(式b);③乘法约定同号为正,异号为负,以*拼接单项式“变量”;④替换约定矩阵中三角函数运算有冗余,替换如下:{^1*,*1$,*1*,+1*,一1*)一>{'',”,*,+,一),其中^表示头,$代表尾部,下同。

字符多项式的四则运算大致流程如下:①利用rulel分隔多项式;②根据逆波兰通用算法,分隔多项式,生成逆波兰表达式;③利用rule2和rule3计算字符多项式,返回结果。

该算法实现了基于多“变量”的字符多项式运算。在机械臂矩阵转换中,将反复用到。

2.2 基于规则的矩阵运算

矩阵相乘要满足:矩阵A(M*K)和矩阵B(P*N),其中K=P。A*B记做C(M*N),

字符矩阵运算,“变量”为字符串,对结果做如下约定:

Rule4字符串矩阵处理约定①符号映射(一,^+一卜>{+一,一);

②消除零值{^_0*,^0*,*0*,*一0*,*-0$,*0$);③中间映射{^一1*,^1*1*1$,*1*}>{一,,*)

矩阵相乘机械臂运算时遵循rulel-rule4约定,能有效化简结果。大致流程图见图1。

3 结果分析

机械臂D-H模型的正逆运动学求解核心是选择合适关节的旋转平移矩阵计算。为简明验证本文模块算法,通过设定不同关节角θ,求解正运动学末端位姿T和随机关节旋转矩阵逆矩阵,与matlab做对比。式2中左上方3*3矩阵表示姿态,右上方3*1矩阵表示位置(ci为cosθi,Sl为sinθi,i=1-7),运行结果见图2。

3.1与MATLAB对比测试

随机选择不同关节角,末端位姿对比见表1,逆矩阵(参数α= π/2.a=0.d=-dl ,θ= θl =ql)对比见表2。

通过对比发现,不管是输人数值型参数生成旋转矩阵求解,还是通过图2结果代人参数求值,与MATLAB结果一致。同样,随机关节旋转逆矩阵也一致,说明了本文算法的正确性。算法可用于自由度小于八的任意D-H建模正运动学和逆矩阵运算。

4 问题展望

本文由弱变量的j avascript脚本语言,结合HTML实现。将多项式运算从纯数值扩展到字符多项式,通过类专家系统构建了任意字符多项式四则运算、矩阵相乘、求逆矩阵等模块,实现了数值、三角函数、字符夹杂的多项式矩阵相乘、求逆矩阵运算。其界面简洁、结果易读,只需输入模型参数,直接获得运算结果,将繁化简,解决了D-H建模时矩阵运算烦琐问题,具有较高的实用性。生成模块易扩展到多变量矩阵运算的相关領域。

参考文献:

[1] Denavit J,Hartenberg R S.A kinematic notation for lower-pairmechanisms based on atrices[J].Trans.of the Asme.journal ofApplied Mechanics, 1955(22):215-221.

[2] Chen YH,Dong F H.Robotmachining:recent development andfuture research issues[J]. The Intemational Journal of Ad-vanced Manufacturing Technology, 2013, 66(9/10/11/12): 1489-1497.

[3]杨捷.基于Matlab的平面机构分析解析法[D].成都:西华大学,2013.

[4]李程程.七自由度机械臂控制系统设计与研究[D].南京:东南大学,2016.

[5]徐俊虎,栾楠,张诗雷,等.7自由度机械臂的运动学逆解与优化[J].机电一体化,2011,17(6):28-33.

[6] Floyd RW.Syntacticanalysis and operator precedence[Jl.Jour-nal of the ACM (JACM),1963,10(3):316-333.

[7] Aho A V,Johnson S C,Ullman J D.Deterministic parsing of am-biguousgrammars[J]. Communications of the ACM, 1975, 18(8):441-452.

[8](美)AlfredV.Aho.编译原理[M].北京:机械工业出版社,2008.

【通联编辑:光文玲】

作者简介:焦培金(1981-),男,山东青岛人,本科,实验师,主要研究方向为计算机应用。

猜你喜欢
机械臂
一种六自由度机械臂的控制系统设计
书画手臂的模型设计
六自由度机械臂控制系统设计
人机交互课程创新实验
基于S7?300 PLC不规则空间曲线自动焊接系统设计