LoginSignup
11
9

More than 5 years have passed since last update.

Sim(3) optimization の exponential map を計算してみた

Last updated at Posted at 2019-01-04

目的

Scale drift-awareな場合におけるpose graph optimization(こちらなど)で登場するSim3 optimizationにおいて, $\mathrm{Sim(3)}$ と $\mathfrak{sim}\mathrm{(3)}$ の変換式を導出する必要があったため,その変換式(exponential map)を求めます.

exponential map の導出

準備

3次元相似変換行列 ${\bf S}$ を,

\begin{align}
    {\bf S}
    &=
    \begin{bmatrix}
        s \cdot {\bf R} && {\bf t} \\
        {\bf 0}_3^{\mathsf T} && 1
    \end{bmatrix}
\end{align}

とします.

群 $\mathrm{Sim(3)}$ の生成子(generator)は,

\begin{align}
    {\bf G}_1
    &=
    \begin{bmatrix}
        0 && 0 && 0 && 1 \\
        0 && 0 && 0 && 0 \\
        0 && 0 && 0 && 0 \\
        0 && 0 && 0 && 0 \\
    \end{bmatrix}
    , &
    {\bf G}_2
    &=
    \begin{bmatrix}
        0 && 0 && 0 && 0 \\
        0 && 0 && 0 && 1 \\
        0 && 0 && 0 && 0 \\
        0 && 0 && 0 && 0 \\
    \end{bmatrix}
    , &
    {\bf G}_3
    &=
    \begin{bmatrix}
        0 && 0 && 0 && 0 \\
        0 && 0 && 0 && 0 \\
        0 && 0 && 0 && 1 \\
        0 && 0 && 0 && 0 \\
    \end{bmatrix}
    ,
    \\
    {\bf G}_4
    &=
    \begin{bmatrix}
        0 && 0 && 0 && 0 \\
        0 && 0 && -1 && 0 \\
        0 && 1 && 0 && 0 \\
        0 && 0 && 0 && 0 \\
    \end{bmatrix}
    , &
    {\bf G}_5
    &=
    \begin{bmatrix}
        0 && 0 && 1 && 0 \\
        0 && 0 && 0 && 0 \\
        -1 && 0 && 0 && 0 \\
        0 && 0 && 0 && 0 \\
    \end{bmatrix}
    , &
    {\bf G}_6
    &=
    \begin{bmatrix}
        0 && -1 && 0 && 0 \\
        1 && 0 && 0 && 0 \\
        0 && 0 && 0 && 1 \\
        0 && 0 && 0 && 0 \\
    \end{bmatrix}
    ,
    \\
    {\bf G}_7
    &=
    \begin{bmatrix}
        1 && 0 && 0 && 0 \\
        0 && 1 && 0 && 0 \\
        0 && 0 && 1 && 0 \\
        0 && 0 && 0 && 0 \\
    \end{bmatrix}
\end{align}

です.
すなわち,リー代数 $\mathfrak{sim}\mathrm{(3)}$ の任意の元 ${\bf M}$ は,これらの一次結合

{\bf M} = v_1 {\bf G}_1 + v_2 {\bf G}_2 + v_3 {\bf G}_3 + \omega_1 {\bf G}_4 + \omega_2 {\bf G}_5 + \omega_3 {\bf G}_6 + \lambda {\bf G}_7

で表されます.
さらに,${\bf M}$ の exponential map $\mathrm{exp}: \mathfrak{sim}\mathrm{(3)} \rightarrow \mathrm{Sim(3)}$ は,$\mathrm{exp({\bf M})} \in \mathrm{Sim(3)}$ となります.

ここで,${\bf v} = [v_1, v_2, v_3]^{\mathsf T}$,${\bf \omega} = [\omega_1, \omega_2, \omega_3]^{\mathsf T}$と置くと,

\begin{align}
    {\bf M}
    &=
    \begin{bmatrix}
        \lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times && {\bf v} \\
        {\bf 0}_3^{\mathsf T} && 0
    \end{bmatrix}
\end{align}

となります($[{\bf \omega}]_\times$ は 外積行列).

