ENROLLMENT OPENFOR THE ENGINEER WHO OWNS LOCALIZATION

Stereo visual odometry you can derive, debug, and defend.

Visual odometry is the backbone of localization for robots and autonomous vehicles, and it is taught in two useless extremes: flashy demo reels with no explanation, or dense papers with no code. This course is the middle. Over about 7 hours you build monocular and stereo VO from the essential matrix up, write RANSAC and the nonlinear solvers by hand, add keyframes and a g2o bundle-adjustment back end, then run the complete pipeline on KITTI, EuRoC and a simulator, first in Python and then in C++ on ROS 2. No black boxes. Real datasets with ground truth. Two full pipelines that are yours.

61 lessons~7 hours9 chaptersPython and C++ / ROS 2KITTI, EuRoC, vrobotsLevel 0 to 513 languagesLifetime access
rerun.io · stereo VO · KITTI sequence 07● REC
Your code, flying a robot
Your own pipeline, tracking
point cloud and trajectory, live
61Lessons
9Chapters
6Levels
13Languages

Every autonomous machine localizes itself. Almost nobody can open that layer up when it fails.

Search for visual odometry and you get two extremes: demo reels that show a trajectory and explain nothing, or papers with no runnable code between the equations. The gap in the middle is where the architectural intuition lives, so most engineers skip it and install a package instead. That works until a degeneracy case collapses the estimate and the only remaining fix is rebooting the robot by hand, which means the system was never autonomous.

The loop running inside every visual navigation system
TRACKSOLVEREFINE
Detect features, track them across frames, triangulate 3D points, solve for the camera motion, then optimize the whole window against the measurements. That loop is visual odometry, and you build every stage of it here rather than configuring someone else's.
✕ THE USER

Clones a SLAM package, edits a YAML file, and hopes. When the trajectory spikes there is nothing to inspect, because the front end, the solver and the graph are all somebody else's decisions.

✓ THE ARCHITECT

Knows the monocular estimate is a ratio between two frames, recognizes the stationary-camera case on sight, and changes the outlier rule, the keyframe threshold or the graph directly.

What you build, and where each piece runs in the field
Monocular VO from the essential matrix

Monocular VO from the essential matrix

Recover rotation and scaled translation between two frames, then walk a full driving sequence with it.

The two-view geometry under every structure-from-motion tool
Stereo VO with triangulation and PnP

Stereo VO with triangulation and PnP

Measure 3D points directly, reject outliers with RANSAC, and solve pose with no scale ambiguity.

GPS-denied navigation for drones, delivery robots and driving stacks
A keyframe map and a bundle-adjustment back end

A keyframe map and a bundle-adjustment back end

Hold a sliding window of keyframes and landmarks, then refine both as a graph in g2o.

The backend line between a hobby demo and a professional system
A real-time stereo VO node in C++

A real-time stereo VO node in C++

The same pipeline rebuilt on ROS 2, publishing point cloud, path and a debug image as it runs.

What actually ships on embedded compute in the field

Six pieces make a visual odometry system. You build exactly those six.

This is not a survey of the literature. Visual navigation decomposes into six pieces, and the six levels of this course build precisely those, in the order they depend on each other. The row below is the whole pipeline in miniature.

Manifolds and frames
Manifolds and frames

SO(3) and so(3), the exponential and log map, Rodrigues, and the transform T you compose all pipeline long.

taught in Level 0
Two-view geometry
Two-view geometry

The essential matrix by SVD, its four pose candidates, and the cheirality check that picks the real one.

taught in Level 1
Triangulation and PnP
Triangulation and PnP

Direct 3D measurement from stereo, reprojection error, and pose from 3D-to-2D correspondences.

taught in Level 1
Robust estimation
Robust estimation

RANSAC written from scratch: sampling, thresholds, inlier counts, and where its assumption breaks.

taught in Level 2
Nonlinear optimization
Nonlinear optimization

Residuals, Jacobians, gradient descent, Gauss-Newton and Levenberg-Marquardt, built before any solver is called.

taught in Level 2
Keyframes and bundle adjustment
Keyframes and bundle adjustment

A map of frames and landmarks, then a g2o graph of poses and reprojection edges solved over a window.

taught in Levels 3 and 4
Two-view geometry, robust estimation, nonlinear solvers, keyframes and bundle adjustment, in one connected build.
Stop being a user.
Become the architect.
The whole pipeline, from the first tracked corner to the graph optimization, written in the simplest professional form. The threads and the clever indirection are stripped out on purpose, so the mechanics are the only thing left to understand.

