https://www.loveelectronics.co.uk/Tutorials/8/hmc5883l-tutorial-and-arduino-libraryのArduino用ライブラリを使用し、低速でロボットを回転させた場合のコンパスセンサX/Y軸の出力を取り、Excelでグラフ化してみる。
結果、コンパスセンサの出力は楕円かつその円の中心部もかなりオフセットしていることが分かった。
atan()で向きを求める前にセンサ値をオフセットすることで、概ね正確な向きが取得できるようになった。
時間ができれば、オフセット値をEEPROMで管理するようなキャリブレーションの機能を考える。