Files
gps-denied-onboard/_docs/02_document/tests/performance-tests.md
T

4.8 KiB

Performance Tests

NFT-PERF-01: End-to-End Per-Frame Latency

Summary: Validate total pipeline latency from camera capture to GPS_INPUT output is <400ms. Traces to: AC-07 (< 400ms end-to-end per frame) Metric: End-to-end latency (camera frame timestamp → GPS_INPUT message timestamp)

Preconditions:

  • System running on Jetson Orin Nano Super (GPU-mode)
  • Camera-replay serving frames at 0.7fps
  • System in steady state (warm-up: ≥10 frames processed)

Steps:

Step Consumer Action Measurement
1 Camera-replay sends frame with known timestamp Record t_capture
2 Monitor GPS_INPUT messages at mavlink-inspector Record t_gps_input for first GPS_INPUT update after t_capture
3 Compute latency = t_gps_input - t_capture Per-frame latency
4 Repeat for 30 consecutive frames Array of 30 latency values

Pass criteria: p95 latency < 400ms; max latency < 500ms Duration: 50s (~30 frames at 0.7fps + warm-up)


NFT-PERF-02: GPS_INPUT Output Rate Consistency

Summary: Validate GPS_INPUT messages are delivered at a sustained 5-10Hz with no gaps. Traces to: AC-08 (GPS_INPUT via MAVLink at 5-10Hz) Metric: Message rate (Hz), maximum inter-message gap (ms)

Preconditions:

  • System in steady state
  • Camera-replay active

Steps:

Step Consumer Action Measurement
1 Capture GPS_INPUT messages for 60 seconds Count messages, record timestamps
2 Compute rate: count / 60 5 ≤ rate ≤ 10 Hz
3 Compute max gap between consecutive messages max_gap ≤ 250ms
4 Compute jitter: std_dev of inter-message intervals jitter < 50ms

Pass criteria: Rate 5-10Hz; max gap ≤ 250ms; jitter < 50ms Duration: 60s


NFT-PERF-03: cuVSLAM Visual Odometry Processing Time

Summary: Validate cuVSLAM processes each frame within 20ms. Traces to: AC-07 (real-time processing budget) Metric: Per-frame cuVSLAM inference time (ms)

Preconditions:

  • System running on Jetson Orin Nano Super
  • Steady state (≥10 frames processed)

Steps:

Step Consumer Action Measurement
1 Replay 30 frames, read processing time from SSE events or health endpoint metrics Per-frame VO time
2 Compute p95 of VO time p95 ≤ 20ms

Pass criteria: p95 cuVSLAM inference time ≤ 20ms Duration: 50s


NFT-PERF-04: Satellite Matching Latency (Async)

Summary: Validate satellite matching completes within 330ms per keyframe (async, does not block VO). Traces to: AC-07 (within frame budget), solution processing time budget Metric: Per-keyframe satellite matching latency (ms)

Preconditions:

  • System running on Jetson Orin Nano Super
  • Satellite tiles loaded

Steps:

Step Consumer Action Measurement
1 Monitor satellite match events over 60s (expect ~4-8 matches at 0.07-0.14Hz) Per-match latency from health/metrics endpoint
2 Verify no VO frame was blocked during satellite matching VO timestamps maintain 0.7fps cadence

Pass criteria: p95 satellite matching ≤ 330ms; VO cadence unaffected Duration: 60s


NFT-PERF-05: TRT Engine Load Time

Summary: Validate all TensorRT engines load within 10 seconds total. Traces to: AC-11 (startup), solution startup sequence Metric: Engine load time (seconds)

Preconditions:

  • Cold start on Jetson Orin Nano Super
  • Engines pre-built and available on storage

Steps:

Step Consumer Action Measurement
1 Start system, monitor startup log for engine load timestamps t_start_load, t_end_load per engine
2 Compute total: sum of all engine load times ≤ 10s total

Pass criteria: Total TRT engine load time ≤ 10s Duration: 30s (includes boot time)


NFT-PERF-06: Sustained 30-Minute Processing

Summary: Validate the system maintains consistent performance over a 30-minute continuous session without degradation. Traces to: AC-07 (real-time), AC-08 (memory < 8GB) Metric: Per-frame latency, GPS_INPUT rate, position accuracy over time

Preconditions:

  • System running on Jetson Orin Nano Super
  • Camera-replay looping flight-sequence-60 (re-starts after frame 60)
  • Satellite tiles available

Steps:

Step Consumer Action Measurement
1 Run for 30 minutes, collect per-minute stats Latency, rate, accuracy
2 Compare first-5-min stats vs last-5-min stats No degradation >10%
3 Monitor for any position output gaps > 1s Count gaps

Pass criteria: No latency degradation >10% over 30 min; GPS_INPUT rate remains 5-10Hz; no output gaps >1s Duration: 30 minutes