Planned research · not yet implemented

FUTURE PROJECT C · NAVIGATION & STATE ESTIMATION

Autonomous Navigation & Multi-Sensor Fusion

A real-time navigation estimator fusing GPS/GNSS, IMU and wheel odometry — built to stay stable when satellite positioning degrades.

The plan is to design and implement a navigation system that estimates a vehicle's or robot's position, velocity and heading by combining complementary sensors, and keeps producing a trustworthy estimate — with an honest uncertainty — during temporary GPS outages.

It extends my low-cost GPS navigation and fleet-tracking platform and my Kalman-filtering work. The goal is a complete, testable engineering system — real hardware, a modular ROS 2 architecture and measured results — not only a fusion algorithm.

  • GPS/GNSS
  • IMU
  • Wheel Odometry
  • Extended Kalman Filter
  • ROS 2 Jazzy
  • Embedded Linux
Concept illustration: a ground robot follows a route with noisy GPS fixes around it and a smooth fused estimate. In a shaded GPS-outage zone under trees, uncertainty ellipses grow while the robot relies on IMU and odometry, then shrink when GPS returns.
Concept illustration Fused estimate through a GPS outage; uncertainty grows on dead reckoning and contracts when fixes return. Illustrative, not measured.
Status
Planned R&D; estimator, robot integration and tests are not yet built
Builds on
GPS tracking platform (Raspberry Pi 4), Kalman & adaptive filtering
First milestone
Live GPS/IMU estimator on a Pi 4, compared quantitatively with GPS-only
Demonstrator
Small ground robot: GPS + IMU + wheel encoders, LiDAR later

Future project. The GPS receiver, Raspberry Pi 4 platform and GPS tracking software exist from my completed Project 03. Everything else on this page — IMU and odometry fusion, the ROS 2 system, LiDAR localisation, autonomous waypoint following and all metrics — is proposed and has not yet been implemented or validated.

Problem & motivation

Why One Sensor Is Not Enough

GPS gives absolute position but is noisy, updates slowly and can disappear under trees, near buildings or in tunnels. An IMU measures motion at a high rate but drifts without bound. Wheel encoders measure how far the wheels turned — not how far the robot moved when they slip.

Each sensor's weakness is another's strength, and a Kalman-filter-based estimator can combine them according to their uncertainty. But connecting several sensors does not automatically improve navigation: each one must be calibrated, time-aligned, modelled and validated, and the fused result must be shown to beat the simpler alternatives under measured conditions.

Planned engineering objectives

  • Estimate position, velocity and heading in real time.
  • Fuse GPS and IMU with a Kalman-filter-based estimator.
  • Detect GPS outages, noisy measurements and inconsistent sensor data.
  • Evaluate fusion against GPS-only and IMU-only solutions.
  • Keep the design modular for wheel encoders, magnetometers, LiDAR or visual odometry.
  • Demonstrate results on recorded datasets and real-world tests.

Complementary sensor characteristics

Qualitative characteristics; actual performance depends on the specific devices and will be measured.
SensorMeasuresStrengthWeakness
GPS / GNSSAbsolute position, time, possibly velocityNo long-term driftNoise, low rate, multipath and outages; heading unreliable when stationary
IMU (6- or 9-axis)Acceleration, angular rate (and magnetic field)High rate, independent of the environmentBias and noise integrate into growing drift; magnetometer is disturbed by nearby metal
Wheel encodersWheel rotationGood short-term distance and turn rateWheel slip, scale-factor errors, no absolute position
2-D LiDAR (later)Ranges to the surroundingsObstacles; localisation against a mapNeeds geometric features; cost and processing load
Camera (later)ImagesVisual odometry, rich contextLighting, texture and calibration dependence

Proposed architecture

From Sensors to a Navigation Output with Uncertainty

Each sensor driver and estimator is a separate module that can be tested on its own, and a low-cost sensor can later be replaced by a better one without redesigning the system.

Navigation system architecture

