SPATZ/spatz/sensors/imu/h3lis100dl.py
2024-06-20 18:13:59 +02:00

39 lines
1.1 KiB
Python

import numpy as np
from typing import List, AnyStr
from numpy.core.numeric import identity as identity
from numpy.typing import ArrayLike, NDArray
from spatz.dataset import Dataset
from spatz.simulations.data_source import DataSource
from spatz.logger import Logger
from spatz.sensors import Accelerometer, CoordSystem
from spatz.transforms import Transform
class H3LIS100DL(Accelerometer):
def __init__(self, dataset: DataSource, logger: Logger, orientation=np.identity(3), offset: float = 0, transforms: List[Transform] = []):
super().__init__(dataset, logger, orientation, offset, transforms)
def _get_name(self) -> AnyStr:
return "H3LIS100DL"
def _sensor_specific_effects(self, x: ArrayLike) -> ArrayLike:
# The sensor only measures values between -100g and +100g and in g/LSB.
g = 9.81
x = np.floor(np.clip(x, -100*g, +100*g) / g)
for i in range(3):
value = np.random.random()
if (value < 0.1):
x[i] += 1
if (value > 0.9):
x[i] -= 1
return x