DobotMagicianの速度は
- 速度 = 速度比 × 設定速度
となります。
速度を変えたい場合は速度比、設定速度の二つを変更する必要があります。
今回はDobotStudioから使用可能な
- Teaching & Playback
- Blockly
- Script
について速度比と設定速度の変更方法を記載します。
1.Teaching & Playback
Teaching & Playbackでは速度比、加速度比は写真赤枠内のパラメータから変更でき、範囲は1%~100%で初期値は50%です。
次に設定速度、設定加速度の設定方法を説明します。
設定画面は、Setting > Playback から開くことができます。
JointParamはMOVEJモード、JUMPモードの点への移動の速度に
CoordinateParamはMOVELモード、JUMPモードの上下の速度に影響します。
2.Blockly
Blocklyの場合でも、速度 = 速度比 × 設定速度となります。
速度比、設定速度の設定方法を確認します。
速度比は次の関数で設定できます。(引数の範囲は2つとも1~100です)
CoordinateParam設定速度は次の関数で設定できます。 (範囲については後述)
JointParamの設定速度は次のブロックで設定できます。(範囲については後述)
また、Blockyには、MOVEJモードでのPTPコマンドがないのでMOVELモードでの速度に満足できない場合はBlocklyではなくScriptを使用してください。
2点間の移動を高速で繰り返す動作をしたい場合のプログラムは次のようになります。
3.Script
Scriptの場合でも、速度 = 速度比 × 設定速度となります、速度比と設定速度の関数を見ていきましょう。
まず、速度比は
dType.SetPTPCommonParams(api, velocityRatio, accelerationRatio, isQueued=0)
で設定できます。引数のvelocityRatio、accelerationRatioの値は今までと同じく1~100の範囲になります。
PTPCoordinateParamsの設定は
dType.SetPTPCoordinateParams(api, xyzVelocity, xyzAcceleration, rVelocity, rAcceleration, isQueued=0)
で行うことができます。
PTPJointParamsの設定は次の関数で行います。
dType.SetPTPJointParams(api, j1Velocity, j1Acceleration, j2Velocity, j2Acceleration, j3Velocity, j3Acceleration, j4Velocity, j4Acceleration, isQueued=0)
Bloclyで紹介した高速に2点間の移動を繰り返すプログラムをスクリプトにすると次のようになります。
dType.SetPTPCoordinateParamsEx(api,2000,2000,2000,2000,1)
dType.SetPTPCommonParamsEx(api,100,100,1)
while True:
current_pose = dType.GetPose(api)
dType.SetPTPCmdEx(api, 2, 200, 100, 0, current_pose[3], 1)
current_pose = dType.GetPose(api)
dType.SetPTPCmdEx(api, 2, 200, (-100), 0, current_pose[3], 1)
4.速度・加速度の範囲について
linearモードの速度・加速度の値は4000程度まで上げることができます。jointモードの速度・加速度は1100程度まで上げることができます。この値より大きくするとアームのモータが自身の慣性によって脱調します。
5.おまけ
Scriptのプログラムに慣れていない場合はBlocklyから作成することができます。
Blockly右下にBloclyで作成したプログラムをScriptに変換したものが出力されます。これをコピーし、Scriptに貼り付けて実行すると同じ動作をすることができます。
また、Scriptの長所としてBlocklyに比べ自由度が増すという点があります。例えばBlocklyではMOVEJモードでのPTPコマンドは使用できませんが、Scriptなら使用できます。
次に,ScriptでのPTPCmdをMOVEJモードで使用する方法を示します。
dType.SetPTPCmd(api, ptpMode, x, y, z, rHead, isQueued=0)
の説明を見てみると、第二引数のptpModeを変えることでモードを変更できるようです。MOVEJモードにしたい場合は、ptpModeに1を与えることで設定でるようです。
高速に2点間の移動を繰り返すプログラムをMOVEJモードで動かす場合はこのようになります。
dType.SetPTPJointParamsEx(api,1000,1000,1000,1000,1000,1000,1000,1000,1)
dType.SetPTPCommonParamsEx(api,100,100,1)
while True:
current_pose = dType.GetPose(api)
dType.SetPTPCmdEx(api, 1, 200, 100, 0, current_pose[3], 1)
current_pose = dType.GetPose(api)
dType.SetPTPCmdEx(api, 1, 200, (-100), 0, current_pose[3], 1)
6. 最後に
ここまでで不明な点、疑問点などございましたら、下記のメールアドレスまでお問い合わせください。
お問い合わせ : dobot@techshare.co.jp