「運動学」(2014/08/12 (火) 17:40:37) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
* 運動学
ロボットやCGキャラクターのポーズづけに用いられる.
要するに,関節角度空間$$q$$と三次元姿勢$$r$$の対応付けをとるものである.
** 順運動学(Forward Kinematics, FK)
関節角度空間から三次元姿勢への写像.
モデルがきちんと構築されていればなんの問題もなく解ける.
$$ r = f(q) $$
** 逆運動学(Inverse Kinematics, IK)
三次元姿勢から関節角度空間への写像.
条件付きで解析的に解くことは可能だが,
一般的には簡単に解けない.
$$ q = f ^{-1} (r) $$
** ヤコビ行列,ヤコビアン
$$ J(q) = \frac{\partial r}{\partial q} $$
ヤコビアンを用いると,関節角度列と三次元姿勢のそれぞれの微分の関係を次のように表せる.
$$ \dot{r} = J(q) \dot{q} $$
ヤコビアンに逆行列が存在する場合 i.e. 関節角度空間と三次元姿勢の自由度が一致する場合,
この逆変換は逆行列で表せる.
一般的には関節角度空間と三次元姿勢の自由度は一致しないので,擬似逆行列を用いることになる.
$$ \dot{q} = J^T(JJ^T)^{-1} \dot{r} $$
この結果を用いると,逆運動学を反復的に解くことができる.
すなわち現在の三次元姿勢と目標三次元姿勢から目標に向かう微小な変位$$ \dot{r} $$を作り,
$$ q \leftarrow \dot{q} + q $$としてループさせる.
** 基礎ヤコビ行列
並進速度と角速度を並べたツイスト$$ \nu = (v^T \omega ^T) ^T $$を用いたヤコビ行列.
$$ \nu = J_B(q)\dot{q} $$
基礎ヤコビ行列は順運動学から簡単に解ける.
各リンクの同次座標変換行列を次のように分解すると,
$$ {^0 T _{i-1}} = \left[ \begin{array}{cccc} {^0 ex _{i-1}} & {^0 ey _{i-1}} & {^0 ez _{i-1}} & {^0 p _{i-1}} \\ 0 & 0 & 0 & 1 \end{array} \right] $$
速度と角速度は次のようになる(DH記法の場合はz軸周りに関節軸が存在する).
$$ \left( \begin{array}{c} v_i \\ \omega _i \end{array} \right) = \left( \begin{array}{c} {^0 ez _{i-1}} \times {^{i-1} p _n} \\ {^0 ez _{i-1}} \end{array} \right) \dot{q_i} = J_{Bi} \dot{q_i} $$
ここで
$$ {^{i-1} p _n} = {^0 p _n} - {^0 p _{i-1}} $$
このようにすることで,
$$ J_B(q) = [ J_{B1} ... J_{Bn} ] $$
として得ることができる.
*** 基礎ヤコビ行列からヤコビ行列への変換
ツイストと回転表現パラメータの間の変換を求めるとよい.
$$ J_B(q) = K(\alpha) J(q) $$
$$ K(\alpha) = \left[ \begin{array}{cc} I_3 & 0 \\ 0 & K \end{array} \right] $$
$$ \omega = K \dot{\alpha} $$
ここでKの求め方は
$$ \lambda (\omega) = \dot{R}R^T $$
から求める.
$$ R = \left[ \begin{array}{ccc} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{array} \right] $$
とすると,なんやかんやで
$$ \omega = \left[ \begin{array}{c} \dot{r_{31}} r_{21} + \dot{r_{32}} r_{22} + \dot{r_{33}} r_{23} \\ \dot{r_{11}} r_{31} + \dot{r_{12}} r_{32} + \dot{r_{13}} r_{33} \\ \dot{r_{21}} r_{11} + \dot{r_{22}} r_{12} + \dot{r_{23}} r_{13} \end{array} \right] $$
これを計算して回転パラメータでまとめると求められる.が,手計算だとかなりつらいのでMathematicaを使ったほうがいい.
** 参考文献
吉川恒夫.「ロボット制御基礎論」.コロナ社,1988.
内山勝,中村仁彦.「ロボットモーション」.岩波書店,2004.
* 運動学
ロボットやCGキャラクターのポーズづけに用いられる.
要するに,関節角度空間$$q$$と三次元姿勢$$r$$の対応付けをとるものである.
** 順運動学(Forward Kinematics, FK)
関節角度空間から三次元姿勢への写像.
モデルがきちんと構築されていればなんの問題もなく解ける.
$$ r = f(q) $$
** 逆運動学(Inverse Kinematics, IK)
三次元姿勢から関節角度空間への写像.
条件付きで解析的に解くことは可能だが,
一般的には簡単に解けない.
$$ q = f ^{-1} (r) $$
** ヤコビ行列,ヤコビアン
$$ J(q) = \frac{\partial r}{\partial q} $$
ヤコビアンを用いると,関節角度列と三次元姿勢のそれぞれの微分の関係を次のように表せる.
$$ \dot{r} = J(q) \dot{q} $$
ヤコビアンに逆行列が存在する場合 i.e. 関節角度空間と三次元姿勢の自由度が一致する場合,
この逆変換は逆行列で表せる.
一般的には関節角度空間と三次元姿勢の自由度は一致しないので,擬似逆行列を用いることになる.
$$ \dot{q} = J^T(JJ^T)^{-1} \dot{r} $$
この結果を用いると,逆運動学を反復的に解くことができる.
すなわち現在の三次元姿勢と目標三次元姿勢から目標に向かう微小な変位$$ \dot{r} $$を作り,
$$ q \leftarrow \dot{q} + q $$としてループさせる.
*** 求め方
順運動学の途中で当該関節に当たる座標変換だけ偏微分して終端座標を求めれば良い.
** 基礎ヤコビ行列
並進速度と角速度を並べたツイスト$$ \nu = (v^T \omega ^T) ^T $$を用いたヤコビ行列.
$$ \nu = J_B(q)\dot{q} $$
基礎ヤコビ行列は順運動学から簡単に解ける.
各リンクの同次座標変換行列を次のように分解すると,
$$ {^0 T _{i-1}} = \left[ \begin{array}{cccc} {^0 ex _{i-1}} & {^0 ey _{i-1}} & {^0 ez _{i-1}} & {^0 p _{i-1}} \\ 0 & 0 & 0 & 1 \end{array} \right] $$
速度と角速度は次のようになる(DH記法の場合はz軸周りに関節軸が存在する).
$$ \left( \begin{array}{c} v_i \\ \omega _i \end{array} \right) = \left( \begin{array}{c} {^0 ez _{i-1}} \times {^{i-1} p _n} \\ {^0 ez _{i-1}} \end{array} \right) \dot{q_i} = J_{Bi} \dot{q_i} $$
ここで
$$ {^{i-1} p _n} = {^0 p _n} - {^0 p _{i-1}} $$
このようにすることで,
$$ J_B(q) = [ J_{B1} ... J_{Bn} ] $$
として得ることができる.
*** 基礎ヤコビ行列からヤコビ行列への変換
ツイストと回転表現パラメータの間の変換を求めるとよい.
$$ J_B(q) = K(\alpha) J(q) $$
$$ K(\alpha) = \left[ \begin{array}{cc} I_3 & 0 \\ 0 & K \end{array} \right] $$
$$ \omega = K \dot{\alpha} $$
ここでKの求め方は
$$ \lambda (\omega) = \dot{R}R^T $$
から求める.
$$ R = \left[ \begin{array}{ccc} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{array} \right] $$
とすると,なんやかんやで
$$ \omega = \left[ \begin{array}{c} \dot{r_{31}} r_{21} + \dot{r_{32}} r_{22} + \dot{r_{33}} r_{23} \\ \dot{r_{11}} r_{31} + \dot{r_{12}} r_{32} + \dot{r_{13}} r_{33} \\ \dot{r_{21}} r_{11} + \dot{r_{22}} r_{12} + \dot{r_{23}} r_{13} \end{array} \right] $$
これを計算して回転パラメータでまとめると求められる.が,手計算だとかなりつらいのでMathematicaを使ったほうがいい.
** 参考文献
吉川恒夫.「ロボット制御基礎論」.コロナ社,1988.
内山勝,中村仁彦.「ロボットモーション」.岩波書店,2004.
表示オプション
横に並べて表示:
変化行の前後のみ表示: