Isaac ros visual slam for both Jetson and x86 ‐ Ubuntu 24.04 - ashBabu/Utilities GitHub Wiki

Getting started with isaac_ros_visual_slam

Use Docker. This will work on Jetson Orin Nano.

Some things to Note

The isaac-ros-cli will install the following files at /etc/isaac-ros-cli

  • config.yaml
  • docker/ # a folder
    • Dockerfile.isaac_ros
    • Dockerfile.ros2_jazzy
    • Dockerfile.noble
    • Dockerfile.realsense
    • Dockerfile.zed
    • packaging/
    • udev_rules/
    • patches/
    • A few other things
  • environment.conf

The config.yaml is used to build layered docker images. It has the following

version: 2
docker:
  image:
    base_image_keys:
      - isaac_ros
      - noble
      - ros2_jazzy
    additional_image_keys:
      - realsense
  run:
    container_name: isaac_ros_dev_container
    entrypoint: /opt/nvidia/nvidia_entrypoint.sh
    workdir: "/workspaces/isaac_ros-dev"
    platform: auto
    use_cached_build_image: false

Additional config (for example, a user specified docker build) can be initiated by adding an image key (for example user) and providing a Dockerfile.user either inside the docker directory inside /etc/isaac-ros-cli/docker/ or

sudo nano /etc/isaac-ros-cli/.isaac_ros_common-config

CONFIG_DOCKER_SEARCH_DIRS=(/home/ash/workspaces/isaac_ros-dev /etc/isaac-ros-cli/docker)

Add a file named Dockerfile.user inside /home/ash/workspaces/isaac_ros-dev/

ARG BASE_IMAGE
FROM ${BASE_IMAGE}

ARG DEBIAN_FRONTEND=noninteractive
ENV ROS_DISTRO=jazzy
ENV ROS_ROOT=/opt/ros/${ROS_DISTRO}

# Install prebuilt packages
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
    apt-get update \
    && apt-get install -y \
        ros-jazzy-my-package \
        ros-jazzy-another-package

Also, append the /etc/isaac-ros-cli/config.yaml or create a new one at ~/config/isaac-ros-cli/config.yaml with the added image key

docker:
  image:
    additional_image_keys:
      - realsense
      - user
  • isaac-ros activate --build-local # will build the image and might take long

Follow the isaac_ros_visual_slam for running with live sensor or rosbag

Or

  • sudo apt-get install -y ros-jazzy-isaac-ros-visual-slam ros-jazzy-isaac-ros-examples

  • [Optional testing] Download isaac_ros_assets. Make sure to select the isaac-ros-visual-slam from the dropdown

  • ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=visual_slam \ interface_specs_file:=${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_visual_slam/quickstart_interface_specs.json \ rectified_images:=false

  • In another terminal,

    • xhost +,
    • docker exec -it isaac_ros_dev_container bash
    • rviz2 -d $(ros2 pkg prefix isaac_ros_visual_slam --share)/rviz/default.cfg.rviz
  • In another terminal,

    • ros2 bag play ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_visual_slam/quickstart_bag --remap \ /front_stereo_camera/left/image_raw:=/left/image_rect \ /front_stereo_camera/left/camera_info:=/left/camera_info_rect \ /front_stereo_camera/right/image_raw:=/right/image_rect \ /front_stereo_camera/right/camera_info:=/right/camera_info_rect \ /back_stereo_camera/left/image_raw:=/rear_left/image_rect \ /back_stereo_camera/left/camera_info:=/rear_left/camera_info_rect \ /back_stereo_camera/right/image_raw:=/rear_right/image_rect \ /back_stereo_camera/right/camera_info:=/rear_right/camera_info_rect

Live realsense cam

  • Needs firmware version 5.16.0.1, librealsense SDK 2.56.3 and realsense-ros driver version r/4.56.3. [Setup Instructions] (https://nvidia-isaac-ros.github.io/getting_started/sensors/realsense_setup.html)
  • If the firmware is not the specified version, download the specific version from here and extract the .zip file to get the Signed_Image_UVC_5_16_0_1.bin file
  • rs-fw-update -f Signed_Image_UVC_5_16_0_1.bin
  • rs-enumerate-devices to get a long list of devices

Running custom rosbag with isaac_ros_visual_slam

ros2 launch bringup_vslam_rosbag.launch.py bag_path:=/Ash/repo/pipeon-home/realsense_ros2bag/ filter_imu:=true

To save the colored map

ros2 service call /nvblox_node/save_ply nvblox_msgs/srv/FilePath "{file_path: '/workspaces/isaac_ros-dev/nvblox_map.ply'}"

Useful resources