Visual-Inertial Odometry Positioning

Visual Inertial Odometry (VIO) mode does not store any history of the location of the natural features identified in the scene or the historic position estimates of the robot. This makes this mode the most computationally light. The core output of this system is live position estimate which is accurate over short distances but will become less accurate as distance travelled increases.

Step 1 - Create a Configuration File

You can change some of Slamcore’s default parameters using a configuration file. Download vio_mode.json to a convenient directory, e.g. ~/slamcore/custom/vio_mode.json.

The ProfileName parameter can be set to any name that you wish to be displayed on the Slamcore Visualiser when the configuration file is being used.

The positioning mode is controlled by the PositioningMode parameter and can be set to SLAM or ODOMETRY_ONLY. For this tutorial we will set it to ODOMETRY_ONLY.

You can also refer to Configuration Overview to set other parameters which will affect the performance of the system. For example, in this tutorial we set the number of features detected on each frame and used to triangulate the position of the sensor. The number of features can be changed with the NumKeypoints parameter. The higher the number the better the accuracy and robustness of the system but computational resource will also increase.

Real-time performance will likely be required for this mode so we recommend setting the number of features to 150.

Step 2 - Process a Dataset

If you wish to try this mode using a live-sensor feed then you can skip this step. You can process any of the datasets that you recorded in the previous tutorials by typing the following in the terminal:

$ slamcore_visualiser dataset -u <path/to/dataset> -c ~/slamcore/custom/vio_mode.json

This will open the Slamcore Visualiser tool:

_images/visualiser_vio_mode.png

Fig. 49 Slamcore Visualiser Opening Screen

Now click the Start button:

_images/visualiser_slam_buttons.png

The dataset which will now be processed with live position estimate (6DoF axis) and historical trajectory (yellow line) calculated and displayed.

_images/vio_pointcloud.png

Fig. 50 Output of visual-inertial odometry

The current estimated position in 6DoF along with an estimate of total distance travelled are also displayed as numbers in the top left hand corner of the screen.

When the dataset has been fully processed, you will see the following message:

_images/visualiser_end_of_dataset.png

Fig. 51 Message when dataset finished processing

Step 3 - Try the System in Live Mode

If no dataset is specified, the system will default to processing the data from the live sensor as long as you have a registered D435i plugged in. Launch the software by running the following in the terminal:

$ slamcore_visualiser -c ~/slamcore/custom/vio_mode.json

This will open the Slamcore Visualiser tool:

_images/vio_pointcloud.png

Fig. 52 Slamcore Visualiser Opening Screen

Now click the Start button:

_images/visualiser_slam_buttons.png

The live sensor-feed will now be processed with live position estimate (6DoF axis) and historical trajectory (yellow line) calculated and displayed.

_images/vio_pointcloud.png

Fig. 53 Output of Visual-Inertial Odometry

The current estimated position in 6DoF along with an estimate of total distance travelled are also displayed as numbers in the top left hand corner of the screen.