Files
gps-denied-onboard/components/image_rotation_manager/base.py
T
Oleksandr Bezdieniezhnykh abc26d5c20 initial structure implemented
docs -> _docs
2025-12-01 14:20:56 +02:00

42 lines
992 B
Python

from abc import ABC, abstractmethod
from typing import Optional
import numpy as np
from models.processing import RotationResult
from models.flight import HeadingRecord
class ImageRotationManagerBase(ABC):
@abstractmethod
async def estimate_rotation(
self, uav_image: np.ndarray, satellite_image: np.ndarray
) -> RotationResult:
pass
@abstractmethod
async def get_rotation_for_frame(
self, flight_id: str, frame_id: int
) -> Optional[float]:
pass
@abstractmethod
async def update_heading_history(
self, flight_id: str, record: HeadingRecord
) -> None:
pass
@abstractmethod
async def predict_heading(self, flight_id: str) -> Optional[float]:
pass
@abstractmethod
async def is_sharp_turn(
self, flight_id: str, current_heading: float
) -> bool:
pass
@abstractmethod
def rotate_image(self, image: np.ndarray, angle: float) -> np.ndarray:
pass