# 実装差分と移植方針 ## 方針 `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 の完全露出は目的ではない。