VDO-SLAM
Zhang 2020 · Paper
One-line summary — A dynamic object-aware SLAM system that jointly estimates the camera trajectory and the SE(3) motions of rigid moving objects in a single factor graph, without requiring prior object models.
Problem
Robot path planning and obstacle avoidance in dynamic environments rely on knowing how the objects around the robot are moving — yet classical SLAM assumes a static world, and most “dynamic SLAM” systems merely detect moving content and throw it away. VDO-SLAM instead integrates dynamic rigid objects into the estimation problem itself: it identifies, tracks, and estimates the full SE(3) motion of every moving object jointly with the camera, with no prior knowledge of object shape or geometric model.
Method & architecture
Pre-processing. Instance segmentation (Mask R-CNN, COCO weights) separates potentially movable objects; dense optical flow (PWC-Net) supplies correspondences everywhere, maximising tracked points on objects that occupy few pixels, and propagates per-object identifiers (recovering masks when segmentation fails). Input is RGB-D, stereo converted to depth, or “learning-based monocular” using MonoDepth2 depth.
Motion representation. With camera pose and object pose , the point on a rigid object obeys
so the object’s frame-to-frame motion relates its own points across time without ever putting the object pose in the state — the key to model-free operation.
Front-end estimation. The camera pose minimises Huber-robustified reprojection error over static points, ; each object motion minimises the analogous cost with , both parameterised in and solved by Levenberg–Marquardt. Crucially, the optical flow is refined jointly with each motion (a regularisation term anchors it to the initial flow), which greatly lengthens point tracks. Objects are declared dynamic by scene-flow magnitude (threshold 0.12, object dynamic if >30% of its points move).
Back-end factor graph. Camera poses, static points, dynamic points, and object motions are refined in one graph with four factor types:
plus odometry factors and a smooth-motion prior penalising abrupt object-motion change. Solved with LM in a modified g2o. Object linear velocity falls straight out of the motion: , with the object’s point centroid.
Results
- Oxford Multimotion (swinging_4_unconstrained, 500 frames): camera error = 0.0112 m / = 0.77° vs MVO’s 0.0314 m / 1.19° (≈35% better camera estimate, 15–40% better on swinging boxes); object motion estimates more than twice as accurate as ClusterVO on most boxes, though ClusterVO edges camera translation (0.0066 m).
- KITTI tracking (9 dynamic sequences): camera accuracy competitive with DynaSLAM II (slightly lower rotational, higher translational error); object motion translation errors 0.1–0.3 m and rotation 0.2–1.5° (RGB-D) vs CubeSLAM’s >3 m / >3° — an order of magnitude improvement in most cases. Objects tracked for >80% of their occurrence; estimated speeds consistently close to ground truth (e.g. a van tracked through 33 frames of segmentation failure with 2.64 km/h average speed error).
- Ablations: joint flow refinement yields far more long tracks (e.g. seq 01 background: 237 → 5075 points tracked >5 frames) and ~10% (camera) / ~25% (object) lower errors; global graph refinement cuts object motion error by up to 39% (translation) / 55% (rotation).
- Runtime: tracking at 5–8 fps on a laptop CPU (i7 2.6 GHz), with segmentation/flow computed offline.
Why it matters for SLAM
VDO-SLAM is a landmark of the “estimate, don’t discard” school of dynamic SLAM: dynamic objects become first-class estimation targets rather than outliers. Its model-free point-motion factor — relating points on a rigid body across time without an object pose variable — is an elegant formulation now standard in dynamic SLAM, and the open-source release made it the reference baseline for joint camera/object estimation in driving and mobile-robot scenarios.
Related
- DynaSLAM — dynamic content detection and removal approach
- DynaSLAM II — tightly-coupled multi-object tracking and SLAM in the same spirit
- MID-Fusion — object-level dense tracking of dynamic objects with RGB-D
- MaskFusion — real-time recognition and reconstruction of moving objects
- PWC-Net — the dense optical flow front-end it builds on
- Factor graph — the machinery that hosts both camera and object states