Skip to content

Implement RadarOnlyAssociator for pure radar tracking #20

@jonnyspicer

Description

@jonnyspicer

Overview

This issue addresses the fundamental limitation that prevents the 3lips system from operating without ADS-B data. Currently, the system cannot track targets using only radar detections.

NB this will be done after the TelemetrySolver is working.

Problem Statement

Current Blocker: The only existing associator (AdsbAssociator) requires ADS-B truth data to associate radar detections. Without ADS-B, the association step returns empty results and no targets are tracked.

Impact: The system cannot operate in pure radar mode, which is the core requirement for multi-static passive radar tracking.

Current vs Required Flow

Current Flow (ADS-B Dependent)

Radar Detections → AdsbAssociator (requires ADS-B truth) → Localization → Tracking
                              ↑
                        FAILS without ADS-B

Required Flow (Radar-Only)

Radar Detections → RadarOnlyAssociator → Localization → Tracking

Target State for MVP

Implement RadarOnlyAssociator class that can:

  1. Group radar detections from multiple nodes without prior target knowledge
  2. Associate delay/Doppler measurements across distributed sensors
  3. Handle temporal consistency across multiple scan cycles
  4. Interface with existing localization algorithms (no changes needed)
  5. Work with current radar data format from synthetic-adsb and real radars

Implementation Approach

Phase 1: Basic Spatial Association

class RadarOnlyAssociator(Associator):
    def process(self, radar_list, radar_data, timestamp):
        # 1. Extract delay/doppler detections from each radar
        # 2. Apply simple spatial gating in delay-Doppler space
        # 3. Use nearest neighbor clustering to group detections
        # 4. Return associated clusters: {cluster_id: [radar1_det, radar2_det, ...]}

Phase 2: Temporal Consistency

  • Use previous scan results to improve association
  • Apply motion constraints for kinematic gating
  • Handle new/disappearing targets

Files to Create

  • event/algorithm/associator/RadarOnlyAssociator.py
  • test/event/test_radar_only_association.py

Files to Modify

  • event/event.py - Add RadarOnlyAssociator as configurable option
  • Configuration files - Add radar-only association parameters

Success Criteria

  • System can track targets using only radar detections (no ADS-B required)
  • Works with existing synthetic-adsb test data in radar-only mode
  • Integrates with existing localization algorithms without changes
  • Produces reasonable track associations for multi-static scenarios
  • Performance suitable for real-time processing
  • Configurable via environment variables like existing associator

Testing Approach

  1. Unit tests for association algorithms
  2. Integration tests with synthetic radar data (ADS-B disabled)
  3. Performance tests for real-time operation
  4. Comparison tests with ADS-B truth when available

Dependencies

  • None - this is the foundational capability everything else builds on
  • Must be completed before other MVP work can be validated in radar-only mode

MVP Priority

🔴 CRITICAL - Blocks all other MVP functionality in pure radar scenarios

Metadata

Metadata

Assignees

No one assigned

    Labels

    mvpMVP-critical issue

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions