ROS 2 Navigation with Block World Generator#
Warning
ROS 2 Foxy is no longer tested or supported. This may result in potential issues when ROS 2 Foxy is used in conjunction with Isaac Sim 4.2 or later. ROS 2 Foxy Isaac Sim tutorial packages will be removed in a future release.
Learning Objectives#
In this example, we will learn how to
Generate a 3D world using a 2D occupancy map
Perform navigation with a robot in the generated 3D world with Nav2
Prerequisite
Completed ROS2 Navigation for ROS 2 Nav2 with a single robot. So that
ROS 2 and Nav2 are installed, and ROS2 bridge is enabled.
Appropriate
ros2_ws
is sourced (foxy_ws
orhumble_ws
) so thatcarter_navigation
andisaac_ros_navigation_goal
are inside your workspace.
Note
In Windows 10 or 11, depending on your machine’s configuration, RViz2 may not open properly.
Setting up Environment and Robot#
Generate 3D World#
First, let us load generate the 3D world using the Block World Generator within Isaac Sim
Go to the top menu bar and click Isaac Utils -> Block World Generator Map
Press
Load Image
button and open the image of the occupancy map located undercarter_navigation/maps/carter_warehouse_navigation.png
. A window titledVisualization
will appear.Press the
Generate Block World
button to create geometry corresponding to the input occupancy map in the Stage.
The generated 3D world automatically has a collision mesh applied for all the occupied pixels.
Add Robot in Scene#
Next, we will add a Carter robot which has all ROS 2 OmniGraph Nodes setup into this scene.
At the bottom of the Isaac Sim window, navigate to the
Content
tab.Go to
localhost
followed byNVIDIA/Assets/Isaac/4.2/Isaac/Samples/ROS2/Robots
folder.Drag and drop the
Nova_Carter_ROS.usd
asset into the scene generated in the previous step (anywhere in the space bounded by the walls and on the ground)
Running Navigation#
We now have the 3D scene and robot set up to run the Nav2 stack
Click on
Play
in Isaac Sim to begin simulation.Open a new terminal and source the
<ros2_ws>
which contains thecarter_navigation
package. Run the ROS 2 launch file to begin Nav2ros2 launch carter_navigation carter_navigation.launch.py
RViz2 will open and begin loading the occupancy map. If a map does not appear, repeat the previous step.
Use the
2D Pose Estimate
button to re-set the position of the robot. (Make sure you do this before setting a goal and the pose estimate is approximately correct).Click on the
Navigation2 Goal
button and then click and drag at the desired location point in the map. Nav2 will now generate a trajectory and the robot will start moving towards its destination!
Summary#
In this tutorial, we covered
Generating 3D world using 2D occupancy map with Block World Generator
Adding a robot into this world and running Nav2 with it
Next Steps#
Continue on to the next tutorial in our ROS2 Tutorials series, ROS 2 Custom C++ OmniGraph Node.