レゴ マインドストームの NXT システムを使用してバランス ロボットを構築しています。HiTechnic の 2 つのセンサーを使用しています。1 つ目は加速度計で、2 つ目はジャイロスコープです。両方のセンサーからノイズを除去し、-90 度から 90 度の範囲で両方の角度を導き出すことに成功しました。0 度は完全にバランスが取れています。
私の次の課題は、両方のセンサー値を組み合わせて、時間の経過に伴うジャイロスコープのドリフトを修正することです。以下は、ジャイロスコープからのドリフトを示すために実際のデータから作成したグラフの例です。
これらのセンサーを強固に組み合わせるために私が見た中で最も一般的に使用されているアプローチは、カルマン フィルターを使用することです。ただし、私は微積分の専門家ではなく、数学記号もまったく理解していませんが、ソース コードの数学は理解しています。
私は RobotC (他の C の派生物と同様) を使用していますが、C でこれを達成する方法の例を誰かに教えていただければ幸いです。
ご協力ありがとうございました!
ソリューションの結果:
よし、kersny は補完的なフィルターを紹介することで私の問題を解決してくれました。これは私の結果を示すグラフです:
結果 #1
結果 #2
ご覧のとおり、フィルターはジャイロスコープのドリフトを補正し、両方の信号を 1 つの滑らかな信号に結合します。
編集:とにかく壊れた画像を修正していたので、このデータを生成するために使用したリグを表示するのは楽しいだろうと思いました: