Common Control Interface and MG400 Implementation Contract
The common control interface is defined by this family of projects and is shared conceptually across COBOTTA, Universal Robots (UR), and DOBOT. It is not a COBOTTA-specific interface adopted by DOBOT. Each robot has different physical capabilities: the presence of a method does not guarantee equivalent motion on every robot.
DobotCtrl exposes the public interface and delegates to DobotTcp. DobotTcp implements MG400-specific commands, feedback, and coordinate conversions. dobot_api.py contains the vendor API, while dobot_api_ext.py adds integration behavior. ese774_frame transparently publishes the public interface over the network; it does not define the robot interface itself.
Operation semantics and limitations
Common operation |
MG400 implementation |
|---|---|
|
No corresponding independent ownership command: return |
|
Map to |
|
Uses feedback |
|
Raise |
|
Not implemented until the attached hand is specified. |
|
Returns |
|
Maps to |
|
Returns the most recently configured value held by this library, not a measured velocity. |
Cartesian and joint representations
The common Cartesian vector is [x, y, z, rx, ry, rz], while the MG400 uses [x, y, z, r]. _p_to_mg400() rejects nonzero rx or ry with ValueError and maps rz to r. Readback fills rx=ry=0.
The common joint vector is [j1, j2, j3, j4, j5, j6], while MG400 uses four joints. Input j5 and j6 must be zero; readback pads them with zeros. A six-element interface does not imply six physical degrees of freedom.
Remote invocation
The server uses FastApiServer(device_cls=DobotCtrl, router_cls=None, api_spec=None, object_name="dobot", ...). Both synchronous and asynchronous clients invoke the same server-side control layer. Completion of an HTTP request is distinct from completion of robot motion.
Source: supplied dobot_ctrl.py, dobot_tcp.py, server_fastapi/server.py, and ese774_frame implementation files.