${\bf M} \in \mathfrak{sim}\mathrm{(3)}$ の $({\bf v}, {\bf \omega}, \lambda)$ から ${\bf S} \in \mathrm{Sim(3)}$ の $({\bf t}, {\bf R}, s)$ を求める式を得ることが最終目標です.

導出

行列指数関数の定義による展開

まずは,$\mathrm{exp({\bf M})}$ を行列指数関数の定義に従って展開します.

\begin{align}
    {\bf M}^k
    &=
    \begin{bmatrix}
        \lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times && {\bf v} \\
        {\bf 0}_3^{\mathsf T} && 0
    \end{bmatrix}^k
    \\
    &=
    \begin{bmatrix}
        (\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^k && (\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^{k - 1} {\bf v} \\
        {\bf 0}_3^{\mathsf T} && 0
    \end{bmatrix}
\end{align}

の関係式を用いると,

\begin{align}
    \mathrm{exp({\bf M})}
    &=
    \sum_{k = 0}^{\infty} \frac{1}{k!} {\bf M}^k
    \\
    &=
    {\bf I}_4 + \sum_{k = 1}^{\infty} \frac{1}{k!} {\bf M}^k
    \\
    &=
    {\bf I}_4 + \sum_{k = 1}^{\infty} \frac{1}{k!}
    \begin{bmatrix}
        (\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^k && (\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^{k - 1} {\bf v} \\
        {\bf 0}_3^{\mathsf T} && 0
    \end{bmatrix}
    \\
    &=
    \begin{bmatrix}
        {\bf I}_3 + \sum_{k = 1}^{\infty} \frac{1}{k!}(\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^k && \sum_{k = 1}^{\infty} \frac{1}{k!}(\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^{k - 1} {\bf v} \\
        {\bf 0}_3^{\mathsf T} && 0
    \end{bmatrix}
    \\
    &=
    \begin{bmatrix}
        \mathrm{exp}(\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times) && \left[ \sum_{k = 1}^{\infty} \frac{1}{k!}(\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^{k - 1} \right] {\bf v} \\
        {\bf 0}_3^{\mathsf T} && 0
    \end{bmatrix}
\end{align}

ここで,

\begin{align}
    \mathrm{exp}(\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)
    &=
    \mathrm{exp}(\lambda \cdot {\bf I}_3) \cdot \mathrm{exp}([{\bf \omega}]_\times)
    \\
    &=
    \mathrm{exp}(\lambda) \cdot {\bf I}_3 \cdot \mathrm{exp}([{\bf \omega}]_\times)
    \\
    &=
    \mathrm{exp}(\lambda) \cdot \mathrm{exp}([{\bf \omega}]_\times)
    \\
    &=
    s \cdot {\bf R}
\end{align}

であるため,$s = \mathrm{exp}(\lambda)$,${\bf R} = \mathrm{exp}([{\bf \omega}]_\times)$ となります.

SO(3) の exponential map

$\mathrm{exp}([{\bf \omega}]_\times)$ を計算します.$\theta^2 = {\bf \omega}^{\mathsf T} {\bf \omega}$ と置くと,

[{\bf \omega}]_\times^{2k + 1} = (-1)^k \theta^{2k} [{\bf \omega}]_\times \\
[{\bf \omega}]_\times^{2k + 2} = (-1)^k \theta^{2k} [{\bf \omega}]_\times^2

の関係があります.これを用いると,

\begin{align}
\mathrm{exp}([{\bf \omega}]_\times)
&=
\sum_{k = 0}^{\infty} \frac{1}{k!} ([{\bf \omega}]_\times)^k
\\
&=
{\bf I}_3 + \sum_{k = 0}^{\infty} \Biggr[  \frac{1}{(2k + 1)!} [{\bf \omega}]_\times^{2k + 1} + \frac{1}{(2k + 2)!} [{\bf \omega}]_\times^{2k + 2} \Biggr]
\\
&=
{\bf I}_3 + \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 1)!} (-1)^k \theta^{2k} \Biggr] [{\bf \omega}]_\times + \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 2)!} (-1)^k \theta^{2k} \Biggr] [{\bf \omega}]_\times^2
\end{align}

と変形できます.$\theta = 0$ であれば $\mathrm{exp}([{\bf \omega}]_\times) = {\bf I}_3$ です.$\theta \neq 0$ とすると,

\begin{align}
\mathrm{exp}([{\bf \omega}]_\times)
&=
{\bf I}_3 + \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 1)!} (-1)^k \theta^{2k} \Biggr] [{\bf \omega}]_\times + \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 2)!} (-1)^k \theta^{2k} \Biggr] [{\bf \omega}]_\times^2
\\
&=
{\bf I}_3 + \frac{1}{\theta} \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 1)!} (-1)^k \theta^{2k + 1} \Biggr] [{\bf \omega}]_\times + \frac{1}{\theta^2} \Biggl( 1 - \Biggl[ \sum_{k = -1}^{\infty} \frac{1}{(2k + 2)!} (-1)^{k + 1} \theta^{2k + 2} \Biggr] \Biggr) [{\bf \omega}]_\times^2
\\
&=
{\bf I}_3 + \frac{\sin{(\theta)}}{\theta} [{\bf \omega}]_\times + \frac{1 - \cos{(\theta)}}{\theta^2} [{\bf \omega}]_\times^2
\end{align}

