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