forked from 30hours/3lips
-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Summary
Complete the critical production readiness work for TelemetrySolver integration beyond the basic MVP from issue #22. These are essential items needed for TelemetrySolver to function properly in the 3lips system.
Prerequisites
- Issue Integrate TelemetrySolver as new localization algorithm #22 (basic TelemetrySolver integration) must be completed first
Critical Work Items
1. Add TelemetrySolver to API Configuration
- Update
localisationsarray inapi.pyto include TelemetrySolver option - Add entry:
{"name": "TelemetrySolver (LM)", "id": "telemetry-solver"} - Test that option appears in web UI dropdown
- Verify API validation accepts "telemetry-solver" as valid localisation
Files to modify:
3lips/api/api.py(lines 67-73, 85)
Without this: Web UI won't show TelemetrySolver as selectable option
2. Dependency Management & Compatibility
- Compare TelemetrySolver/requirements.txt with 3lips/event/requirements.txt
- Identify version conflicts (numpy, scipy, etc.)
- Update 3lips requirements.txt to include compatible versions
- Test that existing 3lips functionality still works with new dependencies
- Update Docker build process if needed
Potential conflicts to check:
- numpy version differences
- scipy version differences
- Any unique TelemetrySolver dependencies
Risk: Version conflicts could break existing localization methods
3. Error Handling & Fallback Logic
- Implement graceful handling when TelemetrySolver fails to converge
- Add fallback to another localization method (suggest ellipse-parametric-mean)
- Log solver failures for debugging
- Ensure system doesn't crash on solver exceptions
- Test with problematic detection geometries
Implementation approach:
def process(self, assoc_detections, radar_data):
for target in assoc_detections:
try:
result = solve_lm(triple, initial_guess)
if result and "error" not in result:
# Use TelemetrySolver result
output[target] = {...}
else:
# Fallback to backup method
output[target] = self.fallback_method(...)
except Exception as e:
print(f"TelemetrySolver failed for {target}: {e}")
# Use fallback methodFiles to modify:
3lips/event/algorithm/localisation/TelemetrySolverLocalisation.py
Testing Requirements
Pre-deployment Testing
- Test TelemetrySolver option appears in web UI
- Test API accepts "telemetry-solver" requests
- Test fallback behavior with invalid detection data
- Test with real radar data to verify no crashes
- Test dependency compatibility with existing methods
Integration Testing
- Run full pipeline: radar → association → TelemetrySolver → tracker → API
- Verify tracks appear correctly on map interface
- Compare results with other localization methods
- Test with synthetic-adsb data
Acceptance Criteria
- Issue Integrate TelemetrySolver as new localization algorithm #22 completed (TelemetrySolver integration)
- TelemetrySolver appears as option in web UI
- Can successfully make API calls with
"localisation": "telemetry-solver" - System handles solver failures gracefully without crashing
- No dependency conflicts with existing functionality
- Positions from TelemetrySolver appear correctly on map
- Fallback works when solver fails to converge
Definition of Done
- All checklist items completed
- Integration tests pass
- Real radar testing shows stable operation
- No regressions in existing localization methods
- Documentation updated (if needed)
Time Estimate
~4-6 hours total
- API configuration: 1 hour
- Dependency management: 2-3 hours
- Error handling: 1-2 hours
Priority
Critical - Required for TelemetrySolver to be usable in production with real radar units
Related Issues
- Depends on: Integrate TelemetrySolver as new localization algorithm #22 (TelemetrySolver integration MVP)
- Blocks: Future TelemetrySolver enhancement work
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels