加速度センサ考

Google社の携帯電話向けの包括的オープンプラットフォーム「アンドロイド(Android)」は方位を測定するコンパスを持っていて、携帯電話の向きを得ることができる。

また、最近流行りの加速度センサも持っているわけなんだけど、加速度センサでは回転を検出できない。そもそも加速度と重力は混ざると分離することができないから、加速中は下(つまるところ地球中心方向)を特定することさえ困難だ。

コンパスでなら地球表面に接する方向でなら回転を計測できるかな?でもそんなに反応速度速いのかね?なんて会話を友人としていた。

というのが、数日前の話。

iPhoneに加速度センサを見る

そういえばエンジニアの未来サミットの壇上で小飼弾氏はiPhoneを見て加速度センサが見えるなんて話をしていた。*1私も技術者なのでモノを見ると職業柄その仕組みを見てしまうわけなんだけど、加速度センサだと静かに回転させた場合なら重力方向がわかるとしても、激しく動かしたらどっちが下かなんてわかんなくなるよなぁとか考えていた。

わからないと言えば、回転もわからない。加速度センサは加速度を得ることはできても回転を検出することはできないじゃないか。

加速度センサで回転を計測する

そう思っていたわけなんだけど、単体の加速度センサでは回転の検出はできないだろうけども、加速度センサを複数並べた場合、それぞれの加速度センサ間での加速度の違いを測定することで回転を検出できるんじゃないだろうか。

例えば、重心をはさんで対極に、理想的には正四面体の頂点に位置する場所に加速度センサを配するわけである。

地球中心方向に向かって重力加速度があるわけだが、回転した場合、これに加え4つのセンサは回転方向に対して遠心力による加速度を得る。そしてその加速度はセンサ毎に異なる値を得るだろう。

4つの加速度センサのベクトルを平均し、それを基準に各点がどのように加速しているかを測定すれば重力方向*2と回転による加速度を分離できることだろう。

これは単純に入力デバイスとしても面白いし、こうした測定装置を作って体に取り付けるとモーションキャプチャとかもできるかもしれない。*3

気になる点

回転による遠心力の加速度がどの程度なのかは計算してみないとスケール感がよくわからない。

もしかしたら、重力方向の加速度に比べるとノイズ程度にしか加速しないかもしれない。

*1:技術を理解することで見えてくるもの - プログラマーの脳みそ参照

*2:正確には重力加速度と平行移動による加速度の合成ベクトル

*3:既存の手法に比べて効率的かどうかは分からないが