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.