SO(3)とSE(3)についてのメモ書き (その5)

SternGerlach

ホームに戻る

このページについて

3次元の剛体変換を表すリー群\(\mathrm{SE}(3)\)と、リー代数\(\mathfrak{se}(3)\)に関する、自分用のメモ書きです。

\(\mathrm{SE}(3)\)の微分

リー代数\(\boldsymbol{\xi} = \left[ \begin{array}{c} \boldsymbol{\phi} \\ \boldsymbol{\rho} \end{array} \right] \in \mathfrak{se}(3)\)と、それに対応するリー群(剛体変換)\(\mathbf{T} = \exp(\boldsymbol{\xi}^\wedge) \in \mathrm{SE}(3)\)を考える。 \(\boldsymbol{\phi} \in \mathfrak{so}(3)\)\(\boldsymbol{\rho} \in \mathbb{R}^3\)である。 \(\mathrm{SO}(3)\)のとき(こちらのメモ)と同じように、\(\mathbf{T}\)\(\boldsymbol{\xi}\)に関する偏微分も、2通りの方法で計算できる。

\(\boldsymbol{\phi}\)\(\boldsymbol{\rho}\)の各要素を\(\phi_i\)\(\rho_i\)(\(0 \le i \le 2\))とする。 また、\(\boldsymbol{\xi}\)の各要素を\(\xi_i\)(\(0 \le i \le 5\))とする。 \(\mathbf{T}\)\(4 \times 4\)行列であるため、\(\phi_i\)\(\rho_i\)、あるいは\(\xi_i\)に関する\(\mathbf{T}\)の偏微分\(\cfrac{\partial \mathbf{T}}{\partial \phi_i}\)\(\cfrac{\partial \mathbf{T}}{\partial \rho_i}\)\(\cfrac{\partial \mathbf{T}}{\partial \xi_i}\)\(4 \times 4\)行列になる。

ある3次実ベクトル\(\mathbf{p} \in \mathbb{R}^3\)について、\(\mathbf{T} \mathbf{p}\)\(\boldsymbol{\xi}\)に関する偏微分\(\cfrac{\partial (\mathbf{T} \mathbf{p})}{\partial \boldsymbol{\xi}}\)を考えることもできる。 \(\mathbf{T} \mathbf{p}\)を計算する際は、\(\mathbf{p}\)を同次座標\(\left[ \begin{array}{c} \mathbf{p} \\ 1 \end{array} \right]\)に直すものとする。 従って、\(\mathbf{T} \mathbf{p}\)は4次ベクトルとなり、その最後の要素は\(1\)である(最初の3要素は、\(\mathbf{p}\)\(\mathbf{T}\)で剛体変換した結果)。 ここでは、\(\mathbf{p}\)とその同次座標を特に区別せず、必要に応じて適宜変換されるとする。 \(\boldsymbol{\xi}\)は6次、\(\mathbf{T} \mathbf{p}\)は4次ベクトルであるから、偏微分\(\cfrac{\partial (\mathbf{T} \mathbf{p})}{\partial \boldsymbol{\xi}}\)\(4 \times 6\)行列となる。

下準備: \(\mathrm{SE}(3)\)に摂動を加える

2つのリー代数\(\boldsymbol{\xi}_1, \boldsymbol{\xi}_2 \in \mathfrak{se}(3)\)について、以下の近似式が得られる。 これは、\(\mathrm{SO}(3)\)のときと同様である。

\[ \ln(\exp(\boldsymbol{\xi}_1^\wedge) \exp(\boldsymbol{\xi}_2^\wedge))^\vee \approx \left\{ \begin{array}{cc} \boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi}_2)^{-1} \boldsymbol{\xi}_1 + \boldsymbol{\xi}_2 & \text{$\boldsymbol{\xi}_1$が小さいとき} \\ \boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi}_1)^{-1} \boldsymbol{\xi}_2 + \boldsymbol{\xi}_1 & \text{$\boldsymbol{\xi}_2$が小さいとき} \end{array} \right. \]

