共通 I/F と BL774 型システム

ロボット単体 API ではない

URCtrl は、UR を単体で便利に動かすためだけの API ではない。実験装置全体の中で、協働ロボットを一つの制御対象として扱うための API である。

実験計画
    ↓
測定シーケンス
    ↓
装置制御層
    ↓
ロボット共通 I/F
    ↓
UR / COBOTTA / 他ロボット

BL774 型の意味

BL774 型とは、本プロジェクトで想定する研究用・ビームライン用の制御構成である。

この構成では、ロボットは単に人手作業を置き換える機械ではない。測定器、検出器、ステージ、カメラ、サーバー、ログ、ジョブ管理と接続される自動化要素である。

そのため、ロボット API は以下のような性質を持つ必要がある。

・短い Python コードで書ける。
・状態が読める。
・エラー復旧手順を持つ。
・遠隔制御サーバーに載せられる。
・デバイス共通フレームに接続できる。
・ロボット固有 API を上位層へ漏らしすぎない。

SPring-8 互換

SPring-8 のような放射光実験では、ロボット操作は測定シーケンスの一部である。

例。

試料を置く
    ↓
ロボットを退避する
    ↓
シャッター・検出器準備
    ↓
測定
    ↓
試料交換
    ↓
次の測定

この流れでは、ロボット制御 API は「手動操作の代替」ではなく「測定シーケンスの命令」として安定している必要がある。

共通 API の対象範囲

共通 I/F が直接扱う範囲は次の通りである。

・接続
・現在位置取得
・現在関節角取得
・教示点管理
・単点移動
・複数点移動
・軸移動
・IO
・TCP / Tool
・状態取得
・エラー情報
・復旧補助

一方、以下はロボット固有拡張として扱う。

・メーカー固有スクリプト
・ロボット専用ハンド
・メーカー固有ファイル転送
・特殊 UI 操作
・Teach Pendant 固有機能

サーバー化との関係

この共通 I/F は、将来的に ese774_frame などのデバイスサーバー層へ載せることを前提にする。

重要なのは、フレーム側に UR 固有実装を入れないことである。

ese774_frame
    汎用フレーム

URCtrl
    UR 固有実装

CobottaCtrl
    COBOTTA 固有実装

サーバー層は共通 I/F を公開し、実体クラスとして URCtrl や CobottaCtrl を選ぶ。