ROBOBASIC講座(GYROSET, GYRODIR, GYROSENSE)
【GYROSET(ジャイロ・セット)】
ジャイロセンサーを反映させるサーボモータを設定する。
構文:GYROSET [グループ指定], [モーターnジャイロ番号],……
例:GYROSET G6A, 1, 2, 2, 2, 1, 0
【GYRODIR(ジャイロ・ディ・アイ・アール)】
ジャイロセンサー処理のサーボモーターの動作方向を設定する。
構文:GYRODIR [グループ指定], [モーターn動作方向],……
例:GYRODIR G6A, 1, 1, 0, 0, 1, 0
【GYROSENSE(ジャイロ・センス)】
サーボモータに反映させるジャイロセンサー感度を設定する。
構文:GYROSENSE [グループ指定], [モーターnジャイロ感度],……
例:GYROSENSE G6A, 100, 100, 255, 255, 50, 0
ロボザック80号のジャイロセンサーの接続と中位調整
【接続】ジャイロセンサーはMR-C3024のADポートに接続します。ADポートにはジャイロからの入出力の2本のコネクターを接続する必要があり、それぞれ接続するポートが決まっており、接続した場所に対応して、ジャイロセンサーの番号になります。HG-R01と書かれたラベルの貼ってある側のコネクターをAD4〜7のポートに接続し、貼ってない側をAD0〜3に接続します。
- AD0とAD4
- AD1とAD5
- AD2とAD6
- AD3とAD7
【中位調整】ジャイロセンサーを接続したら、ジャイロが機能しない(MR-C3024に転送されているプログラムにジャイロ関連のコマンドが使われていない、もしくは、オフになっている)状態で
- MR-C3024の電源を入れる。
- ジャイロセンサーを水平な状態になるように置く。
- マイナスドライバーで中位調整ネジを回し、ジャイロのLEDが赤と青の2色が同時に点灯するように調整する。
- 現時点では、感度調整ネジは、少しマイナス側に回しておいた方が安全であり、感度調節を行うと、中位位置もズレるため、最終的に、感度調節を行った後に、中位調整を再度行う必要があります。
ジャイロセンサーの装着方向とGYROSETコマンド
接続したジャイロセンサーはGYROSETコマンドで、サーボモーターごとにジャイロ番号を指定することによって、ジャイロの機能を反映させることができます。なお、GYROSETコマンドで、0(ゼロ)を指定することは、ジャイロセンサーをオフにする意味になります。
例: GYROSET G6A, 2, 1, 1, 1, 2, 0
の場合、
- サーボ番号0←ジャイロ番号2を反映させる
- サーボ番号1←ジャイロ番号1を反映させる
- サーボ番号2←ジャイロ番号1を反映させる
- サーボ番号3←ジャイロ番号1を反映させる
- サーボ番号4←ジャイロ番号2を反映させる
- サーボ番号5←ジャイロを機能させない
ということとなります。ロボザックの足の関節の作用を考えてみましょう。
- サーボ番号0:外転/内転(左右方向)
- サーボ番号1:屈曲/伸展(前後方向)
- サーボ番号2:屈曲/伸展(前後方向)
- サーボ番号3:屈曲/伸展(前後方向)
- サーボ番号4:外転/内転(左右方向)
- サーボ番号5:外旋/内旋(回旋)
ジャイロセンサーは、ロボットがどちらへ動いたかを認識するもので、ジャイロセンサーを反映させるサーボモーター番号は、ジャイロセンサーが感知している運動方向に一致したサーボモーターに反映させることになる。装着したジャイロセンサーが感知している方向が、前後方向なのか、左右方向なのかに対応して、適応させるモーター番号が決まるとうことになります。
ジャイロセンサーの装着方向とGYRODIRコマンド
ジャイロセンサーが緑LEDの方向へ回転すると、GYROSETで適応させたサーボモータの角度を加算し、逆に、赤LEDの方向へ回転すると、減算します。
GYRODIRは、実際にサーボモーターに適応させる方向を1と0で指定します。0を指定すると逆回転させる意味になり、サーボモーターを回転させる角度の式は、以下の様な式になるかと思います。
- 1の場合:回転角度=加算または減算角度 x 1
- 0の場合:回転角度=加算または減算角度 x -1
具体的に見てみましょう
図の場合、足首は120になっています。バランスを崩さないようにする為には、赤LED方向へ力が加わった時には角度を減らすことが、緑LED方向へ力が加わった時には角度を増やすことが、バランスを崩さないようにすることになるので、GYRODIRの値は
赤LED方向へ力が加わった時(→角度を減らす)
- 1の場合:回転角度=-α x 1=負の数
- 0の場合:回転角度=-α x -1=正の数
緑LED方向へ力が加わった時(→角度を増やす)
- 1の場合:回転角度=α x 1=正の数
- 0の場合:回転角度=α x -1=負の数
なので、GYRODIRの設定は「1」を指定すればいいということになりますね
もし、ジャイロセンサの取り付けが上の図と逆向きに付けた場合、赤と緑の方向が逆を向くため下の図のようになり、緑LED方向へ力が加わった時を例に考えてみると、角度を減少させればいいので、GYRODIRの値は「0」に設定すればいいことがわかります。
緑LED方向へ力が加わった時(→角度を減らす)
- 1の場合:回転角度=α x 1=正の数
- 0の場合:回転角度=α x -1=負の数
同じように、左足首のGYRODIRの設定を考えてみると、GYRODIRの設定は、「0」にすればいいことがわかります。
緑LED方向へ力が加わった時(→角度を減らす)
- 1の場合:回転角度=α x 1=正の数
- 0の場合:回転角度=α x -1=負の数
次に、前後方向のサーボのGYRODIRの設定について考えてみます。前後方向は、右も左も、足首、膝、股関節ともに、角度が大きくなると前に、角度が小さくなると後ろに体幹が回転します。
もし、ジャイロセンサーのLEDの赤色が前になるように付けた場合
赤LED方向へ力が加わった時(→角度を減らす)
- 1の場合:回転角度=-α x 1=負の数
- 0の場合:回転角度=-α x -1=正の数
なので、GYRODIRは「1」を指定すればいいことになりますね
ジャイロセンサーの感度調節とGYROSENSEコマンド
ジャイロセンサーの感度(α)は、ジャイロ本体の感度調節ネジと、GYROSENSEコマンドの値で決定されます。
α=K x (感度調節ネジ) x (GYROSENSE値)
感度調節ネジをプラスなほど、GYROSENSE値がより大きな値ほど、感度が高いことになりますし、もし、どちらかが0(ゼロ)であれば、αも0になり、ジャイロをオフにしたことと同じ意味になります。
GYROSENSE値は、0から255の範囲で設定します。
よく使われてるGYROSENSE値は
GYROSENSE G6A, 250, 250, 200, 250, 250, 0
GYROSENSE G6D, 250, 250, 200, 250, 250, 0
になります。GYROSETでオンになっているサーボモーターにしかGYROSENSE値は適応されないので、適応させないモーターのGYROSENSE値をわざわざ0にする必要もありません。
ジャイロ設定コマンドの適応と最終調節
GYROSET, GYRODIR, GYROSENSEのジャイロ設定コマンドは、MAINルーチンに入る前に書込んでおくと良いでしょう。なおジャイロセンサーが機能していると、上手く動作しないモーションがある場合は、GYROSETまたはGYROSENSEコマンドで、ジャイロ機能をオン/オフできるルーチンを作っておく必要があるかもしれません。
【最終調節】
- 絞っておいた感度調整ネジをプラス方向へ回して、感度を調整する。感度を上げすぎると揺れが止まらなくなってしまうので注意して下さい。
- 感度調節ネジを動かすと、中位調整がズレるので、もし赤緑両方のLEDが点灯しなくなった場合は再度調節して下さい。
- ジャイロ設定コマンドを適応させたプログラムを転送すると、ゼロ点そのものがズレてしまう場合があるかもしれません。ジャイロセンサーのLEDによる中位調整は、動作保証されていないそうなので、ジャイロ設定コマンド適応後、ゼロ点をしなおす必要があるかもしれません。
と、書いてきましたが、これも机上のことだけで、私のロボザックさんは、ゼロ点設定の時点で殆どプラスマイナス20度の上限近くのモーターがいくつかあるので、最初上手いこと動いていたんですが、今は、ジャイロセンサーをオンにすると無茶苦茶な角度をとってしまいます。ゼロ点設定の調整ではもうどうしようもないし、GYRODIRの向きもいろいろ試してみましたが、書いた通りにはなかなかうまくいきませんね。。。
----------------
にほんブログ村
| 固定リンク
「ROBOBASIC講座」カテゴリの記事
- IF文の中のIF文(2008.10.31)
- 制限の勧め(2008.10.09)
- ROBOBASIC講座(GYROSET, GYRODIR, GYROSENSE)(2008.09.21)
- ROBOBASIC講座(MOVEPOS、POS)(2008.08.21)
- ROBOBASIC講座(TIPS: FILL文)(2008.07.15)
この記事へのコメントは終了しました。
コメント