となります.つまり,

\begin{align}
{\bf R} = {\bf I}_3 + \frac{\sin{(\theta)}}{\theta} [{\bf \omega}]_\times + \frac{1 - \cos{(\theta)}}{\theta^2} [{\bf \omega}]_\times^2
\end{align}

となります.これは,exponential map $\mathrm{exp}: \mathfrak{so}\mathrm{(3)} \rightarrow \mathrm{SO(3)}$ です.

並進成分の変換

また,

{\bf W}
=
\sum_{k = 1}^{\infty} \frac{1}{k!}(\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^{k - 1}
=
{\bf I}_3 + \sum_{k = 1}^{\infty} \frac{1}{(k + 1)!}(\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times)^{k}

と置き,

{\bf I}_3 + \sum_{k = 1}^{\infty} \frac{1}{(k + 1)!} {\bf A}^k
=
\int_0^1 \mathrm{exp}(t \cdot {\bf A}) dt

の関係式を適用すると,${\bf W}$ は

{\bf W}
=
\int_0^1 \mathrm{exp} \bigl( t \cdot (\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times) \bigr) dt

で得られることが分かります.これを展開していきます.

\begin{align}
{\bf W}
&=
\int_0^1 \mathrm{exp} \bigl( t \cdot (\lambda \cdot {\bf I}_3 + [{\bf \omega}]_\times) \bigr) dt
\\
&=
\int_0^1 \mathrm{exp} ( t \cdot \lambda \cdot {\bf I}_3) \cdot \mathrm{exp}(t \cdot [{\bf \omega}]_\times) dt
\\
&=
\int_0^1 \mathrm{exp} ( t \cdot \lambda) \cdot \mathrm{exp}(t \cdot [{\bf \omega}]_\times) dt
\end{align}

$\mathrm{exp}(t \cdot [{\bf \omega}]_\times)$ を計算します.$\theta^2 = {\bf \omega}^{\mathsf T} {\bf \omega}$ と置くと,

[{\bf \omega}]_\times^{2k + 1} = (-1)^k \theta^{2k} [{\bf \omega}]_\times \\
[{\bf \omega}]_\times^{2k + 2} = (-1)^k \theta^{2k} [{\bf \omega}]_\times^2

の関係があります(再掲).これを用いると,

\begin{align}
\mathrm{exp}(t \cdot [{\bf \omega}]_\times)
&=
\sum_{k = 0}^{\infty} \frac{1}{k!} (t \cdot [{\bf \omega}]_\times)^k
\\
&=
{\bf I}_3 + \sum_{k = 0}^{\infty} \Biggr[  \frac{1}{(2k + 1)!} t^{2k + 1} [{\bf \omega}]_\times^{2k + 1} + \frac{1}{(2k + 2)!} t^{2k + 2} [{\bf \omega}]_\times^{2k + 2} \Biggr]
\\
&=
{\bf I}_3 + t \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 1)!} (-1)^k (t \, \theta)^{2k} \Biggr] [{\bf \omega}]_\times + t^2 \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 2)!} (-1)^k (t \, \theta)^{2k} \Biggr] [{\bf \omega}]_\times^2
\end{align}

