mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 18:51:12 +00:00
97 lines
4.2 KiB
Markdown
97 lines
4.2 KiB
Markdown
# Performance Tests
|
|
|
|
### NFT-PERF-01: Per-Frame Latency On Project Still Images
|
|
|
|
**Summary**: Validate end-to-end latency for processing project nadir frames through geolocation output.
|
|
|
|
**Traces to**: AC-4.1, AC-4.4
|
|
|
|
**Metric**: Capture-to-output latency p50/p95/p99 and dropped-frame rate.
|
|
|
|
**Preconditions**:
|
|
- Jetson Orin Nano Super or equivalent production target is running in the intended power mode.
|
|
- `project_60_still_images` fixture is available.
|
|
|
|
| Step | Consumer Action | Measurement |
|
|
|------|-----------------|-------------|
|
|
| 1 | Replay images at target 3 fps or faster stress rate | Measure latency from input timestamp to emitted estimate |
|
|
| 2 | Record all frame drops | Measure dropped-frame percentage |
|
|
|
|
**Pass criteria**: p95 latency <400 ms; dropped frames <=10% under sustained load; no batching delay.
|
|
|
|
**Duration**: Minimum 20 minutes or full fixture loop repeated enough times to reach stable measurements.
|
|
|
|
---
|
|
|
|
### NFT-PERF-02: BASALT + Wrapper Replay Latency
|
|
|
|
**Summary**: Validate relative VIO hot-path latency using synchronized Derkachi video/telemetry and public or representative camera/IMU data.
|
|
|
|
**Traces to**: AC-2.1a, AC-4.1, AC-4.2
|
|
|
|
**Metric**: Per-frame VIO latency, completion rate, and memory usage.
|
|
|
|
**Preconditions**:
|
|
- Derkachi `flight_derkachi.mp4` and `data_imu.csv` are mounted and pass fixture validation.
|
|
- MUN-FRL/ALTO/EPFL/Kagaru or another representative synchronized dataset slice is pinned for calibrated final comparison.
|
|
- OpenVINS reference replay is available for comparison when the dataset supports it.
|
|
|
|
| Step | Consumer Action | Measurement |
|
|
|------|-----------------|-------------|
|
|
| 1 | Replay Derkachi video at target 3 fps and stress rates from the 30 fps source | Measure per-frame processing time, dropped frames, and telemetry alignment |
|
|
| 2 | Replay synchronized camera/IMU stream through BASALT + wrapper | Measure VIO processing time and completion rate |
|
|
| 3 | Compare emitted trajectory against Derkachi `GLOBAL_POSITION_INT` and calibrated dataset ground truth where available | Measure completion rate and error distribution |
|
|
| 4 | Monitor memory | Track CPU/GPU shared memory peak |
|
|
|
|
**Pass criteria**: Normal-frame VO registration >95% on calibration-supported segments; p95 processing latency <400 ms for the hot path; memory <8 GB shared; Derkachi replay maintains stable 3-video-frames-per-telemetry-row alignment with <=10% dropped frames under sustained target-rate replay.
|
|
|
|
**Duration**: Dataset-dependent; at least one normal segment and one challenging segment.
|
|
|
|
---
|
|
|
|
### NFT-PERF-03: Relocalization Trigger Path Latency
|
|
|
|
**Summary**: Validate the heavy DINOv2-VLAD + FAISS + ALIKED/LightGlue path under bounded top-K settings.
|
|
|
|
**Traces to**: AC-3.2, AC-3.3, AC-4.1, AC-8.6
|
|
|
|
**Metric**: Trigger-to-anchor latency, top-K query time, local verification time, accepted/rejected anchor counts.
|
|
|
|
**Preconditions**:
|
|
- Precomputed descriptor index is loaded.
|
|
- Dynamic K settings are configured: K=5 stable, K=20 active-conflict, K=50 fallback.
|
|
|
|
| Step | Consumer Action | Measurement |
|
|
|------|-----------------|-------------|
|
|
| 1 | Trigger relocalization from cold start or sharp turn | Measure DINOv2 descriptor time and FAISS query time |
|
|
| 2 | Verify top-K candidates | Measure ALIKED/LightGlue + RANSAC latency |
|
|
| 3 | Emit accepted/rejected decision | Measure total trigger-to-decision latency |
|
|
|
|
**Pass criteria**: Heavy path is conditional, never blocks steady-state frame output; accepted anchor carries MRE <2.5 px and valid covariance.
|
|
|
|
**Duration**: 100 relocalization trials across stable and active-conflict sector fixtures.
|
|
|
|
---
|
|
|
|
### NFT-PERF-04: Cold Boot Time To First Fix
|
|
|
|
**Summary**: Validate companion boot to first valid `GPS_INPUT`.
|
|
|
|
**Traces to**: AC-NEW-1
|
|
|
|
**Metric**: Time from service start/boot marker to first valid `GPS_INPUT`.
|
|
|
|
**Preconditions**:
|
|
- Engines/indexes are built before the run.
|
|
- Cache/index is available locally.
|
|
- FC state handoff is simulated or provided.
|
|
|
|
| Step | Consumer Action | Measurement |
|
|
|------|-----------------|-------------|
|
|
| 1 | Start service from cold boot condition | Measure initialization stages |
|
|
| 2 | Wait for first valid output | Measure first valid `GPS_INPUT` timestamp |
|
|
|
|
**Pass criteria**: 95th percentile <30 s over 50 runs.
|
|
|
|
**Duration**: 50 cold-start trials.
|