机器人学导论 二、正运动学,MDH法
機器人學導論 二、正運動學
- 前言
- 關節與連桿
- 編號
- 連桿參數
- 連桿的描述
- 連桿連接的描述
- 關節變量
- 連桿坐標系
- 中間連桿坐標系建立
- 首尾連桿坐標系建立
- 首坐標系
- 尾坐標系
- 連桿參數與連桿坐標系
- 連桿變換
- MDH法使用步驟
- 后記
前言
本篇學習機械臂的正運動學,MDH法。
關節與連桿
關節joint,連桿link,是機械臂的基本組成結構。
關節包括轉動關節和移動關節,一般僅有一個自由度。
一個關節把相鄰兩連桿連接,n個關節把n+1個連桿連接起來,具有n個自由度。
編號
把固定基座作為第0個連桿,機械臂末端的連桿作為第n個連桿。
連桿參數
連桿的描述
兩個相鄰關節軸之間的公垂線的長度,稱為連桿的長度。
兩個相鄰關節軸之間形成的角度,稱為連桿的轉角。
上圖中,連桿i-1的長度是其近端關節軸i-1與遠端關節軸i之間的公垂線長度ai?1a_{i-1}ai?1?
連桿i-1的轉角是其近端關節軸i-1與遠端關節軸i形成的角度αi?1\alpha_{i-1}αi?1?,至于角度的正負號,可以根據后面建立坐標系時再確定。
連桿連接的描述
兩個相鄰連桿之間的距離,稱為連桿偏距。
兩個相鄰連桿繞公共關節軸旋轉的夾角,稱為關節角。
上圖中,關節i是連桿i-1和連桿i的公共關節。
由于實際的連桿是彎曲的,可以將公垂線段ai?1a_{i-1}ai?1?和aia_iai? 看作代替曲連桿的直連桿i-1,i。
直連桿i-1,i之間的距離是關節i的連桿偏距did_idi?
直連桿i-1沿關節軸i旋轉到直連桿i的角度是關節角θi\theta_iθi?
關節變量
一個連桿可以使用上面的連桿長度、連桿轉角、連桿偏距、關節角四個參數確定。
對于轉動關節,關節角可變,另三個參數不變。
對于移動關節,連桿偏距可變,另三個參數不變。
可變的參數稱為關節變量。
連桿坐標系
連桿坐標系用于描述相鄰連桿之間的相對位置關系。
連桿坐標系編號與連桿編號相同,稱為{i}\{i\}{i}。
中間連桿坐標系建立
為連桿i建立坐標系:
以關節軸i作為Z軸,以連桿i與Z軸的交點作為原點,以連桿i作為X軸指向關節軸i+1,以右手定則確定Y軸。
例外:如果連桿i的長度ai=0a_i=0ai?=0(此時連桿i,i+1的Z軸相交),以交點作為原點,以兩個Z軸所在平面的垂線作為X軸,方向可以有兩種選擇,而αi\alpha_iαi?的符號就由X軸方向決定。
每個坐標軸的建立都要滿足右手定則。
上圖中,可以按這個順序來建立坐標系:
首先找到所有的關節軸i-1,i
然后確定坐標系{i?1}\{i-1\}{i?1},以關節軸作為Z^i?1\hat Z_{i-1}Z^i?1?,直連桿i-1作為X^i?1\hat X_{i-1}X^i?1?,再右手定則確定Y^i?1\hat Y_{i-1}Y^i?1?。
然后確定坐標系{i}\{i\}{i}。
首尾連桿坐標系建立
對于首尾連桿0,n,有特殊的建系方法。
首坐標系
坐標系{0}\{0\}{0}在基座上,一般作為參考系。
第一個關節變量為0時,規定坐標系{0}\{0\}{0}于{1}\{1\}{1}重合。
當第一個關節為轉動關節,d1=0d_1=0d1?=0;第一個關節為移動關節,θ1=0\theta_1=0θ1?=0
尾坐標系
坐標系{n}\{n\}{n}的原點和x軸方向可以任意選取,但要盡量使得連桿參數為0。
連桿參數與連桿坐標系
按照上面的建系方法,可以把連桿參數重新定義:
- aia_iai?連桿長度:沿X^i\hat X_iX^i?,從Z^i\hat Z_iZ^i?移動到Z^i+1\hat Z_{i+1}Z^i+1?的距離
- αi\alpha_iαi?連桿扭轉角:繞X^i\hat X_iX^i?軸,把Z^i\hat Z_iZ^i?旋轉到Z^i+1\hat Z_{i+1}Z^i+1?的角度
- did_idi?連桿偏距:沿Z^i\hat Z_iZ^i?,從X^i?1\hat X_{i-1}X^i?1?移動到X^i1\hat X_{i1}X^i1?的距離
- θi\theta_iθi?關節角:繞Z^i\hat Z_iZ^i?軸,把X^i?1\hat X_{i-1}X^i?1?旋轉到X^i\hat X_{i}X^i?的角度
設定ai>0a_i>0ai?>0,其它參數可正可負。
上面建立連桿坐標系和連桿參數的方式稱為MDH法(Modified Denavit–Hartenberg)。
DH法建立的坐標系并不是唯一的。
連桿變換
連桿參數可用于相鄰桿之間的相對位姿計算。
上圖中,考慮坐標系{i?1},{i}\{i-1\},\{i\}{i?1},{i}之間的變換i?1iT^i_{i-1}Ti?1i?T,建立中間坐標系{P},{Q},{R}\{P\},\{Q\},\{R\}{P},{Q},{R},則有:
ii?1T=Ri?1TQRTPQTiPT^{i-1}_iT = \ ^{i-1}_RT \ ^R_{Q}T \ ^Q_PT \ ^P_{i}T ii?1?T=?Ri?1?T?QR?T?PQ?T?iP?T
上面的變換,可以看作是把X^i\hat X_iX^i?變換為X^i?1\hat X_{i-1}X^i?1?,則有:
ii?1T=RX(αi?1)DX(ai?1)RZ(θi)DZ(di)^{i-1}_iT = R_X(\alpha_{i-1})D_X(a_{i-1})R_Z(\theta_i)D_Z(d_i) ii?1?T=RX?(αi?1?)DX?(ai?1?)RZ?(θi?)DZ?(di?)
或者將每個中間坐標系的變換都寫出來:
iPT=[10000100001di0001]PQT=[cos?θ1?sin?θ100sin?θ1cos?θ10000100001]QRT=[1000010ai?100100001]Ri?1T=[10000cos?αi?1?sin?αi?100sin?αi?1cos?αi?100001]^P_iT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^Q_PT = \begin{bmatrix} \cos \theta_1 & -\sin \theta_1 & 0 & 0 \\ \sin \theta_1 & \cos \theta_1 & 0 & 0 \\ 0 & 0 & 1 &0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^R_QT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & a_{i-1} \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ \ ^{i-1}_RT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos \alpha_{i-1} & -\sin \alpha_{i-1} & 0 \\ 0 & \sin \alpha_{i-1} & \cos \alpha_{i-1} & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \\ \quad \\ iP?T=?????1000?0100?0010?00di?1???????PQ?T=?????cosθ1?sinθ1?00??sinθ1?cosθ1?00?0010?0001???????QR?T=?????1000?0100?0010?0ai?1?01???????Ri?1?T=?????1000?0cosαi?1?sinαi?1?0?0?sinαi?1?cosαi?1?0?0001??????
得到ii?1T^{i-1}_iTii?1?T的一般形式:
MDH法使用步驟
后記
本篇是機器人學中的正運動學,采用的是MDH法。
后續會有Matlab示例編程。
總結
以上是生活随笔為你收集整理的机器人学导论 二、正运动学,MDH法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中fork函数详解(附图解与代
- 下一篇: 软件项目管理 2.2.项目招投标流程