実装差分と移植方針
方針
URCtrl と CobottaCtrl は、どちらかが一方的に基準ではない。目的は協働ロボット共通 I/F である。
したがって、UR 実装で整理された良い API は cobotta_ctrl 側へ反映され得る。
変数管理
UR には RC8 の P レジスタがないため、RobotVarManager を使う。
COBOTTA 側も将来的に、実ロボット内部変数とローカル変数管理を明確に分ける余地がある。
状態監視
UR 実装では state() に robot mode、safety mode、status bits、Dashboard 情報を集約する。
これは共通 I/F として有用であるため、COBOTTA 側でも task_state / state() 系を揃える対象である。
エラー情報
UR では RTDE から詳細エラー本文を取れないため、状態からエラー情報を合成する。
COBOTTA 側では RC8 のエラー情報が取れるが、上位 I/F としては get_current_error_info() に揃えるのが望ましい。
no-op と未対応
take_arm() / give_arm() は UR では no-op である。
一方、専用ハンドや PacScript は未対応として明示する。
共通 I/F では、no-op にするものと未対応にするものを区別する。
BL774 / SPring-8 接続
共通 I/F の目的は、実験システムにロボットを接続することである。
そのため、API は以下を優先する。
・短い
・状態が読める
・失敗時に原因へ近づける
・サーバー化しやすい
・装置制御シーケンスへ組み込みやすい
メーカー API の完全露出は目的ではない。