差動ドライブを備えたバランシングロボットの構築


8

私は、いくつかの連続回転サーボと加速度計/ジャイロスコープを使用して、2輪バランシングロボットをすでに構築しました。サーボを8ビットエンコーダーを備えたギア付きDCモーターにアップグレードし、バランスを取りながらロボットが動き回るようにしました。

バランスを取りながら運転するようにプログラムする方法にちょっとこだわっています。一つの方法は、モーターへの制御入力を、それを押すようなものとして動作させることだと思います。したがって、ロボットは、移動したい方向に一瞬アンバランスになります。でもそれはちょっと不器用に思えます。より良い方法があるに違いありませんか?バランサーの動的モデルと差動駆動を組み合わせる必要があると思いますが、これは私が知っている制御理論を少し超えています。

Anortonの回答からの更新見栄えの良い状態行列ができました。

次に極配置について:A行列は、新しい状態ベクトルに基づいて4x4である必要があります。また、Bは4x2行列でなければなりません。これは、左/右のホイールトルク(u = 2x1ベクトル)しか制御できないためです。

これについてもっと読む必要があるかもしれませんが、極配置によってA行列を決定する体系的な方法はありますか?この例とさらに複雑な例では、推測とチェックによってAを決定することは非常に難しいようです。

アップデート#2 少し読んだ後、私はそれを理解したと思います。A行列を決定するには、ロボットのダイナミクスが必要です。それができたら、MATLABまたはオクターブを使用して極配置を行うことができます。


1
どのタイプのアプローチを使用していますか/どの制御理論を知っていますか?私は1つのアプローチを書くことができますが、それはあなたの背景に応じて、超ベーシックまたは超アドバンスになる可能性があります... :)
apnorton

ありがとう!サーボ付きの古い設計では、ジャイロ/アクセラレーターからのデータを使用して傾斜角を計算していました。それをカルマンフィルターに送信し、次にサーボ位置のPIDを送信します。私は微分方程式が得意で、線形代数が得意です。私はまだコントロールがかなり新しいので、おそらく基本的なものですか?または、あなたが喜んでいるなら、両方とも。私はいつももっと学びたいと思っています:)
JDD 2013年

1
私はアプローチが1つしかないので、私の以前のコメントは本当にそれが両方の方法を取ることができると本当に言っていました(ロボットから始めたばかりの場合は超上級、またはコントロールの知識がある場合は超基本)...コメント、私は勝ってる気がします。:) 私のコントロールの知識は非常にスリムですが、そこに$ 0.02の価値を投げます...
apnorton

Robotics JDD へようこそ。コメントとして追加するのではなく、質問に追加情報を編集することをお勧めします。こうすることで、コメントを後で整理(削除)でき、読者が質問自体に集中できなくなります。
マークブース

回答:


8

免責事項:私はこれを自分で行ったことはありませんが、ジョージア工科大学のCourseraでの「モバイルロボット工学の制御」を通じて行われたことの説明を見ただけです。私のコントロールの知識もむらがあります。したがって...これを塩の粒と一緒に服用してください。:)

ロボットを直立させたままにするには、状態を安定化(送信)しようとします。ここで、 0x

x=[leftVelocityrightVelocityangle from vertical]

ただし、このシステムが安定している場合、左右の車輪速度はになり。したがって、目標速度のオフセットが必要です。0

xnew=[leftVelocityδLrightVelocityδRangle from vertical]
ここで、は両側の目標速度です。δ

このシステムが安定すると、ロボットは直立し、各車輪が望ましい速度で回転します。

これが基本的なアプローチ/概要です。これを明日(および実際の数学など)さらに詳細に編集しますが、少なくとも今は一般的なアイデアを投稿したいと思います。(タイムゾーンが遅いので、早めに授業を行っています。)

編集: ああ、良かった。そこで、Courseraコースのこれに関連するスライド(セクション4、スライド29)を振り返ったところです。スライドセットをダウンロードするだけで、そのクラスに参加して登録することができます。:)

難しいのは、行列と行列の計算です(これは大きな線形化の混乱です)。とにかく、次のように状態行列を作成したいとします(上記とは異なり、私の記憶は正確ではありませんでした)。AB

x=[vωϕϕ˙]

ここで、はセグウェイの速度、は回転速度(ロボットの旋回速度)、は垂直からの角度です。vωϕ

希望の速度にしたいので、新しい状態ベクトルを定義しましょう:

x~=x[vdωd00]=xδ

ここで、は目的の速度と回転量です(上記参照)。δ

微分:

x~˙=x˙δ˙=δ is constantx˙

したがって、

x~˙=Ax+Bu

ここで、は標準係数行列は入力行列、は制御ベクトルです。その後、次のように言うことができます。ABu

x~˙=A(xδ)+Bu+Aδ
しかし、(Courseraからの)の解に基づいて、です。したがって、 AAδ=0
x~˙=Ax~+Bu

これで、極配置を使用して正しい固有値などを決定できます。


素晴らしいです、ありがとう!私も同じCourseraクラスを行いましたが、コントロールの知識はそれほど遠くないでしょう。これは、予定よりもずっと難しいプロジェクトであることが判明しています。今のところ、私はあなたの状態行列が好きです。
JDD 2013年

イーク!今夜は答えないようです!先週春休みだったのですが、何か忘れていたので、今日は忙しかったです。私はそれを明日編集します...
apnorton 2013年

問題ない。昨日最後のhブリッジを爆破して組み立てようとしたので、交換を待つ必要があります。
JDD 2013年

助けてくれたAnortonに感謝します。私は今これをもっともっとどうやってやるかを理解していると思います。元の質問を更新しました。AとBの行列を決定する方法はまだ混乱しています。
JDD 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.