mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-04-23 05:16:37 +00:00
update tests
This commit is contained in:
@@ -8,10 +8,13 @@ Validate system's ability to process multiple chunks simultaneously, matching an
|
||||
**AC-5**: Connect route chunks (multiple chunks)
|
||||
|
||||
## Preconditions
|
||||
1. F10 Factor Graph Optimizer with native multi-chunk support
|
||||
2. F12 Route Chunk Manager functional
|
||||
3. F11 Failure Recovery Coordinator with chunk orchestration
|
||||
4. Test dataset: Flight with 3 disconnected segments
|
||||
1. F02.2 Flight Processing Engine running
|
||||
2. F10 Factor Graph Optimizer with native multi-chunk support (subgraph operations)
|
||||
3. F11 Failure Recovery Coordinator (pure logic, returns status objects to F02.2)
|
||||
4. F12 Route Chunk Manager functional (chunk lifecycle: `create_chunk()`, `add_frame_to_chunk()`, `mark_chunk_anchored()`, `merge_chunks()`)
|
||||
5. F08 Global Place Recognition (chunk semantic matching via `retrieve_candidate_tiles_for_chunk()`)
|
||||
6. F09 Metric Refinement (chunk LiteSAM matching)
|
||||
7. Test dataset: Flight with 3 disconnected segments
|
||||
|
||||
## Test Description
|
||||
Test system's ability to handle multiple disconnected route segments simultaneously. The system should create chunks proactively, process them independently, and match/merge them asynchronously without blocking frame processing.
|
||||
@@ -143,24 +146,26 @@ Multi-Chunk Simultaneous Processing:
|
||||
## Architecture Elements
|
||||
|
||||
**Multi-Chunk Support**:
|
||||
- F10 Factor Graph Optimizer supports multiple chunks simultaneously
|
||||
- Each chunk has own subgraph
|
||||
- Chunks optimized independently
|
||||
- F10 Factor Graph Optimizer supports multiple chunks via `create_chunk_subgraph()`
|
||||
- Each chunk has own subgraph, optimized independently via `optimize_chunk()`
|
||||
- F12 Route Chunk Manager owns chunk metadata (status, is_active, etc.)
|
||||
|
||||
**Proactive Chunk Creation**:
|
||||
- Chunks created immediately on tracking loss
|
||||
- Not reactive (doesn't wait for matching to fail)
|
||||
- Processing continues in new chunk
|
||||
- F11 triggers chunk creation via `create_chunk_on_tracking_loss()`
|
||||
- F12.create_chunk() creates chunk and calls F10.create_chunk_subgraph()
|
||||
- Processing continues in new chunk immediately (not reactive)
|
||||
|
||||
**Asynchronous Matching**:
|
||||
- Background task processes unanchored chunks
|
||||
- F02.2 manages background task that calls F11.process_unanchored_chunks()
|
||||
- F11 calls F12.get_chunks_for_matching() to find ready chunks
|
||||
- F11.try_chunk_semantic_matching() → F11.try_chunk_litesam_matching()
|
||||
- Matching doesn't block frame processing
|
||||
- Chunks matched and merged asynchronously
|
||||
|
||||
**Chunk Merging**:
|
||||
- Sim(3) transform for merging
|
||||
- Accounts for translation, rotation, scale
|
||||
- Global optimization after merging
|
||||
- F11.merge_chunk_to_trajectory() coordinates merging
|
||||
- F12.merge_chunks() updates chunk state and calls F10.merge_chunk_subgraphs()
|
||||
- Sim(3) transform accounts for translation, rotation, scale
|
||||
- F10.optimize_global() runs after merging
|
||||
|
||||
## Notes
|
||||
- Multiple chunks can exist simultaneously
|
||||
|
||||
Reference in New Issue
Block a user