と変形できます.$\theta \neq 0$ とすると,

\begin{align}
\mathrm{exp}(t \cdot [{\bf \omega}]_\times)
&=
{\bf I}_3 + t \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 1)!} (-1)^k (t \, \theta)^{2k} \Biggr] [{\bf \omega}]_\times + t^2 \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 2)!} (-1)^k (t \, \theta)^{2k} \Biggr] [{\bf \omega}]_\times^2
\\
&=
{\bf I}_3 + \frac{t}{t \, \theta} \Biggl[ \sum_{k = 0}^{\infty} \frac{1}{(2k + 1)!} (-1)^k (t \, \theta)^{2k + 1} \Biggr] [{\bf \omega}]_\times + \frac{t^2}{t^2 \, \theta^2} \Biggl( 1 - \Biggl[ \sum_{k = -1}^{\infty} \frac{1}{(2k + 2)!} (-1)^{k + 1} (t \, \theta)^{2k + 2} \Biggr] \Biggr) [{\bf \omega}]_\times^2
\\
&=
{\bf I}_3 + \frac{\sin{(t \, \theta)}}{\theta} [{\bf \omega}]_\times + \frac{1 - \cos{(t \, \theta)}}{\theta^2} [{\bf \omega}]_\times^2
\end{align}

となります.$\theta = 0$ であれば,$\mathrm{exp}(t \cdot [{\bf \omega}]_\times) = {\bf I}_3$ となります.

$\theta \neq 0$ のときの $\mathrm{exp}(t \cdot [{\bf \omega}]_\times)$ を ${\bf W}$ に代入すると,

\begin{align}
{\bf W}
&=
\int_0^1 \mathrm{exp} ( t \, \lambda) \, \mathrm{exp}(t \, [{\bf \omega}]_\times) \, dt
\\
&=
\int_0^1 e^{t \lambda} \, \biggl( {\bf I}_3 + \frac{\sin{(t \, \theta)}}{\theta} [{\bf \omega}]_\times + \frac{1 - \cos{(t \, \theta)}}{\theta^2} [{\bf \omega}]_\times^2 \biggr) \, dt
\\
&=
\int_0^1 \biggl( e^{t \lambda} \, {\bf I}_3 + e^{t \lambda} \sin{(t \, \theta)} \frac{[{\bf \omega}]_\times}{\theta} + e^{t \lambda} \frac{[{\bf \omega}]_\times^2}{\theta^2} - e^{t \lambda} \cos{(t \, \theta)} \frac{[{\bf \omega}]_\times^2}{\theta^2} \biggr) \, dt
\end{align}

$\lambda \neq 0$ として積分すると,

\begin{align}
{\bf W}
&=
\frac{e^\lambda - 1}{\lambda} \, {\bf I}_3
\\
&\quad +
\frac{\lambda e^\lambda \sin{(\theta)} + \theta (1 - e^\lambda \cos{(\theta)})}{\lambda^2 + \theta^2} \frac{[{\bf \omega}]_\times}{\theta}
\\
&\quad +
\biggl(
\frac{e^\lambda - 1}{\lambda}
-
\frac{\theta e^\lambda \sin{(\theta)} + \lambda (e^\lambda \cos{(\theta)} - 1)}{\lambda^2 + \theta^2}
\biggr)
\frac{[{\bf \omega}]_\times^2}{\theta^2}
\end{align}

となります.

まとめ

以上より、リー代数 $\mathfrak{sim}\mathrm{(3)}$ の任意の元 ${\bf M}$ の exponential map $\mathrm{exp}: \mathfrak{sim}\mathrm{(3)} \rightarrow \mathrm{Sim(3)}$ は

\begin{align}
    \mathrm{exp({\bf M})}
    =
    \begin{bmatrix}
        \mathrm{exp}(\lambda) \, \mathrm{exp}([{\bf \omega}]_\times) && {\bf W} {\bf v} \\
        {\bf 0}_3^{\mathsf T} && 0
    \end{bmatrix}
\end{align}

となります.

いくつか場合分けを省略していますが($\theta = 0$の場合など),上記のパターンの導出が一番難しいと思うので,これ以外の場合については皆さんで頑張ってください.

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9