Skip to content

omniinstrument/SLAM_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SLAM Project

ROS 2 Rerun.io

This project provides a minimal stereo-inertial SLAM pipeline with Kalibr-based calibration and ROS 2 VIO evaluation. The datasets, Docker environments, baseline stereo_vio package, visualization, and odometry metrics are already implemented.

Your task is to reduce the VIO trajectory error.

The system will:

  • Provide stereo and stereo-inertial calibration data
  • Run Kalibr inside a ROS 1 environment
  • Run the baseline stereo-inertial VIO pipeline in ROS 2
  • Compare the estimated trajectory against ground truth
  • Report ATE, ARE, and RPE metrics

You first calibrate the stereo-inertial system with Kalibr, then use that calibration to improve stereo_vio. Keep the implementation clean, correct, and deterministic.


VIO
$$\color{blue}Blue$$ = Ground truth | $$\color{red}Red$$ = Estimated

Sensor Data

Dependencies

A Linux Ubuntu computer, or other equivalent.

You only need to install Docker and follow Linux Post-Installation to get started.

GPU Support (Optional)

If your system includes an NVIDIA GPU, you can enable GPU acceleration inside Docker.

Install:

Cyclone DDS tuning

The Linux kernel must be optimized to use large packet sizes. This can be done using the script provided and is done outside docker.

cd usb_dds_setup && bash install_ipfrag.sh

Note

You need sudo to change this.

You can refer to further documentation here or here.

Getting Started

Clone the repo

git clone --recursive https://github.com/omniinstrument/SLAM_project.git

Start the Kalibr environment

bash scripts/start.sh ros1

Start the VIO environment

bash scripts/start.sh ros2

Note

The start script builds the Docker images, downloads the datasets from Hugging Face, and builds the ROS workspace. Dataset download occurs only once.

Note

To override the Docker base image, pass ROS1_ROOT_IMAGE or ROS2_ROOT_IMAGE when starting the environment:

ROS1_ROOT_IMAGE=ubuntu:20.04 bash scripts/start.sh ros1
ROS2_ROOT_IMAGE=ubuntu:24.04 bash scripts/start.sh ros2

Calibration


Stereo camera calibration

Stereo-inertial calibration

Use Kalibr in the ROS 1 container to estimate:

  • Stereo camera intrinsics
  • Stereo extrinsics
  • Camera-IMU extrinsics
  • Camera-IMU time offset, if useful

Before running Kalibr, update aprilgrid.yaml with the correct target parameters. Use the pinhole-radtan camera model for both cameras.

The provided imu.yaml file is required for stereo-inertial calibration.

Use the calibration result to update the VIO calibration consumed by calib.yaml.

Note

Refer to the Kalibr documentation for calibration commands and configuration details.

VIO

Run the ROS 2 VIO pipeline:

ros2 launch stereo_vio stereo_vio.launch.py

Tracking
$$\color{blue}Blue$$ = Ground truth | $$\color{red}Red$$ = Estimated

Trajectory metrics

The launch file runs the VIO pipeline, visualization, and trajectory-error computation, then closes automatically shortly after bag playback finishes.

Your final VIO estimate must be published on /stereo_vio/odom (nav_msgs/Odometry) topic for evaluation.

Note

The final report is saved in the output folder as stereo_vio_odometry_error.txt.

Warning

Incase you get an error like ros2: failed to increase socket receive buffer size to at least 33554432 bytes, current is 425984 bytes that means you Linux kernel is not tuned for large packets. Refer to Cyclone DDS tuning

Note

For GUI layout changes, save the Rerun blueprint to rerun_wrapper.rbl.

Instructions

  • You are free to improve stereo_vio using any classical, optimization-based, learning-based, or hybrid method.
  • You are free to use external libraries.
  • You are free to use AI code editors or AI agents, your code can be 100% AI generated.
  • You are free to use any programming language, including Python, C++, Rust, and/or CUDA.
  • You are not allowed to modify the odometry error computation or report generation in odometry_error_node.hpp or odometry_error_node.cpp.

Submission

Upload the output directory and share it with us.

Also include a brief summary of:

  • The calibration files used
  • The stereo_vio changes made

Bugs/Support

If you come across any bugs or have questions, feel free to open an Issue or reach out to Jagennath Hari.

License

This software and dataset are released under the MIT License.

Acknowledgment

This work integrates several powerful research papers, libraries, and open-source tools:

Releases

No releases published

Packages

 
 
 

Contributors