mirror of
https://github.com/azaion/gps-denied-desktop.git
synced 2026-04-23 02:26:36 +00:00
fix issues
This commit is contained in:
@@ -53,12 +53,8 @@ class IRouteChunkManager(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def merge_chunks(self, chunk_id_1: str, chunk_id_2: str, transform: Sim3Transform) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_merge_target(self, chunk_id: str) -> str:
|
||||
"""Returns target chunk_id for merging. Returns 'main' for main trajectory."""
|
||||
def merge_chunks(self, target_chunk_id: str, source_chunk_id: str, transform: Sim3Transform) -> bool:
|
||||
"""Merges source_chunk INTO target_chunk. Result is stored in target_chunk."""
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
@@ -468,17 +464,17 @@ bool: True if deactivated successfully
|
||||
|
||||
---
|
||||
|
||||
### `merge_chunks(chunk_id_1: str, chunk_id_2: str, transform: Sim3Transform) -> bool`
|
||||
### `merge_chunks(target_chunk_id: str, source_chunk_id: str, transform: Sim3Transform) -> bool`
|
||||
|
||||
**Description**: Coordinates chunk merging by validating chunks, calling F10 for factor graph merge, and updating chunk states.
|
||||
**Description**: Merges source_chunk INTO target_chunk. The resulting merged chunk is target_chunk. Source chunk is deactivated after merge.
|
||||
|
||||
**Called By**:
|
||||
- F11 Failure Recovery Coordinator (after successful chunk matching)
|
||||
|
||||
**Input**:
|
||||
```python
|
||||
chunk_id_1: str # Source chunk (typically newer, to be merged)
|
||||
chunk_id_2: str # Target chunk (typically older, merged into)
|
||||
target_chunk_id: str # Target chunk (receives the merge, typically older/main)
|
||||
source_chunk_id: str # Source chunk (being merged in, typically newer)
|
||||
transform: Sim3Transform:
|
||||
translation: np.ndarray # (3,)
|
||||
rotation: np.ndarray # (3, 3) or quaternion
|
||||
@@ -492,34 +488,33 @@ bool: True if merge successful
|
||||
|
||||
**Processing Flow**:
|
||||
1. Verify both chunks exist
|
||||
2. Verify chunk_id_1 is anchored (has_anchor=True)
|
||||
2. Verify source_chunk_id is anchored (has_anchor=True)
|
||||
3. Validate chunks can be merged (not already merged, not same chunk)
|
||||
4. **Merge direction**: chunk_id_1 (newer, source) merges INTO chunk_id_2 (older, target)
|
||||
5. Call F10.merge_chunks(chunk_id_1, chunk_id_2, transform)
|
||||
6. Update chunk_id_1 state:
|
||||
4. Call F10.merge_chunk_subgraphs(flight_id, source_chunk_id, target_chunk_id, transform)
|
||||
5. Update source_chunk_id state:
|
||||
- Set is_active=False
|
||||
- Set matching_status="merged"
|
||||
- Call deactivate_chunk(chunk_id_1)
|
||||
7. Update chunk_id_2 state (if needed)
|
||||
8. Persist chunk state via F03 Flight Database.save_chunk_state()
|
||||
9. Return True
|
||||
- Call deactivate_chunk(source_chunk_id)
|
||||
6. target_chunk remains active (now contains merged frames)
|
||||
7. Persist chunk state via F03 Flight Database.save_chunk_state()
|
||||
8. Return True
|
||||
|
||||
**Merge Convention**:
|
||||
- `merge_chunks(target, source)` → source is merged INTO target
|
||||
- Result is stored in target_chunk
|
||||
- source_chunk is deactivated after merge
|
||||
- Example: `merge_chunks("main", "chunk_3")` merges chunk_3 into main trajectory
|
||||
|
||||
**Validation**:
|
||||
- Both chunks must exist
|
||||
- chunk_id_1 must be anchored
|
||||
- chunk_id_1 must not already be merged
|
||||
- chunk_id_1 and chunk_id_2 must be different
|
||||
|
||||
**Merge Direction**:
|
||||
- **chunk_id_1**: Source chunk (newer, recently anchored)
|
||||
- **chunk_id_2**: Target chunk (older, main trajectory or previous chunk)
|
||||
- Newer chunks merge INTO older chunks to maintain chronological consistency
|
||||
- source_chunk must be anchored
|
||||
- source_chunk must not already be merged
|
||||
- target_chunk and source_chunk must be different
|
||||
|
||||
**Test Cases**:
|
||||
1. **Merge anchored chunks**: Chunks merged successfully, chunk_id_1 deactivated
|
||||
2. **Merge unanchored chunk**: Returns False (validation fails)
|
||||
3. **Merge already merged chunk**: Returns False (validation fails)
|
||||
4. **State updates**: chunk_id_1 marked as merged and deactivated
|
||||
1. **Merge anchored chunk**: source_chunk merged into target_chunk
|
||||
2. **Source deactivated**: source_chunk marked as merged and deactivated
|
||||
3. **Target unchanged**: target_chunk remains active with new frames
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user