オートマッピング機能

現在我々が作成している災害救助ロボットにオートマッピング機能を搭載するべく試行錯誤していた。そして今日、一部の機能試作が出来た。

この機能は秋月電子で売っている3軸加速度センサー*1ジャイロセンサー*2を利用した。センサーの情報はH8マイコンを通してRS232CでPCに送信される。PCに送信された加速度と角速度の情報を元に最初にいた地点からどの様に動いたのかを記録出来る仕組みだ。さらに超音波距離センサーの情報を加えると壁の位置も描く事が出来る。PC側のプログラムはC#で作成した。とは言ってもC#については殆ど分かってないけどね。

3軸加速度センサーはそのままでも比較的信頼の出来るデータが得られた。現在のバージョンでは平面内の移動を加速度により検出している。そのため、斜めになると重力加速度を検出し、実際には移動していないのにデータ上では動いている様に錯覚してしまう。これを避けるには重力加速度の影響を考慮する必要がある。「無限小の領域では、運動の加速度と重力加速度は区別できない」とする等価原理があるのでこれらを弁別する事は不可能な様にも思えるが、ある仮定を用いれば弁別可能だと考えている。あるいはジャイロセンサーのデータを利用する方法も考えられる。より正確な結果が得られる方を採用したい。

一方、ジャイロセンサーのデータはそのままではコンパスとして使える角度情報が得られなかった。これはモジュールに温度ドリフトの影響を避けるためのハイパスフィルタが実装されているためだ。フィルタの時定数が大きいので単純に2回積分しても正確な角度情報は得られないのだ。そこでハイパスフィルタのCをショートさせ、1回積分すると、かなり正確な角度情報が得られた。ただし、動かし方によっては大きな誤差が蓄積される場合もある。さらに温度ドリフトの影響も無視できないので対策が必要だ。

参考文献:ねずーの回路図とテスト用ソースコード: 花岡ちゃんに花束をと同ブログ内のいくつかの記事。