Skip to content

Conversation

@Woojin-Crive
Copy link
Contributor

@Woojin-Crive Woojin-Crive commented Dec 10, 2025

What this does

This PR adds full support for a new robot platform OMX.

How to checkout & try? (for the reviewer)

python -m lerobot.teleoperate \
    --robot.type=omx_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=omx_follower_arm \
    --teleop.type=omx_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=omx_leader_arm

OMX is a fully open-source robot from ROBOTIS.
More infot at: https://ai.robotis.com/omx/introduction_omx.html

Copilot AI review requested due to automatic review settings December 10, 2025 11:45
@Woojin-Crive
Copy link
Contributor Author

OMX is a fully open-source robot from ROBOTIS.
https://ai.robotis.com/omx/introduction_omx.html

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds comprehensive support for the OMX (Open Manipulator X) robot platform from ROBOTIS, including both the leader (teleoperator) and follower (robot) implementations. The integration follows the established patterns in the codebase for Dynamixel-based robots like Koch and SO100/SO101.

Key changes:

  • New OmxLeader teleoperator and OmxFollower robot classes with Dynamixel motor configurations
  • Integration with all relevant lerobot scripts (teleoperate, record, replay, calibrate, setup_motors, find_joint_limits)
  • Added to supported robots list in async inference constants

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/lerobot/teleoperators/omx_leader/omx_leader.py Teleoperator implementation for OMX leader arm with 6 motors (5 xl330-m288, 1 xl330-m077 gripper)
src/lerobot/teleoperators/omx_leader/config_omx_leader.py Configuration class for OMX leader with port and gripper_open_pos settings
src/lerobot/teleoperators/omx_leader/init.py Module exports for OMX leader
src/lerobot/robots/omx_follower/omx_follower.py Robot implementation for OMX follower arm with different motor IDs (11-16) and camera support
src/lerobot/robots/omx_follower/config_omx_follower.py Configuration class for OMX follower with safety limits and camera support
src/lerobot/robots/omx_follower/init.py Module exports for OMX follower
src/lerobot/teleoperators/utils.py Added factory method branch for omx_leader
src/lerobot/robots/utils.py Added factory method branch for omx_follower
src/lerobot/scripts/lerobot_teleoperate.py Added omx imports for teleoperation script
src/lerobot/scripts/lerobot_record.py Added omx imports and included OmxLeader in teleoperator type check
src/lerobot/scripts/lerobot_replay.py Added omx_follower import for replay functionality
src/lerobot/scripts/lerobot_setup_motors.py Added omx to compatible devices list and imports
src/lerobot/scripts/lerobot_find_joint_limits.py Added omx imports for joint limit finding
src/lerobot/scripts/lerobot_calibrate.py Added omx imports for calibration support
src/lerobot/async_inference/robot_client.py Added omx_follower import for async inference
src/lerobot/async_inference/constants.py Added "omx_follower" to SUPPORTED_ROBOTS list
Comments suppressed due to low confidence (1)

src/lerobot/teleoperators/omx_leader/omx_leader.py:25

  • Import of 'DriveMode' is not used.
from lerobot.motors.dynamixel import (
    DriveMode,
    DynamixelMotorsBus,
    OperatingMode,
)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@imstevenpmwork imstevenpmwork self-assigned this Dec 11, 2025
@imstevenpmwork imstevenpmwork added enhancement Suggestions for new features or improvements robots Issues concerning robots HW interfaces labels Dec 11, 2025
@imstevenpmwork imstevenpmwork changed the title Support robot "OMX" feat(robot): Add support for OMX robot Dec 15, 2025
imstevenpmwork
imstevenpmwork previously approved these changes Dec 15, 2025
Add informations about the robot

Co-authored-by: Steven Palma <[email protected]>
Signed-off-by: Woojin Wie <[email protected]>
Copy link
Collaborator

@imstevenpmwork imstevenpmwork left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks ! :D

@imstevenpmwork imstevenpmwork merged commit c2fb644 into huggingface:main Dec 15, 2025
7 checks passed
wut19 pushed a commit to wut19/lerobot_wallx that referenced this pull request Dec 16, 2025
* upload

* feat(omx): simplify motor initialization and remove default calibration files

* feat(omx): read motor positions without normalization for improved accuracy

* update calibration method for return factory value

Signed-off-by: Junha Cha <[email protected]>

* change the drive mode

* refactor: clean up code by removing unnecessary blank lines in omx_follower and omx_leader modules

* feat(omx): update calibration method to set drive modes for motors

* feat(pyproject): add 'ROBOTIS' to extend-ignore-identifiers-re list

* feat(omx): enhance calibration method to write default drive modes to motors

* Update src/lerobot/robots/omx_follower/__init__.py

Add informations about the robot

Co-authored-by: Steven Palma <[email protected]>
Signed-off-by: Woojin Wie <[email protected]>

---------

Signed-off-by: Junha Cha <[email protected]>
Signed-off-by: Woojin Wie <[email protected]>
Co-authored-by: Junha02 <[email protected]>
Co-authored-by: Junha Cha <[email protected]>
Co-authored-by: Steven Palma <[email protected]>
wut19 pushed a commit to wut19/lerobot_wallx that referenced this pull request Dec 16, 2025
* upload

* feat(omx): simplify motor initialization and remove default calibration files

* feat(omx): read motor positions without normalization for improved accuracy

* update calibration method for return factory value

Signed-off-by: Junha Cha <[email protected]>

* change the drive mode

* refactor: clean up code by removing unnecessary blank lines in omx_follower and omx_leader modules

* feat(omx): update calibration method to set drive modes for motors

* feat(pyproject): add 'ROBOTIS' to extend-ignore-identifiers-re list

* feat(omx): enhance calibration method to write default drive modes to motors

* Update src/lerobot/robots/omx_follower/__init__.py

Add informations about the robot

Co-authored-by: Steven Palma <[email protected]>
Signed-off-by: Woojin Wie <[email protected]>

---------

Signed-off-by: Junha Cha <[email protected]>
Signed-off-by: Woojin Wie <[email protected]>
Co-authored-by: Junha02 <[email protected]>
Co-authored-by: Junha Cha <[email protected]>
Co-authored-by: Steven Palma <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Suggestions for new features or improvements robots Issues concerning robots HW interfaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants