#pragma once #include #include "flightlib/common/quad_state.hpp" #include "flightlib/common/types.hpp" namespace flightlib { class IntegratorBase { EIGEN_MAKE_ALIGNED_OPERATOR_NEW public: using DynamicsFunction = std::function>, Ref>)>; IntegratorBase(DynamicsFunction function, const Scalar dt_max = 1e-3); bool integrate(const QuadState& initial, QuadState* const final) const; bool integrate(const Ref> initial, const Scalar dt, Ref> final) const; virtual bool step(const Ref> initial, const Scalar dt, Ref> final) const = 0; Scalar dtMax() const; protected: DynamicsFunction dynamics_; Scalar dt_max_; }; } // namespace flightlib