第12章 Force Mode

本章について

通常のロボット制御は

位置

を制御する。

一方、Force Mode は

力

を制御する。

例えば

・一定荷重で押す

・部品を押し当てる

・面に沿って滑らせる

・バネのような動きをする

などを実現できる。


12.1 位置制御と力制御

通常の moveJ や moveL は

位置制御

である。

例えば

100 mm

まで移動しようとする。

途中に障害物があっても

可能な限り目標位置へ行こうとする。


Force Mode は

10 N

で押し続ける。

位置は保証されない。

代わりに

力

が一定になる。


12.2 Force Mode の用途

代表例

・コネクタ挿入

・部品組立

・研磨

・バリ取り

・ボタン押し

・ばね測定

・荷重試験


12.3 基本構成

Force Mode は

開始

↓

Force Mode

↓

一定周期で制御

↓

Force Mode終了

という流れになる。

moveJ のような

一回だけ送る命令

ではない。


12.4 基本API

例

rtde_c.forceMode(
    task_frame,
    selection_vector,
    wrench,
    force_type,
    limits,
)

Force Mode 中は Controller が内部で力制御を行う。


12.5 task_frame

力制御を行う座標系である。

例えば

Base座標

Tool座標

Feature座標

などを指定できる。

通常は

TCP座標

を利用することが多い。


12.6 selection_vector

どの自由度を

力制御

するか指定する。

[
1,
1,
1,
0,
0,
0
]

なら

XYZ

のみ力制御する。

回転方向は位置制御になる。


例

[
0,
0,
1,
0,
0,
0
]

なら

Z方向だけ押し付ける。


12.7 wrench

目標荷重

[
Fx,
Fy,
Fz,
Mx,
My,
Mz
]

単位

N

Nm

である。

例えば

Fz=10 N

なら

下方向へ10 N

押し付ける。


12.8 force_type

Controller の制御方式を指定する。

通常は

標準設定

を利用すれば十分である。

特殊な用途以外で変更することは少ない。


12.9 limits

許容変位

である。

例えば

10 mm

まで押しても

10 N

にならなければ

それ以上は動かない。

安全機能でもある。


12.10 Force Mode 中の動作

Controller 内部では

現在荷重

↓

目標荷重との差

↓

PID

↓

Joint補正

↓

Motor

という制御が毎周期行われる。

利用者は

毎回荷重を計算する必要はない。


12.11 荷重取得

Force Mode と組み合わせるAPI

rtde_r.getActualTCPForce()

戻り値

Fx

Fy

Fz

Mx

My

Mz

現在荷重を確認できる。


12.12 終了

Force Mode は

forceModeStop()

で終了する。

終了後は

通常の

moveJ

moveL

へ戻る。


12.13 よくある用途

コネクタ挿入

moveJ

↓

moveL

↓

ForceMode

↓

10 N

↓

挿入

↓

終了

ボタン押し

moveL

↓

ForceMode

↓

5 N

↓

0.5秒保持

↓

終了

面追従

ForceMode

↓

一定荷重

↓

XY方向へMove

研磨などで利用される。


12.14 注意事項

Force Mode は

・TCP設定

・Payload設定

が正しくないと

期待した荷重にならない。

実機では

Payload のキャリブレーションが重要である。


12.15 moveJとの違い

moveJ

位置

↓

停止

Force Mode

荷重

↓

一定保持

目的が全く異なる。


12.16 ur_ctrl.pyでの設計

高レベルAPIでは

start_force_mode()

stop_force_mode()

のように

開始・終了を分けると扱いやすい。

また

get_tcp_force()

を組み合わせることで、

力監視を容易に実装できる。


まとめ

Force Mode は

位置ではなく

荷重

を制御するための機能である。

通常の Move 系 API とは目的が異なり、

組立

押し付け

研磨

接触作業

などで利用される。

Force Mode を利用する際は

・TCP設定

・Payload設定

・ForceModeStop()

を適切に設定することが重要である。

次章では Freedrive Mode を説明する。