8 reasons this is a pipeline you own, not another demo you watch.

POINT 01
61 lessons, one connected pipeline

Environment and manifolds, monocular and stereo VO, robust and nonlinear solvers, keyframes, bundle adjustment, then the complete system in Python and C++. Nothing appears out of nowhere.

icon — 61 lessons, one connected pipeline
POINT 02
The back end is not skipped

Most tutorials stop at feature tracking. A full chapter builds local bundle adjustment on g2o from the graph up, and the pipeline chapters then run it live inside the map.

icon — The back end is not skipped
POINT 03
Every solver is built before it is called

RANSAC, gradient descent, Gauss-Newton and Levenberg-Marquardt are written by hand on small problems first, so solvePnPRansac stops being a magic line and becomes a choice.

icon — Every solver is built before it is called
POINT 04
Real datasets with ground truth

KITTI odometry for the driving case and EuRoC MAV for the drone case, plus a simulator where you can drive the robot yourself and create the failure you want to study.

icon — Real datasets with ground truth
POINT 05
Python to understand it, C++ to run it

The full pipeline is built twice: a readable Python version where the mechanics are visible, then a real-time C++ node on ROS 2 with Sophus, Eigen and RViz.

icon — Python to understand it, C++ to run it
POINT 06
The failure cases are taught, not hidden

A stationary camera, a truck crossing the frame, a featureless wall, motion too fast for the tracker: each degeneracy is shown breaking a real run, then diagnosed on the spot.

icon — The failure cases are taught, not hidden
POINT 07
You can see inside the estimator

Every run is instrumented in rerun.io or RViz: inliers and outliers on the image, reprojected points, the local and global map, the camera frustum, and your trajectory against ground truth.

icon — You can see inside the estimator
POINT 08
Taught by an engineer who published on this

Two first-author AIAA papers on visual-inertial odometry, a graduate thesis on camera ego-motion estimation, and a stereo visual SLAM pipeline written from scratch in C++ with a g2o back end.

icon — Taught by an engineer who published on this

Derive it, code it, then run it until it breaks.

The same three-step loop on every stage of the pipeline, so you never watch without building, and never trust a result you have not tried to destroy.

one loop
Lecture slide deriving the essential matrix from two-frame epipolar geometry, with the perpendicularity condition and the cross-product term annotated
1 · DERIVE

Start from the geometry

Each stage opens with the equation and the intuition under it, from the perpendicularity condition of the essential matrix to the reprojection residual.

Jupyter notebook open on the stereo VO walkthrough, showing the triangulation function and the solvePnPRansac call with its 3D and 2D point arguments
2 · CODE

Write it line by line

The equation becomes a notebook you run: detector, optical flow, triangulation, and the solver call with the arguments it actually wants.

rerun.io window showing the estimated trajectory diverging from KITTI ground truth, with the live point cloud and the debug camera image beside it
3 · RUN AND BREAK

Check it against ground truth, then push it over

Every result is compared with the dataset's ground truth in rerun or RViz, then pushed into the case that makes it fail, and the failure is diagnosed rather than edited out.

One connected climb: Level 0 to Level 5.

Each level ends in code that runs and is the prerequisite for the next, so no stage of the pipeline ever appears out of nowhere. About 7 hours of build-along video across nine chapters, ending with the same system written twice, once to understand it and once to run it in real time.

Progression · each level unlocks the nextmastery
LEVEL 0Setup and geometry
LEVEL 1Classic VO
LEVEL 2Robust solvers
LEVEL 3Keyframes and map
LEVEL 4Bundle adjustment
LEVEL 5The full pipeline
0
LEVEL 0 · CHAPTERS 1-3

Environment, manifolds, and the data

A stack that runs, the rotation math visual navigation actually uses, and both benchmark datasets loaded, plotted and understood.