Proposed design
  1. Sensor inputs

    • GPS / GNSS
    • IMU
    • Wheel encoders
    • Optional LiDAR / camera
  2. Data acquisition & synchronisation

    • Drivers
    • Timestamps
    • Coordinate transforms
    • Calibration
    • Sensor health
  3. State estimation & sensor fusion

    • IMU motion propagation
    • GPS corrections
    • Kalman filtering
    • Outlier rejection
  4. Navigation output

    • Position
    • Velocity
    • Heading
    • Uncertainty
  5. Monitoring, analysis & control interface

    Monitoring & analysis

    Live map, trajectory, sensor status, error reports.

    Navigation & control

    Waypoint following, obstacle response, safe-stop behaviour.

How the system would work

  1. IMU propagation

    Angular rates and accelerations at high frequency propagate the state between corrections.

  2. Odometry aiding

    Wheel-encoder speed and turn rate constrain motion when available.

  3. GPS correction

    Absolute position (and possibly velocity) corrects accumulated drift, weighted by its uncertainty.

  4. Publish state + health

    Estimated state, covariance and sensor-health indicators for the navigation layer.

LiDAR and camera data would not be pushed into the same filter at first. They would provide separate localisation estimates or obstacle information, integrated later through a well-defined interface.

Coordinate frames for a ground robot A tree of coordinate frames following the ROS convention: the earth-fixed geodetic frame (latitude, longitude) is converted to a local map frame in east-north-up axes; map connects to odom, which drifts continuously; odom connects to base_link on the robot body; base_link connects to sensor frames imu_link, gps_link with a lever arm, and laser_link. Map to odom is corrected by GPS or localisation; odom to base_link comes from IMU and wheel odometry. WGS-84 (lat, lon, h)map (local ENU) odombase_link imu_linkgps_link · laser_link geodetic → local conversion corrected by GPS / localisation (may jump) IMU + odometry (smooth, drifts) fixed mounting rotation fixed lever arm l GlobalWorld-fixedContinuousRobot body
Concept diagram Frame tree following the ROS map → odom → base_link convention, managed with TF2.

Coordinate frames & transforms

Define the global frame, local navigation frame, robot body frame and every sensor frame explicitly, and manage them with ROS 2 TF2. Geographic coordinates are converted carefully to the local frame, and three different "headings" are kept apart:

  • True heading — the direction the robot body points, relative to true north.
  • Magnetic heading — the same, from a magnetometer, affected by declination and local interference.
  • Course over ground — the direction of travel from GPS velocity, undefined when stationary.

Heading is not free. A stationary single-antenna GPS cannot give heading. A magnetometer helps but is easily disturbed; dual-antenna GNSS, motion-based estimation or a well-calibrated inertial system may be needed, depending on the accuracy required.

Sensor-fusion algorithm design

Four Fusion Stages, Each Judged Against the Last

This is where Kalman-filter and tracking experience becomes the central advantage. Each stage must show a measured improvement over the previous one — including where it does not help.

  1. GPS baseline

    Record raw GPS; compute position and velocity, fix quality and satellite data, stationary scatter and error against a trusted reference.

    sets the bar to beat
  2. GPS + IMU

    An EKF (or an existing ROS 2 estimator): the IMU propagates the state, GPS corrects the drift; uncertainty tracked in the covariance.

    core estimator
  3. + Wheel odometry

    Adds motion information when GPS is unreliable — while recognising that slip causes drift and encoders give no absolute position.

    robot_localization (EKF/UKF)
  4. LiDAR or visual localisation

    Only after stages 1–3 are stable: LiDAR mapping/localisation, or visual(-inertial) odometry, for areas with poor satellite positioning.

    environment-dependent
Off-the-shelf firstStart with the ROS 2 robot_localization package, which supports EKF and UKF estimation and fuses IMU, odometry and GPS-derived position. It gives a tested baseline quickly.
Own estimator next (research)Implement a custom EKF and an adaptive measurement/process-noise strategy, compared fairly against the fixed-noise baseline on identical recorded data.

Ultrasonic sensors are not LiDAR. They are useful for cheap short-range obstacle detection, but provide little information for precise global positioning.

Mathematical foundations

Inertial Propagation, GPS Correction and Dead Reckoning

