ur.hand package
Submodules
ur.hand.robotiq_hand module
Robotiq グリッパ固有の低レベル制御クラス。
このモジュールは、Universal Robots 上で動作する Robotiq Grippers URCap が 公開する TCP ソケットへ接続し、Robotiq の ASCII コマンドを送受信する。
本モジュールが扱う position、speed、force は、すべて Robotiq
固有のデバイス値である。値域は原則として 0 から 255 であり、
mm、N、% などの物理量ではない。
ロボット共通 I/F、COBOTTA 互換 I/F、物理単位からデバイス値への変換、
および使用するハンドメーカーの選択は上位の UrCtrl が担当する。
このクラスは Robotiq 固有プロトコルの通信と状態取得だけを担当する。
基本的な使用順序は次のとおりである。
connect()で Robotiq URCap の TCP ポートへ接続する。activate()でグリッパを起動状態へ移行する。open()、close()、move()でグリッパを動作させる。disconnect()でソケットを閉じる。
同一ソケット上のコマンド送受信は内部ロックで直列化される。ただし、 複数スレッドから同時に高レベル動作命令を発行した場合の動作順序までは 保証しないため、呼び出し側で動作シーケンスを管理すること。
- class RobotiqGripperStatus(*values)[source]
Bases:
EnumRobotiq グリッパの起動状態を表す列挙型。
STA変数の値を Python 側で扱いやすくするために使用する。 Robotiq プロトコルで未使用の値は列挙していない。- ACTIVATING = 1
- ACTIVE = 3
- RESET = 0
- class RobotiqHand(robot_ip, config=None, logger=None, log_level=None)[source]
Bases:
objectRobotiq グリッパ固有プロトコルを扱う低レベル制御クラス。
position、speed、forceはすべて Robotiq のデバイス値0から255で扱う。単位変換や他ロボットとの互換処理は行わない。接続先は Robotiq Grippers URCap が動作する Universal Robots 本体であり、 グリッパへ直接 TCP 接続するクラスではない。
Notes
connect()前に動作命令を実行するとRuntimeErrorとなる。activate()の既定値では自動校正を実行しない。auto_calibrate()は開閉動作を伴うため、周囲に障害物がないことを 確認してから明示的に実行する。open()とclose()は低レベル API であり、speedとforceを Robotiq デバイス値で指定する必要がある。
- Parameters:
robot_ip (str)
config (RobotiqHandConfig | None)
logger (Any | None)
log_level (str | None)
- ACT = 'ACT'
- ADR = 'ADR'
- ATR = 'ATR'
- DEFAULT_PORT = 63352
- ENCODING = 'UTF-8'
- FLT = 'FLT'
- FOR = 'FOR'
- GTO = 'GTO'
- MAX_FORCE = 255
- MAX_FORCE_N = 235.0
- MAX_POSITION = 255
- MAX_POSITION_MM = 85.0
- MAX_SPEED = 255
- MAX_SPEED_MM_S = 150.0
- MIN_FORCE = 0
- MIN_FORCE_N = 20.0
- MIN_POSITION = 0
- MIN_POSITION_MM = 0.0
- MIN_SPEED = 0
- MIN_SPEED_MM_S = 20.0
- OBJ = 'OBJ'
- POS = 'POS'
- PRE = 'PRE'
- SPE = 'SPE'
- STA = 'STA'
- _require_socket()[source]
接続済みソケットを返す。
- Returns:
現在保持している接続済み TCP ソケット。
- Raises:
RuntimeError –
connect()が完了していない場合。- Return type:
socket
- activate(auto_calibrate=False)[source]
グリッパを起動状態へ移行する。
すでに起動済みの場合は activation シーケンスを再実行しない。
auto_calibrateをTrueにした場合だけ、起動後に全開・全閉・ 再全開の校正動作を実行する。- Parameters:
auto_calibrate (bool) –
Trueの場合は起動後にauto_calibrate()を 実行する。既定値はFalse。- Returns:
起動処理が完了した場合は
True。ACT=1の設定が acknowledge されなかった場合はFalse。- Return type:
bool
Notes
自動校正は実際の開閉動作を伴う。通常の起動では既定値の
Falseを使用し、校正が必要な場合だけ明示的に有効化する。
- auto_calibrate()[source]
全開・全閉動作からデバイス値の可動範囲を校正する。
全開、全閉、再全開の順に動作させ、実際に到達した位置を
_min_positionと_max_positionに保存する。- Returns:
校正が完了した場合は
True。- Raises:
RuntimeError – 各校正動作が目標位置へ到達しなかった場合。
- Return type:
bool
Warning
このメソッドはグリッパを実際に開閉する。指や治具、試料が 可動範囲内にないことを確認してから実行すること。
- close(speed, force, wait=True)[source]
Robotiq の全閉位置へ移動する。
- Parameters:
speed (int) – 閉動作速度の Robotiq デバイス値
0から255。force (int) – 把持力の Robotiq デバイス値
0から255。wait (bool) –
Trueの場合は停止または目標到達まで待機する。
- Returns:
wait=Trueの場合は(current_position, object_status)。wait=Falseの場合は(acknowledged, requested_position)。- Return type:
Tuple[bool, int] | Tuple[int, RobotiqObjectStatus]
- connect()[source]
Robotiq Grippers URCap の TCP ソケットへ接続する。
すでに接続済みの場合は新しいソケットを作成せず
Trueを返す。- Returns:
接続済み、または接続に成功した場合は
True。- Raises:
OSError – TCP ソケットの作成または接続に失敗した場合。
- Return type:
bool
- disconnect()[source]
Robotiq Grippers URCap との TCP ソケット接続を閉じる。
未接続の場合も正常終了として扱う。
shutdown()が失敗した場合でも ソケットを閉じ、内部の接続参照を解除する。- Returns:
切断処理が完了した場合は
True。- Return type:
bool
- emergency_release(direction_open, wait=True)[source]
Robotiq の auto-release を実行する。
- Parameters:
direction_open (bool) –
Trueの場合は開方向、Falseの場合は 閉方向へ auto-release する。wait (bool) –
Trueの場合はOBJがMOVING以外になるまで待つ。
- Returns:
コマンドが acknowledge され、必要な待機処理が完了した場合は
True。コマンドが拒否された場合はFalse。- Return type:
bool
Warning
auto-release は非常時の解放動作である。通常の開閉命令の代用には 使用しないこと。
- get_status()[source]
Robotiq 固有の主要状態を辞書で返す。
- Returns:
active、position、object_status、fault_status、is_open、is_closedを含む辞書。- Return type:
Dict[str, int | bool | RobotiqObjectStatus]
- get_variable(variable)[source]
Robotiq 変数を1個取得する。
- Parameters:
variable (str) – 取得する Robotiq プロトコル変数名。
- Returns:
応答に含まれる整数値。
- Raises:
RuntimeError – TCP 接続されていない場合。
ValueError – 応答形式または応答変数名が期待と一致しない場合。
OSError – ソケット送受信に失敗した場合。
- Return type:
int
- is_connected()[source]
TCP ソケットの参照を保持しているか返す。
- Returns:
connect()後かつdisconnect()前であればTrue。- Return type:
bool
- move(position, speed, force)[source]
Robotiq のデバイス値を指定して移動を開始する。
指定値は許容範囲へクリップした後、
POS、SPE、FOR、GTOを1回のSETコマンドで送信する。このメソッドは動作完了を 待機しない。- Parameters:
position (int) – 目標位置のデバイス値。小さい値が開側、大きい値が閉側。
speed (int) – 動作速度のデバイス値
0から255。force (int) – 把持力のデバイス値
0から255。
- Returns:
(acknowledged, resolved_position)。第1要素はコマンドが acknowledge されたか、第2要素はクリップ後に送信した目標位置。- Raises:
RuntimeError – TCP 接続されていない場合。
- Return type:
Tuple[bool, int]
- move_and_wait_for_position(position, speed, force)[source]
移動を開始し、停止または目標到達まで待機する。
move()の acknowledge を確認した後、要求位置PREが 送信位置へ更新されるまで待機する。その後、OBJがMOVING以外に なるまで監視する。- Parameters:
position (int) – 目標位置の Robotiq デバイス値。
speed (int) – 動作速度の Robotiq デバイス値。
force (int) – 把持力の Robotiq デバイス値。
- Returns:
(current_position, object_status)。現在位置と停止理由を返す。- Raises:
RuntimeError – 移動コマンドが acknowledge されなかった場合。
- Return type:
Tuple[int, RobotiqObjectStatus]
- open(speed, force, wait=True)[source]
Robotiq の全開位置へ移動する。
- Parameters:
speed (int) – 開動作速度の Robotiq デバイス値
0から255。force (int) – 開動作時の力の Robotiq デバイス値
0から255。wait (bool) –
Trueの場合は停止または目標到達まで待機する。
- Returns:
wait=Trueの場合は(current_position, object_status)。wait=Falseの場合は(acknowledged, requested_position)。- Return type:
Tuple[bool, int] | Tuple[int, RobotiqObjectStatus]
- property port: int
Robotiq URCap へ接続する TCP ポート番号を返す。
- reset()[source]
Robotiq の activation と auto-release を解除する。
ACT=0およびATR=0を設定し、グリッパ状態がRESETに 遷移するまで待機する。これはactivate()の前処理として使用する。- Returns:
リセット状態への移行が完了した場合は
True。- Raises:
RuntimeError – TCP 接続されていない場合。
ValueError – Robotiq から不正な応答を受信した場合。
- Return type:
bool
- property robot_ip: str
Robotiq URCap が動作する Universal Robots の IP アドレスを返す。
- set_variable(variable, value)[source]
Robotiq 変数を1個設定する。
- Parameters:
variable (str) – Robotiq プロトコルの変数名。
value (int | float) – 送信する数値。
- Returns:
ackを受信した場合はTrue。- Return type:
bool
- set_variables(variables)[source]
Robotiq 変数を1コマンドでまとめて設定する。
OrderedDictの順序でSETコマンドを組み立てる。同一ソケット上の 送受信は_command_lockで排他制御する。- Parameters:
variables (OrderedDict[str, int | float]) – 変数名と値を保持する
OrderedDict。- Returns:
応答が厳密に
b"ack"である場合はTrue。- Raises:
RuntimeError – TCP 接続されていない場合。
OSError – ソケット送受信に失敗した場合。
- Return type:
bool
- class RobotiqHandConfig(port=63352, socket_timeout=2.0)[source]
Bases:
objectRobotiq ハンド固有の通信設定。
- Parameters:
port (int)
socket_timeout (float)
- port
Robotiq Grippers URCap が公開する TCP ポート番号。 通常は
63352を使用する。- Type:
int
- socket_timeout
TCP 接続および送受信のタイムアウト秒数。
- Type:
float
- port: int = 63352
- socket_timeout: float = 2.0
ur.hand.robotiq_hand_interface module
RobotiqHand 用の共通ハンド I/F 引数変換。
- class RobotiqHandInterface(hand)[source]
Bases:
object共通ハンド I/F の引数を RobotiqHand 用の値へ変換する。
このクラスはハンドの通信や制御を行わない。 共通 I/F の position [mm]、force [N]、speed [%] を、 対応する RobotiqHand が受け取る raw 値へ変換する。
- DEFAULT_FORCE_RAW = 255
- DEFAULT_SPEED_PERCENT = 100.0
- _convert_force(force)[source]
把持力 [N] を Robotiq raw 値へ変換する。
force が指定されていない位置指令では、Robotiq の通信上必要な force 値として内部既定値を使用する。
- convert(pos=None, *, position=None, force=None, direction=True, relative=False, speed=None)[source]
共通 I/F の引数を RobotiqHand 用に一括変換する。
- Parameters:
pos – 開口幅 [mm]。position の互換引数。
position – 開口幅 [mm]。
force – 把持力 [N]。指定時は力による開閉指令として扱う。
direction – force 指定時の方向。 True は閉方向、False は開方向。
relative – 相対位置指定かどうか。 現在は RobotiqHand では未対応。
speed – 動作速度 [%]。
- Returns:
RobotiqHand の move() または move_and_wait_for_position() に渡す辞書。
- Raises:
ValueError – 引数または変換範囲が不正な場合。
- property max_position
完全に開いたときの開口幅 [mm] を返す。
- property min_position
完全に閉じたときの開口幅 [mm] を返す。