« RZ1Music v0.1.0 公開 | トップページ | セクシーボイスアンドロボ »

ROBOBASIC講座(ZERO, INIT/GETMOTORSET)

【ZERO (ゼロ)】
 サーボモーターの基準角度(零点)を設定する。
 構文;ZERO [グループ指定], [モータn基準角度], .....
  例:ZERO G8B, 80, 120, 115, 80, 117, 88, 95, 120

【INIT (イニット)】
 ロボットの初期の動作姿勢を設定する。
 構文:INIT [グループ指定], [モーターn角度],……
  例:INIT G8A, 100, 45, 67, 44, 132, 122, 76, 81

【GETMOTORSET (ゲットモーターセット)】
 現在のサーボモーターの位置を読み込み、現在の状態を維持する。
 構文:GETMOTORSET [グループ指定], [モーターn入力設定指定],…
  例:GETMOTORSET G8A, 1, 1, 1, 1, 0, 0, 0, 0

《ZEROコマンドとゼロ点設定について》

今週の日曜日にやっと49号まで、つまりロボザックが完成しましたので、ゼロ点設定を行いました。上半身ができた時に一度roboBASICを使ってやったことがあるので、簡単に行くだろうと思っていましたが、結構苦労しましたsweat01

ZEROコマンドは、モータの個体差などにより、それぞれ異なっている基準角度を補正する命令です。ですからロボットが組み上がったらまず一番最初に設定する必要があるコマンドと言えますよね。

ZEROコマンドの決まり事としては、   MR-C3000系コントローラーでは

 
    • 必ずグループ宣言で行うこと。
    • 設定範囲は、80~120まで

となっているようです。

マニュアルに、現在のroboBASICには、 "零点設定"メニューが別途に用意されているので、この過程が必要なく簡単に処理できるようになっています。とあります。以前はこのような機能がなく、このコマンドを使ってゼロ点を設定したんですねflair

さて、私がこのゼロ点設定に苦労したかといいますと、私のロボザックのゼロ点は以下だったからです。

ZERO G6A,116,  99, 100,  84, 114
ZERO G6B,102,  98, 102
ZERO G6C, 98,  99,  95
ZERO G6D, 83, 104, 100,  96, 103

(※DIR G24,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,1,0で設定した場合の値)

上肢だけで設定した時は、100前後そんなにズレていなかったのですが、下肢は結構ズレがあって、ゼロ点設定の「設定読込み」ボタンを押すと、左右の下肢がぶつかり合って、安全装置?が働いて、モーターがオフになってデータを読込めない状態だったんですわsweat01

そのままではroboBASICのゼロ点設定が使えなかったので以下の手順で行いました。

oneマニュアルにはDIRは全部1でやる的な感じで書いてありますが、普段は、DIR G24,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,1,0で使うことになるんでしょうから、それで設定することにしました。two私の場合は左右の下肢がぶつかってしまうことが一番の問題点だったので、足がぶつからないように股関節を外転させた状態(股を開いた状態)をゼロ点にするということで、#4と#23の股関節のモータの値をZEROコマンドの許容範囲最大の120に設定するようなコードを書き、これをコンパイルして、転送しました。

DIR G6A,1,0,0,1,0,0
DIR G6B,1,1,1,1,1,1
DIR G6C,0,0,0,0,0,0
DIR G6D,0,1,1,0,1,0

ZERO G6A, 100, 100, 100, 100, 120
ZERO G6B, 100, 100, 100
ZERO G6C, 100, 100, 100
ZERO G6D, 100, 100, 100, 100, 120

threeこうした後、"ゼロ設定"メニューを起動、「設定読込み」ボタンをクリックsign01今度はモータがぶつかり、安全装置?が働いてしまうことなく、無事最後まで読み取ってくれましたscissors


もし同様な問題でroboBASICのゼロ点設定機能が使えない方は、このZEROコマンドを使ってrやってみて下さいねhappy01paper

※RZ1Basicのゼロ点設定を使った感想sweat01

  • #5, #9,...など、上肢下肢で使ってないモータのZERO点の設定もできます。
  • それぞれのモータ値を動かすと、その場でモーターが動くので設定しやすいです。
  • 読込みボタンをクリックすると、roboBASICと同じく、最初に全部のゼロ点データを読込んでしまうので、私のトラブルと同じ様な状況の場合に対応できるようにしなくては(次のバージョンかな)

Parallels_desktopscreensnapz005_2

《INITとGETMOTORSETコマンドについて》

この2つのコマンドはマイコンの電源を入れた時に急激な動きにならないように、最初にどうするかを設定するコマンドであり、アナログサーボモーター (HITEC社の HS-シリーズ)の場合 INIT命令を使用し、ロボット専用のデジタルサーボモーター (HITEC社の HSR-シリーズ最新バージョン)の場合 GETMOTORSET命令を使用するとのことなので、ロボザックの場合は、GETMOTORSET命令を使えばいいということになりますねflair

GETMOTORSET命令は、例にあるように、"0"と"1"で設定し、それぞれ、"1"の場合には指定されたサーボモーターの現在値を読み込んで現在の状態を維持するようになり、"0"の場合にはコントローラーの初期値の100に移動します。

なので、使っているモータ番号を1として、以下のように書いて、プログラムの最初の方(初めてMOVEコマンドが実行される前)に書込んでおけばいいということになりますねflair

GETMOTORSET G24,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,0


|

« RZ1Music v0.1.0 公開 | トップページ | セクシーボイスアンドロボ »

ROBOBASIC講座」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/221673/40555480

この記事へのトラックバック一覧です: ROBOBASIC講座(ZERO, INIT/GETMOTORSET):

« RZ1Music v0.1.0 公開 | トップページ | セクシーボイスアンドロボ »