A simplified strapdown-inertial formulation in a local frame. Worked numbers are arithmetic illustrations, not sensor specifications.

Navigation state

Position, velocity, attitude and sensor biases

x=[pvqbabg]T
p
Position in the local navigation frame (3).
v
Velocity (3).
q
Orientation as a unit quaternion (4), avoiding Euler-angle singularities.
ba,bg
Accelerometer and gyroscope biases (3 + 3), estimated online because they change with temperature and time.

In an error-state EKF the attitude error is three-dimensional, giving a 15-element error state.

IMU mechanisation

Continuous-time propagation

p˙=v
v˙=R(q)(a˜−ba)+g
q˙=12q⊗[0ω˜−bg]
b˙a=nba,b˙g=nbg
a˜,ω˜
Measured specific force and angular rate in the body frame.
R(q)
Rotation from body to navigation frame.
g
Gravity vector in the navigation frame.
nb∗
Small white-noise inputs: biases modelled as slow random walks.

Discretised and linearised, this gives the EKF prediction Pk|k−1=FkPk−1FkT+Qk.

GPS correction & outlier rejection

Measurement model with lever arm and gate

zGPS=p+R(q)l+ηGPS
νkTSk−1νk≤χ3,0.992
l
Lever arm: offset from the IMU to the GPS antenna, measured on the robot.
ηGPS
GPS noise, covariance set from measured stationary scatter and reported fix quality — not arbitrary guesses.
χ2
Chi-square gate (≈ 11.34 for 3 DoF at 99 %): implausible jumps are rejected and logged rather than fused.
Dead reckoning

Differential-drive wheel odometry

v=r(ωR+ωL)2
ω=r(ωR−ωL)b
xk+1=xk+vΔtcosθk
yk+1=yk+vΔtsinθk
θk+1=θk+ωΔt
ωR,ωL
Right and left wheel angular speeds from the encoders.
r,b
Wheel radius and wheel separation — both calibrated, because small errors bias every step.
θ
Heading; odometry heading error accumulates and bends the whole path.
Why outages are time-limited

Drift from an uncorrected bias

δp(t)≈12δbat2
δψ(t)≈δbgt

A residual accelerometer bias δba grows into position error quadratically; a residual gyro bias grows heading error linearly, which then bends the dead-reckoned path.

Arithmetic example: δba=0.05 m/s² gives ≈ 2.5 m after 10 s but ≈ 22.5 m after 30 s. That is why dead reckoning continues only while its covariance stays acceptable, after which the system signals degraded navigation and enters a safe behaviour.

Evaluation

Accuracy and consistency

RMSE=1N∑k=1N‖pˆk−pkref‖2
ϵk=ekTPk−1ek

RMSE says how wrong the estimate is; the normalised estimation error squared ϵk says whether the filter knows how wrong it is. A smooth trajectory alone does not prove accuracy — the reported uncertainty must be consistent with the observed errors.

Proposed hardware · ground-robot demonstrator

Minimum Useful Configuration First

A small ground robot is safer and easier to test repeatedly than a car, and the same principles carry over to vehicles and drones. Hardware is expanded only after the first estimator has been evaluated.

  • 01 · Onboard computer

    Raspberry Pi 4 Model B, 8 GB

    Ubuntu 24.04, ROS 2 Jazzy, drivers, estimation, logging and visualisation interfaces.

    Platform exists (Project 03)
  • 02 · GPS / GNSS

    ATGM336H-5N or better

    Position, time and possibly velocity. Its accuracy is assessed before it is ever used as a reference.

    Receiver exists (Project 03)
  • 03 · IMU

    Calibrated 6- or 9-axis IMU

    Acceleration and angular rate (plus magnetometer on 9-axis). Chosen for bias stability, vibration sensitivity, rate and driver support.

    To acquire
  • 04 · Wheel encoders

    Recommended for a ground robot

    Dead reckoning between GPS updates. Calibrate wheel diameter, counts and separation; expect slip errors.

    If not already fitted
  • 05 · Optional LiDAR

    2-D scanning LiDAR

    Added after GPS/IMU/encoder fusion is validated: obstacle detection and, with mapping software, localisation.

    Later investment

