磁力計の動的較正
この質問は、電気工学スタック交換で回答できるため、信号処理スタック交換から移行されました。 8年前に移行され ました。 私はIMUの一部である磁力計AK8975に取り組んでいます。それは私にとって非常に難しいようです。このチップは、地球上の任意の場所またはその近くの地球の磁場を表す3Dベクトルを出力として提供します。 次の2つのタイプの見出し計算アルゴリズムを試しました。1つは単純でarctan(-y/x)、もう1つは傾き(ピッチ)とバンク(ロール)キャンセルされた数学です。傾斜とバンクの両方が間違った出力を与えます。 2つのアルゴリズムのいずれかを使用して、平面図を水平に保ちながら回転させると、地球に対して正しい見出しを取得することができます(簡単な利用可能なオープンスタディリソースを使用)。 ソフトアイアンとハードアイアンのエラーのキャリブレーションを試みました。3Dでプロットでき、完璧な3D球体を表示できます。それでも、傾斜や赤緯では機能しません。 任意のポインターが役立ちます。 コードとその実装は次のとおりです。 void Compass_Heading() { double MAG_X; double MAG_Y; double cos_roll; double sin_roll; double cos_pitch; double sin_pitch; cos_roll = cos(roll); sin_roll = sin(roll); cos_pitch = cos(pitch); sin_pitch = sin(pitch); //// Tilt compensated Magnetic filed X: MAG_X = magnetom_x*cos_pitch + magnetom_y*sin_roll*sin_pitch + magnetom_z*cos_roll*sin_pitch; //// …