mirror of
https://github.com/azaion/gps-denied-desktop.git
synced 2026-04-22 12:36:37 +00:00
component assesment and fixes done
This commit is contained in:
+24
-9
@@ -25,7 +25,7 @@ class ISequentialVisualOdometry(ABC):
|
||||
pass
|
||||
```
|
||||
|
||||
**Note**: F07 is chunk-agnostic. It only computes relative poses between images. The caller (F02 Flight Processor) determines which chunk the frames belong to and routes factors to the appropriate subgraph via F12 → F10.
|
||||
**Note**: F07 is chunk-agnostic. It only computes relative poses between images. The caller (F02.2 Flight Processing Engine) determines which chunk the frames belong to and routes factors to the appropriate subgraph via F12 → F10.
|
||||
|
||||
## Component Description
|
||||
|
||||
@@ -42,7 +42,7 @@ class ISequentialVisualOdometry(ABC):
|
||||
- Feature-based motion estimation
|
||||
- Handles low overlap and challenging agricultural environments
|
||||
- Provides relative measurements for trajectory optimization
|
||||
- **Chunk-agnostic**: F07 doesn't know about chunks. Caller (F02) routes results to appropriate chunk subgraph.
|
||||
- **Chunk-agnostic**: F07 doesn't know about chunks. Caller (F02.2) routes results to appropriate chunk subgraph.
|
||||
|
||||
## API Methods
|
||||
|
||||
@@ -213,6 +213,21 @@ Motion:
|
||||
- GSD-based expected displacement calculations (via H02)
|
||||
- Absolute GPS anchors from F09 Metric Refinement
|
||||
|
||||
**Critical Handoff to F10**:
|
||||
The caller (F02.2) must pass the unit translation to F10 for scale resolution:
|
||||
```python
|
||||
# F02.2 receives RelativePose from F07
|
||||
vo_result = F07.compute_relative_pose(prev_image, curr_image)
|
||||
# vo_result.translation is a UNIT VECTOR (||t|| = 1)
|
||||
|
||||
# F02.2 passes to F10 which scales using:
|
||||
# 1. altitude = F17.get_operational_altitude(flight_id)
|
||||
# 2. gsd = H02.compute_gsd(altitude, camera_params)
|
||||
# 3. expected_displacement = frame_spacing * gsd
|
||||
# 4. scaled_translation = vo_result.translation * expected_displacement
|
||||
F10.add_relative_factor(flight_id, frame_i, frame_j, vo_result, covariance)
|
||||
```
|
||||
|
||||
**Error Conditions**:
|
||||
- Returns `None`: Insufficient inliers (< 8 points for Essential Matrix)
|
||||
|
||||
@@ -246,12 +261,12 @@ Motion:
|
||||
2. compute_relative_pose() → SuperPoint handles better than SIFT
|
||||
3. Verify match quality
|
||||
|
||||
### Test 5: Chunk-Aware VO
|
||||
1. Create chunk_1 and chunk_2
|
||||
2. compute_relative_pose_in_chunk() for frames in chunk_1
|
||||
3. compute_relative_pose_in_chunk() for frames in chunk_2
|
||||
4. Verify factors added to respective chunks
|
||||
5. Verify chunks optimized independently
|
||||
### Test 5: VO with Chunk Routing
|
||||
1. Create chunk_1 and chunk_2 via F12
|
||||
2. compute_relative_pose() for frames in chunk_1, F02.2 routes to chunk_1
|
||||
3. compute_relative_pose() for frames in chunk_2, F02.2 routes to chunk_2
|
||||
4. Verify F02.2 calls F12.add_frame_to_chunk() with correct chunk_id
|
||||
5. Verify chunks optimized independently via F10
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
@@ -280,7 +295,7 @@ Motion:
|
||||
- **H01 Camera Model**: For coordinate normalization
|
||||
- **H05 Performance Monitor**: For timing measurements
|
||||
|
||||
**Note**: F07 is chunk-agnostic and does NOT depend on F10 Factor Graph Optimizer. F07 only computes relative poses between images and returns them to the caller (F02). The caller (F02) determines which chunk the frames belong to and routes factors to the appropriate subgraph via F12 → F10.
|
||||
**Note**: F07 is chunk-agnostic and does NOT depend on F10 Factor Graph Optimizer. F07 only computes relative poses between images and returns them to the caller (F02.2). The caller (F02.2) determines which chunk the frames belong to and routes factors to the appropriate subgraph via F12 → F10.
|
||||
|
||||
### External Dependencies
|
||||
- **SuperPoint**: Feature extraction model
|
||||
|
||||
Reference in New Issue
Block a user