centroidal_control_collection
PreviewControlZmp.h
Go to the documentation of this file.
1 /* Author: Masaki Murooka */
2 
3 #pragma once
4 
5 #include <CCC/CommonModels.h>
6 #include <CCC/PreviewControl.h>
7 
8 namespace CCC
9 {
16 class PreviewControlZmp1d : public PreviewControl<3, 1, 1>
17 {
18  friend class PreviewControlZmp;
19 
20 public:
26 
28  struct WeightParam
29  {
31  double zmp;
32 
34  double com_jerk;
35 
40  WeightParam(double _zmp = 1.0, double _com_jerk = 1e-8) : zmp(_zmp), com_jerk(_com_jerk) {}
41 
44  };
45 
46 public:
47  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
48 
55  PreviewControlZmp1d(double com_height,
56  double horizon_duration,
57  double horizon_dt,
58  const WeightParam & weight_param = WeightParam())
59  : PreviewControl<3, 1, 1>(std::make_shared<ComZmpModelJerkInput>(com_height),
60  horizon_duration,
61  horizon_dt,
62  weight_param.toPreviewControlWeightParam())
63  {
64  }
65 
73  double planOnce(const std::function<double(double)> & ref_zmp_func,
74  const InitialParam & initial_param,
75  double current_time,
76  double control_dt = -1) const;
77 
78 protected:
80  double procOnce(const Eigen::VectorXd & ref_zmp_seq,
81  const InitialParam & initial_param,
82  double current_time,
83  double control_dt) const;
84 };
85 
93 {
94 public:
96  struct InitialParam
97  {
98  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
99 
101  Eigen::Vector2d pos = Eigen::Vector2d::Zero();
102 
104  Eigen::Vector2d vel = Eigen::Vector2d::Zero();
105 
107  Eigen::Vector2d acc = Eigen::Vector2d::Zero();
108  };
109 
110 public:
117  PreviewControlZmp(double com_height,
118  double horizon_duration,
119  double horizon_dt,
121  : preview_control_1d_(std::make_shared<PreviewControlZmp1d>(com_height, horizon_duration, horizon_dt, weight_param))
122  {
123  }
124 
132  Eigen::Vector2d planOnce(const std::function<Eigen::Vector2d(double)> & ref_zmp_func,
133  const InitialParam & initial_param,
134  double current_time,
135  double control_dt = -1) const;
136 
137 public:
139  std::shared_ptr<PreviewControlZmp1d> preview_control_1d_;
140 };
141 } // namespace CCC
CCC::PreviewControlZmp::preview_control_1d_
std::shared_ptr< PreviewControlZmp1d > preview_control_1d_
One-dimensional preview control.
Definition: PreviewControlZmp.h:139
CCC::PreviewControlZmp1d::InitialParam
PreviewControl< 3, 1, 1 >::StateDimVector InitialParam
Initial parameter.
Definition: PreviewControlZmp.h:25
PreviewControl.h
CCC::PreviewControlZmp1d::WeightParam::zmp
double zmp
ZMP weight.
Definition: PreviewControlZmp.h:31
CCC::PreviewControlZmp1d::WeightParam::toPreviewControlWeightParam
PreviewControl< 3, 1, 1 >::WeightParam toPreviewControlWeightParam() const
Convert to PreviewControl::WeightParam.
CCC::PreviewControlZmp1d::PreviewControlZmp1d
EIGEN_MAKE_ALIGNED_OPERATOR_NEW PreviewControlZmp1d(double com_height, double horizon_duration, double horizon_dt, const WeightParam &weight_param=WeightParam())
Constructor.
Definition: PreviewControlZmp.h:55
CCC::PreviewControlZmp::InitialParam
Initial parameter.
Definition: PreviewControlZmp.h:96
CCC::PreviewControlZmp::planOnce
Eigen::Vector2d planOnce(const std::function< Eigen::Vector2d(double)> &ref_zmp_func, const InitialParam &initial_param, double current_time, double control_dt=-1) const
Plan one step.
CCC::ComZmpModelJerkInput
State-space model of CoM-ZMP dynamics with CoM jerk input and ZMP output.
Definition: CommonModels.h:32
CCC::PreviewControlZmp1d
Preview control for one-dimensional CoM-ZMP model.
Definition: PreviewControlZmp.h:16
CCC
Definition: CommonModels.h:7
CCC::PreviewControlZmp1d::WeightParam::com_jerk
double com_jerk
CoM jerk weight.
Definition: PreviewControlZmp.h:34
CCC::PreviewControlZmp1d::planOnce
double planOnce(const std::function< double(double)> &ref_zmp_func, const InitialParam &initial_param, double current_time, double control_dt=-1) const
Plan one step.
CCC::PreviewControlZmp::InitialParam::acc
Eigen::Vector2d acc
CoM acceleration [m/s^2].
Definition: PreviewControlZmp.h:107
CCC::PreviewControlZmp1d::WeightParam
Weight parameter.
Definition: PreviewControlZmp.h:28
CCC::PreviewControlZmp::InitialParam::pos
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::Vector2d pos
CoM position [m].
Definition: PreviewControlZmp.h:101
CCC::PreviewControlZmp1d::procOnce
double procOnce(const Eigen::VectorXd &ref_zmp_seq, const InitialParam &initial_param, double current_time, double control_dt) const
Process one step.
CCC::PreviewControl
Preview control.
Definition: PreviewControl.h:22
CCC::PreviewControlZmp::PreviewControlZmp
PreviewControlZmp(double com_height, double horizon_duration, double horizon_dt, const PreviewControlZmp1d::WeightParam &weight_param=PreviewControlZmp1d::WeightParam())
Constructor.
Definition: PreviewControlZmp.h:117
CCC::PreviewControlZmp
Preview control for CoM-ZMP model.
Definition: PreviewControlZmp.h:92
CommonModels.h
CCC::PreviewControlZmp::InitialParam::vel
Eigen::Vector2d vel
CoM velocity [m/s].
Definition: PreviewControlZmp.h:104
CCC::PreviewControlZmp1d::WeightParam::WeightParam
WeightParam(double _zmp=1.0, double _com_jerk=1e-8)
Constructor.
Definition: PreviewControlZmp.h:40