Skip to content

Created Gazebo Simulation for Scout Mini (with Nav2 capabilities)#3

Merged
nhat-m-le merged 13 commits into
mainfrom
sim-dev
Jul 17, 2026
Merged

Created Gazebo Simulation for Scout Mini (with Nav2 capabilities)#3
nhat-m-le merged 13 commits into
mainfrom
sim-dev

Conversation

@InfinityJuice

@InfinityJuice InfinityJuice commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

PR Summary

This PR adds a full Scout Mini Gazebo + Nav2 simulation workflow and updates the robot model, navigation configs, maps, and task runners needed to exercise autonomous navigation in simulation.

Major Changes

  • Adds a Gazebo launch path for Scout Mini with scoutmini_description/launch/gazebo_mini.launch.py.
  • Adds selectable simulation worlds: default_warehouse, warehouse, empty, and tb3_sandbox.
  • Vendors new world/map assets, including warehouse and TurtleBot-style sandbox maps.
  • Updates the Scout Mini URDF/Xacro with local mesh assets, corrected base_footprint relationship, wheel orientation/axis updates, Gazebo ros2_control integration, and simulated IMU, lidar, ZED-style RGB camera, and Insta360-style RGB camera outputs.
  • Adds Gazebo bridge, diff drive, and SLAM config files.
  • Adds nav2_sim.yaml for simulation-specific Nav2 behavior using /scan, /ground_truth/odom, AMCL, Navfn, DWB, costmaps, velocity smoothing, and waypoint following.
  • Expands simulation_2d.launch.py into a full bringup that launches Gazebo, spawns the robot, starts Nav2, and optionally sends route or single-pose goals.
  • Updates navigation.launch.py to support simulation use cases, optional hardware odometry launch, map YAML rewriting, RViz launch, and optional route loop execution.
  • Adds nav_to_pose_runner.py for sending a single NavigateToPose goal from launch parameters.
  • Improves route_loop_runner.py with initial map_name parameter support, retry/timeout handling for waypoint resolution, waypoint JSON fallback when the waypoint service is unavailable, and cleaner shutdown behavior.
  • Adds scoutmini_nav2/README.md with build, launch, RViz, and Nav2 health-check instructions.

How To Run

cd /ros2_ws
colcon build --packages-select scoutmini_description scoutmini_nav2 scoutmini_tasks map_tools
source install/setup.bash
ros2 launch scoutmini_nav2 simulation_2d.launch.py

Optional single goal:

ros2 launch scoutmini_nav2 simulation_2d.launch.py use_goal:=true goal_x:=2.0 goal_y:=0.0 goal_yaw:=0.0

Notes

  • The default simulation uses the vendored warehouse world and map_tools/maps/warehouse/warehouse.yaml.
  • Gazebo may need internet access the first time it loads Fuel-hosted warehouse assets.
  • All commits on this PR branch are signed.

@InfinityJuice
InfinityJuice requested a review from nhat-m-le as a code owner July 8, 2026 18:32
@InfinityJuice InfinityJuice self-assigned this Jul 8, 2026
@InfinityJuice

Copy link
Copy Markdown
Collaborator Author

Had to sign all my commits because merging rule. That's why all the commits date to today at the same time and force pushed.

@nhat-m-le nhat-m-le left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

First round of review with some questions/comments/suggestions. Take a look at all of them first before deciding what to do next and address the questions.

Comment thread ros2_ws/src/scoutmini_description/urdf/scout_mini/scout_mini.gazebo
Comment thread ros2_ws/src/scoutmini_description/config/slam_toolbox.yaml Outdated
Comment thread ros2_ws/src/scoutmini_sim/worlds/empty_with_sensors.sdf
Comment thread ros2_ws/src/scoutmini_nav2/config/nav2.yaml Outdated
Comment thread ros2_ws/src/scoutmini_nav2/config/nav2.yaml

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

refer to comment in scout_mini.xacro about this file

Comment thread ros2_ws/src/scoutmini_description/urdf/sensors.xacro
Comment thread ros2_ws/src/scoutmini_description/urdf/sensors.xacro
Comment thread ros2_ws/src/scoutmini_description/urdf/sensors.xacro

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I know that I initially put this file here but it might be better in a scoutmini_sim package together with the worlds folders from scoutmini_description.

@nhat-m-le nhat-m-le self-assigned this Jul 10, 2026
@InfinityJuice

Copy link
Copy Markdown
Collaborator Author

One thing that happened when trying to load the zed2 camera mesh for me was that it couldn't find the supposed path of the mesh.

Fix: go to zed-ros2-wrapper/zed_wrapper/urdf/zed_macro.urdf.xacro

Change instances of "$(find zed_msgs)" to "$(find zed_description)"

If this is the same for you, you might want to update the zed-ros2-wrapper repo

@nhat-m-le
nhat-m-le self-requested a review July 17, 2026 14:50
@nhat-m-le
nhat-m-le dismissed their stale review July 17, 2026 14:50

lgtm now

@nhat-m-le nhat-m-le left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@nhat-m-le

Copy link
Copy Markdown
Contributor

One thing that happened when trying to load the zed2 camera mesh for me was that it couldn't find the supposed path of the mesh.

Fix: go to zed-ros2-wrapper/zed_wrapper/urdf/zed_macro.urdf.xacro

Change instances of "$(find zed_msgs)" to "$(find zed_description)"

If this is the same for you, you might want to update the zed-ros2-wrapper repo

I think this can be solved with sudo apt install ros-humble-zed-msgs

@nhat-m-le
nhat-m-le merged commit ef93d90 into main Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants