28static noiseModel::Diagonal::shared_ptr
Diagonal(
const Matrix& covariance) {
31 auto diagonal = std::dynamic_pointer_cast<noiseModel::Diagonal>(model);
33 throw std::invalid_argument(
"ScenarioRunner::Diagonal: not a diagonal");
41class GTSAM_EXPORT ScenarioRunner {
44 typedef std::shared_ptr<PreintegrationParams> SharedParams;
48 const SharedParams p_;
49 const double imuSampleTime_, sqrt_dt_;
50 const Bias estimatedBias_;
53 Sampler gyroSampler_, accSampler_;
56 ScenarioRunner(
const Scenario& scenario,
const SharedParams& p,
57 double imuSampleTime = 1.0 / 100.0,
const Bias& bias = Bias())
58 : scenario_(scenario),
64 gyroSampler_(
Diagonal(p->gyroscopeCovariance), 10),
65 accSampler_(
Diagonal(p->accelerometerCovariance), 29284) {}
69 const Vector3& gravity_n()
const {
return p_->n_gravity; }
71 const Scenario& scenario()
const {
return scenario_; }
80 Vector3 measuredAngularVelocity(
double t)
const;
89 PreintegratedImuMeasurements integrate(
double T,
90 const Bias& estimatedBias = Bias(),
91 bool corrupted =
false)
const;
94 NavState predict(
const PreintegratedImuMeasurements& pim,
95 const Bias& estimatedBias = Bias())
const;
98 Matrix9 estimateCovariance(
double T,
size_t N = 1000,
99 const Bias& estimatedBias = Bias())
const;
102 Matrix6 estimateNoiseCovariance(
size_t N = 1000)
const;
109class GTSAM_EXPORT CombinedScenarioRunner :
public ScenarioRunner {
111 typedef std::shared_ptr<PreintegrationCombinedParams> SharedParams;
114 const SharedParams p_;
115 const Eigen::Matrix<double, 15, 15> preintMeasCov_;
118 CombinedScenarioRunner(
const Scenario& scenario,
const SharedParams& p,
120 const Bias& bias = Bias(),
121 const Eigen::Matrix<double, 15, 15>& preintMeasCov =
122 Eigen::Matrix<double, 15, 15>::Zero())
123 : ScenarioRunner(scenario,
static_cast<ScenarioRunner::SharedParams
>(p),
126 preintMeasCov_(preintMeasCov) {}
129 PreintegratedCombinedMeasurements
integrate(
130 double T,
const Bias& estimatedBias = Bias(),
131 bool corrupted =
false)
const;
135 const Bias& estimatedBias = Bias())
const;
139 double T,
size_t N = 1000,
const Bias& estimatedBias = Bias())
const;
146class GTSAM_EXPORT AhrsScenarioRunner :
public ScenarioRunner {
148 AhrsScenarioRunner(
const Scenario& scenario,
const SharedParams& p,
150 const Bias& bias = Bias())
151 : ScenarioRunner(scenario,
152 std::static_pointer_cast<PreintegrationParams>(p),
157 const Bias& estimatedBias = Bias(),
158 bool corrupted =
false)
const;
162 const Bias& estimatedBias = Bias())
const;
166 const Bias& estimatedBias = Bias())
const;
sampling from a NoiseModel
Simple class to test navigation scenarios.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
Rot3 is a 3D rotation represented as a rotation matrix if the preprocessor symbol GTSAM_USE_QUATERNIO...
Definition Rot3.h:65
static shared_ptr Covariance(const Matrix &covariance, bool smart=true)
A Gaussian noise model created by specifying a covariance matrix.
Definition NoiseModel.cpp:116
A diagonal noise model implements a diagonal covariance matrix, with the elements of the diagonal spe...
Definition NoiseModel.h:327
Sampling structure that keeps internal random number generators for diagonal distributions specified ...
Definition Sampler.h:32
PreintegratedAHRSMeasurements accumulates (integrates) the gyroscope measurements (rotation rates) an...
Definition AHRSFactor.h:88
Navigation state: Pose (rotation, translation) + velocity Following Barrau20icra, this class belongs ...
Definition NavState.h:45
Simple trajectory simulator.
Definition Scenario.h:35
Vector3 actualAngularVelocity(double t) const
Ideal gyroscope measurement expressed in the sensor frame.
Definition ScenarioRunner.cpp:31
Vector3 actualSpecificForce(double t) const
Ideal accelerometer measurement expressed in the sensor frame.
Definition ScenarioRunner.cpp:37
Vector3 measuredSpecificForce(double t) const
Specific force measured by accelerometer, corrupted by bias and noise.
Definition ScenarioRunner.cpp:55
double imuSampleTime() const
The IMU sample time (i.e. the time between two IMU measurements).
Definition ScenarioRunner.h:86
Eigen::Matrix< double, 15, 15 > estimateCovariance(double T, size_t N=1000, const Bias &estimatedBias=Bias()) const
Compute a Monte Carlo estimate of the predict covariance using N samples.
Definition ScenarioRunner.cpp:162
PreintegratedCombinedMeasurements integrate(double T, const Bias &estimatedBias=Bias(), bool corrupted=false) const
Integrate measurements for T seconds into a PIM.
Definition ScenarioRunner.cpp:136
NavState predict(const PreintegratedCombinedMeasurements &pim, const Bias &estimatedBias=Bias()) const
Predict predict given a PIM.
Definition ScenarioRunner.cpp:155
PreintegratedAhrsMeasurements integrate(double T, const Bias &estimatedBias=Bias(), bool corrupted=false) const
Integrate measurements for T seconds into a PreintegratedAhrsMeasurements.
Definition ScenarioRunner.cpp:194
Matrix3 estimateCovariance(double T, size_t N=1000, const Bias &estimatedBias=Bias()) const
Compute a Monte Carlo estimate of the predict covariance using N samples.
Definition ScenarioRunner.cpp:213
Rot3 predict(const PreintegratedAhrsMeasurements &pim, const Bias &estimatedBias=Bias()) const
Predict the next rotation given a PreintegratedAhrsMeasurements.
Definition ScenarioRunner.cpp:207