-
Notifications
You must be signed in to change notification settings - Fork 181
Merge OM-X and OM-Y into a unified repository #270
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
Conversation
Signed-off-by: Sungho Woo <[email protected]>
Signed-off-by: Sungho Woo <[email protected]>
Signed-off-by: Sungho Woo <[email protected]>
Signed-off-by: Sungho Woo <[email protected]>
Signed-off-by: Sungho Woo <[email protected]>
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.
Hello @sunghowoo, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
Summary of Changes
This pull request merges the OpenManipulator-X and OpenManipulator-Y repositories into a unified repository, providing an integrated management package for Robotis robotic arms. It includes support for Ubuntu 24.04 Jazzy and Gazebo Harmonic, along with GUI support, teleoperation capabilities, MoveIt! integration, and a leader-follower control mechanism. The current URDF is not yet complete, but the PR is created for CI and Lint checks.
Highlights
- Repository Integration: Merges OpenManipulator-X and OpenManipulator-Y into a single repository for unified management and improved compatibility.
- ROS 2 Jazzy and Gazebo Harmonic Support: Adds support for Ubuntu 24.04 Jazzy and Gazebo Harmonic, ensuring compatibility with the latest ROS 2 distribution and simulation environment.
- Leader-Follower System: Introduces a leader-follower manipulator system with gravity compensation, enhancing the robot's control capabilities.
- Docker and Build Configuration: Updates the Dockerfile to use the Jazzy base image and includes necessary dependencies for the integrated package. Also updates build configurations and adds udev rules for both OM-X and OM-Y.
- Documentation Update: Updates the README.md file to reflect the integrated package, providing a user guide for Open Manipulator-Y, installation instructions, and execution commands.
Changelog
Click here to see the changelog
- Dockerfile
- Switched base image from moveit/moveit2:humble-source to ros:jazzy-ros-base.
- Installed ROS 2 Jazzy dependencies, including hardware-interface, dynamixel-sdk, tf-transformations, gz*, and pal-statistics.
- Cloned necessary git repositories for dynamixel_hardware_interface, dynamixel_interfaces, DynamixelSDK, and gz_ros2_control, using jazzy branches where available.
- Modified the build process to correctly source ROS 2 Jazzy and the workspace setup, and added a colcon build alias.
- Added an environment variable ROBOT_MODEL to .bashrc
- README.md
- Updated the README to reflect the unified repository for OpenManipulator-X, OpenManipulator-Y, and the Leader-Follower Manipulator System.
- Added a comprehensive user guide for Open Manipulator-Y, including prerequisites, installation instructions, and execution commands.
- Included sections on operating modes (Leader-Follower, Standalone Follower, Gazebo Simulation), extending functionality (keyboard teleoperation, MoveIt! launch, GUI control), and exploring GUI features.
- Retained a legacy section for OpenMANIPULATOR-X with a link to the ROBOTIS e-Manual.
- docker-compose.yml
- Removed the container_name option.
- open_manipulator/CHANGELOG.rst
- Added changelog entry for version 3.1.0, noting the integration of OM-X, OM-Y, and OM-Teleoperation with Jazzy support and Gazebo Harmonic compatibility.
- open_manipulator/package.xml
- Updated package version to 3.1.0 and description to reflect the unified OpenMANIPULATOR package.
- Updated exec_depend tags to remove the _x suffix
- open_manipulator_bringup/CHANGELOG.rst
- Added changelog entry for version 3.1.0, noting the integration of OM-X, OM-Y, and OM-Teleoperation with Jazzy support and Gazebo Harmonic compatibility.
- open_manipulator_bringup/CMakeLists.txt
- Changed project name from open_manipulator_x_bringup to open_manipulator_bringup.
- Added find_package(Python3 REQUIRED).
- Modified install DIRECTORY to exclude rviz.
- Added install(FILES) for open-manipulator-x-cdc.rules and open-manipulator-y-cdc.rules.
- Modified install(PROGRAMS) to include x_create_udev_rules, y_create_udev_rules, init_position_for_x.py, and init_position_for_follower.py.
- open_manipulator_bringup/config/om_x/gazebo_controller_manager.yaml
- Changed update_rate from 1000 to 100 Hz.
- open_manipulator_bringup/config/om_x/hardware_controller_manager.yaml
- Changed update_rate from 1000 to 100 Hz.
- open_manipulator_bringup/config/om_y/gazebo_controller_manager.yaml
- Added configuration file for om_y gazebo controller manager.
- open_manipulator_bringup/config/om_y/hardware_controller_manager.yaml
- Added configuration file for om_y hardware controller manager.
- open_manipulator_bringup/config/om_y_follower/gazebo_controller_manager.yaml
- Added configuration file for om_y_follower gazebo controller manager.
- open_manipulator_bringup/config/om_y_follower/hardware_controller_manager.yaml
- Added configuration file for om_y_follower hardware controller manager.
- open_manipulator_bringup/config/om_y_leader/ros2_controllers_leader.yaml
- Added configuration file for om_y_leader ros2 controllers.
- open_manipulator_bringup/env-hooks/open_manipulator_bringup.dsv.in
- Added env-hook to prepend GAZEBO_MODEL_PATH
- open_manipulator_bringup/launch/ai_teleoperation.launch.py
- Created a launch file for ai_teleoperation, which starts hardware_y_follower.launch.py, init_position_for_follower.py, and hardware_y_leader.launch.py in sequence.
- open_manipulator_bringup/launch/gazebo.launch.py
- Added a launch file for gazebo simulation, which sets gazebo sim resource path, declares launch arguments, includes gazebo launch description, and launches robot state publisher and gz spawn entity nodes.
- open_manipulator_bringup/launch/hardware_x.launch.py
- Created a launch file for hardware_x, which declares launch arguments, generates URDF file using xacro, defines nodes, and includes event handlers to ensure order of execution.
- open_manipulator_bringup/launch/hardware_y.launch.py
- Created a launch file for hardware_y, similar to hardware_x.launch.py but specific to OpenManipulator-Y.
- open_manipulator_bringup/launch/hardware_y_follower.launch.py
- Created a launch file for hardware_y_follower, similar to hardware_y.launch.py but with remappings for leader-follower functionality.
- open_manipulator_bringup/launch/hardware_y_leader.launch.py
- Created a launch file for hardware_y_leader, which declares launch arguments, groups actions within a namespace, and launches control and robot state publisher nodes.
- open_manipulator_bringup/open-manipulator-y-cdc.rules
- Added udev rules for OpenManipulator-Y.
- open_manipulator_bringup/package.xml
- Changed package name from open_manipulator_x_bringup to open_manipulator_bringup.
- Added dependencies for ros_gz_bridge, ros_gz_sim, ros_gz_image, and gz_ros2_control.
- open_manipulator_bringup/scripts/init_position_for_follower.py
- Added a python script to move the follower robot to the home position
- open_manipulator_bringup/scripts/init_position_for_x.py
- Added a python script to move the om_x robot to the home position
- open_manipulator_bringup/scripts/x_create_udev_rules
- Modified script to copy the correct udev rules file.
- open_manipulator_bringup/scripts/y_create_udev_rules
- Added a script to copy the udev rules for OpenManipulator-Y.
- open_manipulator_bringup/worlds/empty_world.sdf
- Added an empty world SDF file.
- open_manipulator_description/CHANGELOG.rst
- Added changelog entry for version 3.1.0, noting the integration of OM-X, OM-Y, and OM-Teleoperation with Jazzy support and Gazebo Harmonic compatibility.
- open_manipulator_description/CMakeLists.txt
- Changed project name from open_manipulator_x_description to open_manipulator_description.
- open_manipulator_description/gazebo/open_manipulator_x.gazebo.xacro
- Removed turtlebot3 references and material tag
- open_manipulator_description/gazebo/open_manipulator_y_arm.gazebo.xacro
- Added gazebo macro for om_y
- open_manipulator_description/gazebo/rh_p12_rn_a.gazebo.xacro
- Added gazebo macro for rh_p12_rn_a
- open_manipulator_description/launch/model_x.launch.py
- Modified launch file to use the new URDF file path and RViz config file.
- open_manipulator_description/launch/model_y.launch.py
- Added a launch file for launching the OpenManipulator-Y model.
- open_manipulator_description/package.xml
- Changed package name from open_manipulator_x_description to open_manipulator_description.
- Added dependencies for ros_gz_bridge, ros_gz_sim, and ros_gz_image.
- open_manipulator_description/ros2_control/open_manipulator_x_system.ros2_control.xacro
- Updated plugin tag to use gz_ros2_control/GazeboSimSystem
- Changed number_of_joints to 5
- open_manipulator_description/ros2_control/open_manipulator_y_follower_system.ros2_control.xacro
- Added ros2 control macro for om_y_follower
- open_manipulator_description/ros2_control/open_manipulator_y_leader_system.ros2_control.xacro
- Added ros2 control macro for om_y_leader
- open_manipulator_description/ros2_control/open_manipulator_y_system.ros2_control.xacro
- Added ros2 control macro for om_y
- open_manipulator_description/rviz/open_manipulator.rviz
- Updated rviz config to include new links and remove dummy links
- open_manipulator_description/urdf/om_x/open_manipulator_x.urdf.xacro
- Modified to include open_manipulator_x_arm.urdf.xacro and update gazebo plugin parameters.
- open_manipulator_description/urdf/om_x/open_manipulator_x_arm.urdf.xacro
- Updated mesh file direction and added color to the material tag
- open_manipulator_description/urdf/om_y/open_manipulator_y.urdf.xacro
- Added urdf macro for om_y
- open_manipulator_description/urdf/om_y/open_manipulator_y_follower.urdf.xacro
- Added urdf macro for om_y_follower
- open_manipulator_description/urdf/om_y_leader/open_manipulator_y_leader.urdf.xacro
- Added urdf macro for om_y_leader
- open_manipulator_gui/CHANGELOG.rst
- Changed package name from open_manipulator_x_gui to open_manipulator_gui.
- open_manipulator_gui/CMakeLists.txt
- Changed project name from open_manipulator_x_gui to open_manipulator_gui.
- Added PROJECT_SOURCES_Y, PROJECT_HEADERS_Y, PROJECT_UI_Y
- Added qt5_wrap_cpp and qt5_wrap_ui for PROJECT_MOCS_Y and PROJECT_UI_HEADERS_Y
- Added add_executable and ament_target_dependencies for open_manipulator_y_gui_node
- open_manipulator_gui/include/open_manipulator_x_gui/main_window.hpp
- Updated include tag to ui_x_main_window.h
- open_manipulator_gui/include/open_manipulator_y_gui/main_window.hpp
- Added main_window header for om_y
- open_manipulator_gui/include/open_manipulator_y_gui/qnode.hpp
- Added qnode header for om_y
- open_manipulator_gui/launch/open_manipulator_x_gui.launch.py
- Updated package name and csv file path
- open_manipulator_gui/launch/open_manipulator_y_gui.launch.py
- Added launch file for om_y
- open_manipulator_gui/package.xml
- Changed package name from open_manipulator_x_gui to open_manipulator_gui.
- open_manipulator_gui/src/om_x/main.cpp
- Updated include tag
- open_manipulator_gui/src/om_y/main.cpp
- Added main cpp for om_y
- open_manipulator_gui/src/om_y/main_window.cpp
- Added main_window cpp for om_y
- open_manipulator_gui/src/om_y/qnode.cpp
- Added qnode cpp for om_y
- open_manipulator_moveit_config/CHANGELOG.rst
- Added changelog entry for version 3.1.0, noting the integration of OM-X, OM-Y, and OM-Teleoperation with Jazzy support and Gazebo Harmonic compatibility.
- open_manipulator_moveit_config/CMakeLists.txt
- Changed project name from open_manipulator_x_moveit_config to open_manipulator_moveit_config.
- open_manipulator_moveit_config/config/om_x/initial_positions.yaml
- Updated initial joint positions.
- open_manipulator_moveit_config/config/om_x/joint_limits.yaml
- Updated joint limits.
- open_manipulator_moveit_config/config/om_x/kinematics.yaml
- Updated kinematics solver.
- open_manipulator_moveit_config/config/om_x/moveit_servo.yaml
- Updated publish_period and low_pass_filter_coeff
- open_manipulator_moveit_config/config/om_y/initial_positions.yaml
- Added initial positions yaml for om_y
- open_manipulator_moveit_config/config/om_y/joint_limits.yaml
- Added joint limits yaml for om_y
- open_manipulator_moveit_config/config/om_y/kinematics.yaml
- Added kinematics yaml for om_y
- open_manipulator_moveit_config/config/om_y/moveit.rviz
- Added moveit rviz config for om_y
- open_manipulator_moveit_config/config/om_y/moveit_controllers.yaml
- Added moveit controllers yaml for om_y
- open_manipulator_moveit_config/config/om_y/moveit_servo.yaml
- Added moveit servo yaml for om_y
- open_manipulator_moveit_config/config/om_y/ompl_planning.yaml
- Added ompl planning yaml for om_y
- open_manipulator_moveit_config/config/om_y/open_manipulator_y.srdf
- Added srdf for om_y
- open_manipulator_moveit_config/config/om_y_leader/initial_positions.yaml
- Added initial positions yaml for om_y_leader
- open_manipulator_moveit_config/config/om_y_leader/joint_limits.yaml
- Added joint limits yaml for om_y_leader
- open_manipulator_moveit_config/config/om_y_leader/kinematics.yaml
- Added kinematics yaml for om_y_leader
- open_manipulator_moveit_config/config/om_y_leader/open_manipulator_y_leader.srdf
- Added srdf for om_y_leader
- open_manipulator_moveit_config/config/om_y_leader/ros2_controllers_leader.yaml
- Added ros2 controllers yaml for om_y_leader
- open_manipulator_moveit_config/launch/move_group.launch.py
- Modified launch file to dynamically load URDF and SRDF files based on the ROBOT_MODEL environment variable.
- open_manipulator_moveit_config/launch/moveit_core.launch.py
- Modified launch file to dynamically load URDF and SRDF files based on the ROBOT_MODEL environment variable.
- open_manipulator_moveit_config/launch/servo.launch.py
- Modified launch file to dynamically load URDF and SRDF files based on the ROBOT_MODEL environment variable.
- open_manipulator_moveit_config/package.xml
- Changed package name from open_manipulator_x_moveit_config to open_manipulator_moveit_config.
- open_manipulator_playground/CMakeLists.txt
- Added a second executable for om_y
- open_manipulator_playground/package.xml
- Changed package name from open_manipulator_x_playground to open_manipulator_playground.
- open_manipulator_teleop/CHANGELOG.rst
- Changed package name from open_manipulator_x_teleop to open_manipulator_teleop.
- open_manipulator_teleop/CMakeLists.txt
- Changed project name from open_manipulator_x_teleop to open_manipulator_teleop.
- Removed moveit dependency
- Added install PROGRAMS for keyboard control scripts
- open_manipulator_teleop/package.xml
- Changed package name from open_manipulator_x_teleop to open_manipulator_teleop.
- Removed moveit dependency
- open_manipulator_teleop/scripts/keyboard_control_x.py
- Added keyboard control script for om_x
- open_manipulator_teleop/scripts/keyboard_control_y.py
- Added keyboard control script for om_y
- open_manipulator_teleop/scripts/keyboard_control_y_follower.py
- Added keyboard control script for om_y_follower
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Trivia time!
What company developed the Dynamixel actuators?
Click here for the answer
Robotis
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
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 pull request merges three Robotis manipulator packages into a unified repository and updates launch/configuration files to support multiple hardware configurations and simulation modes.
- Consolidated README with updated instructions for setup, teleoperation, and MoveIt integration.
- New launch files for ai_teleoperation, hardware (leader/follower and standalone) and simulation with Gazebo.
- Updated controller manager configuration files and docker-compose adjustments to support both OM-X and OM-Y.
Reviewed Changes
Copilot reviewed 192 out of 198 changed files in this pull request and generated 1 comment.
Show a summary per file
File | Description |
---|---|
README.md | Expanded documentation covering new features and setup instructions for both OM-X and OM-Y. |
open_manipulator_bringup/launch/ai_teleoperation.launch.py | Added sequential launch for follower then leader node with event handlers. |
open_manipulator_bringup/launch/gazebo.launch.py | Created a launch file for Gazebo simulation with URDF processing and entity spawning. |
open_manipulator_bringup/launch/hardware_y.launch.py, hardware_y_follower.launch.py, hardware_x.launch.py | Added launch configurations for hardware execution with controller spawners and event ordering. |
Configuration files under open_manipulator_bringup/config/ | Updated ROS 2 controller manager parameters for different hardware modes. |
docker-compose.yml | Minor adjustment by removing container_name for open_manipulator_x. |
Files not reviewed (6)
- Dockerfile: Language not supported
- open_manipulator/CHANGELOG.rst: Language not supported
- open_manipulator/package.xml: Language not supported
- open_manipulator_bringup/CHANGELOG.rst: Language not supported
- open_manipulator_bringup/CMakeLists.txt: Language not supported
- open_manipulator_bringup/env-hooks/open_manipulator_bringup.dsv.in: Language not supported
Comments suppressed due to low confidence (1)
open_manipulator_bringup/launch/gazebo.launch.py:116
- Missing comma between '-allow_renaming' and '-use_sim' arguments may cause them to merge unexpectedly. Insert a comma to separate the two arguments properly.
'-allow_renaming', 'true' '-use_sim','true']
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.
Code Review
This pull request integrates OM-X and OM-Y into a unified repository with Jazzy support and Gazebo Harmonic compatibility. The changes include updates to Dockerfile, README, CMakeLists, package.xml, launch files, configuration files, and scripts. Overall, the integration seems well-structured, but there are a few areas that could benefit from closer attention.
Summary of Findings
- Inconsistent update rate in configuration files: The update rate in
gazebo_controller_manager.yaml
andhardware_controller_manager.yaml
is changed from 1000 Hz to 100 Hz forom_x
, whileom_y_follower
uses 400 Hz. This inconsistency should be reviewed to ensure optimal performance for each robot model. - Missing descriptions for parameters in ros2_controllers_leader.yaml: The
ros2_controllers_leader.yaml
file lacks descriptions for the parameters under each controller (gravity_compensation_controller, spring_actuator_controller, joint_trajectory_command_broadcaster). Adding descriptions would improve readability and maintainability. - Incomplete URDF warning: The pull request description mentions that the URDF is not yet complete. This should be addressed before merging to ensure full functionality.
Merge Readiness
While the integration appears to be well-structured, the inconsistencies in update rates and the missing descriptions in ros2_controllers_leader.yaml
should be addressed before merging. Additionally, the incomplete URDF needs to be completed to ensure full functionality. Given these points, I recommend requesting changes before merging. I am unable to approve this pull request, and users should have others review and approve this code before merging.
open_manipulator_description/ros2_control/open_manipulator_x_system.ros2_control.xacro
Show resolved
Hide resolved
open_manipulator_description/urdf/om_x/open_manipulator_x_arm.urdf.xacro
Show resolved
Hide resolved
open_manipulator_description/urdf/om_x/open_manipulator_x_arm.urdf.xacro
Show resolved
Hide resolved
open_manipulator_description/urdf/om_x/open_manipulator_x_arm.urdf.xacro
Show resolved
Hide resolved
open_manipulator_description/urdf/om_x/open_manipulator_x_arm.urdf.xacro
Show resolved
Hide resolved
open_manipulator_description/ros2_control/open_manipulator_x_system.ros2_control.xacro
Show resolved
Hide resolved
open_manipulator_bringup/config/om_y_leader/ros2_controllers_leader.yaml
Show resolved
Hide resolved
open_manipulator_bringup/config/om_y_follower/hardware_controller_manager.yaml
Show resolved
Hide resolved
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Sungho Woo <[email protected]>
Signed-off-by: Pyo <[email protected]>
…ator Y and Follower, including new links and adjustments to inertial properties.
Signed-off-by: Sungho Woo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Sungho Woo <[email protected]>
@yun-goon @Woojin-Crive |
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
Signed-off-by: Pyo <[email protected]>
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.
There are a few things that need to be fixed.
EOF and Korean comments definitely need to be corrected.
open_manipulator_description/urdf/om_y/open_manipulator_y_follower.urdf.xacro
Outdated
Show resolved
Hide resolved
open_manipulator_description/urdf/om_y/open_manipulator_y_arm.urdf.xacro
Outdated
Show resolved
Hide resolved
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.
Good
Very good, I'll merge it. Thanks, @sunghowoo @Woojin-Crive @yun-goon :) |
This repository provides an integrated management package for Robotis robotic arms, including:
With this integration, all Robotis manipulators are managed under a unified package to ensure better compatibility and functionality.
PS - The current URDF is not yet complete, but this pull request is created for CI and Lint checks.