Design & Selection · Module 09
VIO or LiDAR SLAM: choosing by environment and payload
Cameras fail when there is no light or texture; LiDAR fails when there is no structure. Pick the method whose failure case your robot will not meet.
Assumptions: Numbers in the examples are illustrative and the code is executed by the site’s tests. Facts taken from a cited source are marked; other statements are general engineering knowledge and must be confirmed on the datasheet of the part you use.
1. Engineering problem
Visual-inertial odometry (VIO) and LiDAR SLAM fail in different places. A robot that works in a warehouse may fail in a dark corridor with plain walls or in an open field.
2. When is this needed?
- At the start of a project, from the ODD.
- When moving to a new site.
- When payload or power limits sensor choice.
3. Selection and design decisions
The VINS-Fusion README (read 2026-11-06) notes that VIO “heavily relies on hardware quality” and recommends global-shutter cameras and hardware-synchronised IMUs for good results. LiDAR methods (such as FAST-LIO or LIO-SAM) use geometry and are independent of lighting but need enough structure to constrain the scan match.
| Condition | VIO | LiDAR SLAM |
|---|---|---|
| Dark | Fails or degrades | Works |
| Strong sun, glare | Exposure problems | Mostly works (see the LiDAR guide) |
| Plain walls, low texture | Few features | Works if the geometry is varied |
| Long corridor or open field | Works if textured | Under-constrained along the corridor |
| Fast motion | Blur, rolling shutter | Needs deskewing |
| Weight and power | Light and low-power | Heavier and more power (varies by LiDAR) |
4. Advantages and disadvantages
- Fusing both covers each other’s failures and costs more integration and compute.
- Cost: cameras are cheap; capable LiDARs cost more.
- Map reuse differs: visual place recognition versus scan matching.
5. Requirements and constraints
- The ODD’s worst lighting and structure conditions are covered by at least one modality.
- Payload and power budgets are met.
- Time synchronisation and calibration are planned for each added sensor.
6. Architecture
ODD (light, texture, structure, payload) ─▶ advise ─▶ VIO | LiDAR SLAM | both ─▶ test in the worst-case place7. Implementation
- Write the ODD’s worst case for light, texture and geometric structure.
- Run the advisor (below) for each worst case.
- If one modality has a blocker in a case, add the other or change the choice.
- Test each method in its worst case on recorded data.
- Plan the failure response when one modality drops out.
def advise(lux, texture, structure, payload_kg):
notes = []
if lux < 50:
notes.append("low light: camera-based VIO is at risk")
if texture == "low":
notes.append("low texture: few visual features")
if structure == "low":
notes.append("low geometric structure (long corridor, open field): LiDAR matching is under-constrained")
if payload_kg < 0.5:
notes.append("tight payload: a small camera and IMU fit, a 3D LiDAR may not")
return notes or ["no obvious blocker for either method"]
for case in ((300, "high", "high", 5), (20, "low", "high", 5), (300, "high", "low", 5), (300, "high", "high", 0.3)):
print(case, "->", advise(*case))Printed (checked by the site’s tests):
(300, 'high', 'high', 5) -> ['no obvious blocker for either method']
(20, 'low', 'high', 5) -> ['low light: camera-based VIO is at risk', 'low texture: few visual features']
(300, 'high', 'low', 5) -> ['low geometric structure (long corridor, open field): LiDAR matching is under-constrained']
(300, 'high', 'high', 0.3) -> ['tight payload: a small camera and IMU fit, a 3D LiDAR may not']Reading it: the first case has no blocker for either; a dark, textureless site flags VIO; a low-structure site flags LiDAR matching; and a 0.3 kg payload limit flags the 3D LiDAR. The thresholds (50 lux, 0.5 kg) are illustrative: derive yours from tests.
8. Real examples
- Warehouse AMR: LiDAR SLAM, indoor, structured shelves, lit.
- Small drone indoors: VIO if lit and textured.
9. Failure scenarios
- VIO in a dark corridor.
- 2D LiDAR matching in a long featureless hallway.
- Choosing from a demo video taken in a different environment.
10. Troubleshooting
- If VIO loses tracking, check light, exposure and texture first.
- If LiDAR SLAM slides in a corridor, add an IMU, odometry or another constraint.
11. Validation
- The advisor prints the lines shown (executed by the site tests).
- Each method is tested in the ODD’s worst case with recorded data.
12. Engineering checklist
13. Further references
- READMEs of the projects, read 2026-11-06: slam_toolbox, ORB-SLAM3, LIO-SAM, FAST-LIO, VINS-Fusion.