8

私は高校のFIRSTロボット チームに所属しており、キウイ ドライブ ロボットの開発に取り組んでいます。このロボットには、次のように正三角形の構成で取り付けられた3 つのオムニ ホイールがあります。

正三角形構成の 3 つの番号付きオムニ ホイール

問題は、ロボットが特定のジョイスティック入力の方向に移動するようにモーターを駆動するようにロボットをプログラムすることです。たとえば、「上」に移動するには、モーター 1 と 2 に均等に電力を供給し、モーター 3 をオフにします。ジョイスティックの位置はベクトルで与えられますが、モーターもベクトルで表現するなら、ベクトル射影が必要になるのではないかと考えていました。ただし、これが正しいかどうかはわかりません。正しい場合は、どのように適用するかはわかりません。また、ジョイスティックの 1 つの位置に対して複数のソリューションが存在する可能性があると感じています。どんな助けでも大歓迎です。

4

4 に答える 4

4

在学中に 9 台のロボットを作成しました (FIRST 1 台、RoboCup 8 台)。あなたと同じオムニドライブのレイアウトを使用しました。ベータ版の答えは正しいように見えますが、後ですべての車輪に回転を追加します:

W1 = -1/2 X - sqrt(3)/2 Y + R 
W2 = -1/2 X + sqrt(3)/2 Y + R
W3 = X + R

[これは回転を追加したベータ版の公式です]

モーターの利用可能な範囲について考える必要があります。+/-255 の PWM 信号を使用できると推測しているため、入力または出力のいずれかを多少調整する必要があります。(そんなに難しくないです…)

詳細が記載された優れた論文

特定の質問に答えるには:ベクトル射影は、基本的にここで行っていることです。行列M、ジョイスティックIからの入力、およびモーターへの出力Oを使用して適用します。したがって、O = M * I ;

M = [(-0.5 -sqrt(3)/2    +1)
     (-0.5 +sqrt(3)/2    +1)
     (1     0            +1)]
于 2010-09-29T11:03:55.243 に答える
2

このシステムは数学的に解決できますが、2002 年に FIRST チーム 857 は機械的に解決することを選択しました。私たちの制御システムは、X 軸が正三角形を形成するように取り付けられた 3 つのジョイスティックを使用し、ハンドルは Y 字型のヨークで接続されたボール ソケット アームに置き換えられました。各スティックの X 軸をモーター速度に直接マッピングすると、制御システムが解決されます。利点として、このシステムは一般の人が非常に直感的に実行できます。ヨークを行きたい方向に押し、回転させて回転させます。

于 2011-04-20T04:30:24.257 に答える
2

まず、いくつかの用語を定義しましょう。通常の規則に従って、X 軸は右を指し、Y 軸は上を指します (したがって、車輪 3 の推力は X 軸に沿っています)。ホイールの動きを W 1、W 2、W 3と呼びます。それぞれ定義されているため、W i > 0 はホイールが時計回りに回転することを意味します。あなたの例では、W 1 < 0、W 2 = W 1、W 3 = 0 の場合、ロボットは +Y 方向に移動します。

3 つの車輪すべてが同じ速度 (W 1 = W 2 = W 3 ) で回転すると、ロボットはその場で回転します。私はあなたがそれを望んでいないと推測しているので、回転の合計はゼロでなければなりません: W 1 + W 2 + W 3 = 0 .

各ホイールの動きがロボットの動きに影響します。ベクトルとして追加:
W 1 = -1/2 X - sqrt(3)/2 Y
W 2 = -1/2 X + sqrt(3)/2 Y
W 3 = X

したがって、ジョイスティックから目的の X と Y がわかっている場合、W 1、W 2、および W 3が得られます。すでに見たように、W 1と W 2の違いがY モーションを駆動します。それらの合計が X のモーションを駆動します。

于 2010-09-20T03:49:30.810 に答える
1

お気づきのように、これの最初の部分は、任意のモーター設定の合成モーションを表す適切な方程式を見つけることです。モーター速度に対する制御とフィードバックのレベルに応じて、ベクトル方程式を書くことから始めることをお勧めします (正の X を直進として定義します)。

-M1Cos(30)+M2Cos(30)=X (マイナスは、1 と 2 に同じ大きさの電力を供給しなければならないためですが、前進運動の極性は反対です)

M1Sin(30)+M2Sin(30)-M3 = Y (1 と 2 を反時計回りに動かすとロボットは Y の左に移動し、3 を反時計回りに動かすとロボットは右に動くため)

これに追加する必要があるもう 1 つの入力は、ロボットの目的の回転です。ありがたいことに、M1+M2+M3 = W (回転速度)

ジョイスティックの入力によって X、Y、W が得られるため、3 つの未知数を持つ 3 つの方程式が得られます。

ここから先は連立方程式なので、解が複数になることもありますが、一般的にはモーターの回転速度などによって制限されます。

この例は、rec::robotino::com::OmniDrive クラスです。このメソッドのソース コードも利用できます...

于 2010-09-20T01:34:11.080 に答える