ジャイロスコープを使用して二輪ロボットのバランスをとるには、どのアルゴリズムを使用する必要がありますか?


25

ジャイロスコープから入力を取得し、これを使用して2つの独立した車輪を制御し、そのようなバランスの取れたロボットを確実に直立させて使用できる、優れた人気のある信頼できるアルゴリズムはありますか?私はそれを使ってロボットを動かしたり、静止しているときに直立させたりできるアルゴリズムを探しています。傾斜とそれを微調整する人々に対処する能力もボーナスになりますが、必須ではありません。


私もこれに取り組むつもりです。生データをフィルタリングするには、カルマンフィルターを使用する必要があります。そして、PIDアルゴリズムを使用して調整します。
フゾ

回答:


16

最も単純なコントローラーは、線形状態フィードバックコントローラーです。基本的に、ゲインを必要とする4つの異なる状態があります。これらは、傾斜角、傾斜速度、速度、位置です。


LQR(線形2次レギュレータ)は、これらのゲインを設計する方法です(システムの線形化された状態空間表現を取得した後)。状態空間表現がない場合(おそらくない場合)、運動方程式を取得してパラメーターを測定できます。状態空間表現がない場合、ゲインを手動で調整する必要があります(LQRや極配置などの他の方法は使用しません)。


ゲインを手動で調整する:

傾斜角、位置/速度、およびホイールトルクがすべて前方に向けられていると仮定すると(正の場合)、傾斜角と傾斜速度にプラスのゲイン、位置と速度にプラスのゲインが必要です。

傾斜角と傾斜率のゲインから始めます。これにより、最初にバランスが取れます。バランスが保たれたら、ゲインを追加して位置と速度を制御できます。不安定な場合は、チルトレートのゲインを上げます(システムの減衰に役立ちます)。

位置/速度制御は、両方の状態をゼロに制御します。他の値に制御するには、コントローラに送る前に状態をエラーに置き換えることにより、参照追跡コントローラが必要です(現在の速度-速度参照など)。

ヨー制御は独立して行うことができます(メインバランス/速度/位置コントローラーに加えられたホイールトルクの違いにより)。


9

この問題の最も一般的な解決策はLQRコントローラーだと思います。あなたが解決しようとしている問題は、倒立振子問題です。これらのキーワードを使用すると、誰かのオープンソースコードをGoogleで検索できるはずです。次の問題は、関連する物理量のほとんどをアプリケーション(重量、モータートルクなど)にマッピングすることです。


5

制御エンジニアリング/理論のスキルがわからないため、PIDコントローラーから始めることをお勧めします。これは単純なコントローラーであり、多くのコード実装があります。PIDの欠点は、おそらく手動でパラメーターを調整するのに時間がかかることです。

数年前、私はそれをオドメトリーに基づいて二輪のレゴマインドストームロボットを制御するために使用し、十分に機能しました。動き回らせるには、設定点で遊ぶ必要があります。

もちろん、後ほど、前述のLQRなどのより高度な制御法則を使用して、コントローラーの品質(安定性、堅牢性など)を改善できます。

がんばろう!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.