FixTheRobot Explore Robotics / Systems Engineering / Engineering Guides / Module 02

Engineering Guides · Module 02

Sensor combination: GNSS + IMU

GNSS gives absolute position at a low rate; the IMU fills the gaps and gives orientation. The standard outdoor pair.

  • Advanced
  • Module 02: Sensor Selection, Trade-offs & Integration
  • Written for ROS 2 Jazzy where ROS 2 is used
  • Sources checked 2026-11-05

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

GNSS is slow, noisy and unavailable at times; an IMU is fast and drifts. Together they give a continuous, bounded pose.

2. When is this needed?

  • Outdoor robots, UAVs, agricultural vehicles.
  • As the base of a GNSS-denied-capable estimator.

3. Selection and design decisions

What each sensor contributes

Contributions
SensorContributionWeakness the other covers
GNSSAbsolute position, no driftLow rate, multipath, unavailable indoors
IMUHigh rate motion, orientationDrifts

Fusion approaches

  • EKF with a continuous local filter and a global filter (two-stage), as described for robot_localization.
  • Factor-graph smoothing with GNSS factors (some LiDAR-inertial systems accept GNSS optionally, per their READMEs).
  • An integrated GNSS/INS unit does this internally.

4. Advantages and disadvantages

  • Gating GNSS protects against multipath bias but delays recovery.
  • Heading from motion works only while moving; dual antennas give static heading.

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).
  • Lever arm from antenna to base frame.
  • Correct datum and axes (ENU vs NED).
  • GNSS latency handled as a delayed measurement.

6. Architecture

GNSS (low rate, delayed) ─┐
                          ├─▶ EKF / smoother ─▶ global pose
IMU (high rate) ──────────┘

7. Implementation

  1. Measure and enter the antenna lever arm.
  2. Convert GNSS to a local frame consistently.
  3. Configure the fusion (see the robot_localization guide) and gate with innovation tests.
  4. Validate with a surveyed route.

Compare structures in the Sensor Fusion Architecture Builder.

8. Real examples

  • An agricultural rover following rows.

9. Failure scenarios

  • Wrong lever arm: position error that depends on heading.
  • Multipath bias absorbed by the filter (see the GNSS-degradation guide).
  • Heading ambiguity at rest.

10. Troubleshooting

  1. Compare GNSS with odometry on a straight segment.
  2. Check frames and datum.
  3. Log reported accuracy against observed scatter.

11. Validation

  • Position error against a surveyed route within the requirement.
  • No jumps through a deliberate GNSS dropout.
  • Heading stable at rest.

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