Skip to content
Snippets Groups Projects
Estimator.cpp 2.78 KiB
Newer Older
Fanny Risbourg's avatar
Fanny Risbourg committed
#include "qrw/Estimator.hpp"

#include "bindings/python.hpp"

template <typename Estimator>
struct EstimatorVisitor : public bp::def_visitor<EstimatorVisitor<Estimator>> {
  template <class PyClassEstimator>
  void visit(PyClassEstimator& cl) const {
    cl.def(bp::init<>(bp::arg(""), "Default constructor."))

        .def("initialize", &Estimator::initialize, bp::args("params"), "Initialize Estimator from Python.\n")
        .def("update_reference_state", &Estimator::updateReferenceState, bp::args("v_ref"), "Update robot state.\n")

        .def("get_q_estimate", &Estimator::getQEstimate, "Get filtered configuration.\n")
        .def("get_v_estimate", &Estimator::getVEstimate, "Get filtered velocity.\n")
        .def("get_v_security", &Estimator::getVSecurity, "Get filtered velocity for security check.\n")
        .def("get_feet_status", &Estimator::getFeetStatus, "")
        .def("get_feet_targets", &Estimator::getFeetTargets, "")
        .def("get_base_velocity_FK", &Estimator::getBaseVelocityFK, "")
        .def("get_base_position_FK", &Estimator::getBasePositionFK, "")
        .def("get_feet_position_barycenter", &Estimator::getFeetPositionBarycenter, "")
        .def("get_b_base_velocity", &Estimator::getBBaseVelocity, "")
        .def("get_filter_vel_X", &Estimator::getFilterVelX, "")
        .def("get_filter_vel_DX", &Estimator::getFilterVelDX, "")
        .def("get_filter_vel_Alpha", &Estimator::getFilterVelAlpha, "")
        .def("get_filter_vel_FiltX", &Estimator::getFilterVelFiltX, "")
        .def("get_filter_pos_X", &Estimator::getFilterPosX, "")
        .def("get_filter_pos_DX", &Estimator::getFilterPosDX, "")
        .def("get_filter_pos_Alpha", &Estimator::getFilterPosAlpha, "")
        .def("get_filter_pos_FiltX", &Estimator::getFilterPosFiltX, "")
        .def("get_q_reference", &Estimator::getQReference, "")
        .def("get_v_reference", &Estimator::getVReference, "")
        .def("get_base_vel_ref", &Estimator::getBaseVelRef, "")
        .def("get_base_acc_ref", &Estimator::getBaseAccRef, "")
        .def("get_h_v", &Estimator::getHV, "")
        .def("get_v_filtered", &Estimator::getVFiltered, "Get filtered velocity.\n")
        .def("get_h_v_filtered", &Estimator::getHVFiltered, "")
        .def("get_oRh", &Estimator::getoRh, "")
        .def("get_hRb", &Estimator::gethRb, "")
        .def("get_oTh", &Estimator::getoTh, "")

        .def("run", &Estimator::run,
             bp::args("gait", "goals", "baseLinearAcceleration", "baseAngularVelocity", "baseOrientation", "q_mes",
                      "v_mes", "base_position", "b_base_velocity"),
             "Run Estimator from Python.\n");
  }

  static void expose() { bp::class_<Estimator>("Estimator", bp::no_init).def(EstimatorVisitor<Estimator>()); }
};

void exposeEstimator() { EstimatorVisitor<Estimator>::expose(); }