\(6 \times 6\)のヤコビ行列\(\boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi})\)\(\boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi})\)は次のように定義される(\(\boldsymbol{\xi} = \left[ \begin{array}{c} \boldsymbol{\phi} \\ \boldsymbol{\rho} \end{array} \right]\))。

\[ \begin{eqnarray} \boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi}) &=& \left[ \begin{array}{cc} \mathbf{J}_l(\boldsymbol{\phi}) & \mathbf{Q}_l(\boldsymbol{\xi}) \\ \mathbf{0} & \mathbf{J}_l(\boldsymbol{\phi}) \end{array} \right] \\ \boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi}) &=& \left[ \begin{array}{cc} \mathbf{J}_r(\boldsymbol{\phi}) & \mathbf{Q}_r(\boldsymbol{\xi}) \\ \mathbf{0} & \mathbf{J}_r(\boldsymbol{\phi}) \end{array} \right] \end{eqnarray} \]

\(\mathbf{Q}_l(\boldsymbol{\xi})\)\(\mathbf{Q}_r(\boldsymbol{\xi})\)は以下のように定義される。

\[ \begin{eqnarray} \mathbf{Q}_l(\boldsymbol{\xi}) &=& \frac{1}{2} \boldsymbol{\rho}^\wedge + \frac{\phi - \sin \phi}{\phi^3} \left( \boldsymbol{\phi}^\wedge \boldsymbol{\rho}^\wedge + \boldsymbol{\rho}^\wedge \boldsymbol{\phi}^\wedge + \boldsymbol{\phi}^\wedge \boldsymbol{\rho}^\wedge \boldsymbol{\phi}^\wedge \right) \\ && + \frac{\phi^2 + 2 \cos \phi - 2}{2 \phi^4} \left( \boldsymbol{\phi}^\wedge \boldsymbol{\phi}^\wedge \boldsymbol{\rho}^\wedge + \boldsymbol{\rho}^\wedge \boldsymbol{\phi}^\wedge \boldsymbol{\phi}^\wedge - 3 \boldsymbol{\phi}^\wedge \boldsymbol{\rho}^\wedge \boldsymbol{\phi}^\wedge \right) \\ && + \frac{2 \phi - 3 \sin \phi + \phi \cos \phi}{2 \phi^5} \left( \boldsymbol{\phi}^\wedge \boldsymbol{\rho}^\wedge \boldsymbol{\phi}^\wedge \boldsymbol{\phi}^\wedge + \boldsymbol{\phi}^\wedge \boldsymbol{\phi}^\wedge \boldsymbol{\rho}^\wedge \boldsymbol{\phi}^\wedge \right) \\ \mathbf{Q}_r(\boldsymbol{\xi}) &=& \mathbf{Q}_l(-\boldsymbol{\xi}) \end{eqnarray} \]

上式において、\(\phi = | \boldsymbol{\phi} |\)である。

ヤコビ行列の逆行列\(\boldsymbol{\mathcal{J}}_l^{-1}(\boldsymbol{\xi})\)\(\boldsymbol{\mathcal{J}}_r^{-1}(\boldsymbol{\xi})\)は、次のように表される。

\[ \begin{eqnarray} \boldsymbol{\mathcal{J}}_l^{-1}(\boldsymbol{\xi}) &=& \left[ \begin{array}{cc} \mathbf{J}_l(\boldsymbol{\phi})^{-1} & -\mathbf{J}_l(\boldsymbol{\phi})^{-1} \mathbf{Q}_l(\boldsymbol{\xi}) \mathbf{J}_l(\boldsymbol{\phi})^{-1} \\ \mathbf{0} & \mathbf{J}_l(\boldsymbol{\phi})^{-1} \end{array} \right] \\ \boldsymbol{\mathcal{J}}_r^{-1}(\boldsymbol{\xi}) &=& \left[ \begin{array}{cc} \mathbf{J}_r(\boldsymbol{\phi})^{-1} & -\mathbf{J}_r(\boldsymbol{\phi})^{-1} \mathbf{Q}_r(\boldsymbol{\xi}) \mathbf{J}_r(\boldsymbol{\phi})^{-1} \\ \mathbf{0} & \mathbf{J}_r(\boldsymbol{\phi})^{-1} \end{array} \right] \end{eqnarray} \]

