第10章 speedJ と speedL
本章について
これまで説明した moveJ や moveL は、
「目標位置まで移動する」
命令であった。
一方、
speedJ
speedL
は
「一定速度で動かす」
ための命令である。
ジョイスティック操作やビジュアルサーボ、追従制御などで利用される。
10.1 Move命令との違い
moveJ
目標位置
↓
Controllerが軌道生成
↓
停止
speedJ
目標速度
↓
速度維持
↓
停止命令まで動き続ける
ここが最も大きな違いである。
10.2 speedJとは
speedJ は
Joint Speed
である。
6軸それぞれの
速度
を指定する。
例
qd = [
0.1,
0.0,
0.0,
0.0,
0.0,
0.0,
]
rtde_c.speedJ(qd, 1.0, 2.0)
10.3 引数
speedJ(
qd,
acceleration,
time
)
引数 |
内容 |
|---|---|
qd |
関節速度 |
acceleration |
加速度 |
time |
実行時間 |
10.4 qd
Joint速度
[
dq1,
dq2,
dq3,
dq4,
dq5,
dq6
]
単位
rad/s
である。
10.5 time
2.0
なら
2秒間
その速度を維持する。
0 を指定する実装例もあるが、
継続時間の扱いは ur_rtde のバージョンに依存するため、使用中のバージョンの API を確認すること。
10.6 speedL
speedL は
TCP速度
を指定する。
[
vx,
vy,
vz,
wx,
wy,
wz
]
単位
m/s
rad/s
である。
10.7 speedL例
speed = [
0.1,
0.0,
0.0,
0.0,
0.0,
0.0,
]
rtde_c.speedL(speed,0.5,2.0)
TCPが
X方向へ
0.1 m/s
で移動する。
10.8 speedStop
速度制御は
Move命令のように
自動停止しない。
終了時は
rtde_c.speedStop()
を呼ぶ。
または
stopJ()
stopL()
を使用する。
10.9 速度制御の特徴
Move命令
位置制御
Speed命令
速度制御
である。
位置は保証されない。
10.10 利用例
ジョイスティック
Joystick
↓
速度
↓
speedJ
画像追従
Camera
↓
速度計算
↓
speedL
力制御
Force
↓
PID
↓
speedL
など。
10.11 Moveとの比較
項目 |
moveJ |
speedJ |
|---|---|---|
入力 |
位置 |
速度 |
終了 |
自動 |
停止命令 |
用途 |
教示 |
リアルタイム |
項目 |
moveL |
speedL |
|---|---|---|
入力 |
Pose |
TCP速度 |
終了 |
自動 |
停止命令 |
用途 |
加工 |
追従制御 |
10.12 よくある失敗
Move命令と同じ感覚で
speedJ(...)
だけ実行すると、
停止命令を送るまで動作を続ける場合がある。
リアルタイム制御では必ず停止シーケンスまで設計する。
10.13 ur_ctrl.pyでの設計
一般的なアプリケーションでは
speed_j()
speed_l()
stop_motion()
などの高レベルAPIとして公開すると扱いやすい。
速度指令と停止命令を対にして利用することを推奨する。
まとめ
speedJ と speedL は
「位置」
ではなく
「速度」
を制御するAPIである。
ジョイスティック操作やリアルタイム追従制御では move 系よりも重要になる。
一方、
通常のティーチングや自動運転では moveJ / moveL の方が利用頻度は高い。
次章では servoJ と servoL を説明する。