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_wsis sourced (foxy_wsorhumble_ws) so thatcarter_navigationandisaac_ros_navigation_goalare 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 Imagebutton and open the image of the occupancy map located undercarter_navigation/maps/carter_warehouse_navigation.png. A window titledVisualizationwill appear.Press the
Generate Block Worldbutton 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
Contenttab.Go to
localhostfollowed byNVIDIA/Assets/Isaac/4.2/Isaac/Samples/ROS2/Robotsfolder.Drag and drop the
Nova_Carter_ROS.usdasset 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
Playin Isaac Sim to begin simulation.Open a new terminal and source the
<ros2_ws>which contains thecarter_navigationpackage. 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 Estimatebutton 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 Goalbutton 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.