add chunking

This commit is contained in:
Oleksandr Bezdieniezhnykh
2025-11-27 03:43:19 +02:00
parent 4f8c18a066
commit 2037870f67
43 changed files with 7041 additions and 4135 deletions
+27 -15
View File
@@ -7,10 +7,13 @@ Validate Acceptance Criterion 5 (partial): "System should try to operate when UA
**AC-5**: Connect multiple disconnected route fragments
## Preconditions
1. System with "Atlas" multi-map capability (factor graph)
2. L2 global place recognition functional
3. Geodetic map-merging logic implemented
4. Test dataset: Simulate 3 disconnected route fragments
1. System with "Atlas" multi-map capability (factor graph with native chunk support)
2. F12 Route Chunk Manager functional
3. F10 Factor Graph Optimizer with multi-chunk support
4. L2 global place recognition functional (chunk semantic matching)
5. L3 metric refinement functional (chunk LiteSAM matching)
6. Geodetic map-merging logic implemented (Sim(3) transform)
7. Test dataset: Simulate 3 disconnected route fragments
## Test Description
Test system's ability to handle completely disconnected route segments (no overlap between segments) and eventually connect them into a coherent trajectory using global GPS anchors.
@@ -36,15 +39,19 @@ Test system's ability to handle completely disconnected route segments (no overl
- **Action**: Process AD000025 after AD000010
- **Expected Result**:
- L1 fails (no overlap, large displacement ~2km)
- System detects new fragment
- Initializes Map_Fragment_2
- System **proactively creates new chunk** (Map_Fragment_2)
- Processing continues immediately in new chunk
- Chunk matching attempted asynchronously
### Step 4: Process Fragment 2 Independently
- **Action**: Process AD000025-030
- **Expected Result**:
- New sequential tracking starts
- L2 provides global localization for AD000025
- Map_Fragment_2 created with local consistency
- New sequential tracking starts in chunk_2
- Frames processed within chunk_2 context
- Relative factors added to chunk_2's subgraph
- Chunk_2 optimized independently for local consistency
- Chunk semantic matching attempted when ready (5-20 frames)
- Chunk LiteSAM matching with rotation sweeps attempted
### Step 5: Process Fragment 3
- **Action**: Process AD000050-055 after AD000030
@@ -56,9 +63,11 @@ Test system's ability to handle completely disconnected route segments (no overl
### Step 6: Global Map Merging
- **Action**: Factor graph attempts geodetic map-merging
- **Expected Result**:
- All 3 fragments have GPS anchors from L3
- All 3 chunks have GPS anchors from chunk LiteSAM matching
- Chunks merged via Sim(3) transform (translation, rotation, scale)
- Fragments aligned in global coordinate frame
- Single consistent trajectory created
- Global optimization performed
### Step 7: Validate Fragment Connections
- **Action**: Verify all 18 images have global GPS coordinates
@@ -138,15 +147,18 @@ Processing Mode: Multi-Map Atlas
- Geodetic merging aligns all maps
**Recovery Mechanisms**:
- L2 (AnyLoc) finds location for first image of new fragment
- L3 (LiteSAM) refines GPS anchor
- Factor graph creates new map fragment
- Global alignment via GPS coordinates
- **Proactive chunk creation** on tracking loss (immediate, not reactive)
- Chunk semantic matching (aggregate DINOv2) finds location for chunk
- Chunk LiteSAM matching (with rotation sweeps) refines GPS anchor
- Factor graph creates new chunk subgraph
- Sim(3) transform merges chunks into global trajectory
**Fragment Detection**:
- Large displacement (> 500m) from last image
- Low/zero overlap
- L1 failure triggers new fragment initialization
- L1 failure triggers **proactive** new chunk creation
- Chunks processed independently with local optimization
- Multiple chunks can exist simultaneously
## Notes
- AC-5 describes realistic operational scenario (multiple turns, disconnected segments)