Rigid Body Dynamics Library
BalanceToolkit.h
Go to the documentation of this file.
1/*
2 *
3 * Copyright (c) 2020 Matthew Millard <millard.matthew@gmail.com>
4 *
5 * Licensed under the zlib license. See LICENSE for more details.
6 */
7
8
9#ifndef BALANCETOOLKIT_H_
10#define BALANCETOOLKIT_H_
11
12
13#include <rbdl/rbdl_math.h>
14#include <rbdl/Model.h>
15#include <limits>
16
17namespace RigidBodyDynamics {
18 namespace Addons {
19 namespace Balance{
20
115 double f ;
119 unsigned int iterations;
123 double phi ;
127
134
164 double h ;
167 double nJC0n ;
169 double v0C0u;
171 double v0C0k;
173 double w0C0n;
176 double w0F0nPlus;
179 double l ;
181 double E ;
184 double Df_Dphi ;
188 double Df_Dw0C0n ;
191 double Df_Dh ;
195 double Df_Dv0C0u ;
199 double Df_Dv0C0k ;
203 double Df_DnJC0n ;
206 double Df_Dm ;
209 double Df_Dg ;
212 double Ds_Dl ;
214 double Ds_DnJC0n ;
218 double Ds_DE ;
221 double Ds_Dv0C0u ;
224 double Ds_Dv0C0k ;
227 double Ds_Dw0C0n ;
230 double Dphi_Dl ;
233 double Dphi_DnJC0n ;
236 double Dphi_DE ;
239 double Dphi_Dv0C0u ;
242 double Dphi_Dv0C0k ;
245 double Dphi_Dw0C0n ;
246
247
249 f(std::numeric_limits<double>::signaling_NaN()),
250 iterations(std::numeric_limits<unsigned int>::signaling_NaN()),
251 phi(std::numeric_limits<double>::signaling_NaN()),
252 r0F0( Math::Vector3dZero ),
253 projectionError(std::numeric_limits<double>::signaling_NaN()),
254 n( Math::Vector3dZero ),
255 u( Math::Vector3dZero ),
256 k( Math::Vector3dZero ),
257 r0C0( Math::Vector3dZero ),
258 v0C0( Math::Vector3dZero ),
259 r0P0( Math::Vector3dZero ),
260 HC0( Math::Vector3dZero ),
261 JC0( Math::Matrix3dZero ),
262 w0C0( Math::Vector3dZero ),
263 HP0( Math::Vector3dZero ),
264 JP0( Math::Matrix3dZero ),
265 w0P0( Math::Vector3dZero ),
266 h(std::numeric_limits<double>::signaling_NaN()),
267 nJC0n(std::numeric_limits<double>::signaling_NaN()),
268 v0C0u(std::numeric_limits<double>::signaling_NaN()),
269 v0C0k(std::numeric_limits<double>::signaling_NaN()),
270 w0C0n(std::numeric_limits<double>::signaling_NaN()),
271 w0F0nPlus(std::numeric_limits<double>::signaling_NaN()),
272 l(std::numeric_limits<double>::signaling_NaN()),
273 E(std::numeric_limits<double>::signaling_NaN()),
274 Df_Dphi(std::numeric_limits<double>::signaling_NaN()),
275 Df_Dw0C0n(std::numeric_limits<double>::signaling_NaN()),
276 Df_Dh(std::numeric_limits<double>::signaling_NaN()),
277 Df_Dv0C0u(std::numeric_limits<double>::signaling_NaN()),
278 Df_Dv0C0k(std::numeric_limits<double>::signaling_NaN()),
279 Df_DnJC0n(std::numeric_limits<double>::signaling_NaN()),
280 Df_Dm(std::numeric_limits<double>::signaling_NaN()),
281 Df_Dg(std::numeric_limits<double>::signaling_NaN()),
282 Ds_Dl(std::numeric_limits<double>::signaling_NaN()),
283 Ds_DnJC0n(std::numeric_limits<double>::signaling_NaN()),
284 Ds_DE(std::numeric_limits<double>::signaling_NaN()),
285 Ds_Dv0C0u(std::numeric_limits<double>::signaling_NaN()),
286 Ds_Dv0C0k(std::numeric_limits<double>::signaling_NaN()),
287 Ds_Dw0C0n(std::numeric_limits<double>::signaling_NaN()),
288 Dphi_Dl(std::numeric_limits<double>::signaling_NaN()),
289 Dphi_DnJC0n(std::numeric_limits<double>::signaling_NaN()),
290 Dphi_DE(std::numeric_limits<double>::signaling_NaN()),
291 Dphi_Dv0C0u(std::numeric_limits<double>::signaling_NaN()),
292 Dphi_Dv0C0k(std::numeric_limits<double>::signaling_NaN()),
293 Dphi_Dw0C0n(std::numeric_limits<double>::signaling_NaN()){}
294
295 };
296
298{
299 public:
300
301
302
303
304
362 Model &model,
364 Math::VectorNd &qdot,
365 Math::Vector3d &pointOnGroundPlane,
366 Math::Vector3d &groundPlaneNormal,
368 double smallAngularVelocity,
369 bool evaluate_derivatives,
370 bool update_kinematics);
371
372};
373
374 }
375 }
376}
377
378#endif
static void CalculateFootPlacementEstimator(Model &model, Math::VectorNd &q, Math::VectorNd &qdot, Math::Vector3d &pointOnGroundPlane, Math::Vector3d &groundPlaneNormal, FootPlacementEstimatorInfo &fpeInfo, double smallAngularVelocity, bool evaluate_derivatives, bool update_kinematics)
RBDL_DLLAPI Matrix3d Matrix3dZero
RBDL_DLLAPI Vector3d Vector3dZero
STL namespace.