摘要:針對(duì)D-H建模[1]的機(jī)械臂齊次變換矩陣的旋轉(zhuǎn)平移運(yùn)算參數(shù)多且運(yùn)算過(guò)程煩瑣問(wèn)題,本文探討了正、逆運(yùn)動(dòng)學(xué)中基于字符多項(xiàng)式矩陣運(yùn)算的化簡(jiǎn)和應(yīng)用,解決了推導(dǎo)繁復(fù)的問(wèn)題,結(jié)果可讀性強(qiáng),可大幅度減少建模設(shè)計(jì)周期。
關(guān)鍵詞:機(jī)械臂;字符多項(xiàng)式;矩陣乘法;逆矩陣
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)27-0211-02
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
多關(guān)節(jié)機(jī)械臂在制造、醫(yī)療等眾多領(lǐng)域因其具有精準(zhǔn)、高效等特點(diǎn)應(yīng)用日益廣泛嘲。要解決機(jī)械臂能耗低,速度快,壽命長(zhǎng)問(wèn)題,合理建模是一個(gè)關(guān)鍵環(huán)節(jié)。而采用DH表示法建模是當(dāng)下行之有效的方法,它通過(guò)對(duì)串聯(lián)關(guān)節(jié)依次建立坐標(biāo)系,利用機(jī)器人正、逆運(yùn)動(dòng)學(xué)中變換矩陣、逆矩陣連乘即可求解。我們發(fā)現(xiàn)任意不同自由度機(jī)械臂關(guān)節(jié)旋轉(zhuǎn)平移矩陣相同,可設(shè)計(jì)算法統(tǒng)一來(lái)計(jì)算關(guān)節(jié)之間的關(guān)系,這樣可將設(shè)計(jì)理念快速實(shí)踐于初始參數(shù)與結(jié)果的驗(yàn)證,重心轉(zhuǎn)移到建模是否合理上。但多關(guān)節(jié)機(jī)械臂矩陣參數(shù)多,大幅度增加了其合理性驗(yàn)證難度。人們往往通過(guò)matlab定義煩瑣變量實(shí)現(xiàn)矩陣轉(zhuǎn)換[3],過(guò)程較煩瑣。鑒于目前沒(méi)有成形算法來(lái)完成數(shù)、串混合的多參矩陣運(yùn)算,本文主要解決機(jī)械臂基于字符多項(xiàng)式的矩陣、逆矩陣運(yùn)算,實(shí)現(xiàn)一種快捷求解。
機(jī)械臂常見(jiàn)自由度有5、6、7三種。自由度越高,靈活度會(huì)越高,但其矩陣運(yùn)算更加復(fù)雜。本文以KINOVAJac02球形7自由度臂為例,根據(jù)提供電氣參數(shù)實(shí)現(xiàn)算法,與其他自由度運(yùn)算可通用。
1 機(jī)械臂運(yùn)動(dòng)學(xué)模型
以Denavit-Hartenberg表示法建模的機(jī)械臂,通過(guò)對(duì)各關(guān)節(jié)建立坐標(biāo)系相鄰關(guān)節(jié)以齊次變換矩陣表示轉(zhuǎn)動(dòng)和平移關(guān)系,依次矩陣連乘可確定基座與末端姿態(tài)的關(guān)系。其中每個(gè)連桿含長(zhǎng)度a,扭角α,間距d,關(guān)節(jié)角度0四個(gè)參數(shù)。
1.1 正運(yùn)動(dòng)學(xué)模型
2 基于字符串的矩陣運(yùn)算
字符串矩陣運(yùn)算,先解決字符多項(xiàng)式四則運(yùn)算,后進(jìn)行矩陣運(yùn)算。
2.1字符多項(xiàng)式四則運(yùn)算
字符多項(xiàng)式由操作數(shù)和操作符組成,與常規(guī)代數(shù)多項(xiàng)式邏輯相同,只是符號(hào)不同。它既含數(shù)又有字符串,如(cosαsinβ*a)*(cosθ1+5),計(jì)算機(jī)無(wú)法區(qū)分cos、cosθ1、1中哪一個(gè)是“變量”。我們將構(gòu)建一套基于人直覺(jué)思維模式的類專家系統(tǒng),利用遵循約定俗成且符合人們直覺(jué)的規(guī)則,進(jìn)行語(yǔ)義分析,從而有效識(shí)別字符多項(xiàng)式[6][7],為三角函數(shù)、矩陣、逆矩陣運(yùn)算奠定基礎(chǔ)。
計(jì)算機(jī)多項(xiàng)式運(yùn)算,通常有前綴表達(dá)式、中綴表達(dá)式和后綴表達(dá)式(又叫逆波蘭表達(dá)式)三種方法。逆波蘭表達(dá)法嘲,通過(guò)簡(jiǎn)單人棧和出棧完成所有多層嵌套的四則運(yùn)算,生成機(jī)器碼效率高,不但純數(shù)值運(yùn)算方便,字符運(yùn)算同樣出眾,故本文用該表達(dá)法實(shí)現(xiàn)。
為實(shí)現(xiàn)字符多項(xiàng)式運(yùn)算,將基于常規(guī)邏輯的數(shù)值運(yùn)算規(guī)則擴(kuò)展到字符范疇,它們會(huì)在矩陣、三角函數(shù)反復(fù)用到,為此我們做如下主要約定:
Rulel-符號(hào)多項(xiàng)式轉(zhuǎn)換符號(hào)單項(xiàng)式規(guī)則
Rulel-I有效算符法則:①五種合理的組合映射:卜+,+一,一,++,++,(+,一(}->{-,+,+,+,*,(,-l*};②八種非法組合:(-*,+*,一),+),**,*),(),)();③三種非法頭算符:(*),+】;④四種非法尾算符:((,+,一,*】;
Rulel-2操作數(shù)分隔法則滿足rulel-1,對(duì)操作數(shù)“變量”分隔,做如下主要約定:
①長(zhǎng)度為1的多項(xiàng)式合法,算式{-}>{1),其他算符非法,操作數(shù)合法;②介于兩個(gè)算符之間,提取字符串,視為操作數(shù)。
Rule2操作數(shù)對(duì)象化約定規(guī)則后綴表示法中無(wú)括號(hào),但有“正”“負(fù)”字符串。逆波蘭的字符表達(dá)式構(gòu)建如下對(duì)象:{Opd[01,02.,],Opt[+/一,+/_,,],len),其中l(wèi)en≥l。
Rule3字符多項(xiàng)式運(yùn)算法則基于規(guī)則rulel、rule2,有如下主要約定:
①加法約定式a+式b;②減法約定式a+(一1)*(式b);③乘法約定同號(hào)為正,異號(hào)為負(fù),以*拼接單項(xiàng)式“變量”;④替換約定矩陣中三角函數(shù)運(yùn)算有冗余,替換如下:{^1*,*1$,*1*,+1*,一1*)一>{'',”,*,+,一),其中^表示頭,$代表尾部,下同。
字符多項(xiàng)式的四則運(yùn)算大致流程如下:①利用rulel分隔多項(xiàng)式;②根據(jù)逆波蘭通用算法,分隔多項(xiàng)式,生成逆波蘭表達(dá)式;③利用rule2和rule3計(jì)算字符多項(xiàng)式,返回結(jié)果。
該算法實(shí)現(xiàn)了基于多“變量”的字符多項(xiàng)式運(yùn)算。在機(jī)械臂矩陣轉(zhuǎn)換中,將反復(fù)用到。
2.2 基于規(guī)則的矩陣運(yùn)算
矩陣相乘要滿足:矩陣A(M*K)和矩陣B(P*N),其中K=P。A*B記做C(M*N),
字符矩陣運(yùn)算,“變量”為字符串,對(duì)結(jié)果做如下約定:
Rule4字符串矩陣處理約定①符號(hào)映射(一,^+一卜>{+一,一);
②消除零值{^_0*,^0*,*0*,*一0*,*-0$,*0$);③中間映射{^一1*,^1*1*1$,*1*}>{一,,*)
矩陣相乘機(jī)械臂運(yùn)算時(shí)遵循rulel-rule4約定,能有效化簡(jiǎn)結(jié)果。大致流程圖見(jiàn)圖1。
3 結(jié)果分析
機(jī)械臂D-H模型的正逆運(yùn)動(dòng)學(xué)求解核心是選擇合適關(guān)節(jié)的旋轉(zhuǎn)平移矩陣計(jì)算。為簡(jiǎn)明驗(yàn)證本文模塊算法,通過(guò)設(shè)定不同關(guān)節(jié)角θ,求解正運(yùn)動(dòng)學(xué)末端位姿T和隨機(jī)關(guān)節(jié)旋轉(zhuǎn)矩陣逆矩陣,與matlab做對(duì)比。式2中左上方3*3矩陣表示姿態(tài),右上方3*1矩陣表示位置(ci為cosθi,Sl為sinθi,i=1-7),運(yùn)行結(jié)果見(jiàn)圖2。
3.1與MATLAB對(duì)比測(cè)試
隨機(jī)選擇不同關(guān)節(jié)角,末端位姿對(duì)比見(jiàn)表1,逆矩陣(參數(shù)α= π/2.a=0.d=-dl ,θ= θl =ql)對(duì)比見(jiàn)表2。
通過(guò)對(duì)比發(fā)現(xiàn),不管是輸人數(shù)值型參數(shù)生成旋轉(zhuǎn)矩陣求解,還是通過(guò)圖2結(jié)果代人參數(shù)求值,與MATLAB結(jié)果一致。同樣,隨機(jī)關(guān)節(jié)旋轉(zhuǎn)逆矩陣也一致,說(shuō)明了本文算法的正確性。算法可用于自由度小于八的任意D-H建模正運(yùn)動(dòng)學(xué)和逆矩陣運(yùn)算。
4 問(wèn)題展望
本文由弱變量的j avascript腳本語(yǔ)言,結(jié)合HTML實(shí)現(xiàn)。將多項(xiàng)式運(yùn)算從純數(shù)值擴(kuò)展到字符多項(xiàng)式,通過(guò)類專家系統(tǒng)構(gòu)建了任意字符多項(xiàng)式四則運(yùn)算、矩陣相乘、求逆矩陣等模塊,實(shí)現(xiàn)了數(shù)值、三角函數(shù)、字符夾雜的多項(xiàng)式矩陣相乘、求逆矩陣運(yùn)算。其界面簡(jiǎn)潔、結(jié)果易讀,只需輸入模型參數(shù),直接獲得運(yùn)算結(jié)果,將繁化簡(jiǎn),解決了D-H建模時(shí)矩陣運(yùn)算煩瑣問(wèn)題,具有較高的實(shí)用性。生成模塊易擴(kuò)展到多變量矩陣運(yùn)算的相關(guān)領(lǐng)域。
參考文獻(xiàn):
[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的平面機(jī)構(gòu)分析解析法[D].成都:西華大學(xué),2013.
[4]李程程.七自由度機(jī)械臂控制系統(tǒng)設(shè)計(jì)與研究[D].南京:東南大學(xué),2016.
[5]徐俊虎,欒楠,張?jiān)娎?,?7自由度機(jī)械臂的運(yùn)動(dòng)學(xué)逆解與優(yōu)化[J].機(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].北京:機(jī)械工業(yè)出版社,2008.
【通聯(lián)編輯:光文玲】
作者簡(jiǎn)介:焦培金(1981-),男,山東青島人,本科,實(shí)驗(yàn)師,主要研究方向?yàn)橛?jì)算機(jī)應(yīng)用。