Skip to main content
The OMX (Open Manipulator-X) is a modular 6-DOF robotic arm developed by ROBOTIS. It uses Dynamixel servo motors and is designed as an educational and research platform with a focus on accessibility and expandability.

Overview

The OMX is designed for:
  • Education and research
  • Manipulation tasks
  • Teleoperation and imitation learning
  • Modular hardware expansion
  • Open-source development

Features

  • 6 degrees of freedom (5 arm joints + gripper)
  • Dynamixel XL430-W250 and XL330-M288 servos
  • Pre-calibrated from factory
  • USB serial communication (U2D2 adapter)
  • Extended position control
  • Current-based gripper control
  • Open-source design by ROBOTIS

Hardware Specifications

Motor Configuration

Motor IDs start at 11 (not 1) as per ROBOTIS Open Manipulator-X standard configuration.

Control Modes

  • Arm joints: Extended Position Mode (allows >360° rotation)
  • Gripper: Current-Based Position Mode (force-limited grasping)

Installation

Hardware Setup

  1. Connect Dynamixel U2D2 adapter to OMX
  2. Connect U2D2 to computer via USB
  3. Power the servos (typically 12V)
  4. Set up serial port permissions:

Software Installation

Configuration

Basic Configuration

Configuration Parameters

str
required
Serial port for Dynamixel U2D2 adapter (e.g., /dev/ttyUSB0 or /dev/tty.usbserial-*)
str
Unique identifier for this robot (used for calibration files)
bool
default:"true"
Disable motor torque when disconnecting
float | dict[str, float]
Safety limit for maximum position change per action. Can be a single value or per-motor dictionary.
dict[str, CameraConfig]
Dictionary of camera configurations
bool
default:"false"
Use degree normalization (default is normalized range [-100, 100])
Path
Directory for calibration files (defaults to ~/.cache/lerobot/calibration/robots/omx_follower)

Usage

Basic Connection

Factory Calibration

The OMX comes pre-calibrated from ROBOTIS. LeRobot uses factory default values:
Unlike Koch or SO robots, the OMX doesn’t require manual calibration. Factory defaults work out of the box.

Observation Format

Action Format

Advanced Features

Operating Modes

Extended Position Mode (all joints except gripper):
  • Allows unlimited rotation beyond 360°
  • Prevents assembly issues from limiting range
  • Automatically configured in configure()
Current-Based Position Mode (gripper only):
  • Position control with current limiting
  • Safe grasping without excessive force
  • Prevents motor burnout
  • Compliant for leader arm teleoperation

Safety Limiting

Teleoperation

Leader-Follower Setup

Motor Setup

If you need to configure motor IDs (for custom builds or replacements):
For standard ROBOTIS OMX, motor IDs are pre-configured and this step isn’t necessary.

Differences from Koch

The OMX and Koch robots are similar but have key differences: Both use the same software structure and Dynamixel protocol.

Troubleshooting

U2D2 Not Detected

Motors Not Responding

  1. Check power supply (~12V)
  2. Verify cable connections
  3. Ensure motor IDs are 11-16 (not 1-6)
  4. Try power cycling

Gripper Issues

The gripper uses current-based control:

Wrong Motor IDs

If motors have IDs 1-6 instead of 11-16:

Implementation Details

  • Motor bus: DynamixelMotorsBus
  • Protocol: Dynamixel Protocol 2.0
  • Normalization: MotorNormMode.RANGE_M100_100 (default) or DEGREES
  • Factory calibration: All offsets = 0, range = [0, 4095]
  • Source: /home/daytona/workspace/source/src/lerobot/robots/omx_follower/omx_follower.py
  • Config: /home/daytona/workspace/source/src/lerobot/robots/omx_follower/config_omx_follower.py

Robot Overview

See all supported robots

Koch

Similar Dynamixel-based arm

Dynamixel Motors

Motor bus API reference

Recording Data

Collect training data

External Resources