mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/SPATZ.git
synced 2025-06-10 01:55:59 +00:00
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
from typing import List, AnyStr
|
|
from numpy.typing import ArrayLike
|
|
|
|
from spatz.sensors import PressureSensor
|
|
from spatz.dataset import Dataset, Phase
|
|
from spatz.simulations.data_source import DataSource
|
|
from spatz.logger import Logger
|
|
from spatz.transforms import GaussianNoise, Transform, ProportionalGaussian
|
|
|
|
|
|
class MS5611(PressureSensor):
|
|
def __init__(self, dataset: DataSource, logger: Logger, transforms: List[Transform] = [], ts_effects=True):
|
|
super().__init__(dataset, logger, transforms, ts_effects)
|
|
|
|
# Noise model obtained by a test flight using this sensor.
|
|
# self.__pad_noise = GaussianNoise(0, 0.03)
|
|
# self.__flight_noise = GaussianNoise(0, 1.5)
|
|
self.__noise = ProportionalGaussian(0, 0.0015)
|
|
|
|
def _get_name(self) -> AnyStr:
|
|
return 'MS5611'
|
|
|
|
def _sensor_specific_effects(self, x: ArrayLike | float) -> ArrayLike | float:
|
|
t = self._dataset.get_time()
|
|
|
|
# Transform from Pa to hPa
|
|
x /= 1e2
|
|
|
|
noisy = self.__noise(t, x) # self.__pad_noise(t, x) if self._dataset.get_phase() == Phase.ONPAD else self.__flight_noise(t, x)
|
|
|
|
# Log the noise added to the pressure measurements.
|
|
self._logger.write('noise', noisy - x, domain=self._get_name())
|
|
|
|
return noisy |