centroidal_control_collection
PreviewControlCentroidal.h
Go to the documentation of this file.
1 /* Author: Masaki Murooka */
2 
3 #pragma once
4 
5 #include <SpaceVecAlg/SpaceVecAlg>
6 
7 #include <mc_rtc/Configuration.h>
8 
9 #include <CCC/PreviewControl.h>
10 
11 namespace ForceColl
12 {
13 class Contact;
14 }
15 
16 namespace CCC
17 {
25 {
27 
28 public:
34  using RefData = Eigen::Vector2d;
35 
43 
45  struct WeightParam
46  {
48  double pos;
49 
51  double wrench;
52 
54  double jerk;
55 
61  WeightParam(double _pos = 2e2, double _wrench = 5e-4, double _jerk = 1e-8) : pos(_pos), wrench(_wrench), jerk(_jerk)
62  {
63  }
64 
67  };
68 
94  class CentroidalModel1d : public StateSpaceModel<3, 1, 2>
95  {
96  public:
101  CentroidalModel1d(double inertia_param);
102  };
103 
104 public:
112  PreviewControlCentroidal1d(double inertia_param,
113  double horizon_duration,
114  double horizon_dt,
115  const WeightParam & weight_param = WeightParam())
116  : PreviewControl<3, 1, 2>(std::make_shared<CentroidalModel1d>(inertia_param),
117  horizon_duration,
118  horizon_dt,
119  weight_param.toPreviewControlWeightParam())
120  {
121  }
122 
123 protected:
125  double procOnce(const Eigen::VectorXd & ref_output_seq,
126  const InitialParam & initial_param,
127  double current_time,
128  double control_dt) const;
129 };
130 
138 {
139 public:
141  struct MotionParam
142  {
143  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
144 
146  std::vector<std::shared_ptr<ForceColl::Contact>> contact_list;
147  };
148 
150  struct RefData
151  {
152  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
153 
155  sva::MotionVecd pos = sva::MotionVecd::Zero();
156 
158  sva::ForceVecd wrench = sva::ForceVecd::Zero();
159  };
160 
163  {
164  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
165 
167  sva::MotionVecd pos = sva::MotionVecd::Zero();
168 
170  sva::MotionVecd vel = sva::MotionVecd::Zero();
171 
173  sva::MotionVecd acc = sva::MotionVecd::Zero();
174 
179  };
180 
182  struct WeightParam
183  {
184  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
185 
187  sva::MotionVecd pos;
188 
190  sva::ForceVecd wrench;
191 
193  sva::MotionVecd jerk;
194 
196  mc_rtc::Configuration wrench_dist_config;
197 
204  WeightParam(const sva::MotionVecd & _pos = sva::MotionVecd(Eigen::Vector3d(1e2, 1e2, 1e2),
205  Eigen::Vector3d(2e2, 2e2, 2e2)),
206  const sva::ForceVecd & _wrench = sva::ForceVecd(Eigen::Vector3d(5e-3, 5e-3, 5e-3),
207  Eigen::Vector3d(5e-4, 5e-4, 5e-4)),
208  const sva::MotionVecd & _jerk = sva::MotionVecd(Eigen::Vector3d::Constant(1e-8),
209  Eigen::Vector3d::Constant(1e-8)),
210  const mc_rtc::Configuration & _wrench_dist_config = {})
211  : pos(_pos), wrench(_wrench), jerk(_jerk), wrench_dist_config(_wrench_dist_config)
212  {
213  }
214 
219  };
220 
221 public:
229  PreviewControlCentroidal(double mass,
230  const Eigen::Vector3d & moment_of_inertia,
231  double horizon_duration,
232  double horizon_dt,
233  const WeightParam & weight_param = WeightParam());
234 
243  sva::ForceVecd planOnce(const MotionParam & motion_param,
244  const std::function<RefData(double)> & ref_data_func,
245  const InitialParam & initial_param,
246  double current_time,
247  double control_dt = -1) const;
248 
249 public:
254  std::array<std::shared_ptr<PreviewControlCentroidal1d>, 6> preview_control_1d_;
255 
257  mc_rtc::Configuration wrench_dist_config_;
258 
259 protected:
261  double mass_;
262 };
263 } // namespace CCC
CCC::PreviewControlCentroidal::WeightParam::wrench
sva::ForceVecd wrench
Wrench weight.
Definition: PreviewControlCentroidal.h:190
CCC::PreviewControlCentroidal1d::CentroidalModel1d::CentroidalModel1d
CentroidalModel1d(double inertia_param)
Constructor.
CCC::PreviewControlCentroidal::InitialParam::vel
sva::MotionVecd vel
CoM velocity [m/s] and base link angular velocity [rad/s].
Definition: PreviewControlCentroidal.h:170
CCC::PreviewControlCentroidal::wrench_dist_config_
mc_rtc::Configuration wrench_dist_config_
Configuration of wrench distribution.
Definition: PreviewControlCentroidal.h:257
CCC::PreviewControlCentroidal::WeightParam
Weight parameter.
Definition: PreviewControlCentroidal.h:182
CCC::PreviewControlCentroidal::mass_
double mass_
Mass [kg].
Definition: PreviewControlCentroidal.h:261
PreviewControl.h
CCC::PreviewControlCentroidal::WeightParam::wrench_dist_config
mc_rtc::Configuration wrench_dist_config
Configuration of wrench distribution.
Definition: PreviewControlCentroidal.h:196
CCC::PreviewControlCentroidal1d::procOnce
double procOnce(const Eigen::VectorXd &ref_output_seq, const InitialParam &initial_param, double current_time, double control_dt) const
Process one step.
CCC::PreviewControlCentroidal1d::WeightParam::wrench
double wrench
Wrench weight.
Definition: PreviewControlCentroidal.h:51
CCC::PreviewControlCentroidal::RefData::pos
EIGEN_MAKE_ALIGNED_OPERATOR_NEW sva::MotionVecd pos
CoM position [m] and base link orientation [rad].
Definition: PreviewControlCentroidal.h:155
CCC::PreviewControlCentroidal::preview_control_1d_
std::array< std::shared_ptr< PreviewControlCentroidal1d >, 6 > preview_control_1d_
List of one-dimensional preview control.
Definition: PreviewControlCentroidal.h:254
CCC::PreviewControlCentroidal::InitialParam::pos
EIGEN_MAKE_ALIGNED_OPERATOR_NEW sva::MotionVecd pos
CoM position [m] and base link orientation [rad].
Definition: PreviewControlCentroidal.h:167
CCC::PreviewControlCentroidal::PreviewControlCentroidal
PreviewControlCentroidal(double mass, const Eigen::Vector3d &moment_of_inertia, double horizon_duration, double horizon_dt, const WeightParam &weight_param=WeightParam())
Constructor.
CCC::PreviewControlCentroidal::MotionParam::contact_list
EIGEN_MAKE_ALIGNED_OPERATOR_NEW std::vector< std::shared_ptr< ForceColl::Contact > > contact_list
Contact list.
Definition: PreviewControlCentroidal.h:146
CCC::PreviewControlCentroidal1d::WeightParam::pos
double pos
Position weight.
Definition: PreviewControlCentroidal.h:48
CCC::PreviewControlCentroidal::planOnce
sva::ForceVecd planOnce(const MotionParam &motion_param, const std::function< RefData(double)> &ref_data_func, const InitialParam &initial_param, double current_time, double control_dt=-1) const
Plan one step.
CCC::StateSpaceModel
State-space model.
Definition: StateSpaceModel.h:21
CCC::PreviewControlCentroidal1d::WeightParam::toPreviewControlWeightParam
PreviewControl< 3, 1, 2 >::WeightParam toPreviewControlWeightParam() const
Convert to PreviewControl::WeightParam.
CCC::PreviewControlCentroidal1d::CentroidalModel1d
State-space model of one-dimensional centroidal dynamics with jerk input and position and wrench outp...
Definition: PreviewControlCentroidal.h:94
CCC::PreviewControlCentroidal::InitialParam::toInitialParam1d
PreviewControlCentroidal1d::InitialParam toInitialParam1d(int idx) const
Convert to PreviewControlCentroidal1d::InitialParam.
CCC::PreviewControlCentroidal1d::RefData
Eigen::Vector2d RefData
Reference data.
Definition: PreviewControlCentroidal.h:34
CCC
Definition: CommonModels.h:7
CCC::PreviewControlCentroidal::InitialParam
Initial parameter.
Definition: PreviewControlCentroidal.h:162
CCC::PreviewControlCentroidal::WeightParam::jerk
sva::MotionVecd jerk
Jerk weight.
Definition: PreviewControlCentroidal.h:193
CCC::PreviewControlCentroidal::MotionParam
Motion parameter.
Definition: PreviewControlCentroidal.h:141
CCC::PreviewControlCentroidal::WeightParam::pos
EIGEN_MAKE_ALIGNED_OPERATOR_NEW sva::MotionVecd pos
Position weight.
Definition: PreviewControlCentroidal.h:187
CCC::PreviewControlCentroidal::RefData::wrench
sva::ForceVecd wrench
Force [N] and moment [Nm].
Definition: PreviewControlCentroidal.h:158
CCC::PreviewControlCentroidal::WeightParam::WeightParam
WeightParam(const sva::MotionVecd &_pos=sva::MotionVecd(Eigen::Vector3d(1e2, 1e2, 1e2), Eigen::Vector3d(2e2, 2e2, 2e2)), const sva::ForceVecd &_wrench=sva::ForceVecd(Eigen::Vector3d(5e-3, 5e-3, 5e-3), Eigen::Vector3d(5e-4, 5e-4, 5e-4)), const sva::MotionVecd &_jerk=sva::MotionVecd(Eigen::Vector3d::Constant(1e-8), Eigen::Vector3d::Constant(1e-8)), const mc_rtc::Configuration &_wrench_dist_config={})
Constructor.
Definition: PreviewControlCentroidal.h:204
CCC::PreviewControlCentroidal::WeightParam::toWeightParam1d
PreviewControlCentroidal1d::WeightParam toWeightParam1d(int idx) const
Convert to PreviewControlCentroidal1d::WeightParam.
ForceColl
Definition: DdpCentroidal.h:7
CCC::PreviewControlCentroidal1d::WeightParam::jerk
double jerk
Jerk weight.
Definition: PreviewControlCentroidal.h:54
CCC::PreviewControl
Preview control.
Definition: PreviewControl.h:22
CCC::PreviewControlCentroidal1d::WeightParam::WeightParam
WeightParam(double _pos=2e2, double _wrench=5e-4, double _jerk=1e-8)
Constructor.
Definition: PreviewControlCentroidal.h:61
CCC::PreviewControlCentroidal1d
Preview control for one-dimensional centroidal model.
Definition: PreviewControlCentroidal.h:24
CCC::PreviewControlCentroidal1d::PreviewControlCentroidal1d
PreviewControlCentroidal1d(double inertia_param, double horizon_duration, double horizon_dt, const WeightParam &weight_param=WeightParam())
Constructor.
Definition: PreviewControlCentroidal.h:112
CCC::PreviewControlCentroidal1d::InitialParam
PreviewControl< 3, 1, 2 >::StateDimVector InitialParam
Initial parameter.
Definition: PreviewControlCentroidal.h:42
CCC::PreviewControlCentroidal
Preview control for centroidal model.
Definition: PreviewControlCentroidal.h:137
CCC::PreviewControlCentroidal::RefData
Reference data.
Definition: PreviewControlCentroidal.h:150
CCC::PreviewControlCentroidal1d::WeightParam
Weight parameter.
Definition: PreviewControlCentroidal.h:45
CCC::PreviewControlCentroidal::InitialParam::acc
sva::MotionVecd acc
CoM acceleration [m/s^2] and base link angular acceleration [rad/s^2].
Definition: PreviewControlCentroidal.h:173