← All lab notes
FPGA prototype

EdgeFuse

Real-time multi-sensor preprocessing with DODA

A visible-light camera and a thermal sensor feed an FPGA where a DODA prototype synchronizes and fuses the two streams before the application CPU ever sees them. Frame synchronization and adaptive view switching, side by side with a CPU-only baseline.

19×Preprocessing speedupDODA vs. CPU-only baseline, same input frame
2Sensor streams fusedVisible (EO) + thermal (IR)
TODO
  1. Kalman filter for sensor fusion on the FPGA
  2. EO/IR geometric correction for lens distortion
  3. Target: ~100× speedup over the CPU-only baseline
01

Multi-modal sensing on the edge is getting harder

Multi-modal sensing is becoming the norm on edge devices such as robots. Even for something as simple as two sensors — a visible-light camera and a thermal sensor — a CPU pipeline is already too slow just for image resizing. The frames arrive faster than the CPU can scale and align them, so the two streams fall out of sync.

Now imagine adding LiDAR, radar, or SAR. The preprocessing burden grows with every sensor added, and the CPU falls further behind. This is a structural problem, not a tuning problem.

CPU-only display showing visible drift between the visible and thermal overlays
CPU-only: the visible and thermal streams drift apart — the CPU can't keep up.
02

Move preprocessing next to the sensors with DODA

Instead of sending raw frames to the CPU, we deploy a DODA overlay in the FPGA fabric between the sensors and the application core. As pixels arrive from the visible-light camera (45 FPS, 1280×960) and the thermal sensor (9 FPS, 160×120), DODA resizes and time-aligns the two streams on the fly — before the first byte reaches the ARM core.

The preprocessed, fused stream lands on the CPU already synchronized. The application starts the moment the last pixel of each frame arrives — 19× faster preprocessing than the CPU-only baseline.

CPU PROCESSINGInput imagePixel-by-pixel arrivalCPUPreprocessApplicationOutputDONEDODA + CPUInput imagePixel-by-pixel arrivalDODAPreprocessStarts with the first pixelPreprocessedCPUApplicationOutputDONEFinishes earlier19× preprocessing speedupCPU PROCESSINGInput imagePixel-by-pixel arrivalCPUPreprocessApplicationOutputCPU waits for the complete frame.DONEDODA + CPUInput imagePixel-by-pixel arrivalDODAPreprocessStarts with the first pixelPreprocessedCPUApplicationOutputDONEFinishes earlier19× preprocessing speedup
CPU-only (top): the application waits behind two full preprocessing steps. DODA (bottom): preprocessing overlaps the frame's arrival.
03

Frame synchronization

Side-by-side on the same hardware. With CPU-only processing (left), the visible and thermal frames drift apart: the thermal overlay lags behind the person's actual position. With DODA preprocessing (right), the streams stay tightly locked.

Side-by-side: CPU-only output with drifting thermal overlay, DODA output with overlay locked to the person
CPU-only shows visible drift between EO and IR. DODA keeps the streams locked.
04

Adaptive view switching

Beyond synchronization, EdgeFuse adjusts the fusion weight between EO and IR continuously based on ambient brightness — no fixed threshold, just a smooth blend that shifts as the lighting changes. When light is good, the visible view dominates with thermal picture-in-picture; as light falls, the fused thermal view takes over with the visible as PIP.

The switch is immediate: because the decision is made close to the sensors on the FPGA, the application sees the already-switched stream with no extra latency.

Display switching between the visible view and the fused thermal view as lighting changes
Highlight: visible + thermal PIP. Lowlight: fused thermal + visible PIP. The blend shifts in real time.
05

Hardware

Everything runs on one FPGA SoC board with an ARM Cortex-A53. The thermal (IR) sensor and visible-light (EO) camera connect directly to the board; the DODA prototype lives in the FPGA fabric and the application runs on the A53.

FPGA SoC board with thermal sensor on the left and visible-light camera on the right
FPGA + ARM Cortex-A53 board with thermal (IR) sensor and visible-light (EO) camera.
Bench: monitor showing fused output, UART log screen, board with sensors
Bench: FPGA display output (top), UART output (left), FPGA + sensors (right).
06

What comes next

This prototype was built on a tight timeline. The current 19× speedup is only the floor — the architecture has much more headroom. Two near-term priorities:

  • Kalman filter for sensor fusion, implemented as a DODA operator on the FPGA.
  • EO/IR geometric correction to compensate lens distortion before frames reach the CPU.
  • Expected outcome with both improvements: ~100× speedup over the CPU-only baseline.

TEAM Jinho Lee · Tingting Xiang · Burin Amornpaisannon