SPATZ/spatz/sensors/imu/iam_20380ht.py
2024-10-08 14:06:54 +02:00

31 lines
1.0 KiB
Python

import numpy as np
from typing import List, AnyStr
from numpy.typing import ArrayLike
from spatz.dataset import ArrayLike, Dataset
from spatz.logger import ArrayLike, Logger
from spatz.sensors import IMU, Accelerometer, Gyroscope, CoordSystem
from spatz.transforms import Transform, GaussianNoise, DriftingBias
class IAM_20380HT(Gyroscope):
def __init__(self, dataset: Dataset, logger: Logger, orientation=np.identity(3), transforms: List[Transform] = []):
super().__init__(dataset, logger, orientation, transforms)
self.__bias = DriftingBias(np.zeros(3), np.array([0.00218, 0.00105, 0.00203]), 400)
self.__constant_bias = np.random.normal(0, 2, 3)
self.__normal = GaussianNoise(0, np.array([0.0049272, 0.00557833, 0.00407826]))
def _get_name(self) -> AnyStr:
return 'IAM-20380HT'
def _sensor_specific_effects(self, x: ArrayLike) -> ArrayLike:
x = (x / np.pi) * 180
t = self._dataset.get_time()
x = self.__constant_bias + self.__normal(t, self.__bias(t, x))
return x