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
SSH into the robot (instructions).
Make sure you have successfully connected the PS5 joystick to the robot (instructions).
Build/install the required packages:
Pull the Docker image:
docker pull nvcr.io/nvidia/isaac/nova_carter_bringup:release_3.1-aarch64
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.1-aarch64 \ ros2 launch nova_carter_bringup navigation.launch.py map_yaml_path:=<path_to_map_yaml>1. Make sure you followed the Prerequisites and you are inside the Isaac ROS Docker container.
Install the required Debian packages:
sudo apt update sudo apt-get install -y ros-humble-nova-carter-bringup source /opt/ros/humble/setup.bash
Install the required assets:
sudo apt-get install -y ros-humble-isaac-ros-peoplesemseg-models-install ros-humble-isaac-ros-ess-models-install source /opt/ros/humble/setup.bash ros2 run isaac_ros_ess_models_install install_ess_models.sh --eula ros2 run isaac_ros_peoplesemseg_models_install install_peoplesemsegnet_vanilla.sh --eula ros2 run isaac_ros_peoplesemseg_models_install install_peoplesemsegnet_shuffleseg.sh --eula
Run the launch file:
ros2 launch nova_carter_bringup navigation.launch.py map_yaml_path:=<path_to_map_yaml>1. Make sure you followed the Prerequisites and you are inside the Isaac ROS Docker container.
Use
rosdep
to install the package’s dependencies:sudo apt update rosdep update rosdep install -i -r --from-paths ${ISAAC_ROS_WS}/src/nova_carter/nova_carter_bringup/ \ --rosdistro humble -y
Install the required assets:
sudo apt-get install -y ros-humble-isaac-ros-peoplesemseg-models-install ros-humble-isaac-ros-ess-models-install source /opt/ros/humble/setup.bash ros2 run isaac_ros_ess_models_install install_ess_models.sh --eula ros2 run isaac_ros_peoplesemseg_models_install install_peoplesemsegnet_vanilla.sh --eula ros2 run isaac_ros_peoplesemseg_models_install install_peoplesemsegnet_shuffleseg.sh --eula
Build the ROS package in the Docker container:
colcon build --symlink-install --packages-up-to nova_carter_bringup \ source install/setup.bash
Run the launch file:
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
Make sure you complete Visualization Setup.
Open Foxglove Studio on your remote machine. Open the
nova_carter_navigation.json
layout file downloaded in the previous step.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:
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.
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:
Used the
beam
laser_model_type instead of the default “likelihood_field” laser_model_typeReduced the
z_hit
Gaussian model sigma(sigma_hit
) to 0.1Set the
beam
laser_model_type weights toz_hit
: 0.5,z_max
: 0.05,z_rand
: 0.4 andz_short
: 0.05Increased the
max_beams
parameter from60
to360
to allow for more detailed features to be used by AMCLDecreased all odometry process noise from
0.2
to0.1
to allow higher confidence in the robot’s wheel odometry