スクリュー理論⑩ 回転行列と多様体の関係

　はじめまして、[りょーつ](https://twitter.com/Gomachan_2021)といいます。高専出身の大学院2年生です。研究の専門は力学や機構学で、Qiitaでは主に制御工学や数学に関する記事を書いています。本稿はスクリュー理論の解説(布教)をする8つ目の記事です。前回までの記事は以下のリンクを参照してください。
 
[スクリュー理論① 外積の歪対称行列表現](https://qiita.com/Gomachan_2021/items/4a1bc967785b525bc857)
[スクリュー理論② 行列の指数関数](https://qiita.com/Gomachan_2021/items/f97bff915946933a65c5)
[スクリュー理論③ 行列指数と回転行列の関係](https://qiita.com/Gomachan_2021/items/942da3e90bef49d98196)
[スクリュー理論④ 回転行列の成分表示](https://qiita.com/Gomachan_2021/items/01ccd63ab1f5e2266fb9)
[スクリュー理論⑤ 回転行列による座標系の表現](https://qiita.com/Gomachan_2021/items/f99a0d18420e0d69c37d)
[スクリュー理論⑥ 剛体の速度・加速度の座標変換公式の導出](https://qiita.com/Gomachan_2021/items/4be2aa4cd2fa1649db2e)
[スクリュー理論⑦ 三次元空間における右手系の回転行列](https://qiita.com/Gomachan_2021/items/92bfb473d9165b7e54f8)
[スクリュー理論⑧ 回転行列による座標変換](https://qiita.com/Gomachan_2021/items/d02b525f47c4fef8c079)
[スクリュー理論⑨ 回転行列によるベクトルの回転](https://qiita.com/Gomachan_2021/items/b358b887808d6eccf210)

スクリュー理論は剛体の運動を記述する方法で、ロボット工学などでよく使われています。日本の高専や大学ではDH法を使った記述を学ぶことが多いですが、国際的にはスクリュー理論を使った記述が一般的となってきているようです。スクリュー理論を扱う日本語の文献は少ないので、この記事が誰かの助けになればいいなと思います。

# 目次
[1.はじめに](#1-はじめに)
[2.曲面の埋め込み](#2-曲面の埋め込み)
[3.回転行列と多様体](#3-回転行列と多様体)
[4.回転行列の接平面](#4-回転行列の接平面)
[5.おわりに](#5-おわりに)

# 1. はじめに
　本稿では、回転行列を多様体の1つとして考える方法についてまとめてみようと思います。多様体は曲面を抽象化したものであり、3次元や4次元、$n$次元の曲面について考えることもできます。多様体の分野では、曲線を1次元曲面、立体を3次元曲面というように、すべてを曲面と捉えて物事を考えます。ここでは回転行列を多様体としてイメージするために、自分なりの解釈をまとめていこうと思います。
　記事の途中に[こちらの記事](https://qiita.com/Gomachan_2021/items/01ccd63ab1f5e2266fb9)で紹介したロドリゲスの公式が出てくるのでそちらを軽く復習しておいていただけると助かります。また、接平面についての知識が少し必要になります。
　自分自身、誰かから教わったわけではないため、間違いや厳密性に欠ける点もあるかもしれません。もしそれらに気が付いた場合は優しくコメントいただけると嬉しいです！

# 2. 曲面の埋め込み
　「**回転行列は9次元空間に埋め込まれた3次元曲面である**」という文章をすぐに理解できる人は滅多にいないと思います。自分もそうでした。本章では、まず「**埋め込み**」についてフワッとまとめてみようと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031572/f4e4607b-9750-468e-91e8-7d04d591b72d.png)

図1　3次元空間に埋め込まれた2次元の球面
 
　分かりやすい例として、図1に示す半径$r$の球面を考えてみましょう。球面は緯度$\phi$と経度$\psi$を用いて以下のように表現することができます。

```math
x
=
r \cos{\phi} \cos{\psi}
\tag{1}
```
```math
y
=
r \cos{\phi} \sin{\psi}
\tag{2}
```
```math
z
=
r \sin{\phi}
\tag{3}
```
そして、これらは位置ベクトル$\boldsymbol{r}$を用いて以下のようにまとめることができます。
```math
\boldsymbol{r}
=
\begin{bmatrix}
x  \\
y  \\
z  \\
\end{bmatrix}
=
r
\begin{bmatrix}
\cos{\phi} \cos{\psi} \\
\cos{\phi} \sin{\psi} \\
\sin{\phi} \\
\end{bmatrix}
\tag{4}
```
(4)式より、位置ベクトル$\boldsymbol{r}$は3つの成分$x$,$y$,$z$によって表示できること、そしてそれらの成分は$\phi$と$\psi$という2つの変数で構成されていることが分かります。数式で表現すると以下のようになります。
```math
\boldsymbol{r}
=
\boldsymbol{r}
\bigl(
x(\phi,\psi), y(\phi,\psi), z(\phi,\psi)
\bigr)
\tag{5}
```
　(5)式のように表示された球面は、**2つの変数で表現できる3つの成分**で記載されているため、「**3次元空間に埋め込まれた2次元曲面**」と呼ばれます。
 
　ここで注意が必要なのは、**曲面の表示はベクトル以外でもよい**という点です。たとえば4次元に埋め込まれた2変数の曲面$\boldsymbol{p}$を考えてみましょう。このとき(5)式のノリを適用すると以下のようになりますね。
```math
\boldsymbol{p}
=
\boldsymbol{p}
\bigl(
x(u,v), y(u,v), z(u,v), w(u,v)
\bigr)
\tag{6}
```
(6)式を成分表示するとき、
```math
\boldsymbol{p}
=
\begin{bmatrix}
x \\
y \\
z \\
w \\
\end{bmatrix}
\tag{6}
```
としてもいいですが、行列を使って
```math
\boldsymbol{p}
=
\begin{bmatrix}
x & y \\
z & w \\
\end{bmatrix}
\tag{7}
```
としても良いのです。あくまでも見やすくまとめてるのがミソです。

　次に接平面について考えてみましょう。分かりやすい例として球面の接平面について考えます。接平面は位置ベクトルの微小変化$d\boldsymbol{r}$を構成する独立な基底の線形結合で表されるため、接平面を構成する位置ベクトル$\boldsymbol{t}$は以下のように表記できます。
```math
\boldsymbol{t}
=
c_1
\frac{\partial \boldsymbol{r}}{\partial \phi}
+
c_2
\frac{\partial \boldsymbol{r}}{\partial \psi}
\tag{8}
```
(4)式をもとに(8)式を具体的に表現すると球の接平面は任意の定数$c_1$,$c_2$を用いて以下のように表記できます。
```math
\boldsymbol{t}
=
c_1
\begin{bmatrix}
-\sin{\phi} \cos{\psi} \\
-\sin{\phi} \sin{\psi} \\
\cos{\phi} \\
\end{bmatrix}
+
c_2
\begin{bmatrix}
-\cos{\phi} \sin{\psi} \\
\cos{\phi} \cos{\psi} \\
0 \\
\end{bmatrix}
\tag{9}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3031572/aab03420-018c-4bf0-82c4-c7e48611d5d0.png)

図2　球面の接平面

(8)、(9)式から、2次元曲面である球面の接平面は2つの基底を用いて表現できる、つまり**2次元曲面である球面の接平面も2次元**となることが読み取れます。同じように4次元の曲面の接平面は4次元になります。

# 3. 回転行列と多様体
　回転行列を行列としてではなく、9つの成分の集合体として考えてみましょう。イメージは(7)式に近いです。つまり9つの成分を表示するために、
```math
\boldsymbol{q}
=
\begin{bmatrix}
r_{11} \\
r_{12} \\
r_{13} \\
r_{21} \\
r_{22} \\
r_{23} \\
r_{31} \\
r_{32} \\
r_{33} \\
\end{bmatrix}
\tag{10}
```
のようなベクトル$\boldsymbol{q}$ではなく、より綺麗にまとまる以下の行列$R$を使ったというイメージです。
```math
\boldsymbol{R}
=
\begin{bmatrix}
r_{11} & r_{12} & r_{13} \\
r_{21} & r_{22} & r_{23} \\
r_{31} & r_{32} & r_{33} \\
\end{bmatrix}
\tag{11}
```
つまり「**回転行列は9次元空間に埋め込まれている**」と考えることができます。

　ところで、ロドリゲスの公式より、回転行列$\boldsymbol{R}$は単位回転軸$\hat{\boldsymbol{\omega}}$と回転角$\theta$を用いて以下のように分解できることが知られています。
```math
\boldsymbol{R}
=
I
+
\sin{\theta}[\hat{\boldsymbol{\omega}}]
+
(1-\cos{\theta})
{[\hat{\boldsymbol{\omega}}]}^2
\tag{12}
```
```math
\|\hat{\boldsymbol{\omega}}\|
=
1
\tag{13}
```
なお、$I$は単位行列、$[\hat{\boldsymbol{\omega}}]$は単位回転軸$\hat{\boldsymbol{\omega}}$の歪対称行列表示です。
　さらに分かりやすくするために$\hat{\boldsymbol{\omega}}$を成分表示してみましょう。(13)式のとおり、ノルムが1という制約があるので$\hat{\boldsymbol{\omega}}$は2つの変数$u$,$v$を用いて以下のように表すことができます。
```math
\hat{\boldsymbol{\omega}}
=
\hat{\boldsymbol{\omega}}(u,v)
=
\begin{bmatrix}
u \\
v \\
\pm \sqrt{u^2 - v^2} \\
\end{bmatrix}
\tag{14}
```
したがって$\hat{\boldsymbol{\omega}}$の歪対称行列表示も$u$と$v$を変数に持つ2変数関数になります。
```math
[\hat{\boldsymbol{\omega}}]
=
[\hat{\boldsymbol{\omega}}](u,v)
\tag{15}
```
　変数$u$、$v$と回転角$\theta$は独立しているので、(12)式で表される回転行列は3変数関数であることが分かります。
```math
\boldsymbol{R}
=
\boldsymbol{R}(u,v,\theta)
=
I
+
\sin{\theta}[\hat{\boldsymbol{\omega}}(u,v)]
+
(1-\cos{\theta})
{[\hat{\boldsymbol{\omega}}](u,v)}^2
\tag{16}
```
つまり、「**回転行列は3次元曲面である**」と考えられます!
　以上の結果をもとに回転行列を多様体としてみれば、「**回転行列は9次元空間に埋め込まれた3次元曲面である**」という事実に納得がいきます。

# 4. 回転行列の接平面
　前章では回転行列が9次元空間に埋め込まれた3次元曲面であることを説明しました。そこで本章では、回転行列を曲面として捉えた場合における接平面について考えてみようと思います。球面の場合の接平面の式(8)と同様に回転行列の接平面$\boldsymbol{T}$の式を書いてみます。回転行列は$u$,$v$,$\theta$の3変数で表されるため、任意の定数$c_1$～$c_3$を使用して、以下のように表現できます。
```math
\boldsymbol{T}
=
c_1
\frac{\partial \boldsymbol{R}}{\partial u}
+
c_2
\frac{\partial \boldsymbol{R}}{\partial v}
+
c_2
\frac{\partial \boldsymbol{R}}{\partial \theta}
\tag{17}
```
　では(17)式のそれぞれの基底を計算してみましょう。計算結果は以下のようになります。
```math
\frac{\partial \boldsymbol{R}}{\partial u}
=
\sin{\theta}
\frac{\partial}{\partial u}[\hat{\boldsymbol{\omega}}]
+
(1-\cos{\theta})\frac{\partial}{\partial u}{[\hat{\boldsymbol{\omega}}]}^2
\tag{18}
```
```math
\frac{\partial \boldsymbol{R}}{\partial v}
=
\sin{\theta}
\frac{\partial}{\partial v}[\hat{\boldsymbol{\omega}}]
+
(1-\cos{\theta})\frac{\partial}{\partial v}{[\hat{\boldsymbol{\omega}}]}^2
\tag{19}
```
```math
\frac{\partial \boldsymbol{R}}{\partial \theta}
=
\cos{\theta}
[\hat{\boldsymbol{\omega}}]
+
\sin{\theta}{[\hat{\boldsymbol{\omega}}]}^2
\tag{20}
```
つまり、(18)～(20)式の線形結合をとったものが、回転行列の3次元接平面になるというわけです。

　さらにここから変数$\theta$が十分小さいという特殊な場合を考えます。このような場合、回転行列は恒等行列(単位行列)になります。これは(12)式に$\theta \to 0$の極限を考えることで容易に分かります。
```math
\lim_{\theta \to 0}\boldsymbol{R}(u,v,\theta)
=
I
\tag{21}
```
では、このときの接平面はどのような特性を持つのでしょうか?実際に(18)～(20)式についても極限を取ってみましょう。
```math
\lim_{\theta \to 0}
\frac{\partial \boldsymbol{R}}{\partial u}(u,v,\theta)
=
\boldsymbol{O}
\tag{22}
```
```math
\lim_{\theta \to 0}
\frac{\partial \boldsymbol{R}}{\partial v}(u,v,\theta)
=
\boldsymbol{O}
\tag{23}
```
```math
\lim_{\theta \to 0}
\frac{\partial \boldsymbol{R}}{\partial \theta}(u,v,\theta)
=
[\hat{\boldsymbol{\omega}}](u,v)
\tag{24}
```
以上のことから、回転角$\theta$が微小な場合には、回転行列$\boldsymbol{R}$の接平面$\boldsymbol{T}$が以下の式で表されることが分かります。
```math
\lim_{\theta \to 0}
\boldsymbol{T}
=
c_3
[\hat{\boldsymbol{\omega}}]
\tag{25}
```
　このように、「**回転角度$\theta$が十分小さい場合には、その接平面$\boldsymbol{T}$が歪対称行列で表記できる**」ことが分かります。

# 5. おわりに
　本稿では回転行列の少し違った見方として、多様体との関連性をまとめました。内容を要約すると、「回転行列は9次元空間に埋め込まれた3次元多様体であり、その接平面は微小角度の回転において歪対称行列で表現できる」ということを確認しました。もう少し勉強してLie群との関連性についても深入りできたら面白そうだなと思っています。
　来週以降はさすがに同次変換行列の説明に移ろうと考えてます。最後まで読んでいただきありがとうございました！