Skip to main content
The Koch is a low-cost 6-DOF robotic arm designed for accessibility and imitation learning. Originally developed by Alexander Koch from Tau Robotics, it uses Dynamixel servo motors and is available in multiple versions.

Overview

The Koch arm is designed to be affordable and easy to build while maintaining good performance for learning tasks. It supports both the original Koch v1.0 and the updated Koch v1.1 by Jess Moss.

Features

  • 6 degrees of freedom (5 arm joints + gripper)
  • Dynamixel XL430-W250 and XL330-M288 servos
  • USB serial communication (U2D2 or similar adapter)
  • Extended position control for continuous rotation
  • Current-based position control for gripper
  • Open-source hardware designs

Versions Supported

  • Koch v1.0 - Original design with optional wrist-to-elbow expansion
  • Koch v1.1 - Updated design by Jess Moss

Hardware Specifications

Motor Configuration

Control Modes

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

Installation

Hardware Setup

  1. Build the Koch arm following one of the open-source designs
  2. Connect a Dynamixel U2D2 or compatible USB adapter
  3. Connect the U2D2 to your computer
  4. Power the servos with appropriate power supply (typically 12V)

Software Installation

Configuration

Basic Configuration

Configuration Parameters

str
required
Serial port for the Dynamixel U2D2 adapter (e.g., /dev/ttyUSB0 or /dev/tty.usbserial-*)
str
Unique identifier for this robot instance (used for calibration files)
bool
default:"true"
Disable motor torque when disconnecting for safety
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 for visual observations
bool
default:"false"
Whether to use degree normalization (default is normalized range [-100, 100])
Path
Directory for calibration files (defaults to ~/.cache/lerobot/calibration/robots/koch_follower)

Usage

Basic Connection

Calibration

The Koch arm requires calibration before first use:
The shoulder_pan and wrist_roll joints can rotate continuously (full 360°+), so they don’t need range calibration.

Observation Format

Action Format

Advanced Features

PID Tuning

The Koch uses custom PID values for the elbow joint to improve tracking:

Operating Modes

Different motors use different operating modes: Extended Position Mode (shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_roll):
  • Allows unlimited rotation beyond 360°
  • Prevents assembly errors from limiting range
  • Position tracking with extended range
Current-Based Position Mode (gripper):
  • Position control with current limiting
  • Allows grasping without excessive force
  • Acts as compliant trigger for leader arm
  • Prevents motor burnout from overload

Safety Limiting

Limit how much the arm can move per action:

Teleoperation

Leader-follower setup with two Koch arms:

Motor Setup

If building a new Koch or replacing motors, you’ll need to set motor IDs:

Troubleshooting

U2D2 Not Detected

Motors Not Responding

  1. Check power supply (should be ~12V)
  2. Verify all cables are connected
  3. Ensure motor IDs are correct
  4. Try power cycling the motors

Gripper Issues

The gripper uses current-based control, which can be sensitive:

Extended Position Mode Errors

If you get position limit errors:
  1. Ensure motors are in Extended Position Mode
  2. Check that calibration was performed correctly
  3. Verify motor firmware supports extended position mode

Implementation Reference

Key implementation details from the source code:
  • Motor bus: DynamixelMotorsBus (Dynamixel protocol)
  • Normalization: MotorNormMode.RANGE_M100_100 (default) or DEGREES
  • Configuration: /home/daytona/workspace/source/src/lerobot/robots/koch_follower/koch_follower.py:154
  • Calibration: /home/daytona/workspace/source/src/lerobot/robots/koch_follower/koch_follower.py:111

Robot Overview

See all supported robots

Dynamixel Motors

Motor bus API reference

Recording Data

Collect training demonstrations

Teleoperation

Leader-follower control

External Resources