Tutorial: Autonomous Navigation with Isaac Perceptor and Nav2

This tutorial will enable you to run autonomous navigation with the Nova Carter robot. The tutorial uses the Isaac Perceptor stack for local camera-based 3D perception, AMCL for lidar localization and Nav2 for navigation.

For this tutorial, it is assumed that you have successfully completed the perceptor tutorial.

Instructions

  1. SSH into the robot (instructions).

  2. Make sure you have successfully connected the PS5 joystick to the robot (instructions).

  3. Build/install the required packages:

  1. Pull the docker image:

docker pull nvcr.io/nvidia/isaac/nova_carter_bringup:release_3.0-aarch64
  1. Run the docker image:

docker run --privileged --network host \
    -v /dev/*:/dev/* \
    -v /tmp/argus_socket:/tmp/argus_socket \
    -v /etc/nova:/etc/nova \
    nvcr.io/nvidia/isaac/nova_carter_bringup:release_3.0-aarch64 \
    ros2 launch nova_carter_bringup navigation.launch.py map_yaml_path:=<path_to_map_yaml>

Note

Make sure to replace <path_to_map_yaml> with the path of the map YAML file. If you do not have a map of your environment you can create one using this tutorial

Note

Some users have reported sporadic WiFi connection issues and the robot sometimes not responding to goal poses when using the pre-built docker images. We are actively working on improving these issues.

Visualizing the Outputs and Sending Goals

  1. Make sure you complete Visualization Setup.

  2. Open Foxglove Studio on your remote machine. Open the nova_carter_navigation.json layout file downloaded in the previous step.

  3. Validate that you can see a visualization of the map, local costmap, and footprint of the robot. You should expect a visualization similar to the following:

foxglove_nav2
  1. You can send a goal pose setpoint to Nav2 using the pose publish button in Foxglove as shown below:

Note

It is important to ensure that the Foxglove “Display frame” in the 3D panel is set to “map” before sending the goals. If goals are sent and the robot does not move, it is best to check first that the correct “Display frame” has been set.

foxglove_nav2_galileo

Note

You can also use the joystick to override Nav2 autonomous control at any point.

AMCL Tuning

Compared to the default parameters of AMCL we made the following changes to improve localization performance:

  1. Used the beam laser_model_type instead of the default “likelihood_field” laser_model_type

  2. Reduced the z_hit Gaussian model sigma(sigma_hit) to 0.1

  3. Set the beam laser_model_type weights to z_hit: 0.5, z_max: 0.05, z_rand: 0.4 and z_short: 0.05

  4. Increased the max_beams parameter from 60 to 360 to allow for more detailed features to be used by AMCL

  5. Decreased all odometry process noise from 0.2 to 0.1 to allow higher confidence in the robot’s wheel odometry