URCtrl 制御マニュアル

URCtrl は、Universal Robots を Python から制御するための単独ラッパーではない。研究現場で複数の協働ロボットを同じ操作 API で扱うための、ロボット共通 I/F の UR 実装である。

本プロジェクトの目的は、COBOTTA から UR へ最小移植することではない。COBOTTA と UR を同程度の抽象度で扱える共通 API を定義し、研究者が装置制御・実験自動化・SPring-8 BL774 型の運用に利用できるシステムを提供することである。

したがって URCtrl は、COBOTTA 互換を参考にしつつも、COBOTTA を絶対基準とはしない。UR 実装で得られた妥当な設計は、逆に cobotta_ctrl 側へ反映され得る。


Contents:


目的

・研究者が使いやすい協働ロボット共通 API を提供する。
・COBOTTA / UR などの機種差を上位実験コードから隠蔽する。
・ロボット制御を、実験装置制御システムの一部として扱えるようにする。
・BL774 型、SPring-8 互換の実験自動化構成に接続できる設計にする。
・特定ロボットメーカーの API ではなく、研究用ロボット操作 API として整える。

URCtrl の位置づけ

実験スクリプト
    ↓
ロボット共通 I/F
    ↓
URCtrl / CobottaCtrl / 将来の他ロボット実装
    ↓
各ロボット固有 API
    ↓
ロボット本体

URCtrl はこのうち、UR 用の実装である。cobotta_ctrl は COBOTTA 用の実装である。両者は上下関係ではなく、同じ共通 I/F に従う兄弟実装である。

目次

・ 設計思想
・ 共通 I/F と BL774 型システム
・ クイックスタート
・ 単位と座標表現
・ 接続と初期化
・ 仮想変数 P/I/F/IO
・ 移動 API
・ 状態監視
・ IO と TCP
・ エラー処理と復旧
・ API Reference
・ チュートリアル
・ 実装差分と移植方針

最小例

from ur.ur_ctrl import UrCtrl, MotionMode

ROBOT_IP = "10.170.10.56"

with UrCtrl(ROBOT_IP) as robot:
    current = robot.current_position

    if current is not False:
        target = list(current)
        target[2] += 10.0

        robot.move(
            target,
            motion_mode=MotionMode.LINE,
            speed=20,
            accel=20,
            is_async=False,
        )

公開 I/F の P 座標は [x, y, z, rx, ry, rz] であり、位置は mm、姿勢は degree 表記の rotation vector である。J 座標は degree である。speed / accel / decel は 0 < value <= 100 の百分率である。


作者

  • Kengo NAKADA