← udacity portfolio
ml cv other · slam localization · October 2019

ORB-SLAM2 (build + experiment)

Built and ran the canonical ORB-SLAM2 stack (Mur-Artal et al.) on a custom monocular dataset during a Robot Perception course. Forked the upstream.

What it was

A fork of raulmur/ORB_SLAM2, the reference implementation from the famous Mur-Artal et al. SLAM paper. The project was less “build a SLAM system” and more “stand the canonical one up, run it on your own video, learn what each component does by watching it work and fail.”

What ORB-SLAM2 does

  1. Tracking thread. ORB keypoint detection + descriptor matching against the local map; PnP for the current frame’s pose.
  2. Local mapping thread. Triangulate new map points; local bundle adjustment over a window of recent keyframes.
  3. Loop closing thread. DBoW2 visual-word bag matches the current frame against historical keyframes; if a loop is detected, run a pose-graph optimization to correct accumulated drift.

The whole thing runs at 25-30 Hz on a laptop CPU. No GPU. No deep learning.

What was actually tricky

What I’d do differently with hindsight

What it taught me

SLAM is the single hardest problem in mobile robotics, and it has a generation of mature open-source implementations. Most application code should consume those, not re-invent. The valuable thing to know is “what each thread does and why” — which lets you debug when it fails — not “how to write a bundle adjustment from scratch.”


Source archive: Shivam-Bhardwaj/ORB_SLAM2 (archived)
Writeup last touched: 2026-05-22