manvaのエンジニアリング魂

エンジニアリング・ものづくり・DIYをもっと身近にするためのブログ。インスピレーションを刺激します。

擬似逆行列の話

ペンローズノーベル賞を受賞したので、ロボットの制御にも使われる、ムーア•ペンローズの擬似逆行列の話を書いておく。用語はあまり統一されておらず、擬似逆行列(pseudo inverse)ではなく一般化逆行列(generalized inverse)と呼んだり,ムーア•ペンローズ逆行列(Moore-Penrose inverse)を略してMP逆行列(M-P inverse)と呼ぶ場合もある。

擬似逆行列については,↓の解説がわかりやすい。

【解説】 一般逆行列www.slideshare.net


以下は,ロボット工学に関連するところのみ紹介する。

広義の擬似逆行列は、ある行列Aに対して、
A=AA^{\# }A
を満たすA^{\# }のことを指す。
広義の擬似逆行列は、一通りではなく、無数にある。ムーア•ペンローズの擬似逆行列もそのうちの一つなのだが、ロボット工学では、ムーア•ペンローズの擬似逆行列のことを単に擬似逆行列と呼ぶ場合が多い。例えば,ロボット工学の教科書として有名な吉川の「ロボット制御基礎論」

で、「擬似逆行列は一意」とあるが、これはムーア•ペンローズの擬似逆行列のことを指している。ムーア•ペンローズの擬似逆行列は一意に決まる。

ロボット工学では、擬似逆行列は,直交座標系と関節座標系の変換に使われる。直交座標系は,XYZの並進3自由度+姿勢角3自由度の計6自由度なので,関節の数も6個なら普通の逆行列で良いが、7個以上だと擬似逆行列を用いることになる。制御したい自由度より関節の数が多いロボットは「冗長ロボット」と呼ばれる。
関節角度の微小変化量\delta qから直交座標系の手先位置の微小変化量\delta xを求める式は,ヤコビ行列Jを用いて
\delta x=J\delta q  ‥(1)
と表される。冗長ロボットでは,ヤコビ行列Jは横長の行列となる。
この場合のムーア•ペンローズの擬似逆行列(狭義の擬似逆行列)は
J^{+}=J^{T}\left( JJ^{T}\right) ^{-1}

であり,

\delta q=J^{+}\delta x

として関節角度の微小変化量\delta qを求めると,手先位置の微小変化量が\delta xとなるような\delta qのうち,各要素の2乗和が最小になるような\delta qが求められることが知られている。これはロボットにとっては無理のない姿勢になりやすいので特別な事情がなければとりあえずこれを使っておけばよい。

 

広義の擬似逆行列J^{\#}を用いると,
- 直交座標系の手先位置の微小変化量\delta xから関節角度の微小変化量\delta qを求める一般式は
\delta q=J^{\# }\delta x+( I-J^{\# }J) \delta q_{0}
- 直交座標系の手先力Fから関節トルク\tauを求める一般式は
\tau =J^{T}F+\left( I-J^{T}J^{T\# }\right) \tau _{0}  ‥(2)
で表される。\delta q_{0}\tau_{0}は任意(何でも成り立つ)なので、第2条件を付けられる。\tau_{0}を零空間トルク(null space torque)と呼ぶ。

 

動的に無矛盾な疑似逆行列(dynamically consistent generalized inverse)

最後に,Khatib(1990)が提案した「動的に無矛盾な疑似逆行列」↓
http://ai.stanford.edu/manips/publications/pdfs/Khatib_1990_2.pdf

について,あまり日本語の情報が見当たらないので紹介しておく。

結論から書くと,動的に無矛盾な疑似逆行列は,

\overline{J}=M^{-1}J^{T}M_{x}

で表され,この擬似逆行列\overline{J}を使って(2)式で関節トルクを求めると,零空間トルクが力だけでなく加速度にも影響しないようにできる。ただし,Mは関節座標での慣性行列,M_{x}は直交座標での慣性行列を表す。

 

 この導出を示す。

関節座標系でのロボットの運動方程式は,以下の式で表される。

M\ddot{q}+C\dot{q}+g=\tau

左からJM^{-1}をかけて

J\ddot{q}+JM^{-1}C\dot{q}+JM^{-1}g=JM^{-1}\tau

 (1)式の微小量を微分とみなしてもう一度微分すると

J\ddot{q}=\ddot{x}-\dot{J}\dot{q}

これを代入して

\ddot{x}-\dot{J}\dot{q}+JM^{-1}C\dot{q}+JM^{-1}g=JM^{-1}\tau

(2)式を代入して

\ddot{x}-\dot{J}\dot{q}+JM^{-1}C\dot{q}+JM^{-1}g=JM^{-1}(J^{T}F+\left( I-J^{T}J^{T\# }\right) \tau _{0})

\ddot{x}+(JM^{-1}C-\dot{J})\dot{q}+JM^{-1}g=JM^{-1}J^{T}F+JM^{-1}\left( I-J^{T}J^{T\# }\right) \tau _{0}

動的に無矛盾であるためには,最後の項が常に0となる必要があるので

JM^{-1}\left( I-J^{T}J^{T\# }\right)=0

JM^{-1}J^{T}J^{T\# }=JM^{-1}  ‥(3)

直交座標での慣性行列M_{x}と関節座標での慣性行列Mとは,以下の関係がある。(これはちょっと調べれば情報がたくさんあるので導出は省略)

M_{x}^{-1}=JM^{-1}J^{T}

したがって,(3)式は以下のように書ける。

M_{x}^{-1}J^{T\# }=JM^{-1}

J^{T\# }=M_{x}JM^{-1}

J^{\# }=M^{-T}J^{T}M_{x}^{T}

慣性行列は対称行列なので転置はなくてもよい。

J^{\# }=M^{-1}J^{T}M_{x}