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.