これを使うと、\(\boldsymbol{\xi}\)に摂動\(\Delta \boldsymbol{\xi}\)を加えたときに、剛体変換\(\mathbf{T} = \exp(\boldsymbol{\xi}^\wedge)\)がどのように変化するのかが分かる。 \(\mathbf{T}\)に対して左側から摂動\(\exp(\Delta \boldsymbol{\xi})\)を加えると、新たな剛体変換は次のようになる。

\[ \ln(\exp(\Delta \boldsymbol{\xi}^\wedge) \exp(\boldsymbol{\xi}^\wedge))^\vee \approx \boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi})^{-1} \Delta \boldsymbol{\xi} + \boldsymbol{\xi} \]

また、\(\mathbf{T}\)に対して右側から摂動\(\exp(\Delta \boldsymbol{\xi})\)を加えると、新たな剛体変換は次のようになる。

\[ \ln(\exp(\boldsymbol{\xi}^\wedge) \exp(\Delta \boldsymbol{\xi}^\wedge))^\vee \approx \boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi})^{-1} \Delta \boldsymbol{\xi} + \boldsymbol{\xi} \]

次のようにも書ける。

\[ \begin{eqnarray} \exp(\Delta \boldsymbol{\xi}^\wedge) \exp(\boldsymbol{\xi}^\wedge) &\approx& \exp((\boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi})^{-1} \Delta \boldsymbol{\xi} + \boldsymbol{\xi})^\wedge) \\ \exp(\boldsymbol{\xi}^\wedge) \exp(\Delta \boldsymbol{\xi}^\wedge) &\approx& \exp((\boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi})^{-1} \Delta \boldsymbol{\xi} + \boldsymbol{\xi})^\wedge) \end{eqnarray} \]

偏微分の計算 (その1)

\(\mathbf{T} = \exp(\boldsymbol{\xi}^\wedge)\)\(\xi_i\)に関する偏微分は、次のように書ける。

\[ \frac{\partial \mathbf{T}}{\partial \xi_i} = \frac{\partial \exp(\boldsymbol{\xi}^\wedge)}{\partial \xi_i} = \lim_{h \to 0} \frac{\exp((\boldsymbol{\xi} + h \mathbf{1}_i)^\wedge) - \exp(\boldsymbol{\xi}^\wedge)}{h} \]

\(\mathbf{1}_i\)は6次元ベクトルである。 こちらのメモで示されるように、\(\mathbf{1}_i\)は、\(i\)番目の要素が\(1\)で、それ以外は\(0\)のOne-Hotベクトルである。 \(\boldsymbol{\xi} + h \mathbf{1}_i\)は、\(\boldsymbol{\xi}\)\(i\)番目の要素に、微小な変動\(h\)を加えたものである。 さて、\(\mathrm{SO}(3)\)のときと同じように、2種類のヤコビ行列を使って、この偏微分を求めてみる。

以上より、\(\mathbf{T} = \exp(\boldsymbol{\xi}^\wedge)\)\(\xi_i\)に関する偏微分は、次のようになる。

\[ \frac{\partial \mathbf{T}}{\partial \xi_i} = \left\{ \begin{array}{cc} (\boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi}) \mathbf{1}_i)^\wedge \mathbf{T} & \text{$\boldsymbol{\mathcal{J}}_l$を使うとき} \\ \mathbf{T} (\boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi}) \mathbf{1}_i)^\wedge & \text{$\boldsymbol{\mathcal{J}}_r$を使うとき} \end{array} \right. \]

これを使えば、ある3次実ベクトル\(\mathbf{p}\)について、偏微分\(\cfrac{\partial (\mathbf{T} \mathbf{p})}{\partial \boldsymbol{\xi}}\)が求められる。 \(\mathbf{T} \mathbf{p}\)\(\xi_i\)に関する偏微分は、右端に\(\mathbf{p}\)を足せば、次のようになる。

