差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| articles:kinematics [2021/06/21 11:02] – [DH(Denavit-Hartenberg,デナビット・ハーテンバーグ)記法] Takashi Suehiro | articles:kinematics [2022/02/03 14:32] (現在) – [DH(Denavit-Hartenberg,デナビット・ハーテンバーグ)法] Takashi Suehiro | ||
|---|---|---|---|
| 行 78: | 行 78: | ||
| 同様に扱うことが出来る. | 同様に扱うことが出来る. | ||
| また駆動軸は必ずしも座標系の軸のどれかに合わせる必要はないが,そうすることで座標変換行列は簡単になる. | また駆動軸は必ずしも座標系の軸のどれかに合わせる必要はないが,そうすることで座標変換行列は簡単になる. | ||
| + | |||
| + | アームのリンクにこうした座標系を設定したイメージを図8に示す. | ||
| 上記のような関節-リンクの関係を考えるとリンク$L_{i-1}$からリンク$L_i$への変換$^{i-1}T_i$は, | 上記のような関節-リンクの関係を考えるとリンク$L_{i-1}$からリンク$L_i$への変換$^{i-1}T_i$は, | ||
| - | リンク$L_{i-1}$から関節$J_i$の設置位置・姿勢への変換${^{i-1}T_{J_i}}$と,関節パラメタで動かされる部分の変換${^{J_i}T_i}$に | + | リンク$L_{i-1}$から関節$J_i$の設置位置・姿勢への変換${^{i-1}T_{J_i}}$と,関節パラメタ$q_i$で動かされる部分の変換${^{J_i}T_i}(q_i)$に |
| - | 分解されて以下のように書ける. | + | 分解されて以下のように書ける |
| + | (( | ||
| + | $q_i$は回転関節の場合は関節回転角度$\theta_i$,並進関節の場合は並進移動量$d_i$などである. | ||
| + | )). | ||
| $$ | $$ | ||
| - | ^{i-1}T_i = {^{i-1}T_{J_i}}{^{J_i}T_i} \tag{1} | + | ^{i-1}T_i = {^{i-1}T_{J_i}}{^{J_i}T_i}(q_i) \tag{1} |
| $$ | $$ | ||
| 各リンクに張り付ける座標系の設定方法はいろいろなものがある. | 各リンクに張り付ける座標系の設定方法はいろいろなものがある. | ||
| ここでは,直感的に理解しやすい一般的な方法と | ここでは,直感的に理解しやすい一般的な方法と | ||
| - | 数学的にきれいで無駄のないDH(Denavit-Hartenberg,デナビット・ハーテンバーグ)記法と | + | 数学的にきれいで無駄のないDH(Denavit-Hartenberg,デナビット・ハーテンバーグ)法と |
| の二つを説明する. | の二つを説明する. | ||
| 行 100: | 行 105: | ||
| * 可能なら関節パラメタがゼロのとき座標系の姿勢がすべて同じになるようにする. | * 可能なら関節パラメタがゼロのとき座標系の姿勢がすべて同じになるようにする. | ||
| * これは必須ではないが一般にはその方が分かりやすい | * これは必須ではないが一般にはその方が分かりやすい | ||
| - | * 逆に可動軸をz軸に限定すれば後述するDH記法のように,すべての関節を同じ形で表現できるというメリットを享受することもできる.ただし分かりやすさは減る. | + | * 逆に可動軸をz軸に限定すれば後述するDH法のように,すべての関節を同じ形で表現できるというメリットを享受することもできる.ただし分かりやすさは減る. |
| - | * 関節軸が斜めについている場合は,この条件は達成することが難しい. | + | * 関節軸が斜めについている場合は,この条件を達成することは不可能になる. |
| + | |||
| + | 上記のように座標系を設定するとで式(1)を一つにまとめて簡略化した場合にも分かりやすい簡単な座標変換行列になる. | ||
| - | 上記のように座標系を設定するとで式(1)を一つにまとめて簡単化した場合にも分かりやすい簡単な座標変換行列になる. | ||
| この方法の利点は | この方法の利点は | ||
| * 直感的に分かりやすいこと | * 直感的に分かりやすいこと | ||
| - | * 計算が簡単化できること | + | * 計算が簡略化できること |
| * リンク座標系原点を分かりやすい好きな位置に配置できること | * リンク座標系原点を分かりやすい好きな位置に配置できること | ||
| である. | である. | ||
| 行 118: | 行 124: | ||
| である. | である. | ||
| - | 総合的には後述のDH記法が優れているように見えるが,実際には直感的な分かりやすさは何物にも代えがたい.とりわけ途中のリンク座標系が意味のある場所に置けるということは,CGによる表示,動力学計算,シミュレーションなどにとっても使いやすい | + | 総合的には後述のDH法が優れているように見えるが,実際には直感的な分かりやすさは何物にも代えがたい.とりわけ途中のリンク座標系が意味のある場所に置けるということは,CGによる表示,動力学計算,シミュレーションなどにとっても使いやすい. |
| - | (( | + | |
| - | 動力学計算では,関節位置よりも重心位置や慣性主軸が重要になることの方が多いが,,. | + | 上記の理由で,実際の場面ではDH法よりも直感的に理解しやすい設定にすることが多い. |
| - | )). | + | |
| + | この具体例は[[articles: | ||
| - | 上記の理由で,実際の場面ではDH記法よりも直感的に理解しやすい設定にすることが多い. | ||
| ==== DH(Denavit-Hartenberg,デナビット・ハーテンバーグ)法 ==== | ==== DH(Denavit-Hartenberg,デナビット・ハーテンバーグ)法 ==== | ||
| 行 141: | 行 147: | ||
| * $z_{i-1}$と$z_i$との$x_{i-1}$軸まわりの回転角度を$\alpha_{i-1}$とする. | * $z_{i-1}$と$z_i$との$x_{i-1}$軸まわりの回転角度を$\alpha_{i-1}$とする. | ||
| * 共通垂線の$z_i$軸上の垂線の足からリンク$i$の原点(次のリンク$L_{i+1}$の$z_{i+1}$軸との垂線の足)との距離($z_i$の方向を考慮する)を$d_i$とする. | * 共通垂線の$z_i$軸上の垂線の足からリンク$i$の原点(次のリンク$L_{i+1}$の$z_{i+1}$軸との垂線の足)との距離($z_i$の方向を考慮する)を$d_i$とする. | ||
| - | * 並進関節の場合,これがこれがリンク$L_i$を動かす並進関節の長さとなる. | + | |
| - | | + | |
| - | * 回転関節の場合,これがリンク$L_i$を動かす回転関節の角度となる. | + | |
| * $y_{i}$軸は$z_{i}$軸から$x_{i}$軸への右ねじの方向になる. | * $y_{i}$軸は$z_{i}$軸から$x_{i}$軸への右ねじの方向になる. | ||
| * ベースリンク(おそらく$L_0$)にはそれを動かす関節がないので,座標系は任意に設定できる.((簡単にするなら次のリンクの関節パラメタが$0$のときに一致するように取る.そうすることでいくらか計算の省略ができるように見えるが,実際にはロボットを設置したときに据え付け位置とベースリンクとの座標変換を考える必要があることが多いので,据え付け原点に座標系を設定しても問題はない.)) | * ベースリンク(おそらく$L_0$)にはそれを動かす関節がないので,座標系は任意に設定できる.((簡単にするなら次のリンクの関節パラメタが$0$のときに一致するように取る.そうすることでいくらか計算の省略ができるように見えるが,実際にはロボットを設置したときに据え付け位置とベースリンクとの座標変換を考える必要があることが多いので,据え付け原点に座標系を設定しても問題はない.)) | ||
| 行 152: | 行 156: | ||
| * $z_i$軸方向へ$d_i$並進 | * $z_i$軸方向へ$d_i$並進 | ||
| * $z_i$軸まわりに$\theta_i$回転 | * $z_i$軸まわりに$\theta_i$回転 | ||
| - | の4パラメタで表現出来る.1つ目と2つ目,3つ目と4つ目はそれぞれ同じ軸の並進と回転なので順序は入れ替えることができる. | + | の4パラメタで表現出来る. |
| すなわち, | すなわち, | ||
| 行 197: | 行 201: | ||
| 0 & 0 & 1 & d_i \\ | 0 & 0 & 1 & d_i \\ | ||
| 0 & 0 & 0 & 1 | 0 & 0 & 0 & 1 | ||
| - | \end{array} \right) \tag{1} | + | \end{array} \right) \tag{2} |
| $$ | $$ | ||
| + | 繰り返しに近いが各項の意味付けを説明すると, | ||
| + | * 1項目と2項目は関節の設置に関する変換,前リンクのx軸に関する並進と回転で自身のz軸の設置位置姿勢を表し,ほぼ一意に決まる. | ||
| + | * 3項目と4項目は自身のz軸に関する設置位置姿勢を表し,関節パラメタが$0$のときの位置姿勢(初期値)として調整可能である. | ||
| + | * 並進関節の場合は3項目のz軸方向の並進位置$d_i$に関節パラメタが加えられる. | ||
| + | * 回転関節の場合は4項目のz軸周りの回転角度$\theta_i$に関節パラメタが加えられる. | ||
| + | 1項目と2項目,3項目と4項目はそれぞれ同じ軸の並進と回転なので順序は入れ替えても同じ結果になる. | ||
| + | |||
| + | これをさらに計算すると, | ||
| $$ | $$ | ||
| + | ^{i-1}T_i | ||
| = | = | ||
| \left( \begin{array}{cc} | \left( \begin{array}{cc} | ||
| 行 207: | 行 220: | ||
| 0 & 0 & 0 & 1\end{array} \right) | 0 & 0 & 0 & 1\end{array} \right) | ||
| $$ | $$ | ||
| + | となるが$\alpha_{i-1}$が$0$, | ||
| DH記法の利点は, | DH記法の利点は, | ||
| * すべての関節を同じ形で表現できるということ\\ すなわち数式やプログラムで表現する際に場合分けが不要となりシンプルに表現することが可能となる. | * すべての関節を同じ形で表現できるということ\\ すなわち数式やプログラムで表現する際に場合分けが不要となりシンプルに表現することが可能となる. | ||
| - | * また記述に無駄がなく計算のための簡略化がほぼ不要であること(( | + | * また記述に無駄がなく計算のための簡略化がほぼ不要であること |
| - | $\alpha_{i-1}$が$0$,$\pm{\pi/ | + | *さらに誰が設定してもほぼ同じ設定になるので紛らわしさがないこと(( |
| + | $d_i$,$\theta_i$の駆動パラメタの初期値(オフセットになる)は恣意性が入る. | ||
| + | このオフセットをゼロとすれば恣意性はなくなるがロボットの初期姿勢に無理が生じることが多い. | ||
| )) | )) | ||
| - | *さらに誰が設定してもほぼ同じ設定になるので紛らわしさがないこと | + | |
| である. | である. | ||
| 欠点は, | 欠点は, | ||
| - | * 記号なしリスト座標系原点が必ずしも関節の物理的配置(駆動部)とは一致しないこと | + | * 座標系原点が必ずしも関節の物理的配置(駆動部)とは一致しないこと |
| * さらにはそれがリンク上にあるとは限らないということ | * さらにはそれがリンク上にあるとは限らないということ | ||
| - | |||
| である. | である. | ||