Program Listing for File imu_dynamics.h

Return to documentation for file (dynamics/imu_dynamics.h)

#pragma once

#include "lupnt/core/definitions.h"
#include "lupnt/devices/imu.h"
#include "lupnt/dynamics/dynamics.h"

namespace lupnt {

  enum class ImuModel;

  class ImuDynamics : public Dynamics {
  public:
    ImuDynamics();

    ImuDynamics(Config& config);

    void SetModel(ImuModel imu_model);
    ImuModel GetModel() const;

    void SetSeed(int seed) {
      seed_ = seed;
      rng_ = MakePtr<std::mt19937>(seed_);
    }

    using Dynamics::Propagate;

    State Propagate(const State& x0, Real t0, Real tf, const State* u = nullptr) override;

    StateType GetStateType() const override { return ImuState::TYPE; }

  protected:
    ImuModel imu_model_;
    int seed_ = 0;
    Ptr<std::mt19937> rng_ = nullptr;
  };

}  // namespace lupnt