共通 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 を選ぶ。