# Implementation Differences and Porting Policy ## Policy Neither `URCtrl` nor `CobottaCtrl` is the unilateral standard. The objective is a common collaborative-robot interface. Well-designed APIs established in the UR implementation may therefore be incorporated into `cobotta_ctrl`. ## Variable Management UR lacks RC8 P registers, so it uses `RobotVarManager`. In the future, COBOTTA may also distinguish physical robot-internal variables from locally managed variables more explicitly. ## Status Monitoring The UR implementation aggregates robot mode, safety mode, status bits, and Dashboard information in `state()`. This is useful for the common interface, so the COBOTTA `task_state` / `state()` functions are candidates for alignment. ## Error Information Because detailed error text is unavailable through UR RTDE, error information is synthesized from status data. COBOTTA can retrieve RC8 error information, but the higher-level interface should ideally standardize on `get_current_error_info()`. ## No-Ops Versus Unsupported Features `take_arm()` and `give_arm()` are no-ops on UR. Dedicated hands and PacScript, however, are explicitly unsupported. The common interface distinguishes no-op functions from unsupported ones. ## BL774 / SPring-8 Integration The purpose of the common interface is to integrate robots into experimental systems. The API therefore prioritizes: - Concise calls - Readable status - Diagnostic information on failure - Easy deployment as a server - Easy integration into instrument-control sequences Exposing every manufacturer-specific API is not the objective.