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

UR機械臂正逆運動學求解

       最近有個任務:求解UR機械臂正逆運動學,在網上參考了一下大家的求解辦法,眾說紛紜,其中有些朋友求解過程非常常規,但是最後求解的8組解,只有4組可用。在這裡我介紹一個可以求解8組解析解的方法,供大家參考。

       以UR5機械臂結構和尺寸引數為例進行正逆運動學求解,下圖分別是UR5結構圖和標準DH系引數:

1. 正運動學求解

正運動學是已知關節六個角度求變換矩陣T

其中:

整理得:

帶入DH引數,求解:

        

最終變換矩陣:

正運動學求解完畢。

2. 逆運動學求解

逆運動學是已知變換矩陣T,求六個關節角度 。逆運動學求解有解析法,幾何法,迭代法,這裡採用解析法求解。

2.1 兩個簡單的數學方法

2.1.1 求角度

 這個逆運動學演算法求解的角度範圍是

因為標準的反正切arctan的值域是

所以不能使用,這裡介紹一個改進的反正切求法 Atan2(y, x)(Matlab裡有這個函式),它的值域可以滿足要求。

2.1.2 解方程

首先進行三角恆等變換,令

其中:

然後帶入原方程:

2.2 約定

為了簡化書寫,約定:

2.3 求解1,5,6關節角度

已知:

其中:

等式左邊:

等式右邊:

2.3.1 求關節角1

利用等式左右兩邊第3行,第4列對應相等求關節角1。

整理得:

設:

則  

根據前面介紹的解方程的方法:

2.3.2 求關節角5

利用等式左右兩邊第3行,第3列對應相等求關節角5。

解得:

2.3.3 求關節角6

利用等式左右兩邊第3行,第1列對應相等求關節角6。

設:

根據前面介紹的方法:

其實可以通過化簡得到式中

2.4 求解2,3,4關節角度

已知:

其中:

等式左邊等於

等式右邊等於

2.4.1 求解關節角3

利用等式左右兩邊第1行,第4列對應相等,第2行,第4列對應相等,求關節角3。

為了簡化,設:

將m,n帶入上式得

式子③④平方和為

因為

所以

2.4.2  求解關節角2

將③④展開得:

將關節角3帶入⑤⑥,求關節角2得

2.4.3  求解關節角4

的第2行第2列,第1行第2列求 

2.5 總結

2.5.1 求解公式

2.5.2 奇異位置

1.肩關節奇異位置

此時末端執行器參考點O6位於軸線z1和z2構成的平面內,關節角1無法求解。

2.肘關節奇異位置

此時關節角2無法求解。

3.腕關節奇異位置

此時軸線z4和z6平行,關節角6無法求解。

2.6 例項

利用Matlab機器人庫 ur5 DH引數:


alpha1 = pi/2;          a1=0;                 d1=89.459;

alpha2 = 0;              a2=-425;           d2=0;

alpha3 = 0;              a3=-392.25;      d3=0;

alpha4 = pi/2;           a4=0;               d4=109.15;

alpha5 = -pi/2;          a5=0;               d5=94.65;

alpha6 = 0;               a6=0;               d6=82.3;

取 theta1 = 1;  theta2 = 1;  theta3 = 1;  theta4 = 1;  theta5 = 1;  theta6 = 1;  (不要糾結theta選這6個數值是否有實際意義,這裡只驗證演算法的有效性)

  • 將theta帶入正運動學公式,求T:

  • 將T帶入逆運動學公式, 反求theta

theta = 

  • 再將8個theta帶入正運動學公式,反求8個T:

8個T均等於

驗證了演算法的有效性