1. 程式人生 > >UR機械臂運動學正逆解方法

UR機械臂運動學正逆解方法

不難 詳解 方法 pan 如果 兩個 每次 當前 旋轉矩陣

最近幾個月因為工作接觸到了機械臂的項目,突然對機械臂運動方法產生了興趣,也就是如何控制機械臂的位置和姿態。借用一張網上的圖片,應該是ur5的尺寸。我用到的是ur3機械臂,除了尺寸不一樣,各關節結構和初始位置和ur5是一樣的。

技術分享圖片

ur機械臂是六自由度機械臂,由D-H參數法確定它的運動學模型,連桿坐標系的建立如上圖所示。我當時在這個地方的理解上走了不少彎路,後來找個一個視頻,我覺得講解地比較容易理解,可以參考一下Denavit-Hartenberg參數視頻詳解。ur機械臂DH參數表如下,

轉動關節θi是關節變量,連桿偏移di是常數。

關節編號

α(繞x軸)

a(沿x軸)

θ(繞z軸)

d(沿z軸)

1

α1=90

0

θ1

d1=89.2

2

0

a2=-425

θ2

0

3

0

a3=-392

θ3

0

4

α4=90

0

θ4

d4=109.3

5

α5=-90

0

θ5

d5=94.75

6

0

0

θ6

d6=82.5

由此可以建立坐標系i在坐標系i-1的齊次變換矩陣,註意每次不管平移還是旋轉是相對於當前的運動坐標系變換,矩陣右乘

技術分享圖片技術分享圖片

那麽把DH參數代入就可以得到所有相鄰坐標系的變換矩陣

技術分享圖片技術分享圖片技術分享圖片

技術分享圖片技術分享圖片技術分享圖片

所以末端坐標系6到基座固定坐標系0的變換矩陣技術分享圖片。那麽求正解就很簡單了,只要輸入六個關節角度θi

,就得到末端坐標在基坐標系的變換矩陣T。ur機械臂的視教板上末端點的坐標是用六個值[x, y, z, rx, ry, rz]表示的。前三個值[x, y, z]是三維笛卡爾坐標,表示空間位置,後三個值[rx, ry, rz]是坐標旋轉向量,表示空間姿態。我們得到的變換矩陣T怎麽變成六值坐標[x, y, z, rx, ry, rz]呢?設

技術分享圖片

T的左上角的3x3矩陣是旋轉矩陣,旋轉矩陣和旋轉向量之間可以通過羅德裏格斯(Rodrigues)變換進行轉換。opencv裏有相應的函數調用。算法也比較簡單,不用opencv的函數自己寫代碼也不難。T的右上角3x1就是空間位置[x, y, z]。這樣有變換矩陣T得到六值坐標,完成了正解。

逆解相對要復雜一些,由末端的空間位置和姿態,計算可能的關節角度。逆解的方法有解析法,叠代法和幾何法。其中解析法用數學推導,可以得到全部根,但是計算復雜。有的機械臂可以得到無窮解,比如7軸機械臂。而ur的6軸機械臂是有有限解的。這裏推導一下ur的逆解。

首先計算求變換矩陣T過程其中的一些中間矩陣。

技術分享圖片其中c23=cos(θ23),s23=sin(θ23)。

技術分享圖片

技術分享圖片

技術分享圖片得到技術分享圖片。計算

技術分享圖片技術分享圖片,得到

技術分享圖片

等式兩邊矩陣的行列應該分別相等,由第三行第四列得到技術分享圖片,可解得技術分享圖片,有兩個解。這裏註意寫程序的時候,求解這裏的反正切是用atan2()這類的函數,返回之在(-π,+π]。而反余弦的返回值在[0,π],從而保證在2π範圍每個解是唯一的。

由第三行第三列得技術分享圖片,可解得技術分享圖片,兩個解。由第三行第二列得到技術分享圖片,可解得技術分享圖片

接著由

技術分享圖片

計算

技術分享圖片,得出等式左邊等於

技術分享圖片

技術分享圖片,兩邊平方,令技術分享圖片技術分享圖片

同樣由技術分享圖片,令技術分享圖片技術分享圖片

兩式相加得到技術分享圖片,則技術分享圖片,有兩個解。

θ3帶入技術分享圖片技術分享圖片,得技術分享圖片技術分享圖片,其中t2=tanθ2兩式消去c2,得到技術分享圖片

最後得到技術分享圖片,從而得到θ4

綜合有兩個解的情況,ur機械臂逆解總共由2x2x2=8組解。

按照上面的算法,用python寫了兩個程序,一個正解一個逆解驗證一下。工作手邊是ur3的機械臂,上面的圖和表都是ur5的,換成ur3的參數。正解算出來都沒有問題,可以和實際機械臂的空間位姿對應。可是逆解算出來8組值,好像只有四組值是對的。一直還沒理解到底是怎麽回事,仔細檢查了算法和程序好像都沒有錯阿,不知道是哪裏出了問題。網上也沒有找到答案,如果哪位大神知道,望不吝賜教!

UR機械臂運動學正逆解方法