52 [[nodiscard]] std::string
type()
const override;
69 constexpr static size_t OUTPUT_PORT_INDEX_FLOW = 0;
70 constexpr static size_t INPUT_PORT_INDEX_FLOW = 0;
83 InputType _inputType = InputType::None;
86 bool resetNode()
override;
105 [[nodiscard]] std::shared_ptr<ImuObs> receiveImuObs(
const std::shared_ptr<ImuObs>& imuObs);
109 [[nodiscard]] std::shared_ptr<ImuObsWDelta> receiveImuObsWDelta(
const std::shared_ptr<ImuObsWDelta>& imuObs);
113 [[nodiscard]] std::shared_ptr<PosVelAtt> receivePosVelAtt(
const std::shared_ptr<PosVelAtt>& posVelAtt);
117 [[nodiscard]] std::shared_ptr<GnssObs> receiveGnssObs(
const std::shared_ptr<GnssObs>& gnssObs);
122 double _messageFrequency{};
129 Eigen::Vector3d RandomWalkAccelerometer = Eigen::Vector3d::Zero();
132 Eigen::Vector3d RandomWalkGyroscope = Eigen::Vector3d::Zero();
135 Eigen::Vector3d IntegratedRandomWalkGyro = Eigen::Vector3d::Zero();
138 Eigen::Vector3d IntegratedRandomWalkAccelerometer_velocity = Eigen::Vector3d::Zero();
141 Eigen::Vector3d IntegratedRandomWalkAccelerometer = Eigen::Vector3d::Zero();
144 Eigen::Vector3d IntegratedRandomWalkGyroscope_velocity = Eigen::Vector3d::Zero();
147 Eigen::Vector3d IntegratedRandomWalkGyroscope = Eigen::Vector3d::Zero();
152 enum class ImuAccelerometerBiasUnits
157 ImuAccelerometerBiasUnits _imuAccelerometerBiasUnit = ImuAccelerometerBiasUnits::m_s2;
159 Eigen::Vector3d _imuAccelerometerBias_p = Eigen::Vector3d::Zero();
162 enum class ImuGyroscopeBiasUnits
168 ImuGyroscopeBiasUnits _imuGyroscopeBiasUnit = ImuGyroscopeBiasUnits::rad_s;
170 Eigen::Vector3d _imuGyroscopeBias_p = Eigen::Vector3d::Zero();
175 enum class ImuAccelerometerNoiseUnits
181 ImuAccelerometerNoiseUnits _imuAccelerometerNoiseUnit = ImuAccelerometerNoiseUnits::m_s2;
183 Eigen::Vector3d _imuAccelerometerNoise = Eigen::Vector3d::Zero();
185 RandomNumberGenerator _imuAccelerometerRng;
188 enum class ImuGyroscopeNoiseUnits
196 ImuGyroscopeNoiseUnits _imuGyroscopeNoiseUnit = ImuGyroscopeNoiseUnits::rad_s;
198 Eigen::Vector3d _imuGyroscopeNoise = Eigen::Vector3d::Zero();
200 RandomNumberGenerator _imuGyroscopeRng;
203 enum class ImuAccelerometerRWUnits
209 enum class ImuGyroscopeRWUnits
218 enum class ImuAccelerometerIRWUnits
224 enum class ImuGyroscopeIRWUnits
233 ImuAccelerometerRWUnits _imuAccelerometerRWUnit = ImuAccelerometerRWUnits::m_s2_sqrts;
235 Eigen::Vector3d _imuAccelerometerRW = Eigen::Vector3d::Zero();
237 RandomNumberGenerator _imuAccelerometerRWRng;
240 ImuGyroscopeRWUnits _imuGyroscopeRWUnit = ImuGyroscopeRWUnits::rad_s_sqrts;
242 Eigen::Vector3d _imuGyroscopeRW = Eigen::Vector3d::Zero();
244 RandomNumberGenerator _imuGyroscopeRWRng;
247 ImuAccelerometerIRWUnits _imuAccelerometerIRWUnit = ImuAccelerometerIRWUnits::m_s3_sqrts;
249 Eigen::Vector3d _imuAccelerometerIRW = Eigen::Vector3d::Zero();
251 RandomNumberGenerator _imuAccelerometerIRWRng;
254 ImuGyroscopeIRWUnits _imuGyroscopeIRWUnit = ImuGyroscopeIRWUnits::rad_s2_sqrts;
256 Eigen::Vector3d _imuGyroscopeIRW = Eigen::Vector3d::Zero();
258 RandomNumberGenerator _imuGyroscopeIRWRng;
261 double _imuObsWDeltaAverageWindow = 10;
270 enum class PositionBiasUnits
277 PositionBiasUnits _positionBiasUnit = PositionBiasUnits::meter;
279 Eigen::Vector3d _positionBias = Eigen::Vector3d::Zero();
282 enum class VelocityBiasUnits
287 VelocityBiasUnits _velocityBiasUnit = VelocityBiasUnits::m_s;
289 Eigen::Vector3d _velocityBias = Eigen::Vector3d::Zero();
292 enum class AttitudeBiasUnits
298 AttitudeBiasUnits _attitudeBiasUnit = AttitudeBiasUnits::deg;
300 Eigen::Vector3d _attitudeBias = Eigen::Vector3d::Zero();
305 enum class PositionNoiseUnits
316 PositionNoiseUnits _positionNoiseUnit = PositionNoiseUnits::meter;
318 Eigen::Vector3d _positionNoise = Eigen::Vector3d::Zero();
320 RandomNumberGenerator _positionRng;
322 enum class VelocityNoiseUnits
328 VelocityNoiseUnits _velocityNoiseUnit = VelocityNoiseUnits::m_s;
330 Eigen::Vector3d _velocityNoise = Eigen::Vector3d::Zero();
332 RandomNumberGenerator _velocityRng;
335 enum class AttitudeNoiseUnits
343 AttitudeNoiseUnits _attitudeNoiseUnit = AttitudeNoiseUnits::deg;
345 Eigen::Vector3d _attitudeNoise = Eigen::Vector3d::Zero();
347 RandomNumberGenerator _attitudeRng;
356 enum class PseudorangeNoiseUnits
361 PseudorangeNoiseUnits _gui_pseudorangeNoiseUnit = PseudorangeNoiseUnits::meter;
363 double _gui_pseudorangeNoise{ 0.3 };
365 RandomNumberGenerator _pseudorangeRng;
368 enum class CarrierPhaseNoiseUnits
373 CarrierPhaseNoiseUnits _gui_carrierPhaseNoiseUnit = CarrierPhaseNoiseUnits::meter;
375 double _gui_carrierPhaseNoise{ 0.003 };
377 RandomNumberGenerator _carrierPhaseRng;
380 enum class DopplerNoiseUnits
385 DopplerNoiseUnits _gui_dopplerNoiseUnit = DopplerNoiseUnits::m_s;
387 double _gui_dopplerNoise{ 0.05 };
389 RandomNumberGenerator _dopplerRng;
394 std::array<int, 2> _gui_ambiguityLimits = { { -20, 20 } };
396 RandomNumberGenerator _ambiguityRng;
398 std::map<SatSigId, std::vector<std::pair<InsTime, int>>> _ambiguities;
403 enum class CycleSlipFrequencyUnits
410 CycleSlipFrequencyUnits _gui_cycleSlipFrequencyUnit = CycleSlipFrequencyUnits::per_hour;
412 double _gui_cycleSlipFrequency{ 0.0 };
414 int _gui_cycleSlipRange = 20;
416 InsTime _cycleSlipWindowStartTime;
419 enum class CycleSlipDetectionProbabilityUnits
424 CycleSlipDetectionProbabilityUnits _gui_cycleSlipDetectionProbabilityUnit = CycleSlipDetectionProbabilityUnits::percent;
426 double _gui_cycleSlipDetectionProbability{ 100.0 };
429 RandomNumberGenerator _cycleSlipRng;
439 std::vector<CycleSlipInfo> _cycleSlips;
442 Frequency _filterFreq =
G01;