\[ \frac{\partial (\mathbf{T} \mathbf{p})}{\partial \xi_i} = \left\{ \begin{array}{cc} (\boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi}) \mathbf{1}_i)^\wedge \mathbf{T} \mathbf{p} & \text{$\boldsymbol{\mathcal{J}}_l$を使うとき} \\ \mathbf{T} (\boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi}) \mathbf{1}_i)^\wedge \mathbf{p} & \text{$\boldsymbol{\mathcal{J}}_r$を使うとき} \end{array} \right. \]

\(\mathbf{a}^\wedge \mathbf{b} = \mathbf{b}^\odot \mathbf{a}\)であるから、次のように書き直す(マイナスはつかない)。

\[ \frac{\partial (\mathbf{T} \mathbf{p})}{\partial \xi_i} = \left\{ \begin{array}{cc} (\mathbf{T} \mathbf{p})^\odot \boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi}) \mathbf{1}_i & \text{$\boldsymbol{\mathcal{J}}_l$を使うとき} \\ \mathbf{T} \mathbf{p}^\odot \boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi}) \mathbf{1}_i & \text{$\boldsymbol{\mathcal{J}}_r$を使うとき} \end{array} \right. \]

同次座標を表す4次ベクトル\(\mathbf{a} = \left[ \begin{array}{c} \boldsymbol{\varepsilon} \\ \eta \end{array} \right]\)について、\(\odot\)演算子は次のように定義される。 \(\boldsymbol{\varepsilon}\)は3次ベクトルであり、\(\boldsymbol{\varepsilon}^\wedge\)における\(\wedge\)演算子は、こちらのメモで定義されている。 \(\mathbf{a}^\odot\)\(4 \times 6\)行列となる。

\[ \mathbf{a}^\odot = \left[ \begin{array}{c} \boldsymbol{\varepsilon} \\ \eta \end{array} \right]^\odot = \left[ \begin{array}{cc} \eta \mathbf{I} & -\boldsymbol{\varepsilon}^\wedge \\ \mathbf{0}^\top & \mathbf{0}^\top \end{array} \right] \in \mathbb{R}^{4 \times 6} \]

\((\mathbf{T} \mathbf{p})^\odot \boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi}) \mathbf{1}_i\)\(\mathbf{T} \mathbf{p}^\odot \boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi}) \mathbf{1}_i\)はそれぞれ、\(4 \times 6\)行列\((\mathbf{T} \mathbf{p})^\odot \boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi})\)および\(\mathbf{T} \mathbf{p}^\odot \boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi})\)の、\(i\)列目のベクトルである。

以上より、全ての\(i\)について、上記の4次ベクトルを列方向に並べれば、\(4 \times 6\)行列の偏微分\(\cfrac{\partial (\mathbf{T} \mathbf{p})}{\partial \boldsymbol{\xi}}\)が得られる。

