Skip to content

Feature Request: Support for OMX-AI in leLab #79

Description

@robertchoi

Describe the Feature Request

Provide native support for the OMX-AI robotic arm in the leLab web GUI, alongside the current SO-100 series.

Currently, the underlying lerobot library officially supports Dynamixel motors and the OMX-AI platform. However, leLab restricts connection and usage to the hardcoded SO-101 leader/follower arms. Introducing abstraction for robot configurations will allow users of OMX-AI to also benefit from leLab's zero-code web UI for calibration, teleoperation, recording, and inference.

Current Limitations / Code References

Here are the areas in the codebase that are currently hardcoded for SO-101:

1. Backend Configurations (lelab)

  • Teleoperation & Verification: In lelab/teleoperate.py (lines 23–24), SO101FollowerConfig, SO101Follower, SO101LeaderConfig, and SO101Leader are directly imported. They are instantiated directly in lines 169–184.
  • Dataset Recording: In lelab/record.py (lines 27–31), SO101FollowerConfig and SO101LeaderConfig are imported and instantiated on lines 159–166.
  • Calibration: In lelab/calibrate.py (lines 256–263), calibration configuration setup specifically expects SO101FollowerConfig and SO101LeaderConfig.
  • Inference Rollouts: In lelab/rollout.py (line 284), --robot.type=so101_follower is hardcoded as an argument for the rollout subprocess.

2. Frontend Calibration Configuration (frontend)

  • Joint Calibration Targets: In frontend/src/lib/calibrationTargets.ts (lines 4–25), the target calibration limits are explicitly hardcoded for SO101_LEADER_TARGETS and SO101_FOLLOWER_TARGETS (e.g., shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_roll, gripper).

Proposed Solutions

  1. Dynamic Robot Configuration Loading:
    • Refactor the backend (e.g., teleoperate.py, record.py, calibrate.py) to dynamically import and build configuration classes depending on the target robot specified (e.g., loading OMXAIFollowerConfig / OMXAILeaderConfig if omx-ai is chosen).
  2. Abstract Calibration Targets on the Frontend:
    • Expose the calibration joint targets dynamically from the backend (by reading properties from the respective lerobot robot class) or refactor the frontend configuration to support mappings based on the active robot configuration profile.
  3. Parameterize Rollouts:
    • Allow the frontend or user configuration file to dynamically set the --robot.type parameter instead of hardcoding it in rollout.py.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions