Common Control Interface: Implementation Boundaries

This page is based on src/dobot/dobot_ctrl.py and src/dobot/dobot_tcp.py. The project-defined common robot-control interface is shared across the COBOTTA, UR, and MG400 implementations. DobotCtrl is the MG400 adapter for that interface; the manufacturer’s native MG400 API is not itself the common interface.

Public and implementation layers

DobotCtrl.__init__(dobot_ip="192.168.1.6", instance_name="Ctrl", logger=None, log_level=None, auto_connect=True) creates an internal DobotTcp instance. Calls such as connect(), disconnect(), and get_current_pose() delegate to that implementation. Both local and remote operation control the same MG400; ese774_frame transparently transports calls to the server-side controller.

Motion parameters and actual support

move(target, *, motion_mode=None, coord_type=None, path_blend=None, offset=None, pose=None, speed=None, accel=None, decel=None, is_async=True) preserves the common signature. The MG400 implementation covers P+PTP→MovJ, P+LINE→MovL, and J+PTP→JointMovJ. Semantics-preserving support is not established for path_blend, decel, pose, CIRCLE, or SPLINE. Accepting a parameter does not establish that the corresponding behavior is implemented.

drive(target, *, relative=False, path_blend=None, speed=None, is_async=False) supports axis selection, relative motion, and speed selection; path_blend semantics remain unestablished. dev(base, offset) performs simple addition for x/y/z/rz only. The four-axis MG400 cannot realize rx/ry or J5/J6.

rotate(plane, angle, center, *, path_blend=None, speed=None, is_async=True) is exposed but its conversion to a robot trajectory command is not implemented. halt(), stop(), and task_stop() must not be used as substitutes for an emergency stop: equivalent common-interface stopping semantics are not guaranteed.

Two meanings of synchronous and asynchronous

SyncDobotClient and AsyncDobotClient determine the HTTP client invocation model. The is_async argument to move() concerns waiting for MG400 motion completion. Successful HTTP completion does not establish that the robot safely reached its target. Check completion and alarm state separately, using wait_for_complete() as appropriate.

Relationship to manufacturer documentation

The DobotStudio Pro User Manual (MG400 & M1 Pro) documents connection, coordinate frames, and safety settings; it does not specify this Python library’s APIs. The MG400 Maintenance Manual V1.2 (2026-04-23) covers inspection, safety, and alarms. Do not infer Python API implementation coverage from functions shown in the manufacturer’s UI.

Commissioning checklist

  1. Verify workspace, tooling, payload, and emergency-stop arrangements according to the manufacturer instructions.

  2. Distinguish the MG400 destination IP from the HTTP server’s listening IP and port.

  3. Test read-only status operations before issuing any motion commands.

  4. Avoid unverified common-interface operations; monitor robot alarms and motion completion.