Skip to main content

A-750 Robotic Arm

Support for the A-750 robotic arm includes visualization, an adapter to talk to real hardware, and keyboard teleop blueprint.

Quick Start

Run the A-750 teleop stack in mock mode:
This launches: Open the Meshcat URL printed in the terminal, usually http://localhost:7000, to view the robot.

Real Hardware

The A-750 blueprint uses the mock adapter by default. Start by connecting the arm to your computer with a USB cable. On Linux, the device will likely appear as /dev/ttyACM0. You can also check /dev/serial/ for stable symlinks to connected serial devices. Pro tip: run this in a separate terminal while plugging in the arm to verify that the OS detects it normally:
If the device appears but DimOS gets a permission error when opening it, you may need to add yourself to the dialout group:
After changing groups, log out and back in again, or start a new login shell, before retrying. To connect to a physical arm, set DEVICE_PATH when launching the blueprint:

Robot Model

The robot model and hardware config are defined in dimos/robot/manipulators/a750/config.py. The runnable keyboard teleop stack is composed in dimos/robot/manipulators/a750/blueprints/teleop.py. The no-gripper model is used for Pinocchio FK/IK inside the coordinator’s EEF twist task because Pinocchio does not consume the xacro path used by the full robot description. Keyboard teleop does not load the model directly.

Gripper

The blueprint configures a parallel-jaw gripper: The adapter reads and commands gripper position in meters using the a750_control Python binding.

Hardware Adapter

The adapter is registered as a750 in dimos/hardware/manipulators/a750/adapter.py. It supports: The a750_control package starts a separate thread with real-time priority for its hardware control loop. That loop sends commands and reads back joint state at 1 kHz. The DimOS read_joint_positions, read_joint_velocities, and read_joint_efforts calls return the most recent data cached by that loop rather than synchronously querying the robot, so returned joint data may be up to 1 ms stale. The USB connection also adds roughly 1 ms of latency. The adapter requires the optional manipulation dependency:
If a750_control is not installed, connect() records an error and returns False.

Control Path

The keyboard-teleop-a750 blueprint is defined in dimos/robot/manipulators/a750/blueprints/teleop.py.
The coordinator runs at 100 Hz. The lower-level a750_control binding runs its hardware control loop at 1 kHz once the adapter is enabled.

Keyboard Controls

The A-750 teleop command uses the same keyboard controls as the other manipulator teleop blueprints:

Known Limitations

  • Joint limits are currently approximate: [-pi, pi] for each arm joint, with max velocity pi rad/s in the DimOS adapter.
  • EEF twist commands are integrated and solved by the DimOS coordinator task, not by a native Cartesian mode in the hardware adapter.
  • Force/torque data is not exposed yet.
  • Real hardware mode depends on the external a750_control package and a reachable serial device.