-
Notifications
You must be signed in to change notification settings - Fork 3.3k
feat(robot): Add support for OMX robot #2614
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(robot): Add support for OMX robot #2614
Conversation
|
OMX is a fully open-source robot from ROBOTIS. |
There was a problem hiding this 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
OmxLeaderteleoperator andOmxFollowerrobot 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.
Signed-off-by: Junha Cha <[email protected]>
…llower and omx_leader modules
1682687 to
31af4df
Compare
Add informations about the robot Co-authored-by: Steven Palma <[email protected]> Signed-off-by: Woojin Wie <[email protected]>
imstevenpmwork
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks ! :D
* 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]>
* 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]>
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_armOMX is a fully open-source robot from ROBOTIS.
More infot at: https://ai.robotis.com/omx/introduction_omx.html