Practical sequencing: with the existing GPS and UGV available, the first purchase is only the IMU. My existing Raspberry Pi 4 six-wheel-motor UGV could serve as the base if its chassis, motor drivers, encoders and power supply prove suitable — no second robot needs to be built from scratch.

Demonstrator phases

  • Phase A — GPS/IMU navigation

    Raspberry Pi, GPS receiver and IMU; log raw and fused data and compare errors against a reference trajectory.

  • Phase B — dead reckoning & obstacles

    Wheel encoders for motion estimation; 2-D LiDAR for mapping and obstacles; ultrasonic sensors for cheap short-range detection.

  • Phase C — autonomous navigation

    Map-based localisation, route planning and waypoint following; stop or re-plan when an obstacle appears.

Embedded Linux & ROS 2 implementation

Tested Middleware, Own Estimation and Evaluation

Rather than writing every subsystem from scratch, the plan builds custom estimation and evaluation modules around tested ROS 2 middleware and drivers.

Proposed software; documentation sources: ROS 2 Jazzy, robot_localization and Nav2.
ComponentProposed technologyPurpose
Operating systemUbuntu 24.04 LTSOnboard computer
Robotics middlewareROS 2 JazzySensor communication and integration
ProgrammingPython first; C++ where performance-criticalEstimation, drivers, real-time processing
State estimationrobot_localization, then own EKFGPS/IMU/odometry fusion
GNSS integrationnmea_navsat_driver or receiver-specific driverGPS message acquisition
VisualisationRViz2Position, trajectory, frames, sensor data
Data analysisNumPy, pandas, MatplotlibOffline experiments and evaluation
Mapping & autonomyNav2, occupancy grids, localisation packageWaypoints, obstacle-aware planning
Datasets & playbackROS 2 bags, CSV exportsRepeatable experiments and debugging

Proposed project structure

autonomous_navigation/
├── src/
│   ├── gps_driver/
│   ├── imu_driver/
│   ├── wheel_odometry/
│   ├── coordinate_transforms/
│   ├── sensor_calibration/
│   ├── state_estimator/
│   ├── sensor_health_monitor/
│   ├── localization_evaluator/
│   ├── waypoint_navigation/
│   └── dashboard/
├── config/
│   ├── sensors.yaml
│   ├── ekf.yaml
│   └── robot.yaml
├── launch/
├── datasets/
├── results/
├── tests/
└── README.md

The custom estimator must be testable against the ROS 2 estimator using identical recorded sensor data.

Engineering challenges & limitations

What Separates a Credible System from a Demo

  • Timing

    Time synchronisation

    GPS and IMU arrive at different rates and latencies.

    Approach: preserve timestamps, measure offsets, never treat a delayed measurement as current; account for ROS 2 message timing.

  • Calibration

    Sensor uncertainty

    Biases, mounting orientation, GPS noise and encoder scale factors all matter.

    Approach: configure covariances from measurements, not guesses.

  • Outages

    Degraded GPS

    Implausible jumps, poor fixes, stale data and sensor disagreement.

    Approach: detect and gate; propagate on inertial/odometry only while uncertainty is acceptable, then signal degraded mode and stop safely.

  • Slip

    Wheel slip & turning

    Rapid turns and low-traction surfaces corrupt odometry.

    Approach: cross-check odometry against IMU yaw rate; compare baseline and adaptive estimators.

  • Reference

    Ground truth

    Ordinary GPS cannot measure its own accuracy.

    Approach: survey-grade/RTK GNSS reference, a known reference trajectory or validated ground-truth points.

  • Compute

    Embedded budget

    A Raspberry Pi has limited CPU for estimation plus logging and visualisation.

    Approach: measure latency, CPU and memory; move hot paths to C++.

Testing & performance metrics

Proving That Fusion Works

