Skip to content

behnamasadi/robotic_notes

Repository files navigation

Installation and Requirement

Ubuntu alt text GitHub Issues or Pull Requests

GitHub Repo stars GitHub forks

C++ Dependencies

cd /home/$USER/workspace/
git clone [email protected]:behnamasadi/robotic_notes.git

vcpkg is configured as a git submodule. Initialize it:

cd /home/$USER/workspace/robotic_notes
git submodule update --init --recursive

set the path:

export VCPKG_ROOT=$PWD/vcpkg
export PATH=$VCPKG_ROOT:$PATH

Setting VCPKG_ROOT tells vcpkg where your vcpkg instance is located.

Install required system dependencies for vcpkg (on Linux):

sudo apt-get install -y bison flex build-essential cmake autoconf autoconf-archive automake libtool libltdl-dev libx11-dev libxft-dev libxext-dev libxtst-dev libxrandr-dev ninja-build pkg-config

Now you can run:

cmake -S . -B build \
  -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake \
  -DCMAKE_BUILD_TYPE=Release \
  -DVCPKG_TARGET_TRIPLET=x64-linux-release

The VCPKG_TARGET_TRIPLET=x64-linux-release option ensures vcpkg only builds release packages, which significantly reduces build time (especially for large packages like OpenCV) and disk space usage. This is already configured in CMakeLists.txt, but you can explicitly set it as shown above.

The Rerun C++ SDK (and its Arrow dependency) is disabled by default because the SDK is downloaded and built via FetchContent, which is heavy. The Python rerun-sdk package covers the same use cases for the notebooks. To opt in and build the rerun-dependent C++ targets, add the following flags:

cmake -S . -B build \
  -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake \
  -DCMAKE_BUILD_TYPE=Release \
  -DVCPKG_TARGET_TRIPLET=x64-linux-release \
  -DBUILD_RERUN_EXAMPLES=ON \
  -DVCPKG_MANIFEST_FEATURES=rerun
cmake --build build --parallel

Python Dependencies

conda create -n robotic_notes  python=3.12 -y
conda activate robotic_notes
cd /home/$USER/anaconda3/envs/robotic_notes/

Create this soft link.

ln -s /home/$USER/workspace/robotic_notes /home/$USER/anaconda3/envs/robotic_notes/src

Install the python packages:

conda install -c conda-forge opencv
pip install graphslam
conda install conda-forge::gtsam
conda install conda-forge::matplotlib
conda install conda-forge::plotly
conda install -c conda-forge jupyterlab
pip install ahrs
pip install pyceres
pip install liegroups
pip install rerun-sdk[notebook]==0.29.2
pip install "gradio_rerun==0.29.2"
pip install "gradio==6.5.1"
pip install ipykernel
pip install jupyterlab

vio_benchmark — head-to-head VIO comparison on real datasets

The vio_benchmark/ subproject is a self-contained framework for comparing visual-inertial odometry estimators against public datasets (EuRoC MAV, TUM-VIO, and others). It bundles OpenVINS and VINS-Fusion as submodules, ships per-dataset calibration files and ground-truth references, and includes pipeline scripts plus a rerun.io visualisation that overlays multiple trajectories with the live stereo camera projected inside each estimator's frustum. First head-to-head result: OpenVINS 0.295 m APE vs VINS-Fusion 0.248 m on EuRoC MH_01_easy.

Concepts and methodology

Estimators

This repo's results

External benchmarks

lio_benchmark — Gazebo LIO testbed

The lio_benchmark/ subproject is a self-contained Gazebo simulator for LiDAR-inertial odometry development. It ships a SubT-style rover with a 16-beam LiDAR + IMU + cameras, three cave/tunnel worlds, and FAST-LIO wired into the rover by default. One-line bring-up via docker compose. Unlike VIO, LIO works correctly on this sim (FAST-LIO consistently produces 0.3–1.5 % end-point error on rover recordings) — the architectural reason is in the VIO diagnostic guide §3.

Concepts and methodology

Estimators

About

This repo contains my snippet and tutorials for Lie Group and Lie Algebra, Topology and Configuration of Robot and Space ,IMU, ROS2 Gazebo Integration, State Estimation, VIO, LIO, and Deep Learning based SLAM

Topics

Resources

Stars

Watchers

Forks

Contributors