Papers you can read but not runA working environment with KITTI on screen
PROJECT 01Set up and get the data
Set up and get the data
Lesson goal
Have an environment that runs every notebook in the course
Have KITTI odometry and EuRoC downloaded, configured and inspected
Lesson process
01Conda environment and requirements, on Linux or WSL
02KITTI odometry: cameras, baseline, sensors, and the projection matrices P0 to P3
03Ground-truth poses, loading a sequence, and plotting the trajectory
04The EuRoC MAV dataset and what it is for
PROJECT 02Manifolds, without the fog
Manifolds, without the fog
Lesson goal
Move between SO(3) and so(3) with the exponential and log map
Compose and invert homogeneous transforms without guessing the order
Lesson process
01Why rotation is non-linear, and where yaw appears from x and y angular rates
02Rodrigues formula and the homogeneous transformation T
03Exponential map against log map, in one four-quadrant summary
04Projection, triangulation, and stereo against LiDAR and RGBD
PROJECT 03The simulator and the debug window
The simulator and the debug window
Lesson goal
Drive a rover and a drone and feed their stereo cameras into your own code
Read your estimator while it runs instead of after it fails
Lesson process
01Spawning the omnirover, driving it, and reading left and right cameras
02The rerun.io blueprint layout built for VO debugging
03Where fast motion breaks a vision-only estimate, and why that argues for an IMU
1
LEVEL 1 · CHAPTER 4

Classic monocular and stereo VO

The two pipelines every open-source project is a variation of, built end to end, compared honestly, and then broken on purpose.

recoverPose is a magic callTwo working pipelines on a real sequence
PROJECT 01Monocular VO from two frames
Monocular VO from two frames
Lesson goal
Recover rotation and scaled translation from tracked features alone
Know exactly which of the four candidate solutions is the real one, and why
Lesson process
01Normalized points, and why the epipolar condition holds
02The essential matrix by SVD, and its five degrees of freedom
03Four rotation and translation candidates, resolved by the cheirality check
04Filtering degeneracy by angular velocity and forward-dominant translation
PROJECT 02Stereo VO with direct 3D measurement
Stereo VO with direct 3D measurement
Lesson goal
Triangulate real 3D points and solve pose with no scale ambiguity
Reject the outliers that would otherwise drag the estimate off course
Lesson process
01Triangulation, measurement error, and the distance beyond which it dominates
02Reprojection: reusing the previous frame's 3D points against the current image
03Outliers, RANSAC, and where the dominant-feature assumption fails
04solvePnPRansac: reprojection error, twelve unknowns, and no closed form
PROJECT 03Where it breaks, and why that matters
Where it breaks, and why that matters
Lesson goal
Explain to a colleague why monocular VO collapses when the vehicle stops
Recognize a degeneracy case before it ruins a run
Lesson process
01A ragged monocular estimate on a real sequence, diagnosed frame by frame
02Scale as a ratio: the stationary camera and the moving truck
03The well-and-drone case: rotation and translation ambiguity
04Why vision-only navigation eventually wants an IMU
2
LEVEL 2 · CHAPTER 5

RANSAC and nonlinear optimization

The two numerical engines under the pose solver, written by hand on problems small enough to see, before they are trusted at scale.

least_squares is a black boxSolvers you wrote, then chose between
PROJECT 01RANSAC from scratch
RANSAC from scratch
Lesson goal
Write the algorithm, not just the call, and choose its threshold deliberately
Say out loud when RANSAC is the wrong tool
Lesson process
01The inlier-dominance assumption, stated plainly, and the real-time budget behind it
02Random sampling, model fit, inlier mask, and threshold sensitivity
03Counting inliers and sum-squared error, and stopping early on tolerance
04A final least-square fit on the inliers, against the naive fit
PROJECT 02The solvers under PnP
The solvers under PnP
Lesson goal
Derive the update rule instead of importing it
Pick between gradient descent, Gauss-Newton and Levenberg-Marquardt on evidence
Lesson process
01Residuals, the objective function, and why it is nonlinear
02The Jacobian, the Hessian approximation, and the damping term
03All three methods run on the same problem and compared
04The camera model rebuilt as a residual, in parallel with solvePnPRansac
3
LEVEL 3 · CHAPTER 6

Keyframes and map management

The idea that separates a frame-to-frame demo from a system: anchor the estimate to a keyframe, and give the map a structure you can actually query.

A flat table of pixel coordinatesA map you can grow, search and trust
PROJECT 01Why a keyframe reduces drift
Why a keyframe reduces drift
Lesson goal
Anchor relative motion to a keyframe instead of accumulating every frame
Decide when a new keyframe has to be inserted, and on what evidence
Lesson process
01Reusing triangulated 3D points by tracking them forward with optical flow
02Watching the feature count fall, and why RANSAC still has enough
03The keypoint threshold that triggers a new keyframe
04Detecting and triangulating fresh features when it does
PROJECT 02The map, as a model
The map, as a model
Lesson goal
Replace the flat array with objects the pipeline can search in one step
Look up, from a 3D point, every frame that ever saw it
Lesson process
01Map, Frame, Feature and Point3D, drawn as a class diagram first
02Keyframe against vanilla frame, and the anchor pose
03Inlier and outlier flags carried on the points themselves
04Why the object model exists: avoiding a nested search over the whole map
4
LEVEL 4 · CHAPTER 7

