mirror of
https://github.com/azaion/gps-denied-desktop.git
synced 2026-04-23 07:06:36 +00:00
improving components consistency
This commit is contained in:
@@ -41,7 +41,8 @@ class IResultManager(ABC):
|
||||
- Store waypoint updates via F03 Flight Database
|
||||
- Send incremental updates via F15 SSE Event Streamer
|
||||
- Maintain result versioning for audit trail
|
||||
- Convert optimized poses to GPS coordinates
|
||||
|
||||
**Note**: F14 receives GPS coordinates directly from the caller (F02). F14 does NOT call F10 Factor Graph Optimizer or F13 Coordinate Transformer for pose retrieval/conversion. This ensures unidirectional data flow: F02 → F14 → F03/F15.
|
||||
|
||||
### Scope
|
||||
- Result state management
|
||||
@@ -153,11 +154,14 @@ frame_ids: List[int] # Frames with updated poses
|
||||
|
||||
**Output**: `bool`
|
||||
|
||||
**Note**: F14 does NOT call F10 or F13. The caller (F02) performs the following steps before calling mark_refined():
|
||||
1. F02 gets refined poses from F10.get_trajectory(flight_id)
|
||||
2. F02 converts ENU to GPS via F13.enu_to_gps(flight_id, enu_tuple)
|
||||
3. F02 calls F14.mark_refined() with the GPS-converted results
|
||||
|
||||
**Processing Flow**:
|
||||
1. For each frame_id:
|
||||
- Get refined pose from F10 Factor Graph Optimizer.get_trajectory(flight_id) → Pose object with ENU position
|
||||
- Extract ENU tuple: `enu_tuple = (pose.position[0], pose.position[1], pose.position[2])`
|
||||
- Convert ENU to GPS via F13 Coordinate Transformer.enu_to_gps(flight_id, enu_tuple) → GPSPoint
|
||||
1. For each frame_id in frame_ids:
|
||||
- Receive GPS coordinates from caller (already converted)
|
||||
- Update result with refined=True via F03 Flight Database.save_frame_result()
|
||||
- Update waypoint via F03 Flight Database.update_waypoint()
|
||||
- Call F15 SSE Event Streamer.send_refinement()
|
||||
@@ -204,11 +208,15 @@ merged_frames: List[int] # Frames whose poses changed due to chunk merge
|
||||
|
||||
**Output**: `bool` - True if updated successfully
|
||||
|
||||
**Note**: F14 does NOT call F10 or F13. The caller (F02) performs these steps before calling update_results_after_chunk_merge():
|
||||
1. F02 receives ChunkMerged event from F11 with merged_frames list
|
||||
2. F02 gets updated poses from F10.get_trajectory(flight_id)
|
||||
3. F02 converts ENU to GPS via F13.enu_to_gps(flight_id, enu_tuple) for each frame
|
||||
4. F02 calls F14.update_results_after_chunk_merge() with GPS-converted results
|
||||
|
||||
**Processing Flow**:
|
||||
1. For each frame_id in merged_frames:
|
||||
- Get updated pose from F10 Factor Graph Optimizer.get_trajectory(flight_id) → Pose object with ENU position
|
||||
- Extract ENU tuple: `enu_tuple = (pose.position[0], pose.position[1], pose.position[2])`
|
||||
- Convert ENU to GPS via F13 Coordinate Transformer.enu_to_gps(flight_id, enu_tuple) → GPSPoint
|
||||
- Receive GPS coordinates from caller (already converted)
|
||||
- Update frame result via F03 Flight Database.save_frame_result()
|
||||
- Update waypoint via F03 Flight Database.update_waypoint()
|
||||
- Send refinement event via F15 SSE Event Streamer.send_refinement()
|
||||
@@ -256,10 +264,9 @@ merged_frames: List[int] # Frames whose poses changed due to chunk merge
|
||||
|
||||
### Internal Components
|
||||
- **F03 Flight Database**: For waypoint and frame result persistence
|
||||
- **F10 Factor Graph Optimizer**: For refined pose retrieval
|
||||
- **F13 Coordinate Transformer**: For ENU to GPS conversion
|
||||
- **F15 SSE Event Streamer**: For real-time result streaming
|
||||
- **F11 Failure Recovery Coordinator**: Triggers chunk merge result updates
|
||||
|
||||
**Note**: F14 does NOT depend on F10, F13, or F11. The caller (F02) coordinates with those components and provides GPS-converted results to F14. This ensures unidirectional data flow and eliminates circular dependencies.
|
||||
|
||||
### External Dependencies
|
||||
- None
|
||||
|
||||
Reference in New Issue
Block a user