# 第14章 座標系(Base・TCP・Tool・Feature) ## 本章について UR を使用する上で最も重要なのは座標系の理解である。 moveL servoL Force Mode TCP設定 などはすべて座標系を基準として動作する。 本章では ・Base座標 ・Tool座標 ・TCP ・Feature ・Pose ・Rotation Vector について説明する。 --- # 14.1 なぜ座標系が必要か 例えば ``` X方向へ100 mm ``` と言っても 「どのXなのか」 が分からない。 候補として ・ロボット基準 ・工具基準 ・ワーク基準 などが存在する。 そのため 座標系 が必要になる。 --- # 14.2 Base座標 Base座標は ロボット本体 に固定された座標系である。 ``` +Z ↑ │ │ ○────→ +X / +Y ``` ロボットが動いても Base座標は動かない。 最も基本となる座標系である。 --- # 14.3 Tool座標 Tool座標は 工具先端 に固定された座標系である。 例えば ``` Gripper ──────► TCP +X ``` ロボットが回転すると Tool座標も一緒に回転する。 --- # 14.4 TCP TCP Tool Center Point とは 工具の制御点 である。 例えば ``` Flange ↓ グリッパ ↓ 吸着ノズル ↓ ここがTCP ``` となる。 Controllerは TCPが 目的位置へ行くように Jointを計算する。 --- # 14.5 TCP設定 TCPは Teach Pendant または API から設定できる。 例えば ``` Flange ↓ 100 mm ↓ 吸着パッド ``` なら TCPは 100 mm先 になる。 TCP設定が間違うと moveL Force Mode などは期待通り動作しない。 --- # 14.6 Pose URでは位置姿勢を ``` [ x, y, z, rx, ry, rz ] ``` で表現する。 前半 ``` x y z ``` 位置 後半 ``` rx ry rz ``` 姿勢 である。 --- # 14.7 単位 位置 ``` m ``` 姿勢 ``` rad ``` である。 例えば ``` 500 mm ``` は ``` 0.5 ``` と入力する。 --- # 14.8 Rotation Vector URは Euler角 ではなく Rotation Vector を採用している。 ``` (rx,ry,rz) ``` は 回転軸 × 回転角 である。 例えば ``` 180° X軸回転 ``` なら ``` π 0 0 ``` になる。 --- # 14.9 なぜEuler角ではないか Euler角は ``` Roll Pitch Yaw ``` で分かりやすい。 しかし Gimbal Lock などの問題がある。 Rotation Vectorは これを回避できる。 --- # 14.10 Base座標での移動 例えば ``` moveL X+100 mm ``` なら Base座標では 常に ロボット前方 へ動く。 Toolの向きは関係ない。 --- # 14.11 Tool座標での移動 Tool座標では ``` Tool X ``` 方向へ動く。 例えばToolが 90° 回転すると 同じ ``` Tool X ``` でも Baseでは Y方向 になる。 --- # 14.12 BaseとToolの違い Base ``` 世界が固定 Toolが動く ``` Tool ``` Toolに座標が付いてくる ``` である。 --- # 14.13 Feature座標 Featureは ユーザーが定義する座標系である。 例えば 机 治具 ワーク などに設定する。 ``` Base ↓ Feature ↓ TCP ``` という階層になる。 --- # 14.14 ワーク座標 例えば ワーク左下 を ``` Feature原点 ``` とすると ワーク交換後も Featureだけ更新すれば 同じプログラムを利用できる。 --- # 14.15 座標変換 Controller内部では ``` Tool ↓ Base ↓ Joint ``` などの変換を毎周期実行している。 利用者は通常これを意識する必要はない。 --- # 14.16 poseTrans() URScriptでは ``` poseTrans(A,B) ``` を利用すると ``` A の座標系で B だけ移動 ``` を計算できる。 Tool基準移動などでよく利用される。 --- # 14.17 poseInv() ``` poseInv() ``` は Poseの逆変換 を計算する。 座標変換では頻繁に利用される。 --- # 14.18 よくある失敗 ・mmを入力する ・Degreeを入力する ・TCP未設定 ・BaseとToolを混同する ・Feature更新を忘れる --- # 14.19 ur_ctrl.pyでの設計 高レベルAPIでは ```python move_base() move_tool() set_tcp() get_tcp() set_feature() ``` などを提供すると 利用者は座標系を意識しやすい。 --- # 14.20 実運用での考え方 一般的な自動化装置では ``` Base ↓ Feature ↓ TCP ``` という三層構造で考える。 Baseは設備固定。 Featureは治具。 TCPは工具先端。 これらを適切に分離することで、 ワーク交換や治具変更時にもプログラムの修正を最小限にできる。 --- # まとめ URでは ・Base ・Tool ・TCP ・Feature という複数の座標系が存在する。 moveL Force Mode servoL などを正しく利用するためには、 どの座標系で指令しているかを常に意識することが重要である。 次章では、Inverse Kinematics(順運動学・逆運動学)と姿勢表現について詳しく説明する。