A test framework is built before full autonomy. A successful result shows measurable improvement — and also the conditions where fusion does not improve the result.

  • Test 1 — stationary stability

    GPS-only vs. fused positions while stationary: scatter, drift and false motion, against an RTK-class reference.

  • Test 2 — normal movement

    A repeatable path with straights, turns, stops and speed changes; trajectory error and heading response.

  • Test 3 — degraded GPS

    Replay with simulated gaps and noise, then controlled real tests under trees or near buildings; drift and recovery time.

Plus Test 4 — rapid turns and different traction, comparing the baseline EKF with the proposed adaptive estimator.
MetricWhat it tells us
Horizontal position RMSEOverall position-estimation error
95th-percentile position errorPerformance during larger deviations
Velocity RMSEQuality of motion estimation
Heading errorOrientation or course accuracy against a valid reference
Drift during GPS outagesHow quickly dead reckoning becomes unreliable
Recovery timeTime to return to acceptable error after GPS resumes
Processing latencyTime from measurement arrival to published estimate
CPU and memory usageSuitability for embedded deployment
AvailabilityShare of time the estimate meets defined quality requirements
Filter consistency (NEES)Whether reported uncertainty matches observed error

Phased development

Six Stages over About Six Months, Part-Time

Planning estimates, not guaranteed dates. If the existing robot already has working ROS 2 communication and usable encoders, the early stages may be shorter.

  1. 01Weeks 1–3

    Sensor acquisition & baseline

    • Read GPS and IMU with timestamps
    • ROS 2 topics
    • Repeatable datasets

    Deliverable: a sensor-logging and visualisation demonstration.

  2. 02Weeks 4–6

    GPS/IMU estimator

    • Validated EKF baseline
    • Coordinate transforms
    • Sensor calibration

    Deliverable: fused position and motion on a live map.

  3. 03Weeks 7–10

    Dead reckoning & evaluation

    • Add wheel odometry
    • Log GPS outages
    • GPS-only vs. odometry-only vs. fused

    Deliverable: reproducible test reports.

  4. 04Weeks 11–14

    Custom & adaptive estimator

    • Own EKF implementation
    • Adaptive noise strategy
    • Comparison on identical datasets

    Deliverable: fixed vs. adaptive comparison report.

  5. 05Weeks 15–19

    Environmental sensing

    • LiDAR obstacle detection
    • Mapping / localisation if appropriate

    Deliverable: a robot that estimates its state while detecting nearby obstacles.

  6. 06Weeks 20–24

    Waypoint navigation & release

    • Nav2 or similar stack
    • Safe stopping
    • Repeatable trials

    Deliverable: architecture, demonstration video and performance results published.

First milestone: a live GPS/IMU navigation estimator running on the Raspberry Pi 4, with recorded sensor data and a quantitative comparison between GPS-only and fused estimates — before any LiDAR or autonomous control.

Expected contribution

Expected Contribution & Research Direction

The distinctive contribution is not the use of a Kalman filter by itself, but the engineering of a complete, testable navigation solution: uncertainty management, sensor integration, real-world validation and, potentially, an adaptive estimator.

  • Existing expertise applied

    GPS tracking, Kalman filtering, target-motion estimation, sensor-data integration, coordinate transformations, real-time software, Linux and system testing.

  • New competencies to demonstrate

    Inertial navigation, IMU calibration, odometry, ROS 2 integration, robotics coordinate frames, LiDAR localisation and autonomous waypoint navigation.

Mohammed Ismail Ali Attala
Proposed project lead

Mohammed Ismail Ali Attala

Senior Systems Engineer · C4I/C2 Integration · Tracking & Navigation

Open to collaboration on GPS-degraded localisation, mobile robotics and navigation research.

Potential applications

  • Autonomous ground robots and civilian vehicle navigation
  • GPS-degraded localisation
  • Fleet and asset tracking
  • Drone navigation research

Estimate, measure, prove — then automate.

Demonstrate that the estimator works, that its coordinate frames are correct and that its performance is measured against a suitable reference, before adding LiDAR or autonomous control.

Contact & Collaboration

Working on Robots, Vehicles or Drones?

I welcome discussions about multi-sensor navigation, state estimation, GPS-degraded positioning and ROS 2 integration.