Local bundle adjustment with g2o

The professional line. Poses and landmarks become one graph, and the whole window is solved against every measurement at once.

Frame to frame, quietly driftingA graph you optimize over a window
PROJECT 01The graph, and why it wins
The graph, and why it wins
Lesson goal
Express poses and landmarks as vertices and measurements as edges
Explain why adding constraints reduces error rather than adding noise
Lesson process
01From frame-to-frame estimation to batch optimization
02The cost function and the update over a sliding window of poses
03The g2o optimizer, solver and SE3 pose vertices
04Reprojection edges and what each measurement contributes
PROJECT 02Three labs, from toy to stereo
Three labs, from toy to stereo
Lesson goal
Build a working g2o problem from an empty file, three times over
Read an optimization result and judge whether it actually converged
Lesson process
01Camera poses and a landmark, optimized against ground truth
02Structure from motion with the poses held fixed
03The stereo camera case, with a robust kernel and an error analysis
04Levenberg-Marquardt running underneath all three
5
LEVEL 5 · CHAPTERS 8-9

The full pipeline, written twice

Everything above assembled into one system: first in Python, where every mechanism stays visible, then in C++ on ROS 2, where it runs in real time.

Working parts, no systemA stereo VO node that is yours
PROJECT 01The Python pipeline
The Python pipeline
Lesson goal
Run a complete front end and back end on KITTI and on a simulated robot
Diagnose your own pipeline from its visualizer rather than from print statements
Lesson process
01The front end split into mapping and tracking, with a sliding window of keyframes
02Registering a keyframe: detection, stereo match, triangulation, global conversion
03Tracking: optical flow, PnP with RANSAC, and a constant-velocity fallback when it fails
04The rerun visualizer: inliers, reprojections, frustum, local and global points, ground truth
05Turning the g2o back end on and watching the map settle
PROJECT 02The C++ and ROS 2 pipeline
The C++ and ROS 2 pipeline
Lesson goal
Run stereo VO in real time on EuRoC, on KITTI and on a simulated rover and drone
Own a node you can drop into an actual robot's stack
Lesson process
01Docker or WSL setup, dataset paths, and a colcon build of both workspaces
02Image publisher nodes, the SVO node, and the RViz 2 topics that make it legible
03Map, Frame, MapPoint and StereoGeometry in C++, with Sophus and Eigen
04Initialization and tracking rebuilt: triangulation, PnP, keyframe redetection
05The g2o back end again in C++, over the active keyframe window

You finish with two pipelines you wrote, a back end you can defend, and a clear view of the line where visual odometry ends and visual-inertial odometry and full SLAM begin.

Is this course for you?

✕  Not for you if…

The kit builder
Your interest in robotics is assembling hardware and soldering, which is good work, but none of it is what happens here.
The black-box operator
You want a package to install rather than a pipeline to derive, and you would rather never see a Jacobian.
The tutorial tourist
You collect finished courses, but you will not sit through an SVD, a residual derivation, or a failure that takes a chapter to explain.
The career-change beginner
You have no vision or estimation background yet and are looking for an entry route into the field. Start earlier in the ladder.
The demo chaser
You want a trajectory to post, not a system you can still defend after it breaks in front of someone.

✓  This IS for you if…

The one-person R&D department
Localization is your responsibility and there is no senior robotics team standing behind you.
The engineer past the black box
A package collapsed on a degeneracy case, you could not explain why, and rebooting the robot by hand is not an answer you accept.
The researcher who wants the implementation
You read the SLAM and VIO literature and want the working code that sits underneath it.
The mathematically stubborn
You refuse to call a solver you could not write yourself, at least once, by hand.
The founder with a GPS-denied product
Your drone or ground robot has to know where it is without GPS, and that capability has to be yours to change.

Prerequisites: fluent Python and NumPy, working knowledge of camera projection and calibration, and the rotation and state-estimation basics that Robotics 101 and the Computer Vision course cover. Chapter 2 reviews manifolds, SE(3) and the vision essentials, but it reviews them rather than teaching them from zero. You need Linux, Ubuntu or WSL, and chapter 9 is a C++ ROS 2 workspace, so you must be able to read C++ even if you do not write it. Datasets are free downloads and there is no hardware to buy.

