isaac_ros_nova

Source code on GitHub.

Overview

The isaac_ros_nova package is a meta-package that provides an easy way to bringup Nova sensors. It provides a launch file to start all ROS nodes related to a specified Nova YAML config file, and adds configurable monitoring and visualization.

The Nova system monitor utilizes NITROS Diagnostics and ROS diagnostics to aggregate and publish information on sensor performance and produce warnings/errors if the system is unstable.

Quickstart

Set Up Nova

  1. Verify if Nova Orin software is the latest version by comparing the installed package with the candidate:

    $ apt policy nova-orin-init
    nova-orin-init:
      Installed: 1.3.2+b3
      Candidate: 1.3.2+b3
      Version table:
     *** 1.3.2+b3 600
            600 https://isaac.download.nvidia.com/nova-init jammy/main arm64 Packages
    
  2. If the installed version is lower than the candidate, follow the nova init upgrade process here. Otherwise proceed to the next step.

  3. Verify that sensors are functioning by running:

    nova_preflight_checker
    

    It is expected for all tests to pass. Refer to the Nova PFC documentation for more details.

Set Up Development Environment

  1. Set up your development environment by following the instructions in getting started.

  2. Clone isaac_ros_common under ${ISAAC_ROS_WS}/src.

    cd ${ISAAC_ROS_WS}/src && \
       git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git isaac_ros_common
    
  3. (Optional) Install dependencies for any sensors you want to use by following the sensor-specific guides.

    Note

    We strongly recommend installing all sensor dependencies before starting any quickstarts. Some sensor dependencies require restarting the Isaac ROS Dev container during installation, which will interrupt the quickstart process.

  1. Create a file called .isaac_ros_dev-dockerargs with the following:

    cd ${ISAAC_ROS_WS}/src/isaac_ros_common/scripts
    echo -e "-v /etc/nova/:/etc/nova/" > .isaac_ros_dev-dockerargs
    

Build isaac_ros_nova

  1. Launch the Docker container using the run_dev.sh script:

    cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
    ./scripts/run_dev.sh
    
  2. Install the prebuilt Debian package:

    sudo apt-get update
    
    sudo apt-get install -y ros-humble-isaac-ros-nova
    

Run Launch File

  1. Continuing inside the Docker container, run the following launch file to spin up a demo of this package:

    Note

    The config file in this example works for any Nova sensor set with a minimum of 3 Hawks and 3 Owls, this includes Nova Developer Kit and Nova Carter. If you are using a different sensor set (for example, a single hawk camera), you can use one of the samples from the config/ directory. Alternatively you can supply your own custom config YAML. Finally, if the argument is not specified it will load all the drivers for your Nova sensor set, depending on your network this may cause performance issues.

    cd ${ISAAC_ROS_WS} && \
      ros2 launch isaac_ros_nova nova.launch.py visualize:=True config:=hawk-3_owl-3
    

Warning

Depending on the network and the CPU load on the system some topics may not visualize or appear laggy. You can reduce the sensor selection being launched by changing the config:=<Config path> to a different one from config/, or create your own. For custom YAMLs all sensors in the config file must match a sensor name found in /etc/nova/systeminfo.yaml.

Warning

When visualizing it is recommended to subscribe to the resize/image_raw topics. Subscribing to full sized image topics may cause performance issues.

Visualize Results

  1. Complete the foxglove setup guide.

  2. In Foxglove Studio open the hawk-3_owl-3.json layout file, which can be found in the isaac_ros_nova repository.

  3. Validate that you can see a visualization similar to the following:

    Foxglove visualization of Nova.

Track System Monitors

The example above already includes diagnostics for system monitoring, however there are many different options for viewing and tracking this information. Here we set up a layout to explore some of these options. Isaac ROS Nova Recorder has its own visualization for diagnostics.

  1. Complete the foxglove setup guide and run the nova.launch.py file as above.

  2. isaac_ros_nova repository provides a diagnostics_panels.json config layout. You can customize this or create your layout with the Diagnostics Detail, Diagnostics Summary, and State Transition panels. For the state transition panel you then need to add topics to be monitored, or add them by clicking on them in the Diagnostic Detail panel.

  3. You can now easily track the messages being output on /diagnostics and /diagnostics_agg. It should look something as below, hopefully with less dropped frames ;) :

    Foxglove visualization of Nova Monitors.

API

Usage

ros2 launch isaac_ros_nova nova.launch.py <launch_argument>:=<value>

Launch Argument

Description

Default

target_container

Target Container

nova

config

Sensor Configuration File

/etc/nova/systeminfo.yaml

diagnostics

Turn on diagnostics

True

visualize

Starts foxglove and other nodes for visualization.

False

visual_image

Image size for all cameras when visualizing. Note, larger images can slow performance.

[96,60]

MonitorNode

ROS Topics Subscribed

ROS Topic

Interface

Description

/diagnostics

diagnostic_msgs/DiagnosticArray

Diagnostics published by different nodes.

ROS Topics Published

ROS Topic

Interface

Description

/diagnostics_agg

diagnostic_msgs/DiagnosticArray

Diagnostics aggregated into groups by topic name and origin of diagnostics. Groups are /sensors/hawk, /sensors/owl, /sensors/bmi, and everything else is put into /misc.