# 第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 を説明する。