MagneticFluxDensityTriadStaticIntervalDetector.java
/*
* Copyright (C) 2020 Alberto Irurueta Carro (alberto@irurueta.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.irurueta.navigation.inertial.calibration.intervals;
import com.irurueta.navigation.inertial.calibration.MagneticFluxDensityTriad;
import com.irurueta.navigation.inertial.calibration.noise.AccumulatedMagneticFluxDensityTriadNoiseEstimator;
import com.irurueta.navigation.inertial.calibration.noise.WindowedMagneticFluxDensityTriadNoiseEstimator;
import com.irurueta.units.MagneticFluxDensity;
import com.irurueta.units.MagneticFluxDensityConverter;
import com.irurueta.units.MagneticFluxDensityUnit;
/**
* This detector is in charge of determining when a static period of
* magnetic flux density measurements starts and finishes.
* Static periods are periods of time where the device is considered
* to remain static (no movement applied to it).
*/
public class MagneticFluxDensityTriadStaticIntervalDetector extends
TriadStaticIntervalDetector<MagneticFluxDensityUnit, MagneticFluxDensity, MagneticFluxDensityTriad,
MagneticFluxDensityTriadStaticIntervalDetector,
MagneticFluxDensityTriadStaticIntervalDetectorListener> {
/**
* Constructor.
*/
public MagneticFluxDensityTriadStaticIntervalDetector() {
super(new WindowedMagneticFluxDensityTriadNoiseEstimator(),
new AccumulatedMagneticFluxDensityTriadNoiseEstimator());
}
/**
* Constructor.
*
* @param listener listener to handle events generated by this detector.
*/
public MagneticFluxDensityTriadStaticIntervalDetector(
final MagneticFluxDensityTriadStaticIntervalDetectorListener listener) {
super(new WindowedMagneticFluxDensityTriadNoiseEstimator(),
new AccumulatedMagneticFluxDensityTriadNoiseEstimator(), listener);
}
/**
* Converts provided magnetic flux density value expressed in provided unit
* to Teslas (T).
*
* @param value value to be converted.
* @param unit unit of value to be converted.
* @return converted value.
*/
@Override
protected double convertMeasurement(final double value, final MagneticFluxDensityUnit unit) {
return MagneticFluxDensityConverter.convert(value, unit, MagneticFluxDensityUnit.TESLA);
}
/**
* Creates a magnetic flux density instance using provided value and unit.
*
* @param value value of measurement.
* @param unit unit of value.
* @return created magnetic flux density.
*/
@Override
protected MagneticFluxDensity createMeasurement(final double value, final MagneticFluxDensityUnit unit) {
return new MagneticFluxDensity(value, unit);
}
/**
* Gets default unit for magnetic flux density, which is Teslas (T).
*
* @return default unit for magnetic flux density.
*/
@Override
protected MagneticFluxDensityUnit getDefaultUnit() {
return MagneticFluxDensityUnit.TESLA;
}
/**
* Creates a magnetic flux density triad.
*
* @param valueX x-coordinate value.
* @param valueY y-coordinate value.
* @param valueZ z-coordinate value.
* @param unit unit of values.
* @return created triad.
*/
@Override
protected MagneticFluxDensityTriad createTriad(
final double valueX, final double valueY, final double valueZ, final MagneticFluxDensityUnit unit) {
return new MagneticFluxDensityTriad(unit, valueX, valueY, valueZ);
}
}