ZMPCC.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2020 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
8 #include <SpaceVecAlg/SpaceVecAlg>
9 
10 namespace mc_rtc
11 {
12 struct Logger;
13 namespace gui
14 {
15 struct StateBuilder;
16 } // namespace gui
17 } // namespace mc_rtc
18 
19 namespace mc_tasks
20 {
21 namespace lipm_stabilizer
22 {
30 struct ZMPCC
31 {
32  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
34 
36  void reset();
37 
45  void enabled(bool state) { enabled_ = state; }
46 
49  bool enabled() const { return enabled_; }
50 
58  {
59  config_ = config;
64  }
65 
67  const ZMPCCConfiguration & config() const { return config_; }
68 
76  void update(const Eigen::Vector3d & distribZMP,
77  const Eigen::Vector3d & measuredZMP,
78  const sva::PTransformd & zmpFrame,
79  double dt);
80 
88  void apply(Eigen::Vector3d & com, Eigen::Vector3d & comd, Eigen::Vector3d & comdd);
89 
90  void addToGUI(mc_rtc::gui::StateBuilder & gui, const std::vector<std::string> & category);
91  void removeFromGUI(mc_rtc::gui::StateBuilder & gui, const std::vector<std::string> & category);
92  void addToLogger(mc_rtc::Logger & logger, const std::string & name);
93  void removeFromLogger(mc_rtc::Logger & logger, const std::string & name);
94 
95 protected:
97  Eigen::Vector3d comAccel_ = Eigen::Vector3d::Zero();
98  Eigen::Vector3d comOffset_ = Eigen::Vector3d::Zero();
99  Eigen::Vector3d comVel_ = Eigen::Vector3d::Zero();
100  Eigen::Vector3d error_ = Eigen::Vector3d::Zero();
102  bool enabled_ = true;
103 };
104 } // namespace lipm_stabilizer
105 } // namespace mc_tasks
mc_rbdyn::lipm_stabilizer::ZMPCCConfiguration::maxCoMAdmitance
double maxCoMAdmitance
Definition: ZMPCCConfiguration.h:20
mc_filter::utils::clampInPlaceAndWarn
void clampInPlaceAndWarn(double &value, double lower, double upper, const std::string &label)
Definition: clamp.h:69
mc_rbdyn::lipm_stabilizer::ZMPCCConfiguration::comAdmittance
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::Vector2d comAdmittance
Definition: ZMPCCConfiguration.h:17
mc_tasks::lipm_stabilizer::ZMPCC::integrator_
mc_filter::LeakyIntegrator< Eigen::Vector3d > integrator_
Definition: ZMPCC.h:101
mc_tasks::lipm_stabilizer::ZMPCC::enabled
void enabled(bool state)
Definition: ZMPCC.h:45
mc_tasks::lipm_stabilizer::ZMPCC::reset
void reset()
mc_tasks::lipm_stabilizer::ZMPCC::comOffset_
Eigen::Vector3d comOffset_
Definition: ZMPCC.h:98
mc_tasks::lipm_stabilizer::ZMPCC::comVel_
Eigen::Vector3d comVel_
Definition: ZMPCC.h:99
mc_tasks::lipm_stabilizer::ZMPCC::comAccel_
Eigen::Vector3d comAccel_
Definition: ZMPCC.h:97
mc_rbdyn::lipm_stabilizer::ZMPCCConfiguration::maxCoMOffset
double maxCoMOffset
Definition: ZMPCCConfiguration.h:19
mc_rbdyn::lipm_stabilizer::ZMPCCConfiguration
Definition: ZMPCCConfiguration.h:14
mc_tasks::lipm_stabilizer::ZMPCC::enabled
bool enabled() const
Definition: ZMPCC.h:49
mc_filter::LeakyIntegrator::rate
double rate() const
Definition: LeakyIntegrator.h:59
mc_tasks::lipm_stabilizer::ZMPCC::configure
void configure(const ZMPCCConfiguration &config)
Definition: ZMPCC.h:57
mc_tasks::lipm_stabilizer::ZMPCC::addToGUI
void addToGUI(mc_rtc::gui::StateBuilder &gui, const std::vector< std::string > &category)
mc_tasks::lipm_stabilizer::ZMPCCConfiguration
mc_rbdyn::lipm_stabilizer::ZMPCCConfiguration ZMPCCConfiguration
Definition: StabilizerTask.h:36
mc_rtc::Logger
Logs controller data to disk.
Definition: Logger.h:29
LeakyIntegrator.h
mc_tasks::lipm_stabilizer::ZMPCC::error_
Eigen::Vector3d error_
Definition: ZMPCC.h:100
mc_tasks::lipm_stabilizer::ZMPCC::addToLogger
void addToLogger(mc_rtc::Logger &logger, const std::string &name)
mc_tasks::lipm_stabilizer::ZMPCC
Definition: ZMPCC.h:30
mc_rbdyn::lipm_stabilizer::ZMPCCConfiguration::integratorLeakRate
double integratorLeakRate
Definition: ZMPCCConfiguration.h:18
mc_filter::LeakyIntegrator< Eigen::Vector3d >
mc_tasks::lipm_stabilizer::ZMPCC::update
void update(const Eigen::Vector3d &distribZMP, const Eigen::Vector3d &measuredZMP, const sva::PTransformd &zmpFrame, double dt)
mc_tasks::lipm_stabilizer::ZMPCC::config
const ZMPCCConfiguration & config() const
Definition: ZMPCC.h:67
mc_rtc::gui::StateBuilder
Definition: StateBuilder.h:27
mc_tasks::lipm_stabilizer::ZMPCC::removeFromGUI
void removeFromGUI(mc_rtc::gui::StateBuilder &gui, const std::vector< std::string > &category)
ZMPCCConfiguration.h
mc_tasks::lipm_stabilizer::ZMPCC::removeFromLogger
void removeFromLogger(mc_rtc::Logger &logger, const std::string &name)
mc_tasks::lipm_stabilizer::ZMPCC::config_
ZMPCCConfiguration config_
Definition: ZMPCC.h:96
mc_tasks::lipm_stabilizer::ZMPCC::enabled_
bool enabled_
Definition: ZMPCC.h:102
mc_tasks
Definition: StabilizerStandingState.h:11
mc_tasks::lipm_stabilizer::ZMPCC::apply
void apply(Eigen::Vector3d &com, Eigen::Vector3d &comd, Eigen::Vector3d &comdd)
Apply ZMPCC in-place to the com.
mc_filter::LeakyIntegrator::saturation
void saturation(double s)
Definition: LeakyIntegrator.h:73
mc_rtc
Definition: Contact.h:87