第8章 moveJ

本章について

本章で扱う moveJ() は SDU Robotics RTDEControlInterface が提供する PC 側モーション API であり、robot 側では control URScript を介して URScript の movej に接続される。関節移動としては最も基本的なモーション API の一つである。

ティーチングポイント間の移動や待避位置への移動など、ほぼすべてのプログラムで使用される。

本章では

・moveJ のアルゴリズム ・パラメータ ・内部動作 ・速度 ・加速度 ・Blend ・戻り値 ・注意事項

について説明する。


8.1 moveJ とは

本章の moveJ() は SDU Robotics ur_rtde の API である。Universal Robots 公式 RTDE protocol に moveJ command が定義されているという意味ではない。

moveJ の J は

Joint

を意味する。

つまり

関節角度を目標値として移動する命令

である。

TCPの位置ではなく、

6軸それぞれの角度

q1

q2

q3

q4

q5

q6

を目標として動く。


8.2 動作イメージ

例えば

開始

Joint

0°

30°

10°

...

↓

終了

Joint

90°

10°

-30°

...

のように、

各軸が同時に動き、

最終的に目標角度へ到達する。

途中のTCP軌跡は保証されない。


8.3 TCPはどう動くか

TCPは

開始

○

↓

)

↓

○

終了

のような

曲線

になる。

したがって

加工

測定

レーザー

などには向かない。


8.4 利用用途

moveJ が向く用途

・ホームポジション

・退避

・教示点移動

・姿勢変更

・高速移動

・障害物の少ない空間


8.5 引数

代表的なAPI

moveJ(
    q,
    speed=1.05,
    acceleration=1.4,
    asynchronous=False
)

8.6 q

目標関節角度である。

例

q = [
    0.0,
    -1.57,
    1.57,
    0.0,
    1.57,
    0.0,
]

単位は

rad

Degreeではない。


8.7 speed

関節速度

単位

rad/s

である。

例

speed=0.5

安全速度ではなく

目標速度

である。

Controllerが制限する場合もある。


8.8 acceleration

加速度

単位

rad/s²

例

acceleration=1.2

加速度が大きすぎると

振動

衝撃

が増える。


8.9 asynchronous

False

↓

同期

True

↓

非同期

同期

moveJ()

↓

移動終了

↓

return

非同期

moveJ()

↓

return

↓

ロボット移動

8.10 戻り値

通常

True

成功

False

失敗

を返す。

ただし

通信断

Protective Stop

などでは

RuntimeError

になる場合がある。


8.11 Blend Radius

moveJでは

Blend Radius

を指定できる。

○

↓

停止

↓

○

ではなく

○

╲

╱

○

のように

滑らかにつなぐ。

停止時間が減る。


8.12 到達判定

moveJ終了は

APIが戻ったことではなく

現在位置との差

で判定する方が安全である。

例

現在角度

↓

目標角度との差

↓

1e-3 rad以下

↓

終了

8.13 Joint Limit

moveJは

Joint Limit

を超える姿勢へは移動できない。

Inverse Kinematics以前に

関節範囲

が確認される。


8.14 衝突判定

途中で

・Protective Stop

・Safety Stop

・Emergency Stop

が発生すると

moveJは正常終了しない。

そのため

try:

    ok = rtde_c.moveJ(q)

except RuntimeError:

    ...

とする。


8.15 moveJの長所

・高速

・安定

・逆運動学不要

・CPU負荷が低い

・教示点に適する


8.16 moveJの短所

・TCP軌跡を保証しない

・加工には向かない

・障害物を避けない

・途中姿勢を指定できない


8.17 moveLとの比較

項目

moveJ

moveL

補間

Joint

TCP

速度

速い

遅い

TCP軌跡

保証しない

直線

加工

×

○

退避

○

△

ティーチング

◎

○


8.18 推奨用途

基本的には

Home
↓
moveJ
↓
対象近く
↓
moveJ
↓
加工開始位置
↓
moveL
↓
加工
↓
moveL
↓
退避
↓
moveJ

という組み合わせになる。

多くの産業用ロボットプログラムもこの構成を採用している。


まとめ

moveJはURで最も基本となるモーション命令である。

関節空間を補間するため高速かつ安定であり、

退避や姿勢変更には最適である。

一方、

TCP軌跡は保証されないため、

加工や計測では moveL を使用する。

次章では moveL を詳しく説明する。