手順や方法は、ロボットの移動機構の構成や形に依存しますので、ラジコンカーをベースとしたロボットを 動かすときの参考になるのではないかと思います。
リモコンモードでは、ノートPCのカーソルキーで操縦しています。通常のリモコンモードでは、左右方向のカーソルキー を一回押す毎に100マイクロ秒PWMパルス幅を変化させていますが、トリムモードの時は5マイクロ秒ずつ変化させて 、ちょうどまっすぐ走るパルス幅を探ります。こんなもんだろーという数値が見つかったら、トリムモードを解除し、その数値 を記録します。
この数値は、厳密にいうと気温変化によりタイヤの硬さが変わり、その影響でタイヤの直径が変わるので 変化しますが、GPSの測定誤差に比べて無視できるので、ロボットの製作途中で1度測定するだけです。
一定速度で直進し、目標パルスカウント数で走行用モーターをOFFにした時、完全に停止した場所までの距離 を測定した結果から回帰計算で関係式を求めると、土のグランドか、芝生の上かなど、地面の状態に影響をうけ ますが、慣性で走る距離まで入った式ができます。現状は路面の状態による誤差と、測定した時と違う速度 で走った時に慣性によって走る距離が変わることの誤差も無視しています。
スタート地点に印を付けて、リモコンモードで一定のステアリング操作をした後、同じ場所に戻ってくるまで
時速1km/h程度の速度で360度旋回します。
この時のエンコーダパルス数も記録します。
測定結果の使い方としては、例えば90度旋回する場合は、360度の時の1/4のパルス数走行するという感じです。
旋回直径を大きくすれば、その分360度旋回に要するパルス数が多くなり、すなわち分解能が
上がるので、自動走行時に旋回方向をより正確に制御したい場合は、旋回直径を大きくとるようにしています。
アース・ローバー01の時は、この方式で旋回角度の制御をしていました。02でも出来るようにしてありますが、 比べてみたら、ジャイロコンパス(ジャイロの積分値)で制御した方が精度が良かったので、そちらに変えました。
4.ジャイロのドリフトによるオフセット計測
これにより、センサーを含む回路の温度変化に起因するオフセットをキャンセルすることを指向しています。
5.磁気コンパスのオフセット計測
幾何的に解釈すると、 測定誤差や外乱が全くない場合に、測定結果はX=0、Y=0を中心とした円としてプロットされるはず、という 考えを前提としてXY平面の原点からずれた位置に中心をもつ円のずれ量を求めていることになります。
これにより、ロボットに搭載している各種の磁気を帯びた部品の影響を低減しています。
測定サンプル
アースローバー02では磁気コンパスを、走行用モーターとエンコーダ用のネオジム磁石から遠い場所と言う事で、 メカトレイ左後ろ端に搭載しています。しかしまだ影響が大きい感じなので、ロボットの持ち運び を気にしなければ、GPS受信機と共にマストでも立てて、その上に搭載するのが良さそうだと思います。