The system you can draw by the end.

By Level 5 you can explain a visual odometry system from the raw stereo pair to the optimized map, and say which stage a given failure came from. Here is the exact stack you build, box by box. Every box is your own code.

Front end, once per frame (Levels 1, 3 and 5)
stereo pair
left and right
GFTT
detect
LK optical flow
track and stereo match
triangulate
3D points, global frame
solvePnPRansac
pose, inliers
keyframe rule
track on, or insert
Back end, once per window (Levels 4 and 5)
active keyframes
g2o graph
pose and point vertices
reprojection edges
Levenberg-Marquardt
map written back
Visualization, on every run
debug image, inliers and outliers
reprojected points
local and global map
camera frustum
trajectory against ground truth

This is the real code, not a brochure diagram: vo_frontend_mapping.py, vo_frontend_tracking.py, vo_backend.py, vo_map_model.py and vo_visualizer.py in the Python package, and map.hpp, stereo_geometry.hpp and the viewer in the C++ ROS 2 workspace.

Nine chapters, one connected pipeline.

9 chapters · 61 lessons · ~7 hours · 13 languages
Module 01
Onboarding
3 lessons
  • 01What We Will Cover
  • 02Communication Channels
  • 03Setting Up Environments
Module 02
Getting Familiar with KITTI Dataset & Recap Computer Vision
5 lessons
  • 01Manifolds - Nonlinear Spaces SO3 and SE3
  • 02Computer Vision Recap
  • 03KITTI Dataset Breakdown
  • 04Code Recap for Manfolds and CV
  • 05Code Recap for KITTI
Module 03
Getting Familar with Virtual Robots
1 lesson
  • 01Using Virtual Robots
Module 04
Classic Visual Odometry
13 lessons
  • 01Overview
  • 02MVO - Intro
  • 03MVO - Essential Matrix
  • 04MVO - Pose Recovery
  • 05MVO - Discussion
Module 05
Nonlinear Optimization
6 lessons
  • 01RANSAC Deep Dive 1
  • 02RANSAC Deep Dive 2
  • 03Nonlinear Optimization Overview
  • 04Nonlinear Optimization Methods
  • 05Nonlinear Optimization Rosenbrock
Module 06
Keyframe Stereo Visual Odometry and Map Management
5 lessons
  • 01Overview
  • 02Keyframe Concept
  • 03Map Management
  • 04Keyframe Wrap-Up
  • 05Keyframe Implementation
Module 07
Backend Optimization - LBA with g2o
6 lessons
  • 01Local Bundle Adjustment (LBA) Intro
  • 02LBA Concept
  • 03LBA Example 1
  • 04LBA Example 2
  • 05LBA Example 3
Module 08
Python Examples
9 lessons
  • 01VO in Python Intro
  • 02PyVO Running with KITTI Dataset
  • 03PyVO Running with Virtual Robots
  • 04[PyVO] Main Entry & Utils
  • 05[PyVO] Map Model
Module 09
ROS2 (C++) Examples
14 lessons
  • 01C++ VO Intro
  • 02Download EuroC MAV Dataset
  • 03Ubuntu & Docker Setup
  • 04WSL Setup
  • 05Running ROS2 for C++ VO with KITTI & EuroC Datasets

Chapter order matches the produced course, and the lesson list is pulled live from the course itself. Chapters 1 to 8 are Python; chapter 9 is the C++ and ROS 2 rebuild.

Taught by an engineer who published on this problem and then shipped it.

Every claim below is checkable: a paper number, a repository, or a thesis you can look up.

Published

Two first-author AIAA conference papers, on visual-inertial odometry for a UAV using deep learning (AIAA 2019-1410) and on an uncrewed aerial system framework for human-robot interaction (AIAA 2018-2984).

Built

A stereo visual SLAM pipeline written from scratch in C++ on ROS 2: GFTT detection, LK optical-flow tracking, stereo triangulation, PnP pose estimation, keyframing and a g2o bundle-adjustment back end, validated on KITTI.

Education

M.S. in Aeronautical and Astronautical Engineering at The Ohio State University, fully funded, with a thesis on estimating monocular camera ego-motion and its uncertainty.

Elliot Lee, aerospace autonomy engineer.

Founder of Ubicoders His graduate research at Ohio State was visual-inertial odometry: estimating a monocular camera's ego-motion and its uncertainty, published first-author at AIAA. Since 2014 he has been building the same stack outside the lab, from gesture-controlled multirotors to a stereo visual SLAM pipeline written from scratch in C++ with a g2o back end. This course is the framework he spent months looking for and never found.

