"""
base
操舵量計算の共通インターフェースを定義するモジュール
全ての操舵量計算クラスはこのインターフェースに従う
"""
from abc import ABC, abstractmethod
from dataclasses import dataclass
import numpy as np
@dataclass
class SteeringOutput:
"""操舵量計算の出力を格納するデータクラス
Attributes:
throttle: 前後方向の出力 (-1.0 ~ +1.0)
steer: 左右方向の出力 (-1.0 ~ +1.0)
"""
throttle: float
steer: float
class SteeringBase(ABC):
"""操舵量計算の基底クラス
全ての操舵量計算クラスはこのクラスを継承し,
compute メソッドを実装する
"""
@abstractmethod
def compute(
self, frame: np.ndarray,
) -> SteeringOutput:
"""カメラ画像から操舵量を計算する
Args:
frame: BGR 形式のカメラ画像
Returns:
計算された操舵量
"""
@abstractmethod
def reset(self) -> None:
"""内部状態をリセットする
自動操縦の開始時に呼び出される
"""