-
Notifications
You must be signed in to change notification settings - Fork 512
Bump 2.3.5 #240
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
Bump 2.3.5 #240
Conversation
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Signed-off-by: Hyungyu Kim <kimhg@robotis.com>
Update simulation for machine learning jazzy version
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 @robotpilot, 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-code-assist here to provide a summary of this pull request. This PR primarily focuses on bumping the version of the turtlebot3_simulations
package and its sub-packages (turtlebot3_fake_node
, turtlebot3_gazebo
) to version 2.3.5. The main functional addition in this version bump is the inclusion of a new turtlebot3_machine_learning
world and associated plugins within the turtlebot3_gazebo
package. This involves adding new world and model files, implementing new Gazebo Garden system plugins for dynamic obstacles, and updating the build configuration to support these new components and dependencies.
Highlights
- Version Bump: The version number across the
turtlebot3_simulations
,turtlebot3_fake_node
, andturtlebot3_gazebo
packages has been updated from 2.3.3 to 2.3.5. - New Machine Learning World and Plugins: A new simulation environment (
turtlebot3_machine_learning
) designed for machine learning tasks has been added to theturtlebot3_gazebo
package. This includes new world files (turtlebot3_dqn_stage*.world
), static and dynamic obstacle models, and custom Gazebo Garden system plugins (ObstaclesPlugin
,Obstacle1Plugin
,Obstacle2Plugin
) to control the movement of dynamic obstacles. - Gazebo Garden Migration/Updates: The new obstacle plugins are implemented as Gazebo Garden Systems. Existing SDF model files (
turtlebot3_burger
,turtlebot3_burger_cam
,turtlebot3_waffle
,turtlebot3_waffle_pi
) have been updated to SDF version 1.8. The build system (CMakeLists.txt
) has been updated to require CMake 3.8 and find/link against necessary Gazebo Garden libraries (gz-math
,gz-sim
,gz-plugin
). The world files now include models from Gazebo Fuel and use the updated SDF format and plugin inclusion syntax.
Changelog
Click here to see the changelog
- turtlebot3_fake_node/CHANGELOG.rst
- Added entry for version 2.3.5.
- turtlebot3_fake_node/package.xml
- Updated package version from 2.3.3 to 2.3.5.
- turtlebot3_gazebo/CHANGELOG.rst
- Added entry for version 2.3.5, noting the addition of the turtlebot3_machine_learning world and plugin.
- turtlebot3_gazebo/CMakeLists.txt
- Increased minimum required CMake version from 3.5 to 3.8.
- Added find_package calls for gz_math_vendor, gz-math, gz_sim_vendor, gz-sim, gz_plugin_vendor, and gz-plugin.
- Added GZ_SIM_LIBRARY_DIRS and GZ_SIM_INCLUDE_DIRS to link_directories and include_directories respectively.
- Defined OBSTACLE_LIBS variable for the new obstacle plugins.
- Added build and linking configuration for the obstacles, obstacle1, and obstacle2 shared libraries using gz-sim and gz-math.
- Added installation targets for the new obstacle plugins.
- turtlebot3_gazebo/include/turtlebot3_gazebo/obstacle1.hpp
- New header file for the Obstacle1 Gazebo Garden plugin.
- Defines
Obstacle1Plugin
class inheriting fromgz::sim::System
,ISystemConfigure
, andISystemPreUpdate
. - Includes necessary Gazebo Garden headers (
gz/sim/System.hh
,gz/sim/Model.hh
,gz/math/Vector3.hh
). - Adds member variables for model entity, start time, waypoints, segment distances, total distance, and speed.
- Declares
Configure
andPreUpdate
methods.
- turtlebot3_gazebo/include/turtlebot3_gazebo/obstacle2.hpp
- New header file for the Obstacle2 Gazebo Garden plugin.
- Defines
Obstacle2Plugin
class inheriting fromgz::sim::System
,ISystemConfigure
, andISystemPreUpdate
. - Includes necessary Gazebo Garden headers.
- Adds member variables for model entity, start time, waypoints, segment distances, total distance, and speed.
- Declares
Configure
andPreUpdate
methods.
- turtlebot3_gazebo/include/turtlebot3_gazebo/obstacles.hpp
- New header file for the Obstacles Gazebo Garden plugin.
- Defines
ObstaclesPlugin
class inheriting fromgz::sim::System
,ISystemConfigure
, andISystemPreUpdate
. - Includes necessary Gazebo Garden headers.
- Adds member variables for model entity and start time.
- Declares
Configure
andPreUpdate
methods.
- turtlebot3_gazebo/launch/turtlebot3_dqn_stage1.launch.py
- New launch file for the turtlebot3_dqn_stage1 world using
ros_gz_sim
. - Sets
GZ_SIM_RESOURCE_PATH
to include local models. - Includes
gz_sim.launch.py
for both server and client. - Includes
robot_state_publisher.launch.py
andspawn_turtlebot3.launch.py
.
- New launch file for the turtlebot3_dqn_stage1 world using
- turtlebot3_gazebo/launch/turtlebot3_dqn_stage2.launch.py
- New launch file for the turtlebot3_dqn_stage2 world using
ros_gz_sim
. - Similar structure to stage1 launch file, includes obstacles model.
- New launch file for the turtlebot3_dqn_stage2 world using
- turtlebot3_gazebo/launch/turtlebot3_dqn_stage3.launch.py
- New launch file for the turtlebot3_dqn_stage3 world using
ros_gz_sim
. - Similar structure to stage1 launch file, includes obstacles model with plugin.
- New launch file for the turtlebot3_dqn_stage3 world using
- turtlebot3_gazebo/launch/turtlebot3_dqn_stage4.launch.py
- New launch file for the turtlebot3_dqn_stage4 world using
ros_gz_sim
. - Similar structure to stage1 launch file, includes inner_walls, obstacle1, and obstacle2 models with plugins.
- New launch file for the turtlebot3_dqn_stage4 world using
- turtlebot3_gazebo/models/turtlebot3_burger/model.sdf
- Adjusted indentation for plugin parameters.
- turtlebot3_gazebo/models/turtlebot3_burger_cam/model.config
- Updated SDF version reference from 1.6 to 1.8.
- turtlebot3_gazebo/models/turtlebot3_burger_cam/model.sdf
- Updated SDF version from 1.6 to 1.8.
- Adjusted indentation for plugin parameters.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.config
- New model config file for the goal_box model.
- Specifies SDF version 1.8.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.sdf
- New SDF model file for a static goal box (red cylinder).
- Uses SDF version 1.8.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/inner_walls/model.config
- New model config file for the inner_walls model.
- Specifies SDF version 1.8.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/inner_walls/model.sdf
- New SDF model file for static inner walls.
- Uses SDF version 1.8.
- Defines multiple links for different wall segments with collision and visual properties.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/model.config
- New model config file for the turtlebot3_dqn_world model.
- Specifies SDF version 1.8.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/model.sdf
- New SDF model file for the main square world structure (outer walls).
- Uses SDF version 1.8.
- Defines multiple links for the outer wall segments.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle1/model.config
- New model config file for the obstacle1 model.
- Specifies SDF version 1.8.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle1/model.sdf
- New SDF model file for a dynamic obstacle (cylinder).
- Uses SDF version 1.8.
- Sets static to false to allow movement.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle2/model.config
- New model config file for the obstacle2 model.
- Specifies SDF version 1.8.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle2/model.sdf
- New SDF model file for a dynamic obstacle (cylinder).
- Uses SDF version 1.8.
- Sets static to false to allow movement.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacles/model.config
- New model config file for the obstacles model.
- Specifies SDF version 1.8.
- turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacles/model.sdf
- New SDF model file for a set of static obstacles (four cylinders).
- Uses SDF version 1.8.
- Sets static to false, likely intended for the plugin to control their collective movement/rotation.
- turtlebot3_gazebo/models/turtlebot3_waffle/model.config
- Updated SDF version reference from 1.5 to 1.8.
- turtlebot3_gazebo/models/turtlebot3_waffle/model.sdf
- Adjusted indentation for plugin parameters.
- turtlebot3_gazebo/models/turtlebot3_waffle_pi/model.config
- Updated SDF version reference from 1.5 to 1.8.
- turtlebot3_gazebo/models/turtlebot3_waffle_pi/model.sdf
- Updated SDF version from 1.5 to 1.8.
- Changed
<lidar>
tag to<ray>
within the sensor definition, which is the correct tag for lidar sensors in recent SDF versions. - Adjusted indentation for plugin parameters.
- turtlebot3_gazebo/package.xml
- Updated package version from 2.3.3 to 2.3.5.
- Added dependencies on
gz_sim_vendor
,gz_plugin_vendor
, andgz_math_vendor
.
- turtlebot3_gazebo/src/obstacle1.cpp
- New source file for the Obstacle1 Gazebo Garden plugin.
- Implements
Configure
to initialize the model entity, start time, and define a set of waypoints for linear movement. - Implements
PreUpdate
to calculate the current position along the defined waypoints based on elapsed time and speed, and set the model's pose. - Registers the plugin using
GZ_ADD_PLUGIN
andGZ_ADD_PLUGIN_ALIAS
.
- turtlebot3_gazebo/src/obstacle2.cpp
- New source file for the Obstacle2 Gazebo Garden plugin.
- Implements
Configure
to initialize the model entity, start time, and define a different set of waypoints for linear movement. - Implements
PreUpdate
to calculate the current position along the defined waypoints based on elapsed time and speed, and set the model's pose. - Registers the plugin.
- turtlebot3_gazebo/src/obstacles.cpp
- New source file for the Obstacles Gazebo Garden plugin.
- Implements
Configure
to initialize the model entity and start time. - Implements
PreUpdate
to calculate a rotation angle based on elapsed time and set the model's pose, causing the group of obstacles to rotate. - Registers the plugin.
- turtlebot3_gazebo/worlds/turtlebot3_dqn_stage1.world
- Updated SDF version from 1.6 to 1.8.
- Changed world name from 'default' to 'dqn'.
- Replaced explicit
include
forground_plane
andsun
with standard Gazebo Garden system plugins and a Fuel model include for the ground plane. - Added
gz-sim-physics-system
,gz-sim-user-commands-system
,gz-sim-scene-broadcaster-system
, andgz-sim-sensors-system
plugins. - Updated the
turtlebot3_dqn_world
model inclusion to usestatic>true
instead ofstatic>1
.
- turtlebot3_gazebo/worlds/turtlebot3_dqn_stage2.world
- Updated SDF version from 1.6 to 1.8.
- Changed world name from 'default' to 'dqn'.
- Added standard Gazebo Garden system plugins, including
gz-sim-imu-system
. - Included Ground Plane and Sun via standard methods.
- Updated the
turtlebot3_dqn_world
model inclusion. - Updated the
turtlebot3_dqn_world/obstacles
model inclusion.
- turtlebot3_gazebo/worlds/turtlebot3_dqn_stage3.world
- Updated SDF version from 1.6 to 1.8.
- Changed world name from 'default' to 'dqn'.
- Added standard Gazebo Garden system plugins, including
gz-sim-imu-system
. - Included Ground Plane and Sun via standard methods.
- Updated the
turtlebot3_dqn_world
model inclusion. - Updated the
turtlebot3_dqn_world/obstacles
model inclusion to include theturtlebot3_gazebo::ObstaclesPlugin
.
- turtlebot3_gazebo/worlds/turtlebot3_dqn_stage4.world
- Updated SDF version from 1.6 to 1.8.
- Changed world name from 'default' to 'dqn'.
- Added standard Gazebo Garden system plugins, including
gz-sim-imu-system
. - Included Ground Plane and Sun via standard methods.
- Updated the
turtlebot3_dqn_world
model inclusion. - Included the
turtlebot3_dqn_world/inner_walls
model. - Included the
turtlebot3_dqn_world/obstacle1
model and associatedturtlebot3_gazebo::Obstacle1Plugin
. - Included the
turtlebot3_dqn_world/obstacle2
model and associatedturtlebot3_gazebo::Obstacle2Plugin
.
- turtlebot3_simulations/CHANGELOG.rst
- Added entry for version 2.3.5, noting the addition of the turtlebot3_machine_learning world and plugin.
- turtlebot3_simulations/package.xml
- Updated package version from 2.3.3 to 2.3.5.
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.
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 successfully bumps the version to 2.3.5 across the relevant packages and introduces new Gazebo Sim worlds and moving obstacles for machine learning stages. The migration from classic Gazebo plugins to Gazebo Sim systems is a significant and positive change. The new obstacle plugins implement waypoint following and rotation logic, which adds dynamic elements to the simulation environments. The new SDF models and Python launch files are well-structured and follow standard practices. Overall, this is a valuable addition to the repository.
Summary of Findings
- Obstacle plugin movement logic: The current logic for calculating the obstacle position based on elapsed time and total distance might cause the obstacle to momentarily stop at the end of the path due to floating-point precision before wrapping around. Explicitly handling the wrap-around might be more robust.
- Plugin placement in world SDF: System plugins in world SDF files are typically defined directly under the
<world>
tag, not nested within<include>
tags for models. This improves clarity and adherence to standard SDF structure. - Empty author fields in model.config: The
author
name and email fields are empty inturtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.config
. While minor, filling these out provides proper attribution. - Inconsistent indentation in SDF files: Minor indentation changes were made in the
<plugin>
sections of the TurtleBot3 model SDF files (turtlebot3_burger
,turtlebot3_waffle
,turtlebot3_waffle_pi
). While not critical, maintaining consistent indentation (e.g., 2 spaces or 3 spaces) throughout the file and repository improves readability.
Merge Readiness
The pull request introduces significant and valuable changes, including migrating to Gazebo Sim systems and adding new simulation environments. However, there are a few medium-severity issues related to the obstacle movement logic and plugin placement in world files that should be addressed to ensure correctness and maintainability. I recommend addressing these issues before merging. I am unable to approve this pull request; please have other reviewers approve 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.
Pull Request Overview
This PR prepares the 2.3.5 release by adding a new TurtleBot3 DQN world with SDF 1.8 models and configs, four stage-specific DQN launch scripts, and migrating obstacle plugins to the Gazebo/gz-sim System API. It also bumps package versions, updates changelogs, adjusts CMakeLists to link new dependencies, and refines the CI matrix.
Reviewed Changes
Copilot reviewed 43 out of 43 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
turtlebot3_gazebo/models/turtlebot3_dqn_world/model.config | Added DQN world model config |
turtlebot3_gazebo/models/turtlebot3_dqn_world/inner_walls/model.sdf | New inner walls SDF (static obstacles) |
turtlebot3_gazebo/models/turtlebot3_dqn_world/inner_walls/model.config | Inner walls model config |
turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.sdf | New goal marker SDF |
turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.config | Goal box model config (author/description blank) |
turtlebot3_gazebo/models/turtlebot3_burger_cam/model.sdf | Updated SDF version to 1.8 |
turtlebot3_gazebo/models/turtlebot3_burger_cam/model.config | Switched model.config to reference SDF 1.8 |
turtlebot3_gazebo/launch/turtlebot3_dqn_stage{1..4}.launch.py | Added four stage-specific DQN launch files |
turtlebot3_gazebo/include/turtlebot3_gazebo/{obstacles,obstacle1,obstacle2}.hpp | Migrated plugins to gz-sim System API (removed old ModelPlugin) |
turtlebot3_gazebo/CMakeLists.txt | Bumped CMake version, added gz-sim and gz-math deps, refactored plugin builds |
turtlebot3_gazebo/CHANGELOG.rst | Added 2.3.5 entry (name mismatch) |
turtlebot3_fake_node/package.xml & CHANGELOG.rst | Bumped to 2.3.5, updated fake_node changelog |
.github/workflows/ros-ci.yml | Adjusted ROS distro matrix (commented out Humble) |
Comments suppressed due to low confidence (2)
turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.config:7
- The author name and email fields are left empty; fill them or remove the empty tags to avoid confusion.
<name></name>
turtlebot3_gazebo/CHANGELOG.rst:7
- The changelog entry references 'turtlebot3_machine_learning', but the directory is named 'turtlebot3_dqn_world'. Update this to match the actual world name.
* Added turtlebot3_machine_learning world and plugin
No description provided.