\[ \frac{\partial (\mathbf{T} \mathbf{p})}{\partial \boldsymbol{\xi}} = \left\{ \begin{array}{cc} (\mathbf{T} \mathbf{p})^\odot \boldsymbol{\mathcal{J}}_l(\boldsymbol{\xi}) & \text{$\boldsymbol{\mathcal{J}}_l$を使うとき} \\ \mathbf{T} \mathbf{p}^\odot \boldsymbol{\mathcal{J}}_r(\boldsymbol{\xi}) & \text{$\boldsymbol{\mathcal{J}}_r$を使うとき} \end{array} \right. \]

偏微分の計算 (その2)

上記の方法で偏微分\(\cfrac{\partial \mathbf{T}}{\partial \xi_i}\)あるいは\(\cfrac{\partial (\mathbf{T} \mathbf{p})}{\partial \boldsymbol{\xi}}\)を求めるためには、ヤコビ行列\(\boldsymbol{\mathcal{J}}_l\)\(\boldsymbol{\mathcal{J}}_r\)の計算が必要であり、非常に面倒である。 そこで、ヤコビ行列を計算せずに、これらの偏微分を求める方法を考える。

\(\xi_i\)について摂動を加えたときに得られる剛体変換を、先ほどは\(\exp((\boldsymbol{\xi} + h \mathbf{1}_i)^\wedge)\)のように表現したが、ここでは、\(\exp((h \mathbf{1}_i)^\wedge) \mathbf{T}\)、あるいは\(\mathbf{T} \exp((h \mathbf{1}_i)^\wedge)\)と表すことにする。 前者は左側から、後者は右側から\(h \mathbf{1}_i\)に対応する微小な剛体変換\(\exp((h \mathbf{1}_i)^\wedge)\)を適用している。

以上より、\(\mathbf{T} = \exp(\boldsymbol{\xi}^\wedge)\)\(\xi_i\)に関する偏微分は、次のようになる。

\[ \frac{\partial \mathbf{T}}{\partial \xi_i} = \left\{ \begin{array}{cc} (\mathbf{1}_i)^\wedge \mathbf{T} & \text{左側バージョン} \\ \mathbf{T} (\mathbf{1}_i)^\wedge & \text{右側バージョン} \end{array} \right. \]

また、\(\mathbf{T} \mathbf{p}\)\(\boldsymbol{\xi}\)に関する偏微分は、次のようになる(\(\mathbf{T} = \left[ \begin{array}{cc} \mathbf{C} & \mathbf{r} \\ \mathbf{0}^\top & 1 \end{array} \right]\))。

\[ \frac{\partial (\mathbf{T} \mathbf{p})}{\partial \boldsymbol{\xi}} = \left\{ \begin{array}{ll} (\mathbf{T} \mathbf{p})^\odot = \left[ \begin{array}{c} \mathbf{I} & -(\mathbf{C} \mathbf{p} + \mathbf{r})^\wedge \\ \mathbf{0}^\top & \mathbf{0}^\top \end{array} \right] & \text{左側バージョン} \\ \mathbf{T} \mathbf{p}^\odot = \left[ \begin{array}{c} \mathbf{C} & -\mathbf{C} \mathbf{p}^\wedge \\ \mathbf{0}^\top & \mathbf{0}^\top \end{array} \right] & \text{右側バージョン} \end{array} \right. \]

最初の方法と比較すると、ヤコビ行列\(\boldsymbol{\mathcal{J}}_l\)\(\boldsymbol{\mathcal{J}}_r\)が消えているので、計算が楽になる。

\(\mathbf{T}^{-1} \mathbf{p}\)\(\boldsymbol{\xi}\)に関する偏微分

ここでは、2つ目の方法を使って、\(\mathbf{T}^{-1} \mathbf{p}\)\(\boldsymbol{\xi}\)に関する偏微分を求める(自分が使うため)。 ただし、\(\mathbf{T} = \exp(\boldsymbol{\xi}^\wedge)\)\(\mathbf{T}^{-1} = \exp(-\boldsymbol{\xi}^\wedge)\)である。 上記と同じように、左側バージョンと、右側バージョンの2種類を考える。

以上より、\(\mathbf{T}^{-1} \mathbf{p}\)\(\boldsymbol{\xi}\)に関する偏微分は、次のようになる。

\[ \frac{\partial (\mathbf{T}^{-1} \mathbf{p})}{\partial \boldsymbol{\xi}} = \left\{ \begin{array}{ll} - \left( \mathbf{T}^{-1} \mathbf{p} \right)^\odot = \left[ \begin{array}{cc} -\mathbf{I} & \left( \mathbf{C}^\top \mathbf{p} - \mathbf{C}^\top \mathbf{r} \right)^\wedge \\ \mathbf{0}^\top & \mathbf{0}^\top \end{array} \right] & \text{左側バージョン} \\ - \mathbf{T}^{-1} \mathbf{p}^\odot = \left[ \begin{array}{cc} -\mathbf{C}^\top & \mathbf{C}^\top \mathbf{p}^\wedge \\ \mathbf{0}^\top & \mathbf{0}^\top \end{array} \right] & \text{右側バージョン} \end{array} \right. \]

参考文献