Git/GitHub

Git is the version-control system used by essentially all SLAM research and industry code; GitHub is where that code lives. SLAM is unusually open-source-centric — the systems you will study at later levels (ORB-SLAM3, VINS-Fusion, OpenVINS, DSO, and hundreds more) are all GitHub repositories, and your daily workflow will revolve around cloning, building, and modifying them.

The core Git skills to be fluent in:

The cloning pattern you will type hundreds of times:

git clone --recursive https://github.com/<org>/<slam-system>.git
cd <slam-system>
git checkout <tag-from-the-paper>       # pin the exact version being reported
git submodule update --init --recursive # in case the checkout moved submodules

And the debugging pattern that pays for all the Git learning at once — automated bisection against a dataset metric:

git bisect start
git bisect bad HEAD          # accuracy is broken here
git bisect good <old-tag>    # ...and was fine here
git bisect run ./scripts/check_ate.sh   # exits non-zero when ATE exceeds a threshold

Git walks the history, runs your evaluation script at each step, and hands you the exact commit that regressed the trajectory.

On the GitHub side:

Reproducibility hygiene for experiments

A pragmatic habit for SLAM work: treat every experiment as a commit. Estimation systems are sensitive to tiny parameter changes, and being able to answer “what exactly was the code when I got that trajectory?” separates reproducible research from folklore. Concretely:

Why it matters for SLAM

You cannot participate in modern SLAM without Git: obtaining systems, tracking the exact code version behind every benchmark number, contributing fixes upstream, and collaborating on a shared codebase all run through it. Version discipline is also directly tied to scientific credibility — trajectory metrics only mean something when the code state that produced them is recoverable.