15. Visual Inertial Odometry with Quadruped

15.1. Learning Objectives

This tutorial demonstrates integrating Omniverse Isaac Sim with the VINS-Fusion, one of the most popular open source VIOs (Visual-Inertial-Odometry). We use the Unitree A1 Quadruped robot from the Quadruped extension to generate sensor data.

15.2. Getting Started

Prerequisite

  • This tutorial requires isaac_vins ROS package provided under the directory ros_workspace/. It contains the required launch and config files to run VINS-Fusion with correct sensor configuration.

  • Install VINS-Fusion and its prerequisites in your ROS workspace and then build it.

    Note

    The official branch currently only supports up to Ubuntu 18.04, and this custom branch supports up to Ubuntu 20.04.

  • Complete ROS & ROS 2 Installation, make sure ROS environment is setup correctly and the aforementioned packages are inside your ROS_PACKAGE_PATH.

  • Explore the ROS Bridge in Standalone Workflow to understand the ROS standalone workflow

  • roscore is running before running Omniverse Isaac Sim.

15.3. Run Visual Inertial Odometry with Quadruped A1

  • In a new terminal, run isaac sim

    cd ~/.local/share/ov/pkg/isaac_sim-2022.1.1
    ./python.sh standalone_examples/api/omni.isaac.quadruped/a1_vision_ros1_standalone.py
    
  • Make sure Isaac Sim publishes sensor data by checking rostopc list.

  • Configure isaac_vins package settings by going to ros_workspace/src/isaac_vins/config/isaac_a1/vins_fusion_isaac_a1.yaml , and select the desired number of imu and cameras. For slower computers, it is recommended to only use stereo camera odometry by setting imu: 0 in vins_fusion_isaac_a1.yaml

  • In a new terminal with your ROS environment sourced, run:

    roslaunch isaac_vins isaac_a1_vins.launch
    

15.4. Summary

In this tutorial, we run VINS-Fusion with an A1 quadruped robot simulated in Omniverse Isaac Sim.

15.4.1. Further Reading