72

レゴ マインドストームの NXT システムを使用してバランス ロボットを構築しています。HiTechnic の 2 つのセンサーを使用しています。1 つ目は加速度計で、2 つ目はジャイロスコープです。両方のセンサーからノイズを除去し、-90 度から 90 度の範囲で両方の角度を導き出すことに成功しました。0 度は完全にバランスが取れています。

私の次の課題は、両方のセンサー値を組み合わせて、時間の経過に伴うジャイロスコープのドリフトを修正することです。以下は、ジャイロスコープからのドリフトを示すために実際のデータから作成したグラフの例です。

ここに画像の説明を入力

これらのセンサーを強固に組み合わせるために私が見た中で最も一般的に使用されているアプローチは、カルマン フィルターを使用することです。ただし、私は微積分の専門家ではなく、数学記号もまったく理解していませんが、ソース コードの数学は理解しています。

私は RobotC (他の C の派生物と同様) を使用していますが、C でこれを達成する方法の例を誰かに教えていただければ幸いです。

ご協力ありがとうございました!

ソリューションの結果:

よし、kersny は補完的なフィルターを紹介することで私の問題を解決してくれました。これは私の結果を示すグラフです:

結果 #1

ここに画像の説明を入力

結果 #2

ここに画像の説明を入力

ご覧のとおり、フィルターはジャイロスコープのドリフトを補正し、両方の信号を 1 つの滑らかな信号に結合します。

編集:とにかく壊れた画像を修正していたので、このデータを生成するために使用したリグを表示するのは楽しいだろうと思いました:

ここに画像の説明を入力

4

2 に答える 2

48

カルマン フィルターはどれも素晴らしいものですが、補完フィルターは実装がはるかに簡単で、同様の結果が得られることがわかりました。Complementary Filter のコーディングに関して私が見つけた最良の記事は、この wiki (センサーを工学単位に変換することに関するこの記事とともに) と、このページの zip ファイル内の PDF (技術文書の下で、zip 内のファイル名を信じています) です。 filter.pdf);

PS。カルマン フィルターに行き詰まっている場合、それを実装する Arduino の C 構文コードを次に示します。

于 2009-10-19T18:45:34.403 に答える
6

Gamasutra.com、WiiMote フィルタリングにカルマン フィルターを使用する記事を掲載しました

記事の最後に、C++ ソース コードへのリンクがいくつかあります。

于 2009-10-19T14:34:37.343 に答える