"""Shared constants and helpers for kalman tracker demos."""

from __future__ import annotations

import numpy as np
from gri_ell import Ell
from gri_pos import Pos

N = 20  # observations per scenario
DT = 30.0  # seconds between observations (10 min total)
SIGMA = 300.0  # observation noise std dev (meters)
X0 = np.array([6.4e6, 0.0, 0.0])  # starting ECEF position


def make_ell(xyz: np.ndarray, sigma_m: float = SIGMA) -> Ell:
    """Create an Ell at XYZ with isotropic covariance."""
    cov = np.eye(3) * sigma_m**2
    return Ell.COV(Pos.XYZ(*xyz), cov)
