第9章 moveL
本章について
moveL は TCP(Tool Center Point)が直線となるように補間するモーション命令である。
加工、計測、塗布、溶接など、TCPの軌跡が重要となる作業では moveL を使用する。
一方で、moveJ より計算量が多く、動作速度や姿勢制約の影響も受けやすい。
本章では
・moveL の内部動作 ・TCP座標系 ・姿勢補間 ・逆運動学 ・速度・加速度 ・利用上の注意
について説明する。
9.1 moveLとは
moveL の L は
Linear
を意味する。
TCP が
開始点
○────────────○
終了点
のように直線移動する。
途中姿勢は Controller が自動計算する。
9.2 moveJとの違い
moveJ
Joint
↓
Joint補間
↓
TCPは曲線
moveL
TCP
↓
TCP補間
↓
Jointは逆運動学で計算
つまり
moveJ は Joint が基準
moveL は TCP が基準
である。
9.3 TCPとは
TCP
Tool Center Point
とは、
ロボット先端で
「制御対象となる点」
である。
例えば
Flange
↓
Gripper
↓
吸着パッド
↓
ここがTCP
となる。
TCP設定が間違っていると
moveLは期待した軌跡にならない。
9.4 Pose
moveLでは
Jointではなく
Pose
を指定する。
[
x,
y,
z,
rx,
ry,
rz
]
単位
x,y,z
↓
m
rx,ry,rz
↓
rad
9.5 姿勢
位置だけではなく
姿勢も補間される。
開始
↗
↓
終了
→
途中姿勢も滑らかに変化する。
9.6 内部処理
moveLでは
Pose
↓
TCP補間
↓
Inverse Kinematics
↓
Joint角度
↓
Servo
という流れになる。
moveJより処理が複雑である。
9.7 Inverse Kinematics
moveLでは
毎制御周期ごとに
Inverse Kinematics
を解く。
TCP
↓
Joint
このため
到達不能姿勢
ではエラーになる。
9.8 特異点
moveLでは
Singularity
に近づくと
Joint速度が急激に増加する。
代表例
・手首特異点
・肘特異点
などである。
速度制限に達すると
思ったより遅くなる。
9.9 speed
moveLでは
TCP速度
を指定する。
単位
m/s
である。
moveJとは単位が異なる。
9.10 acceleration
単位
m/s²
TCP加速度である。
9.11 Blend
moveLでも
Blend Radius
を指定できる。
○────○────○
↓
○╲__╱○
停止せず連続移動できる。
加工時間短縮によく利用される。
9.12 加工用途
moveLは
・レーザー加工
・3Dプリンタ
・ディスペンサ
・接着剤塗布
・画像計測
などで利用される。
TCP軌跡が保証されるためである。
9.13 moveLが向かない用途
単なる
待避位置
ホーム位置
教示点移動
には
moveJ
の方が高速である。
9.14 到達不能
例えば
Workspace外
や
Joint Limit
により
Inverse Kinematics
が解けない場合
moveLは失敗する。
9.15 姿勢変化
moveLでは
位置だけではなく
姿勢も重要である。
例えば
開始
Tool →
終了
Tool ↑
では
姿勢も補間される。
大きな姿勢変化は
途中でJoint Limitになる場合がある。
9.16 moveJとの使い分け
一般的な自動機では
Home
↓
moveJ
↓
加工開始近く
↓
moveJ
↓
加工開始点
↓
moveL
↓
加工
↓
moveL
↓
退避
↓
moveJ
となる。
加工区間だけ moveL を使う。
9.17 よくある失敗
・TCP設定忘れ
・単位を mm と勘違い
・rx,ry,rz を Degreeで入力
・Workspace外
・特異点
・姿勢変更が大きすぎる
9.18 ur_ctrl.pyでの実装
ur_ctrl.pyでは
move(
pose,
motion="line"
)
のように
moveLを内部で呼び出す構成が分かりやすい。
利用者は
RTDEControlInterface
を直接呼ぶ必要がない。
9.19 moveJとmoveLの選択指針
迷った場合は次を基準とする。
・TCP軌跡が重要 → moveL
・最終姿勢だけ合えばよい → moveJ
・高速移動 → moveJ
・加工・計測 → moveL
まとめ
moveL は TCP を基準とした直線補間命令である。
moveJ より高精度な軌跡を実現できる一方で、
・逆運動学 ・TCP設定 ・特異点 ・姿勢補間
などを考慮する必要がある。
実際の自動化では、
「移動区間は moveJ」
「作業区間は moveL」
という使い分けが最も一般的である。
次章では moveP と moveC を説明する。