Common Interface and BL774-Style Systems

Not Merely a Standalone Robot API

URCtrl is not simply an API for conveniently operating a standalone UR robot. It treats a collaborative robot as one controlled device within an experimental system.

Experiment plan
    ↓
Measurement sequence
    ↓
Instrument-control layer
    ↓
Common robot interface
    ↓
UR / COBOTTA / other robots

Meaning of the BL774-Style Architecture

BL774-style refers to the research and beamline control architecture envisioned by this project.

In this architecture, the robot is not merely a machine replacing manual work. It is an automation component connected to instruments, detectors, stages, cameras, servers, logging, and job management.

The robot API must therefore have the following properties:

  • Express operations in concise Python code.

  • Provide readable status.

  • Provide error-recovery procedures.

  • Support deployment through a remote-control server.

  • Integrate with a common device framework.

  • Avoid exposing excessive robot-specific APIs to higher layers.

SPring-8 Compatibility

In synchrotron experiments such as those at SPring-8, robot operations form part of the measurement sequence.

Example:

Place sample
    ↓
Retract robot
    ↓
Prepare shutter and detector
    ↓
Measurement
    ↓
Exchange sample
    ↓
Next measurement

In this workflow, robot-control APIs must be reliable as measurement-sequence commands, rather than merely substitutes for manual operation.

Scope of the Common API

The common interface directly covers:

  • Connection

  • Current position

  • Current joint angles

  • Taught-point management

  • Single-point motion

  • Multi-point motion

  • Joint-axis motion

  • IO

  • TCP / Tool

  • Status retrieval

  • Error Information

  • Recovery assistance

The following are instead treated as robot-specific extensions:

  • Manufacturer-specific scripts

  • Robot-specific hands/grippers

  • Manufacturer-specific file transfer

  • Specialized UI operations

  • Teach Pendant-specific functions

Relationship to Device Servers

The common interface is designed for eventual deployment through a device-server layer such as ese774_frame.

The important constraint is that UR-specific implementation details must not enter the framework layer.

ese774_frame
    Generic framework

URCtrl
    UR-specific implementation

CobottaCtrl
    COBOTTA-specific implementation

The server layer exposes the common interface and selects URCtrl or CobottaCtrl as the concrete implementation.