ジンバル持って散歩をしながらジンバルのことを考える
読書と編集 千葉直樹です

ジンバルとは
ジンバル持って散歩っていうのをこのところやっています。こんな調子。
ジンバルって省略していっていますけど、これ、正確にはジンバルスタビライザーっていうんですね。どっちかというとスタビライザーって呼ぶほうが正しい感じがします。
でもジンバルってよく言われるのは、要するに水平を保ったり、揺れを減らしたり、左右に急激に動かないようにしたりする機構の部分がジンバルだからなんです。
ジンバルの始まりはたぶん船の羅針盤ではないかと思います。揺れる船の中でも水平を保って方位磁針が方位を示すものですね。
最近ジンバルって言われているものは、カメラを水平に保つような役割をしています。これを使うと歩きながら動画撮影してもまあまあ揺れの少ない動画が撮れる。
ジンバルを使っていて思い出した数学の話
サラリーマンエンジニアの頃、ガラケーのアプリを作ったことがあります。
ガラケーにジャイロセンサーと3軸加速度センサがついているものがあって、それのデータを記録してゴニョゴニョするというアプリケーションでした。
加速度センサのデータを積分したりして、グラフ描いたりとかやっていたんですが、そのときにジンバルロックという問題に突き当たりました。
ジンバルロックってあまり正しくないかもしれないんですけど、角度計算する時に面倒なことが起きるんですよね。
簡単に言うと、358度にプラス7度足したら何度になるかって話なんです。
単純に計算すると365度でしょう?
でも、求めたいのは360度を超えているから360を引いて、5度なんですよね。
これ、軸が1つだったら、360を超えた数値なら360を引くっていう計算で済むんです。
これが3軸になると手に負えないんですね。XYZのどの方向の成分がどれくらいみたいな計算で足し引きが入っちゃうと超めんどくさいことになるんです。
そこで、四元数というのを使います。
これ、複素数の3次元版みたいなやつです。複素数は1次元の計算を次元を1つ足した2次元で計算すると楽になる計算があるよねって捉え方ができるんです。虚数軸って実数の数直線に対して90度の方向になるじゃないですか。複素平面なんて言いますけど、まあ2次元の数字ですよね。実際実部と虚部の2つの数字で成り立っている。
これの3次元版が四元数。すごく端折ってますけど、4つの数字を使って計算するんです。
するとあら不思議。どの方向の角度に対しても普通に足し算とか引き算とかして、XYZすべての軸で360を超えない値を求めることができます。
この値を使っていろいろやっていました。超端折っしゃいましたけど。
数学は便利ツール
僕は数学が不得意なんです。四元数もきちんと仕組みを理解しているわけじゃないし、ネット上にあったアルゴリズムをパクってコード書いて、結果が正しいことだけ確認してましたからね^^;
でも、プログラミングやっていると、こういう便利ツールとしての数学をきちんと学んだほうが良いのだなあと思うことがあります。
学生の頃、行列の計算を習いました。これ、知っている人はたいてい思ったんじゃないかと思うんですけど、計算めんどくさいんです。手でやると。順番間違えたりしてね。
だから面倒すぎて嫌いでした。あまり役に立つ例を教えてもらえなかったし。
でも、エンジニアになって、グラフィックの処理をかじった時に、行列ってすごく便利ってことに気づきました。
例えば、三次元の位置情報があって、それをディスプレイに表示するときは二次元に写像することになるんですが、その時の計算は行列を使うんですね。
昔はこの計算ロジックをループの入れ子で書いたりすることもあったんですけど、まあ誰かがちゃんと計算用のライブラリを作ってくれていてね、とりあえず行列データをセットして四則演算できる。手計算はやっていられないけれど、単純計算の部分はコンピュータがやってくれますから、どんどんデータ食わせればいい。
で、そういうのが得意なプロセッサがGPUってやつだったりしてね、速く計算ができる。
最近の機械学習なんか、すごい次元数のテンソルというやつの計算をしますが、これもちゃんとライブラリがあるので、とにかくデータ作って食わせればいいということになっています。
テンソルは型として用意されていますから、プログラム上はテンソル型の変数同士の式になります。テンソル型のXとテンソル型のYの掛け算は X*Y って書けちゃうのでとても理解しやすくなりますよね。
ありがたいことにきちんと数学を理解していらっしゃる方々が、複雑な計算部分のプログラムを作ってライブラリとして公開してくれているのです。とても楽。
学生の頃、こういうのが使える環境だったら、もっときちんと数学のイメージを頭に展開できたんじゃないかなあと思います。
だから、今はちゃんとコンピュータ使ってね、数学も学んでほしいなあと思ったり。
ジンバル持って動画撮りながらこんな事を考えていました。