-
Notifications
You must be signed in to change notification settings - Fork 512
Feature add manipulation sim #239
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
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 @chan-1207, 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
Hello team, Gemini here to provide a summary of this pull request by @chan-1207.
This PR introduces Gazebo simulation support for the TurtleBot3 Waffle Pi equipped with the OpenManipulator-X arm. The core changes involve creating a new ROS 2 package, turtlebot3_manipulation_gazebo
, which houses the necessary URDF descriptions, Gazebo-specific configurations and plugins, ros2_control
setup, and launch files to simulate the robot.
Additionally, a new Gazebo world specifically designed for a "home service challenge" is added to the turtlebot3_gazebo
package, complete with models for various AR markers used within that environment. The existing simulation packages (turtlebot3_fake_node
, turtlebot3_gazebo
, turtlebot3_simulations
) have their versions updated and changelogs modified to reflect the inclusion of the new manipulation simulation package and the new world.
Highlights
- New Simulation Package: A new ROS 2 package,
turtlebot3_manipulation_gazebo
, is added to encapsulate all the necessary files for simulating the TurtleBot3 with the OpenManipulator-X arm in Gazebo. - Manipulation Robot Description: URDF/XACRO files for the combined TurtleBot3 Waffle Pi base and OpenManipulator-X arm are added, including Gazebo-specific properties and
ros2_control
configurations supporting both simulation and fake hardware. - New Gazebo World: A new Gazebo world file,
turtlebot3_home_service_challenge.world
, is added to theturtlebot3_gazebo
package, providing a specific environment for manipulation tasks. - AR Marker Models: Models and meshes for AR markers (Marker0 through Marker9) are included within the new
turtlebot3_home_service_challenge
world directory. - Launch Files: New launch files are provided in
turtlebot3_manipulation_gazebo
for launching the robot with fake hardware (fake.launch.py
) or in a default Gazebo world (gazebo.launch.py
), and a base launch file (base.launch.py
) handles common setup. A launch file for the new home service challenge world is added toturtlebot3_gazebo
.
Changelog
Click here to see the changelog
- turtlebot3_fake_node/CHANGELOG.rst
- Added version 2.3.1 entry with 'Node'
- turtlebot3_fake_node/package.xml
- Updated version from 2.3.0 to 2.3.1
- turtlebot3_gazebo/CHANGELOG.rst
- Added version 2.3.1 entry with 'Node'
- turtlebot3_gazebo/launch/turtlebot3_home_service_challenge.launch.py
- Added new launch file for the home service challenge world
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker0/meshes/Marker0.dae
- Added mesh file for Marker0
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker0/model-1_4.sdf
- Added SDF model (v1.4) for Marker0
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker0/model-1_5.sdf
- Added SDF model (v1.5) for Marker0
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker0/model.config
- Added model config for Marker0
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker0/model.sdf
- Added SDF model (v1.6) for Marker0
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker1/meshes/Marker1.dae
- Added mesh file for Marker1
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker1/model-1_4.sdf
- Added SDF model (v1.4) for Marker1
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker1/model-1_5.sdf
- Added SDF model (v1.5) for Marker1
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker1/model.config
- Added model config for Marker1
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker1/model.sdf
- Added SDF model (v1.6) for Marker1
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker2/meshes/Marker2.dae
- Added mesh file for Marker2
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker2/model-1_4.sdf
- Added SDF model (v1.4) for Marker2
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker2/model-1_5.sdf
- Added SDF model (v1.5) for Marker2
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker2/model.config
- Added model config for Marker2
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker2/model.sdf
- Added SDF model (v1.6) for Marker2
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker3/meshes/Marker3.dae
- Added mesh file for Marker3
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker3/model-1_4.sdf
- Added SDF model (v1.4) for Marker3
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker3/model-1_5.sdf
- Added SDF model (v1.5) for Marker3
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker3/model.config
- Added model config for Marker3
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker3/model.sdf
- Added SDF model (v1.6) for Marker3
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker4/meshes/Marker4.dae
- Added mesh file for Marker4
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker4/model-1_4.sdf
- Added SDF model (v1.4) for Marker4
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker4/model-1_5.sdf
- Added SDF model (v1.5) for Marker4
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker4/model.config
- Added model config for Marker4
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker4/model.sdf
- Added SDF model (v1.6) for Marker4
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker5/meshes/Marker5.dae
- Added mesh file for Marker5
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker5/model-1_4.sdf
- Added SDF model (v1.4) for Marker5
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker5/model-1_5.sdf
- Added SDF model (v1.5) for Marker5
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker5/model.config
- Added model config for Marker5
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker5/model.sdf
- Added SDF model (v1.6) for Marker5
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker6/meshes/Marker6.dae
- Added mesh file for Marker6
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker6/model-1_4.sdf
- Added SDF model (v1.4) for Marker6
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker6/model-1_5.sdf
- Added SDF model (v1.5) for Marker6
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker6/model.config
- Added model config for Marker6
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker6/model.sdf
- Added SDF model (v1.6) for Marker6
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker7/meshes/Marker7.dae
- Added mesh file for Marker7
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker7/model-1_4.sdf
- Added SDF model (v1.4) for Marker7
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker7/model-1_5.sdf
- Added SDF model (v1.5) for Marker7
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker7/model.config
- Added model config for Marker7
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker7/model.sdf
- Added SDF model (v1.6) for Marker7
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker8/meshes/Marker8.dae
- Added mesh file for Marker8
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker8/model-1_4.sdf
- Added SDF model (v1.4) for Marker8
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker8/model-1_5.sdf
- Added SDF model (v1.5) for Marker8
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker8/model.config
- Added model config for Marker8
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker8/model.sdf
- Added SDF model (v1.6) for Marker8
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker9/meshes/Marker9.dae
- Added mesh file for Marker9
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker9/model-1_4.sdf
- Added SDF model (v1.4) for Marker9
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker9/model-1_5.sdf
- Added SDF model (v1.5) for Marker9
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker9/model.config
- Added model config for Marker9
- turtlebot3_gazebo/models/turtlebot3_home_service_challenge/marker9/model.sdf
- Added SDF model (v1.6) for Marker9
- turtlebot3_gazebo/package.xml
- Updated version from 2.3.0 to 2.3.1
- turtlebot3_gazebo/worlds/turtlebot3_home_service_challenge.world
- Added new Gazebo world file for the home service challenge
- turtlebot3_manipulation_gazebo/CHANGELOG.rst
- Added new changelog file
- Moved the TurtleBot3 Manipulation Gazebo simulation from the turtlebot3_manipulation_bringup package
- turtlebot3_manipulation_gazebo/CMakeLists.txt
- Added new CMakeLists file for the package
- turtlebot3_manipulation_gazebo/config/gazebo_controller_manager.yaml
- Added new Gazebo controller manager configuration file
- turtlebot3_manipulation_gazebo/config/hardware_controller_manager.yaml
- Added new hardware controller manager configuration file
- turtlebot3_manipulation_gazebo/gazebo/materials.xacro
- Added new xacro file defining materials
- turtlebot3_manipulation_gazebo/gazebo/open_manipulator_x.gazebo.xacro
- Added new Gazebo xacro file for the OpenManipulator-X arm
- turtlebot3_manipulation_gazebo/gazebo/turtlebot3_waffle_pi.gazebo.xacro
- Added new Gazebo xacro file for the TurtleBot3 Waffle Pi base
- turtlebot3_manipulation_gazebo/launch/base.launch.py
- Added new base launch file for the manipulation robot
- turtlebot3_manipulation_gazebo/launch/fake.launch.py
- Added new launch file for fake hardware simulation
- turtlebot3_manipulation_gazebo/launch/gazebo.launch.py
- Added new launch file for Gazebo simulation in a default world
- turtlebot3_manipulation_gazebo/package.xml
- Added new package definition file
- turtlebot3_manipulation_gazebo/ros2_control/turtlebot3_manipulation_system.ros2_control.xacro
- Added new ros2_control xacro file for the combined system
- turtlebot3_manipulation_gazebo/rviz/turtlebot3_manipulation.rviz
- Added new Rviz configuration file
- turtlebot3_manipulation_gazebo/urdf/open_manipulator_x.urdf.xacro
- Added new URDF xacro file for the OpenManipulator-X arm
- turtlebot3_manipulation_gazebo/urdf/turtlebot3_manipulation.urdf.xacro
- Added new combined URDF xacro file for the TurtleBot3 Manipulation robot
- turtlebot3_manipulation_gazebo/urdf/turtlebot3_waffle_pi.urdf.xacro
- Added new URDF xacro file for the TurtleBot3 Waffle Pi base
- turtlebot3_simulations/CHANGELOG.rst
- Added version 2.3.1 entry
- Moved the TurtleBot3 Manipulation Gazebo simulation from the turtlebot3_manipulation_bringup package
- turtlebot3_simulations/package.xml
- Updated version from 2.3.0 to 2.3.1
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.
A robot with an arm,
In Gazebo, safe from harm.
It grasps and it turns,
As the simulation learns,
Avoiding walls, a charming alarm.
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.
Code Review
This pull request introduces a significant amount of new functionality by adding Gazebo simulation maps and TurtleBot3 Manipulation Gazebo simulation capabilities. The overall structure, including the new turtlebot3_manipulation_gazebo
package, launch files, URDF/XACRO configurations, and world files, appears well-organized and adheres to ROS 2 conventions.
The changes are comprehensive and enable a new simulation scenario. The use of ros2_control
for managing the robot's hardware interfaces in simulation is a good approach. The launch files are structured logically, using arguments and inclusions effectively.
I've identified a few areas for improvement, primarily related to changelog clarity and a specific detail in the URDF definition. Addressing these will enhance the maintainability and clarity of the codebase.
Summary of Findings
- Changelog Clarity: Some changelog entries (e.g., in
turtlebot3_fake_node/CHANGELOG.rst
andturtlebot3_gazebo/CHANGELOG.rst
) are too generic (e.g., "* Node"). They should be more descriptive of the actual changes made. (Commented) - URDF Mimic Joint Definition: The URDF for
open_manipulator_x
uses adummy_mimic_fix
joint pattern that might be overly complex or redundant given standard URDF mimic tags andros2_control
mimic capabilities. Clarification on its necessity is requested. (Commented) - Missing Newlines at End of XML/SDF Files: Many of the newly added XML-based files (SDF, model.config) are missing a final newline character. While not functionally critical, adding it is a common best practice for text files. (Not commented due to review settings)
- Python Launch File Line Length: A multi-line string in
turtlebot3_manipulation_gazebo/launch/base.launch.py
(description forfake_sensor_commands
) results in a very long line, which could be re-formatted for better readability according to PEP 8 guidelines. (Not commented due to review settings) - ROS 1
$(find)
Syntax in XACRO for Gazebo Plugin: Theturtlebot3_manipulation.urdf.xacro
file uses$(find ...)
syntax for specifying the controller manager YAML path for thegazebo_ros2_control
plugin. While this is often supported by Gazebo plugins for backward compatibility or direct parsing, it's a ROS 1 pattern. (Not commented due to review settings)
Merge Readiness
This pull request adds valuable simulation capabilities for TurtleBot3 Manipulation. The overall implementation is solid. However, there are a few medium-severity items (changelog clarity and a URDF detail) that should be addressed to improve maintainability and clarity before merging. I am unable to approve pull requests, so please ensure these points are considered and the PR is reviewed by other maintainers. Addressing the medium-severity comments is recommended before merging.
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 many missing EOFs. Please fix it
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.
Nice work
@yun-goon please review it. |
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.
Sounds good! I have one suggestion, though.
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.
Why is it version 2.3.5, did you skip the other PRs?
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
Pull Request Summary
This PR to humble branch adds Gazebo simulation maps and TurtleBot3 Manipulation Gazebo simulation from turtlebot3_manipulation, turtlebot3_home_service_challenge package:
Added turtlebot3_manipulation Gazebo Simulation
Added turtlebot3_home_service_challenge map
Validation
Verified successful colcon build and ros2 launch on a Humble development environment