Skip to the content
FixTheRobot Explore Robotics / UAV / Simulation / visual-odometry

UAV Systems Engineering · Interactive simulation · M2-L3

Visual Odometry Simulator

See every step of a feature-based visual odometry pipeline, then break it with noise, blur, bad matches and a camera dropout.

  • UAV Navigation and GNSS-Denied Operations
  • Established engineering
  • Runs entirely in your browser

What you are looking at

A synthetic camera looks straight down at a textured ground plane from a known height. For each pair of consecutive frames the pipeline detects corners (blue), matches them, draws the optical flow of each match, rejects wrong matches with RANSAC (green = inlier, orange = rejected), and solves for the rotation and translation that best explain the inlier flow. Composing these frame-to-frame motions gives the trajectory.

The left panel pair shows the two consecutive frames; the plots show the estimated and true path and the position error over the flight.

Try this

  1. Raise “wrong matches” to 60%. RANSAC still finds the motion: watch the inlier count. At 70% it starts to fail. Why does RANSAC tolerate a majority of outliers?
  2. Set the assumed height error to +20%: the path keeps its shape but is the wrong size. This is the scale problem of a monocular camera in miniature.
  3. Lower the texture density to 0.1 landmarks per m² and then raise the corner threshold. Count the frames in which tracking is lost, and see the error grow with every lost frame.
  4. Raise speed to 10 m/s with motion blur 2. Why do fewer features survive at higher speed?
  5. Start a camera dropout at frame 100 for 30 frames and compare the final error with a run without dropout.

Model and its limits

Included: a real pinhole projection, pixel noise, detection by corner strength, blur-dependent dropouts, matching with a configurable outlier rate, a RANSAC estimator on the ground plane, a least-squares refit on the inliers, and pose composition.

Not included: actual image pixels (landmarks carry a corner strength; detection and matching are simulated, but their statistics are explicit parameters), full 6-DoF motion (the camera moves in a plane at fixed height with yaw), lens distortion, rolling shutter, and descriptor matching. Real monocular VO uses epipolar geometry (essential matrix) and cannot observe scale without extra information; this simulator removes the depth ambiguity by assuming a known height. Treat the numbers as illustrations of behaviour, not benchmarks.

Saved in this browser and synced to your account when you are signed in.

Back to Module 2 · UAV track overview