biped-stabilizer 1.5.0
Stabilizer for Biped Locomotion
Loading...
Searching...
No Matches
cop_stabilizer.hpp
Go to the documentation of this file.
1/*
2 * Copyright 2021 PAL Robotics SL. All Rights Reserved
3 *
4 * Unauthorized copying of this file, via any medium is strictly prohibited,
5 * unless it was supplied under the terms of a license agreement or
6 * nondisclosure agreement with PAL Robotics SL. In this case it may not be
7 * copied or disclosed except in accordance with the terms of that agreement.
8 */
9
10#ifndef BIPED_STABILIZER_COP_STABILIZER
11#define BIPED_STABILIZER_COP_STABILIZER
12
13#include <Eigen/Dense>
14#include <vector>
15
17
18namespace biped_stabilizer {
19
21typedef Eigen::Matrix<double, 2, 1> eVector2;
22typedef Eigen::Matrix<double, 3, 1> eVector3;
23typedef Eigen::Matrix<double, 6, 1> eVector6;
24typedef Eigen::Isometry3d eMatrixHom;
25typedef Eigen::Matrix3d eMatrixRot;
26typedef std::vector<eMatrixHom, Eigen::aligned_allocator<eMatrixHom>>
28typedef std::vector<eVector2, Eigen::aligned_allocator<eVector2>> eVector2s;
29typedef std::vector<eVector3, Eigen::aligned_allocator<eVector3>> eVector3s;
30
32public:
33 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
34
35 double height = 0.0;
36 double foot_length = 0.0;
37 double foot_width = 0.0;
38 double robot_mass = 0.0;
39 double dt = 0.0;
40 eVector3 cop_x_gains = eVector3::Zero();
41 eVector3 cop_y_gains = eVector3::Zero();
42 double cop_p_cc_gain = 0.0;
43 eVector2 integral_gain = eVector2::Zero();
44
45 // Meaningfull defaults.
46 double g = 9.81;
47 std::string cop_control_type = "p_cc";
48 bool saturate_cop = true;
49 bool use_rate_limited_dcm = false;
50
51 bool operator==(const CopStabilizerSettings &rhs) const {
52 bool test = true;
53 test &= this->height == rhs.height;
54 test &= this->foot_length == rhs.foot_length;
55 test &= this->foot_width == rhs.foot_width;
56 test &= this->robot_mass == rhs.robot_mass;
57 test &= this->dt == rhs.dt;
58 test &= this->cop_x_gains == rhs.cop_x_gains;
59 test &= this->cop_y_gains == rhs.cop_y_gains;
60 test &= this->cop_p_cc_gain == rhs.cop_p_cc_gain;
61 test &= this->integral_gain == rhs.integral_gain;
62 test &= this->g == rhs.g;
63 test &= this->saturate_cop == rhs.saturate_cop;
64 test &= this->use_rate_limited_dcm == rhs.use_rate_limited_dcm;
65 return test;
66 }
67
68 bool operator!=(const CopStabilizerSettings &rhs) { return !(*this == rhs); }
69
70 std::string to_string() {
71 std::ostringstream oss;
72 oss << "CopStabilizerSettings:" << std::endl;
73 oss << " - height = " << this->height << std::endl;
74 oss << " - foot_length = " << this->foot_length << std::endl;
75 oss << " - foot_width = " << this->foot_width << std::endl;
76 oss << " - robot_mass = " << this->robot_mass << std::endl;
77 oss << " - dt = " << this->dt << std::endl;
78 oss << " - cop_x_gains = " << this->cop_x_gains.transpose() << std::endl;
79 oss << " - cop_y_gains = " << this->cop_y_gains.transpose() << std::endl;
80 oss << " - cop_p_cc_gain = " << this->cop_p_cc_gain << std::endl;
81 oss << " - integral_gain = " << this->integral_gain.transpose()
82 << std::endl;
83 oss << " - g = " << this->g << std::endl;
84 oss << " - cop_control_type = " << this->cop_control_type << std::endl;
85 oss << " - saturate_cop = " << this->saturate_cop << std::endl;
86 oss << " - use_rate_limited_dcm = " << this->use_rate_limited_dcm
87 << std::endl;
88 return oss.str();
89 }
90
91 std::ostream &operator<<(std::ostream &out) {
92 out << this->to_string();
93 return out;
94 }
95};
96
98public:
99 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
100
102
108 CopStabilizer(const CopStabilizerSettings &settings);
109
110 virtual ~CopStabilizer();
111
112 virtual void configure(const CopStabilizerSettings &settings);
113
114 const CopStabilizerSettings &getSettings() { return settings_; }
115
116 [[deprecated("The usage of the eVector3 for the CoP is deprecated, use "
117 "the eVector2 version instead.")]]
118 void stabilize(const eVector3 &actual_com, const eVector3 &actual_com_vel,
119 const eVector3 &actual_com_acc, const eVector3 &actual_cop,
120 const eMatrixHoms &actual_stance_poses,
121 const eVector3 &reference_com,
122 const eVector3 &reference_com_vel,
123 const eVector3 &reference_com_acc,
124 const eVector3 &reference_com_jerk, eVector3 &desired_com,
125 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
126 eVector3 &desired_icp, // ???
127 eVector3 &actual_icp, // ???
128 eVector3 &desired_cop_reference, // ???
129 eVector3 &desired_cop_computed);
130
131 [[deprecated("The usage of the eVector3 for the CoP is deprecated, use "
132 "the eVector2 version instead.")]]
133 void stabilize(const eVector3 &actual_com, const eVector3 &actual_com_vel,
134 const eVector3 &actual_com_acc, const eVector3 &actual_cop,
135 const Polygon2D &support_polygon,
136 const eVector3 &reference_com,
137 const eVector3 &reference_com_vel,
138 const eVector3 &reference_com_acc,
139 const eVector3 &reference_com_jerk, eVector3 &desired_com,
140 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
141 eVector3 &desired_icp, // ???
142 eVector3 &actual_icp, // ???
143 eVector3 &desired_cop_reference, // ???
144 eVector3 &desired_cop_computed);
145
146 [[deprecated("The usage of the eVector3 for the CoP is deprecated, use "
147 "the eVector2 version instead.")]]
148 void stabilizeCOP(const eVector3 &actual_com, const eVector3 &actual_com_vel,
149 const eVector3 &actual_com_acc, const eVector3 &actual_cop,
150 const Polygon2D &support_polygon,
151 const eVector3 &reference_com,
152 const eVector3 &reference_com_vel,
153 const eVector3 &reference_com_acc, eVector3 &desired_com,
154 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
155 eVector3 &desired_icp, // ???
156 eVector3 &actual_icp, // ???
157 eVector3 &desired_cop_reference, // ???
158 eVector3 &desired_cop_computed);
159
160 [[deprecated("The usage of the eVector3 for the CoP is deprecated, use "
161 "the eVector2 version instead.")]]
163 const eVector3 &actual_com, const eVector3 &actual_com_vel,
164 const eVector3 &actual_com_acc, const eVector3 &actual_cop,
165 const Polygon2D &support_polygon, const eVector3 &reference_com,
166 const eVector3 &reference_com_vel, const eVector3 &reference_com_acc,
167 eVector3 &desired_com, eVector3 &desired_com_vel,
168 eVector3 &desired_com_acc,
169 eVector3 &desired_icp, // ???
170 eVector3 &actual_icp, // ???
171 eVector3 &desired_cop_reference, // ???
172 eVector3 &desired_cop_computed);
173
174 [[deprecated("The usage of the eVector3 for the CoP is deprecated, use "
175 "the eVector2 version instead.")]]
176 void stabilizeP_CC(const eVector3 &actual_com, const eVector3 &actual_com_vel,
177 const eVector3 &actual_com_acc, const eVector3 &actual_cop,
178 const Polygon2D &support_polygon,
179 const eVector3 &reference_com,
180 const eVector3 &reference_com_vel,
181 const eVector3 &reference_com_acc, eVector3 &desired_com,
182 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
183 eVector3 &desired_icp, // ???
184 eVector3 &actual_icp, // ???
185 eVector3 &desired_cop_reference, // ???
186 eVector3 &desired_cop_computed);
187
188 [[deprecated("The usage of the eVector3 for the CoP is deprecated, use "
189 "the eVector2 version instead.")]]
190 void stabilizeJerk(const eVector3 &actual_com, const eVector3 &actual_com_vel,
191 const eVector3 &actual_com_acc, const eVector3 &actual_cop,
192 const Polygon2D &support_polygon,
193 const eVector3 &reference_com,
194 const eVector3 &reference_com_vel,
195 const eVector3 &reference_com_acc,
196 const eVector3 &reference_com_jerk, eVector3 &desired_com,
197 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
198 eVector3 &desired_icp, // ???
199 eVector3 &actual_icp, // ???
200 eVector3 &desired_cop_reference, // ???
201 eVector3 &desired_cop_computed);
202
203 [[deprecated("The usage of the eVector3 for the CoP is deprecated, use "
204 "the eVector2 version instead.")]]
205 double distributeForces(const eVector3 &desired_cop, const eVector2 LF_xy,
206 const double LF_force_z, const eVector2 LF_torque_xy,
207 const eVector2 RF_xy, const double RF_force_z,
208 const eVector2 RF_torque_xy);
209
210 void stabilize(const eVector3 &actual_com, const eVector3 &actual_com_vel,
211 const eVector3 &actual_com_acc, const eVector2 &actual_cop,
212 const eMatrixHoms &actual_stance_poses,
213 const eVector3 &reference_com,
214 const eVector3 &reference_com_vel,
215 const eVector3 &reference_com_acc,
216 const eVector3 &reference_com_jerk, eVector3 &desired_com,
217 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
218 eVector3 &desired_icp, // ???
219 eVector3 &actual_icp, // ???
220 eVector2 &desired_cop_reference, // ???
221 eVector2 &desired_cop_computed);
222
223 void stabilize(const eVector3 &actual_com, const eVector3 &actual_com_vel,
224 const eVector3 &actual_com_acc, const eVector2 &actual_cop,
225 const Polygon2D &support_polygon,
226 const eVector3 &reference_com,
227 const eVector3 &reference_com_vel,
228 const eVector3 &reference_com_acc,
229 const eVector3 &reference_com_jerk, eVector3 &desired_com,
230 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
231 eVector3 &desired_icp, // ???
232 eVector3 &actual_icp, // ???
233 eVector2 &desired_cop_reference, // ???
234 eVector2 &desired_cop_computed);
235
236 void stabilizeCOP(const eVector3 &actual_com, const eVector3 &actual_com_vel,
237 const eVector3 &actual_com_acc, const eVector2 &actual_cop,
238 const Polygon2D &support_polygon,
239 const eVector3 &reference_com,
240 const eVector3 &reference_com_vel,
241 const eVector3 &reference_com_acc, eVector3 &desired_com,
242 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
243 eVector3 &desired_icp, // ???
244 eVector3 &actual_icp, // ???
245 eVector2 &desired_cop_reference, // ???
246 eVector2 &desired_cop_computed);
247
249 const eVector3 &actual_com, const eVector3 &actual_com_vel,
250 const eVector3 &actual_com_acc, const eVector2 &actual_cop,
251 const Polygon2D &support_polygon, const eVector3 &reference_com,
252 const eVector3 &reference_com_vel, const eVector3 &reference_com_acc,
253 eVector3 &desired_com, eVector3 &desired_com_vel,
254 eVector3 &desired_com_acc,
255 eVector3 &desired_icp, // ???
256 eVector3 &actual_icp, // ???
257 eVector2 &desired_cop_reference, // ???
258 eVector2 &desired_cop_computed);
259
260 void stabilizeP_CC(const eVector3 &actual_com, const eVector3 &actual_com_vel,
261 const eVector3 &actual_com_acc, const eVector2 &actual_cop,
262 const Polygon2D &support_polygon,
263 const eVector3 &reference_com,
264 const eVector3 &reference_com_vel,
265 const eVector3 &reference_com_acc, eVector3 &desired_com,
266 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
267 eVector3 &desired_icp, // ???
268 eVector3 &actual_icp, // ???
269 eVector2 &desired_cop_reference, // ???
270 eVector2 &desired_cop_computed);
271
272 void stabilizeJerk(const eVector3 &actual_com, const eVector3 &actual_com_vel,
273 const eVector3 &actual_com_acc, const eVector2 &actual_cop,
274 const Polygon2D &support_polygon,
275 const eVector3 &reference_com,
276 const eVector3 &reference_com_vel,
277 const eVector3 &reference_com_acc,
278 const eVector3 &reference_com_jerk, eVector3 &desired_com,
279 eVector3 &desired_com_vel, eVector3 &desired_com_acc,
280 eVector3 &desired_icp, // ???
281 eVector3 &actual_icp, // ???
282 eVector2 &desired_cop_reference, // ???
283 eVector2 &desired_cop_computed);
284
285 double distributeForces(const eVector2 &desired_cop, const eVector2 LF_xy,
286 const double LF_force_z, const eVector2 LF_torque_xy,
287 const eVector2 RF_xy, const double RF_force_z,
288 const eVector2 RF_torque_xy);
289
290 std::array<eVector3, 3> getStableCoMs(const double &com_height);
291
292 void setCOPgains(const eVector3 &cop_x_gains, const eVector3 &cop_y_gains);
293
294 void setPCCgains(const double cop_pcc_gains);
295
296 void setIntegralGains(const eVector2 &integral_gains);
297
298private:
299 void computeSupportPolygon(const eMatrixHoms &stance_poses,
300 Polygon2D &convex_hull);
301
302 void projectCOPinSupportPolygon(const eVector2 &target_cop_unclamped,
303 const Polygon2D &polygon,
304 eVector2 &target_cop);
305
306 bool isPointInPolygon(const eVector2 &point, const Polygon2D &polygon);
307
316 Eigen::Vector3d getActualCOM_acc(const Eigen::Vector3d &externalForce);
317
327 template <typename T, typename vec_T>
328 T movingAverage(const T x, const unsigned long nb_samples, vec_T &queue);
329
330 void getNonLinearPart(const eVector6 &leftFootWrench,
331 const eVector6 &rightFootWrench,
332 const Eigen::Vector2d &leftFootPlace,
333 const Eigen::Vector2d &rightFootPlace,
334 const Eigen::Vector2d &CoM,
335 const Eigen::Vector2d &lateral_gravity,
336 const Eigen::Vector2d &externalForce, eVector3 &n);
337
338 void getNonLinearPart(const eVector6 &leftFootWrench,
339 const eVector6 &rightFootWrench,
340 const Eigen::Vector2d &leftFootPlace,
341 const Eigen::Vector2d &rightFootPlace,
342 const Eigen::Vector2d &CoM,
343 const Eigen::Vector2d &CoM_acc, eVector3 &n);
344
345 void getNonLinearPart(const eVector6 &leftFootWrench,
346 const eVector6 &rightFootWrench,
347 const Eigen::Vector2d &leftFootPlace_c,
348 const Eigen::Vector2d &rightFootPlace_c,
349 const Eigen::Vector2d &CoM_acc, eVector3 &n);
350
351 void getNonLinearPart(const eVector3 &com, const eVector3 &com_acc,
352 const eVector2 &cop, eVector3 &n);
353
354 void getNonLinearPart(eVector3 &n);
355
356 double estimateCopDisturbance(const eVector2 &currentTrackingError,
357 eVector2 &oldTrackingError,
358 const eVector2 &c_gainK);
359
360 double estimateJerkDisturbance(const eVector3 &currentTrackingError,
361 eVector3 &oldTrackingError,
362 const eVector3 &c_gainK);
363
364 bool configured_, first_iter_;
365 eMatrixRot A_, Aj_;
366 eVector3 B_, Bj_;
367 Eigen::Matrix2d A22_;
368 eVector2 B2_;
369 eVector3 cx_gainK_, cy_gainK_;
370 eVector2 cx_gainK2_, cy_gainK2_;
371 bool saturate_cop_;
372 Eigen::Matrix2d RotPi_2_;
373
374 // sqrt(g/h), g/h
375 double w_, w2_;
376
377 Eigen::Matrix3d S_coms_j_;
378 Eigen::Matrix<double, 3, 2> S_coms_;
379 Eigen::Vector3d U_coms_, U_coms_j_;
380
381 Eigen::Vector3d old_reference_com_acc_;
382 eVector3s jerk_ma_queue_;
383 eVector2 oldTrackingError2_x_, oldTrackingError2_y_;
384 eVector3 oldTrackingError_x_, oldTrackingError_y_;
385 // Storing data for stable CoMs computations.
386 eVector3 actualState3d_x_, actualState3d_y_;
387 eVector2 actualState2d_x_, actualState2d_y_;
388 eVector2 actual_command_;
389
390 // Support polygone internal variables.
391 eVector3s local_foot_description_;
392 eVector3s foot_description_;
393 Polygon2D support_polygon_;
394 std::vector<wykobi::point2d<double>> wykobi_foot_description_;
395 wykobi::point2d<double> wykobi_point2d_;
396
397 // projectCOPinSupportPolygon internal variables.
398 wykobi::point2d<double> wykobi_cop_unclamped_;
399 wykobi::point2d<double> wykobi_cop_clamped_;
400
401 // isPointInPolygon internal variables.
402 wykobi::point2d<double> wykobi_2d_point_;
403
404 // Input settings.
405 CopStabilizerSettings settings_;
406
407protected:
414};
415} // namespace biped_stabilizer
416#endif // BIPED_STABILIZER_COP_STABILIZER
std::array< eVector3, 3 > getStableCoMs(const double &com_height)
Definition cop_stabilizer.cpp:794
Eigen::Vector3d target_com_
Definition cop_stabilizer.hpp:408
void stabilizeCOP(const eVector3 &actual_com, const eVector3 &actual_com_vel, const eVector3 &actual_com_acc, const eVector3 &actual_cop, const Polygon2D &support_polygon, const eVector3 &reference_com, const eVector3 &reference_com_vel, const eVector3 &reference_com_acc, eVector3 &desired_com, eVector3 &desired_com_vel, eVector3 &desired_com_acc, eVector3 &desired_icp, eVector3 &actual_icp, eVector3 &desired_cop_reference, eVector3 &desired_cop_computed)
Definition cop_stabilizer.cpp:241
double distributeForces(const eVector3 &desired_cop, const eVector2 LF_xy, const double LF_force_z, const eVector2 LF_torque_xy, const eVector2 RF_xy, const double RF_force_z, const eVector2 RF_torque_xy)
Definition cop_stabilizer.cpp:776
const CopStabilizerSettings & getSettings()
Definition cop_stabilizer.hpp:114
eVector2 desired_uncampled_cop_
Definition cop_stabilizer.hpp:410
Eigen::Vector3d target_com_acc_
Definition cop_stabilizer.hpp:408
EIGEN_MAKE_ALIGNED_OPERATOR_NEW CopStabilizer()
Definition cop_stabilizer.cpp:9
eVector2 estimated_disturbance_
Definition cop_stabilizer.hpp:413
Eigen::Vector3d target_com_jerk_
Definition cop_stabilizer.hpp:409
void setIntegralGains(const eVector2 &integral_gains)
Definition cop_stabilizer.cpp:951
eVector2 cop_clamped
Definition cop_stabilizer.hpp:412
void setPCCgains(const double cop_pcc_gains)
Definition cop_stabilizer.cpp:945
void stabilizeApproximateAcceleration(const eVector3 &actual_com, const eVector3 &actual_com_vel, const eVector3 &actual_com_acc, const eVector3 &actual_cop, const Polygon2D &support_polygon, const eVector3 &reference_com, const eVector3 &reference_com_vel, const eVector3 &reference_com_acc, eVector3 &desired_com, eVector3 &desired_com_vel, eVector3 &desired_com_acc, eVector3 &desired_icp, eVector3 &actual_icp, eVector3 &desired_cop_reference, eVector3 &desired_cop_computed)
Definition cop_stabilizer.cpp:379
eVector2 target_cop_
Definition cop_stabilizer.hpp:410
virtual ~CopStabilizer()
Definition cop_stabilizer.cpp:19
void setCOPgains(const eVector3 &cop_x_gains, const eVector3 &cop_y_gains)
Definition cop_stabilizer.cpp:937
Eigen::Vector3d target_com_vel_
Definition cop_stabilizer.hpp:408
void stabilizeJerk(const eVector3 &actual_com, const eVector3 &actual_com_vel, const eVector3 &actual_com_acc, const eVector3 &actual_cop, const Polygon2D &support_polygon, const eVector3 &reference_com, const eVector3 &reference_com_vel, const eVector3 &reference_com_acc, const eVector3 &reference_com_jerk, eVector3 &desired_com, eVector3 &desired_com_vel, eVector3 &desired_com_acc, eVector3 &desired_icp, eVector3 &actual_icp, eVector3 &desired_cop_reference, eVector3 &desired_cop_computed)
Definition cop_stabilizer.cpp:640
void stabilizeP_CC(const eVector3 &actual_com, const eVector3 &actual_com_vel, const eVector3 &actual_com_acc, const eVector3 &actual_cop, const Polygon2D &support_polygon, const eVector3 &reference_com, const eVector3 &reference_com_vel, const eVector3 &reference_com_acc, eVector3 &desired_com, eVector3 &desired_com_vel, eVector3 &desired_com_acc, eVector3 &desired_icp, eVector3 &actual_icp, eVector3 &desired_cop_reference, eVector3 &desired_cop_computed)
Definition cop_stabilizer.cpp:516
Eigen::Vector3d non_linear_
Definition cop_stabilizer.hpp:409
virtual void configure(const CopStabilizerSettings &settings)
Definition cop_stabilizer.cpp:21
void stabilize(const eVector3 &actual_com, const eVector3 &actual_com_vel, const eVector3 &actual_com_acc, const eVector3 &actual_cop, const eMatrixHoms &actual_stance_poses, const eVector3 &reference_com, const eVector3 &reference_com_vel, const eVector3 &reference_com_acc, const eVector3 &reference_com_jerk, eVector3 &desired_com, eVector3 &desired_com_vel, eVector3 &desired_com_acc, eVector3 &desired_icp, eVector3 &actual_icp, eVector3 &desired_cop_reference, eVector3 &desired_cop_computed)
Definition cop_stabilizer.cpp:128
eVector2 errorSum_
Definition cop_stabilizer.hpp:411
Definition wykobi.hpp:74
Definition wykobi.hpp:383
Definition cop_stabilizer.hpp:18
Eigen::Isometry3d eMatrixHom
Definition cop_stabilizer.hpp:24
Eigen::Matrix< double, 2, 1 > eVector2
Definition cop_stabilizer.hpp:21
Eigen::Matrix< double, 3, 1 > eVector3
Definition cop_stabilizer.hpp:22
std::vector< eVector3, Eigen::aligned_allocator< eVector3 > > eVector3s
Definition cop_stabilizer.hpp:29
wykobi::polygon< double, 2 > Polygon2D
Definition cop_stabilizer.hpp:20
Eigen::Matrix< double, 6, 1 > eVector6
Definition cop_stabilizer.hpp:23
std::vector< eMatrixHom, Eigen::aligned_allocator< eMatrixHom > > eMatrixHoms
Definition cop_stabilizer.hpp:27
Eigen::Matrix3d eMatrixRot
Definition cop_stabilizer.hpp:25
std::vector< eVector2, Eigen::aligned_allocator< eVector2 > > eVector2s
Definition cop_stabilizer.hpp:28
Definition cop_stabilizer.hpp:31
EIGEN_MAKE_ALIGNED_OPERATOR_NEW double height
Definition cop_stabilizer.hpp:35
eVector3 cop_y_gains
Definition cop_stabilizer.hpp:41
double g
Definition cop_stabilizer.hpp:46
eVector2 integral_gain
Definition cop_stabilizer.hpp:43
bool operator==(const CopStabilizerSettings &rhs) const
Definition cop_stabilizer.hpp:51
std::ostream & operator<<(std::ostream &out)
Definition cop_stabilizer.hpp:91
bool saturate_cop
Definition cop_stabilizer.hpp:48
double foot_width
Definition cop_stabilizer.hpp:37
eVector3 cop_x_gains
Definition cop_stabilizer.hpp:40
double cop_p_cc_gain
Definition cop_stabilizer.hpp:42
double robot_mass
Definition cop_stabilizer.hpp:38
bool operator!=(const CopStabilizerSettings &rhs)
Definition cop_stabilizer.hpp:68
std::string to_string()
Definition cop_stabilizer.hpp:70
double foot_length
Definition cop_stabilizer.hpp:36
bool use_rate_limited_dcm
Definition cop_stabilizer.hpp:49
std::string cop_control_type
Definition cop_stabilizer.hpp:47
double dt
Definition cop_stabilizer.hpp:39