This repository implements a Monocular Visual Odometry (VO) pipeline.
Option A: Using uv (recommended)
We use uv for fast, modern Python package management.
# Install uv (if you haven't already)
curl -LsSf [https://astral.sh/uv/install.sh](https://astral.sh/uv/install.sh) | sh
# Sync environment (installs dependencies from pyproject.toml)
uv sync
# Activate environment
source .venv/bin/activate
# (if developing) Install pre-commit hooks
pre-commit installOption B: Using conda
Alternatively, you can use conda with the provided environment.yml file.
# Create conda environment
conda env create -f environment.yml
# Activate environment
conda activate visual-odometry
# (if developing) Install pre-commit hooks
pre-commit installOrganize datasets in the data/ directory structure:
data/
├── kitti/
│ └── 05/
│ └── image_0/
├── malaga/
├── parking/
└── my_dataset/
We use tyro for argument parsing. You can view all available options and defaults using the help flag:
python src/main.py -hCommon Examples:
# Run with default settings (KITTI sequence 05)
python src/main.py
# Run on a different dataset
python src/main.py --dataset parking
All screencasts were run on a machine with an i7-14700KF CPU (8 performance cores @ 3.4 GHz, 12 efficiency cores @ 2.5 GHz), a RTX 4080 GPU and 64GB of RAM.
During runtime, our program consumes 20 physical threads when running SuperPoint and 28 when running SIFT.