差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| articles:kinematics [2021/06/21 11:20] – [直感的に理解しやすい置き方] 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} |
| $$ | $$ | ||
| 行 104: | 行 109: | ||
| 上記のように座標系を設定するとで式(1)を一つにまとめて簡略化した場合にも分かりやすい簡単な座標変換行列になる. | 上記のように座標系を設定するとで式(1)を一つにまとめて簡略化した場合にも分かりやすい簡単な座標変換行列になる. | ||
| + | |||
| この方法の利点は | この方法の利点は | ||
| 行 118: | 行 124: | ||
| である. | である. | ||
| - | 総合的には後述のDH法が優れているように見えるが,実際には直感的な分かりやすさは何物にも代えがたい.とりわけ途中のリンク座標系が意味のある場所に置けるということは,CGによる表示,動力学計算,シミュレーションなどにとっても使いやすい | + | 総合的には後述のDH法が優れているように見えるが,実際には直感的な分かりやすさは何物にも代えがたい.とりわけ途中のリンク座標系が意味のある場所に置けるということは,CGによる表示,動力学計算,シミュレーションなどにとっても使いやすい. |
| - | (( | + | |
| - | 動力学計算では,関節位置よりも重心位置や慣性主軸が重要になることの方が多いが,,. | + | |
| - | )). | + | |
| 上記の理由で,実際の場面ではDH法よりも直感的に理解しやすい設定にすることが多い. | 上記の理由で,実際の場面ではDH法よりも直感的に理解しやすい設定にすることが多い. | ||
| + | |||
| + | この具体例は[[articles: | ||
| + | |||
| ==== 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$のときに一致するように取る.そうすることでいくらか計算の省略ができるように見えるが,実際にはロボットを設置したときに据え付け位置とベースリンクとの座標変換を考える必要があることが多いので,据え付け原点に座標系を設定しても問題はない.)) | ||
| 行 199: | 行 203: | ||
| \end{array} \right) \tag{2} | \end{array} \right) \tag{2} | ||
| $$ | $$ | ||
| - | 1項目と2項目は関節の設置に関する変換, | + | 繰り返しに近いが各項の意味付けを説明すると, |
| - | 3項目と4項目は駆動パラメタによる変換と駆動パラメタが$0$の場合に関節座標系とリンク座標系を一致させるための変換である. | + | * 1項目と2項目は関節の設置に関する変換,前リンクのx軸に関する並進と回転で自身のz軸の設置位置姿勢を表し,ほぼ一意に決まる. |
| - | 1項目と2項目,3項目と4項目はそれぞれ同じ軸の並進と回転なので順序は入れ替えることができる. | + | |
| + | * 並進関節の場合は3項目のz軸方向の並進位置$d_i$に関節パラメタが加えられる. | ||
| + | * 回転関節の場合は4項目のz軸周りの回転角度$\theta_i$に関節パラメタが加えられる. | ||
| + | 1項目と2項目,3項目と4項目はそれぞれ同じ軸の並進と回転なので順序は入れ替えても同じ結果になる. | ||
| これをさらに計算すると, | これをさらに計算すると, | ||
| 行 218: | 行 225: | ||
| * すべての関節を同じ形で表現できるということ\\ すなわち数式やプログラムで表現する際に場合分けが不要となりシンプルに表現することが可能となる. | * すべての関節を同じ形で表現できるということ\\ すなわち数式やプログラムで表現する際に場合分けが不要となりシンプルに表現することが可能となる. | ||
| * また記述に無駄がなく計算のための簡略化がほぼ不要であること | * また記述に無駄がなく計算のための簡略化がほぼ不要であること | ||
| - | *さらに誰が設定してもほぼ同じ設定になるので紛らわしさがないこと | + | *さらに誰が設定してもほぼ同じ設定になるので紛らわしさがないこと(( |
| + | $d_i$, | ||
| + | このオフセットをゼロとすれば恣意性はなくなるがロボットの初期姿勢に無理が生じることが多い. | ||
| + | )) | ||
| である. | である. | ||
| 欠点は, | 欠点は, | ||
| - | * 記号なしリスト座標系原点が必ずしも関節の物理的配置(駆動部)とは一致しないこと | + | * 座標系原点が必ずしも関節の物理的配置(駆動部)とは一致しないこと |
| * さらにはそれがリンク上にあるとは限らないということ | * さらにはそれがリンク上にあるとは限らないということ | ||
| - | |||
| である. | である. | ||