# 第13章 Freedrive Mode ## 本章について Freedrive Mode は、サーボモータのトルク制御を利用して、人がロボットアームを直接手で動かせる機能である。 ティーチング作業では最も利用頻度が高い機能の一つであり、 ・教示点作成 ・位置合わせ ・試運転 ・メンテナンス などで利用される。 本章では ・Freedrive の仕組み ・Teach Pendant との関係 ・Python API ・CBシリーズとe-Seriesの違い について説明する。 --- # 13.1 Freedriveとは 通常、URロボットは ``` Motor ↓ 位置制御 ↓ 位置保持 ``` となっている。 そのため、人が押してもほとんど動かない。 Freedriveでは ``` Motor ↓ 重力補償 ↓ 外力追従 ``` へ制御モードが切り替わる。 その結果、 人が軽い力でロボットを動かせるようになる。 --- # 13.2 ティーチングとの関係 Freedrive は ティーチング そのものである。 一般的な流れ ``` Freedrive開始 ↓ 手でロボットを動かす ↓ 目的位置 ↓ 現在位置取得 ↓ 教示点保存 ``` となる。 --- # 13.3 Teach PendantでのFreedrive Teach Pendantでは Freedrive ボタン または 画面上の Freedrive 機能 から開始する。 開始すると ロボットを直接動かせる。 終了すると通常制御へ戻る。 --- # 13.4 Pythonから開始 ur_rtdeでは ```python rtde_c.teachMode() ``` またはバージョンによっては ```python rtde_c.freedriveMode() ``` を利用する。 内部的には Freedrive状態 へControllerを切り替える。 --- # 13.5 終了 終了は ```python rtde_c.endTeachMode() ``` または ```python rtde_c.endFreedriveMode() ``` を利用する。 終了後は moveJ moveL など通常制御へ戻る。 --- # 13.6 位置取得 Freedrive中でも ```python pose = rtde_r.getActualTCPPose() ``` や ```python q = rtde_r.getActualQ() ``` は利用できる。 そのため ``` 手で動かす ↓ 現在位置取得 ↓ 保存 ``` という教示が可能である。 --- # 13.7 教示プログラム例 ``` teachMode() ↓ ユーザーが手で動かす ↓ Enterキー ↓ getActualTCPPose() ↓ CSV保存 ↓ endTeachMode() ``` 非常に単純な構成で ティーチングソフトウェアを作成できる。 --- # 13.8 COBOTTAとの違い COBOTTAでは TakeArm ↓ Motor ON ↓ Free Mode という流れになる。 URでは Teach Mode を開始するだけで 同様の操作ができる。 考え方は非常によく似ている。 --- # 13.9 Payload設定 Freedriveでは Payload設定 が重要である。 重量設定が誤っていると ・重い ・勝手に動く ・保持しづらい などの現象が起きる。 --- # 13.10 Safety Freedrive中も 安全監視 は継続される。 衝突や過負荷が発生すると Protective Stop になる。 --- # 13.11 Remote Controlとの関係 PythonからTeach Modeを開始する場合も Remote Control が有効である必要がある。 Remote Modeでなければ 開始できない場合がある。 --- # 13.12 e-Series e-Seriesでは Force Sensor との組み合わせにより より自然な操作感になる。 ティーチング用途では e-Seriesの方が扱いやすい。 --- # 13.13 CBシリーズ CBシリーズでも Freedriveは利用できるが、 利用可能なAPIや操作方法が e-Seriesと一部異なる。 使用するControllerの世代を確認すること。 --- # 13.14 典型的な利用例 ``` Teach Mode開始 ↓ P1へ移動 ↓ 保存 ↓ P2へ移動 ↓ 保存 ↓ P3へ移動 ↓ 保存 ↓ Teach Mode終了 ``` このようにして ティーチングポイントを作成する。 --- # 13.15 Pythonサンプル ```python rtde_c.teachMode() input("Move robot and press Enter") pose = rtde_r.getActualTCPPose() print(pose) rtde_c.endTeachMode() ``` 最小構成の教示プログラムである。 --- # 13.16 ur_ctrl.pyでの実装 高レベルAPIとして ```python enter_freedrive() leave_freedrive() ``` または ```python teach_start() teach_stop() ``` を提供すると利用しやすい。 さらに ```python get_current_pose() ``` を組み合わせることで Teach Pendantを使わずに Pythonだけでティーチングツールを構築できる。 --- # まとめ Freedrive Mode は、 人が直接ロボットを動かすための制御モードである。 ティーチング用途では最も重要な機能の一つであり、 Pythonから ・Teach Mode開始 ・現在位置取得 ・Teach Mode終了 を組み合わせることで、 独自のティーチングソフトウェアを容易に作成できる。 次章では TCP・Base・Tool・Feature などの座標系について説明する。