During my graduate studies, I spent months, literally months, grappling with these concepts, struggling to find a single foothold. I was drowning in equations and open source code that I couldn't even understand.

In modern visual navigation, bundle adjustment is the real line between hobbyist tutorial and professional project.

verbatim, from the course introduction

Instructor portrait

A real person answers.

Ask in the discussion thread on the lesson itself, or in the Discord forum. The instructor is notified for every post and answers there himself. Chapter 1 has a lesson on which channel to use and what to include, because a VO question with the sequence, the frame and the plot attached gets a far better answer than one without.

Discord forum thread showing a student question about a drifting VO run, with the trajectory plot attached and the instructor's reply underneath

Proof of skill, not attendance.

A verifiable Certificate of Completion recording that you implemented monocular and stereo visual odometry, a keyframe map, and a bundle-adjustment back end, and validated them against dataset ground truth. It is not a licence and it is not a degree. It is a statement of what you built, which is the only thing this audience checks anyway.

Certificate of Completion for the Visual Odometry course, showing the learner's name and a verification code

The questions everyone asks first.

Why not just use an existing SLAM package and move on?
EL
Use it, if it holds. The problem starts the day a degeneracy case collapses the estimate and the only fix left is rebooting the robot by hand, which means the system is not autonomous, it is a prototype with a human in it. This course is for that day: the same front end, the same solvers and the same graph, written so you can actually change them.
The pipeline is in Python. Is that not too slow for real time?
EL
It is, and the course says so on camera rather than hiding it. Python is used first because the whole system stays readable, and the frame drops are pointed at and explained. Chapter 9 then rebuilds the same pipeline in C++ on ROS 2, and that is the version that runs in real time on the datasets and on a simulated robot.
Do I need a stereo camera, a drone, or any hardware?
EL
No. Everything runs on the KITTI and EuRoC datasets, which are free downloads with ground truth, and on the vrobots simulator, where you can drive a rover or a drone yourself and feed its stereo cameras straight into your own code.

Answering the catch.

What background do I really need?+
Fluent Python and NumPy, camera projection and calibration, and the rotation and state-estimation basics. Chapter 2 reviews manifolds, SE(3) and the computer-vision essentials, but it reviews them; it does not build them from zero. If a Jacobian or an SVD is unfamiliar territory, take Robotics 101 and the Computer Vision course first and come back.
Is chapter 9 really C++?+
Which datasets and tools does it use?+
Does this cover full SLAM?+
Do I get the code, or is it only shown on screen?+
How current is this, and in what languages?+
How long do I have access?+

One payment. The whole pipeline. Yours for good.

Everything needed to build visual odometry you own, from two-view geometry to a node that runs in real time.

61 video lessons across 9 chapters, from manifolds to bundle adjustment, with subtitles in 13 languages
The complete Python workspace: a notebook for every chapter plus the full VO package
The C++ and ROS 2 stereo VO project walked through in chapter 9
Runs on KITTI, EuRoC and the vrobots simulator, with no hardware to buy
Course discussion threads and the Discord forum, answered by the instructor
A verifiable certificate of completion
Lifetime access, at your own pace

Move past the demos.

You can get here without this course, the same way the instructor did: months of grappling with papers and open-source code until the architecture finally clicks. This is that path compressed into nine chapters, with the derivations, the failure cases and both pipelines included, and the choice is entirely yours.

61 lessons~7 hours9 chaptersPython and C++ / ROS 2KITTI, EuRoC, vrobotsLevel 0 to 513 languagesLifetime access
One-time payment

Full lifetime access

  • Lifetime access — learn entirely at your pace
  • Every video lesson, from first principles to mastery
  • All source code & course projects
$290+ taxone-time

Applicable sales tax / VAT is calculated at checkout based on your location.

Price increases September 1, 2026.

AccessLifetime
FormatSelf-paced video
Secure viaPaddle.com

Secure checkout via Paddle.com

What this unlocks.

Visual odometry is the layer the rest of visual navigation stands on. Once the front end, the solvers and the graph are yours, the things that used to read as research projects become the next build.

Visual-inertial odometrySLAM with loop closureA custom navigation stack on embedded hardwareYour own uncrewed systems lab
Not ready today?
Get the next course and the next build when they ship.
Visit ubicoders.com
Lifetime access13 subtitle languagesNo hardware required