Tutorial: Generate an Occupancy Map for Navigation
This tutorial walks you through the creation of a 2D occupancy map of your environment. This map can the be used for autonomous navigation.
Instructions
SSH into the robot (instructions).
Make sure you have successfully connected the PS5 joystick to the robot (instructions).
Build and 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 lidar_mapping.launch.py1. 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
Run the launch file:
ros2 launch nova_carter_bringup lidar_mapping.launch.py1. 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
Build the ROS package in the Docker container:
colcon build --symlink-install --packages-up-to nova_carter_bringup \ --packages-skip isaac_ros_ess_models_install isaac_ros_peoplesemseg_models_install source install/setup.bash
Run the launch file:
ros2 launch nova_carter_bringup lidar_mapping.launch.py
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.Verify that you see a visualization of the part of the map that is in close proximity to the robot.
To map your entire environment move the robot around using the joystick. Verify that you can see the map visualization in Foxglove expand in real-time as you are moving the robot around.
To store the map open a new terminal, SSH into the robot, and attach to the Docker container that’s running the Lidar mapping application. This depends on what approach you chose above to build and install the app.
Get the name of the Docker container by running:
docker ps
Then attach to the Docker container with the following command. Make
sure to replace <name-of-docker-container>
with the name found
above.
docker exec -it <name-of-docker-container> /bin/bash
Isaac ROS development Docker container using the run_dev.sh
script:
cd $ISAAC_ROS_WS/src/isaac_ros_common && \
./scripts/run_dev.sh
Isaac ROS development Docker container using the run_dev.sh
script:
cd $ISAAC_ROS_WS/src/isaac_ros_common && \
./scripts/run_dev.sh
Run the following command to save the map
.png
and.yaml
file:This
.yaml
file can be used as the input map in the navigation tutorial.
source /opt/ros/humble/setup.bash
cd /workspaces/isaac_ros-dev
ros2 run nav2_map_server map_saver_cli --fmt png -f <path/to/my/map>
Note
Replace <path/to/my/map>
with the path where the map
will be stored. To keep the map when the Docker container is
stopped, it is recommended to use a path that is mounted to the Docker
container, for example /tmp/my_map.png
. If you are running this example
with the pre-built Docker image, then no suitable path is mounted. In this case
store the map to /tmp/my_map.png
and then copy it out of the container with
docker cp <name-of-docker-container>:/tmp/my_map.png .
.