Engineering Guides · Module 02
Sensor combination: camera + IMU
The IMU gives scale and bridges blur; the camera removes the IMU’s drift. Together they are visual-inertial odometry.
Assumptions: General fusion guidance. Named algorithms appear only where their READMEs were checked (see the SLAM Selection Guide). No performance figures are given.
1. Engineering problem
A single camera has no metric scale and loses tracking when the image blurs or the scene is poor; an IMU alone drifts within seconds. Fusing them gives scaled, high-rate motion with bounded drift.
2. When is this needed?
- Small robots and drones where weight and power rule out LiDAR.
- Fast motion where camera-only tracking fails.
- Indoor and GNSS-denied navigation with textured scenes.
3. Selection and design decisions
What each sensor contributes
| Sensor | Contribution | Weakness the other covers |
|---|---|---|
| Camera | Drift-bounding visual features, appearance for recognition | Needs light and texture, no scale alone, blurs in fast motion |
| IMU | Scale (through acceleration), orientation, high-rate prediction between frames | Integrates noise and bias into drift |
Fusion approaches
- Tightly coupled visual-inertial estimators fuse feature tracks and IMU measurements in one estimator: VINS-Fusion (optimisation-based, per its README) and OpenVINS (filter-based, MSCKF, per its README) are examples; see the SLAM Selection Guide for what each README states.
- Loosely coupled: a visual odometry output fed to an outer filter; simpler, less accurate and less robust to fast motion.
4. Advantages and disadvantages
- Tight coupling is usually more accurate and more sensitive to calibration and time offset.
- Rolling shutters need modelling at high speed.
- More features cost compute.
5. Requirements and constraints
- Time synchronisation to within what the estimator tolerates (use the Sensor Time Synchronization Simulator).
- Calibrated extrinsics between every fused pair, with the transform direction documented (see the frame-conventions guide).
- IMU rate well above the camera rate; IMU noise parameters known.
- Camera–IMU extrinsics and time offset calibrated, or estimated online (some estimators support it).
6. Architecture
camera (stamp at exposure) ─┐
├─▶ visual-inertial estimator ─▶ pose, velocity, biases
IMU (high rate) ────────────┘7. Implementation
- Calibrate camera intrinsics, then camera–IMU extrinsics and time offset on a target.
- Obtain IMU noise parameters (datasheet and a still-log analysis).
- Configure the estimator with those values; verify initialisation with a slow, rich-motion start.
- Validate against a reference trajectory or a closed loop.
Compare structures in the Sensor Fusion Architecture Builder.
8. Real examples
- A handheld mapper, a small indoor drone.
9. Failure scenarios
- Wrong camera–IMU time offset: estimates jerk during rotation.
- Wrong extrinsics: systematic drift or scale error.
- Texture-poor scene or exposure failure: tracking lost.
- IMU saturation in vibration.
10. Troubleshooting
- Check time offset first (shared-event test).
- Check IMU noise parameters against a still log.
- Check exposure and feature counts per frame.
- Re-run calibration if the mount changed.
11. Validation
- Closed-loop return error below your limit over repeated trials.
- Recovery after a deliberate tracking loss.
- Behaviour in the darkest and brightest places of the route.
12. Engineering checklist
13. Further references
- Class-level guidance written from general engineering knowledge; it contains no product specifications. Product-specific numbers must come from the manufacturer’s datasheet for the exact model and operating mode.
- ROS 2 message types: sensor_msgs (jazzy branch).
Related on FixTheRobot
- Visual-Inertial Odometry SLAM · Lesson
- Visual-Inertial SLAM SLAM · Lesson
- Diagnose Camera–IMU Synchronization Errors SLAM · Lab