diff --git a/spatz/sensors/__init__.py b/spatz/sensors/__init__.py index fa85c4b..101594e 100644 --- a/spatz/sensors/__init__.py +++ b/spatz/sensors/__init__.py @@ -2,4 +2,5 @@ from spatz.sensors.sensor import Sensor from spatz.sensors.gps import GPS from spatz.sensors.imu import Accelerometer, Gyroscope, IMU from spatz.sensors.pressure import PressureSensor +from spatz.sensors.temperature import TemperatureSensor from spatz.sensors.compound import CompoundSensor \ No newline at end of file diff --git a/spatz/sensors/pressure/ms5611_01ba03.py b/spatz/sensors/pressure/ms5611.py similarity index 92% rename from spatz/sensors/pressure/ms5611_01ba03.py rename to spatz/sensors/pressure/ms5611.py index 3ce201b..e0e2dcf 100644 --- a/spatz/sensors/pressure/ms5611_01ba03.py +++ b/spatz/sensors/pressure/ms5611.py @@ -7,7 +7,7 @@ from spatz.logger import Logger from spatz.transforms import GaussianNoise, Transform, ProportionalGaussian -class MS5611_01BA03(PressureSensor): +class MS5611(PressureSensor): def __init__(self, dataset: Dataset, logger: Logger, transforms: List[Transform] = [], ts_effects=True): super().__init__(dataset, logger, transforms, ts_effects) @@ -17,7 +17,7 @@ class MS5611_01BA03(PressureSensor): self.__noise = ProportionalGaussian(0, 0.0015) def _get_name(self) -> AnyStr: - return 'MS5611_01BA03' + return 'MS5611' def _sensor_specific_effects(self, x: ArrayLike | float) -> ArrayLike | float: t = self._dataset.get_time() @@ -30,4 +30,4 @@ class MS5611_01BA03(PressureSensor): # Log the noise added to the pressure measurements. self._logger.write('noise', noisy - x, domain=self._get_name()) - return noisy + return noisy \ No newline at end of file diff --git a/spatz/sensors/sensor.py b/spatz/sensors/sensor.py index efaf9fd..b5cce73 100644 --- a/spatz/sensors/sensor.py +++ b/spatz/sensors/sensor.py @@ -38,11 +38,11 @@ class Sensor: @abstractmethod def _sensor_specific_effects(self, x: ArrayLike | float) -> ArrayLike | float: raise NotImplementedError() - + @abstractmethod def _get_data(self) -> ArrayLike | float: raise NotImplementedError() - + def get_init_data() -> ArrayLike: pass diff --git a/spatz/sensors/temperature/ms5611.py b/spatz/sensors/temperature/ms5611.py new file mode 100644 index 0000000..621c405 --- /dev/null +++ b/spatz/sensors/temperature/ms5611.py @@ -0,0 +1,25 @@ +from numpy.typing import ArrayLike +from typing import List, AnyStr + +from spatz.transforms.noise import GaussianNoise +from spatz.dataset import Dataset +from spatz.sensors import TemperatureSensor +from spatz.transforms import Transform + + +class MS5611Temperature(TemperatureSensor): + def __init__(self, dataset: Dataset, transforms: List[Transform] = ...): + super().__init__(dataset, transforms) + + self.__noise = GaussianNoise(0, 0.5) + + def _get_name(self) -> AnyStr: + return 'MS5611' + + def _sensor_specific_effects(self, x: ArrayLike | float) -> ArrayLike | float: + t = self._dataset.get_time() + noisy = self.__noise(t, x) + + self._log('temperature', noisy) + + return noisy \ No newline at end of file diff --git a/spatz/simulation.py b/spatz/simulation.py index 53715fd..1d1ebf4 100644 --- a/spatz/simulation.py +++ b/spatz/simulation.py @@ -75,6 +75,15 @@ class Simulation: if verbose: pbar.close() + def advance_to(self, t: float): + t_old = self.__dataset.get_time() + self.__dataset.step(t - t_old) + self.__logger.step(t - t_old) + + def advance(self, dt: float): + self.__dataset.step(dt) + self.__logger.step(dt) + def get_dataset(self) -> Dataset: return self.__dataset