Design & Selection · Module 10
Comparing VIO and LIO
VIO starves without light or texture; LIO starves without geometric structure. List your sites and see where both are at risk.
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
Both approaches fuse an IMU with an exteroceptive sensor, and they fail in different places. Comparing them by benchmark scores from other data hides the difference that matters: which of your sites each can handle.
2. When is this needed?
- Choosing between VIO and LIO for a robot.
- Planning where a robot may operate.
- Deciding whether to fuse both.
3. Selection and design decisions
Facts from the READMEs (read 2026-11-06): VINS-Fusion states VIO heavily relies on hardware quality and recommends global-shutter cameras and hardware synchronisation; FAST-LIO is a tightly coupled iterated EKF lidar-inertial odometry package that does not need feature extraction and supports spinning and solid-state LiDARs; LIO-SAM requires per-point time and ring information and a 9-axis IMU. Beyond these, the comparison below is general engineering reasoning.
| Aspect | VIO | LIO |
|---|---|---|
| Light | Needs light and exposure control | Independent of light |
| Texture and structure | Needs visual texture | Needs geometric structure |
| Cost, weight, power | Low (camera and IMU) | Higher (LiDAR) |
| Scale | Metric with an IMU (stereo or inertial); monocular needs excitation | Metric from range |
| Failure sign | Tracking lost, drift in featureless areas | Sliding along corridors and fields |
| Dynamic scenes | Moving features corrupt tracking | Moving objects add outliers |
4. Advantages and disadvantages
- Fusing both covers each other’s weak sites and adds sync, calibration and compute.
- Choosing one is simpler and limits where the robot works.
- Add a safe fallback for the failing case.
5. Requirements and constraints
- Every site in the ODD is covered by at least one working method.
- Sites where both are at risk have an extra constraint (markers, GNSS, odometry) or are excluded.
- Each method is tested in its weakest site.
6. Architecture
site conditions ─▶ VIO risk? LIO risk? ─▶ one, both, or add constraint7. Implementation
- List the sites and their conditions: light, texture, structure.
- Mark VIO and LIO risks per site (below).
- Choose a method or fusion so each site has a working method.
- For sites at risk for both, add a constraint or exclude them.
- Test in the weakest sites.
sites = {"dark warehouse aisle": {"low_light"},
"plain-wall hall with furniture": {"low_texture"},
"open grass field": {"low_structure"},
"long textured corridor": {"low_structure"},
"glass atrium at night": {"low_light", "low_structure"}}
VIO_RISK = {"low_light", "low_texture"} # conditions that starve a camera of features
LIO_RISK = {"low_structure"} # conditions that leave a scan match under-constrained
for name, cond in sites.items():
vio = "RISK" if cond & VIO_RISK else "ok"
lio = "RISK" if cond & LIO_RISK else "ok"
print(f"{name:32s} VIO {vio:4s} LIO {lio:4s}", "<- both at risk" if vio == lio == "RISK" else "")Printed (checked by the site’s tests):
dark warehouse aisle VIO RISK LIO ok
plain-wall hall with furniture VIO RISK LIO ok
open grass field VIO ok LIO RISK
long textured corridor VIO ok LIO RISK
glass atrium at night VIO RISK LIO RISK <- both at riskReading it: a dark aisle and a plain-wall hall are risky for VIO and fine for LIO; an open field and a long corridor are the reverse; a glass atrium at night is risky for both and needs another constraint. The site list and rules are illustrative.
8. Real examples
- Facility with a dark warehouse and a bright atrium: LIO in the warehouse, VIO or fused in the atrium.
9. Failure scenarios
- Choosing from a benchmark in a different environment.
- Assuming a LiDAR works in open space.
- Assuming a camera works at night.
10. Troubleshooting
- If both fail on one site, add a global reference (markers, GNSS, map).
- If one fails intermittently, log its health signal against the place.
11. Validation
- The risk table prints the lines shown (executed by the site tests).
- Each site has a method that passes its test.
12. Engineering checklist
13. Further references
- VINS-Fusion README, read 2026-11-06: HKUST-Aerial-Robotics/VINS-Fusion.
- FAST-LIO and LIO-SAM READMEs, read 2026-11-06: FAST_LIO, LIO-SAM.