Skip to content

pekkaran/violet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Violet

A toy stereo visual inertial odometry (VIO) system. Built upon HybVIO, which was built upon PIVO, which was built upon MSCKF by Mourikis and Roumeliotis.

Status

The implementation of the VIO is not yet complete, but some of the sub-components have been tested to work:

  • Data input:
    • IMU parsing
    • Video decoding
    • Calibration parsing
  • Stereo feature tracker:
    • Feature detection: FAST corners
    • Optical flow: Pyramidal Lucas-Kanade
    • Track spatial distribution enhancement
  • Odometry: Extended Kalman Filter (EKF)
    • Prediction step (the dynamic model)
    • Update step
    • Stationarity update
    • Visual update
  • Camera models: Pinhole with radial distortion
  • Visualizations
    • Various 2D visualizations
    • VIO output track visualization, 3D

Goals:

  • Do not depend on any computer vision libraries such as OpenCV, implement all the relevant algorithms from scratch.
  • Demonstrate plausibility and advantages of using Rust over C++ for this kind of real-time sensor fusion applications. Consequently a goal is to make the implementation run relatively fast.

Non-goals:

  • Simultaneous Localization and Mapping (SLAM).
  • State-of-the-art accuracy and robustness. For a commercial-grade solution, please see Spectacular AI.

Obtaining test data

The input data format supported by the VIO is the same as described here, except that the calibration is read from a JSON format. A conversion for the EuRoC dataset exists:

  • Install ffmpeg
  • Install Python dependencies, eg by pip install pyyaml numpy
  • Run download and conversion, eg by: python scripts/download_euroc.py --fast --case v1-01-easy

The converted datasets are saved under data/benchmark/. Note that about 10 GB of space is required for converting all the EuRoC datasets.

To implement conversion for other datasets, please examine format of the converted EuRoC datasets.

Running the VIO

Install Rust, see for example the official get started guide. Clone this git repository and run from its root:

cargo run -- -i data/benchmark/euroc/v1-01-easy --show-tracks

See all the available visualizations and options with:

cargo run -- --help

License

Licensed under GPLv3. Note that the algorithms are heavily based on HybVIO which is licensed under GPLv3.