8#ifndef DYNAMICAL_SYSTEM_HPP_
9#define DYNAMICAL_SYSTEM_HPP_
13#include <state-observation/api.h>
20#include <Eigen/Cholesky>
25namespace flexibilityEstimation
40 static constexpr unsigned posCom = 0;
41 static constexpr unsigned velCom = 3;
42 static constexpr unsigned accCom = 6;
43 static constexpr unsigned inertia = 9;
44 static constexpr unsigned angMoment = 15;
45 static constexpr unsigned dotInertia = 18;
46 static constexpr unsigned dotAngMoment = 24;
47 static constexpr unsigned posIMU = 27;
48 static constexpr unsigned oriIMU = 30;
49 static constexpr unsigned linVelIMU = 33;
50 static constexpr unsigned angVelIMU = 36;
51 static constexpr unsigned linAccIMU = 39;
52 static constexpr unsigned additionalForces = 42;
53 static constexpr unsigned contacts = 48;
55 static constexpr unsigned sizeBase = 48;
60 static constexpr unsigned pos = 0;
61 static constexpr unsigned ori = 3;
62 static constexpr unsigned linVel = 6;
63 static constexpr unsigned angVel = 9;
64 static constexpr unsigned fc = 12;
65 static constexpr unsigned unmodeledForces = 24;
66 static constexpr unsigned comBias = 30;
67 static constexpr unsigned drift = 32;
69 static constexpr unsigned size = 35;
75 static constexpr unsigned elasticContact = 1;
76 static constexpr unsigned pendulum = 2;
77 static constexpr unsigned none = 0;
107 const Vector3 & accelerationCom,
109 const Vector3 & dotAngMomentum,
260 const Vector3 & accelerationCom,
262 const Vector3 & dotAngMomentum,
281 const Vector3 & accelerationCom,
283 const Vector3 & dotAngMomentum,
343 static constexpr Index stateSize_ = state::size;
345 static constexpr Index measurementSizeBase_ = 6;
526 if(
i == 0)
return orientationVector0;
527 if(
i == 1)
return orientationVector1;
528 if(
i == 2)
return orientationVector2;
530 return orientationVector3;
535 if(
i == 0)
return curRotation0;
536 if(
i == 1)
return curRotation1;
537 if(
i == 2)
return curRotation2;
Implements the accelerometer-gyrometer inertial measuremen.
Implements the accelerometer-gyrometer measurements.
Definition accelerometer-gyrometer.hpp:36
This is the base class of any functor that describes the dynamics of the state and the measurement....
Definition dynamical-system-functor-base.hpp:33
Definition noise-base.hpp:29
This class describes the dynamics of a robot's flexibility this dynamics with elastic forces to bring...
Definition imu-elastic-local-frame-dynamical-system.hpp:35
bool withComBias_
Definition imu-elastic-local-frame-dynamical-system.hpp:372
virtual void resetMeasurementNoise()
Removes the measurement noise.
virtual bool getWithAbsolutePosition() const
stateObservation::Matrix measureDynamicsJacobian()
compute the Jacobien of the measurements dynamics at the last computed value
void updateMeasurementSize_()
stateObservation::Matrix stateDynamicsJacobian()
compute the jacobien of the state dynamics at the last computed value
Vector dx_
Definition imu-elastic-local-frame-dynamical-system.hpp:352
stateObservation::Vector3 pe
Definition imu-elastic-local-frame-dynamical-system.hpp:376
stateObservation::NoiseBase * processNoise_
Definition imu-elastic-local-frame-dynamical-system.hpp:332
virtual Index getStateSize() const
Gets the state size.
virtual Vector getForcesAndMoments(const Vector &x, const Vector &u)
virtual void setContactsNumber(unsigned)
Sets the number of contacts.
double robotMassInv_
Definition imu-elastic-local-frame-dynamical-system.hpp:339
virtual stateObservation::Vector stateDynamics(const stateObservation::Vector &x, const stateObservation::Vector &u, TimeIndex k)
Description of the state dynamics.
Vector uk_
Definition imu-elastic-local-frame-dynamical-system.hpp:356
void computeContactWrench(const Matrix3 &orientation, const Vector3 &position, const IndexedVectorArray &contactPosV, const IndexedVectorArray &contactOriV, const Vector &fc, const Vector &tc, const Vector3 &fm, const Vector3 &tm, const Vector3 &addForce, const Vector3 &addMoment)
virtual void computeAccelerations(const Vector3 &positionCom, const Vector3 &velocityCom, const Vector3 &accelerationCom, const Vector3 &AngMomentum, const Vector3 &dotAngMomentum, const Matrix3 &Inertia, const Matrix3 &dotInertia, const IndexedVectorArray &contactPos, const IndexedVectorArray &contactOri, const Vector3 &position, const Vector3 &linVelocity, Vector3 &linearAcceleration, const Vector3 &oriVector, const Matrix3 &orientation, const Vector3 &angularVel, Vector3 &angularAcceleration, const Vector &fc, const Vector &tc, const Vector3 &fm, const Vector3 &tm, const Vector3 &addForces, const Vector3 &addMoments)
virtual double getRobotMass() const
IMUElasticLocalFrameDynamicalSystem(double dt)
constructor
unsigned nbContacts_
Definition imu-elastic-local-frame-dynamical-system.hpp:346
double robotMass_
Definition imu-elastic-local-frame-dynamical-system.hpp:338
virtual Matrix getKfe() const
virtual bool getWithForceMeasurements() const
virtual Vector getForcesAndMoments()
stateObservation::Matrix stateDynamicsJacobian(const stateObservation::Vector &x, const stateObservation::Vector &u, TimeIndex k)
compute the jacobien of the state dynamics at a given state
virtual void setKteRopes(const Matrix3 &m)
stateObservation::AccelerometerGyrometer sensor_
Definition imu-elastic-local-frame-dynamical-system.hpp:330
virtual Vector getMomentaDotFromForces(const Vector &x, const Vector &u)
Index measurementSize_
Definition imu-elastic-local-frame-dynamical-system.hpp:362
Vector yk_
Definition imu-elastic-local-frame-dynamical-system.hpp:359
virtual void computeForcesAndMoments(const Vector &x, const Vector &u)
Matrix3 & computeRotation_(const Vector3 &x, int i)
virtual Index getInputSize() const
Gets the input size.
double dt_
Definition imu-elastic-local-frame-dynamical-system.hpp:336
virtual Matrix getKtv() const
Vector xk1_
Definition imu-elastic-local-frame-dynamical-system.hpp:354
virtual void setKfvRopes(const Matrix3 &m)
Vector fc_
Definition imu-elastic-local-frame-dynamical-system.hpp:349
Eigen::LLT< Matrix3 > LLTMatrix3
Definition imu-elastic-local-frame-dynamical-system.hpp:80
virtual void setInputSize(Index i)
Sets the input size.
virtual Matrix getKfv() const
virtual void setProcessNoise(stateObservation::NoiseBase *)
Sets a noise which disturbs the state dynamics.
virtual Vector getMomentaDotFromKinematics(const Vector &x, const Vector &u)
Index inputSize_
Definition imu-elastic-local-frame-dynamical-system.hpp:344
virtual void setKte(const Matrix3 &m)
virtual stateObservation::NoiseBase * getProcessNoise() const
Gets the process noise.
Matrix3 Kfe_
Definition imu-elastic-local-frame-dynamical-system.hpp:366
virtual void computeElastContactForcesAndMoments(const IndexedVectorArray &contactPosArray, const IndexedVectorArray &contactOriArray, const IndexedVectorArray &contactVelArray, const IndexedVectorArray &contactAngVelArray, const Vector3 &position, const Vector3 &linVelocity, const Vector3 &oriVector, const Matrix3 &orientation, const Vector3 &angVel, Vector &fc, Vector &tc)
virtual void setKfeRopes(const Matrix3 &m)
unsigned contactModel_
Definition imu-elastic-local-frame-dynamical-system.hpp:347
virtual void setPe(stateObservation::Vector3 Pe)
Definition imu-elastic-local-frame-dynamical-system.hpp:198
bool withUnmodeledForces_
Definition imu-elastic-local-frame-dynamical-system.hpp:374
virtual void setContactModel(unsigned nb)
TimeIndex kcurrent_
Definition imu-elastic-local-frame-dynamical-system.hpp:369
Matrix3 KfeRopes_
Definition imu-elastic-local-frame-dynamical-system.hpp:367
void computeForcesAndMoments(const IndexedVectorArray &position1, const IndexedVectorArray &position2, const IndexedVectorArray &velocity1, const IndexedVectorArray &velocity2, const Vector3 &position, const Vector3 &linVelocity, const Vector3 &oriVector, const Matrix3 &orientation, const Vector3 &angVel, Vector &fc, Vector &tc)
virtual Matrix getKte() const
virtual void setRobotMass(double d)
virtual void setSamplingPeriod(double dt)
Set the period of the time discretization.
virtual void resetProcessNoise()
Removes the process noise.
virtual void setWithComBias(bool b)
virtual stateObservation::Vector measureDynamics(const stateObservation::Vector &x, const stateObservation::Vector &u, TimeIndex k)
Description of the sensor's dynamics.
unsigned getContactsNumber(void) const
Gets the nimber of contacts.
Definition imu-elastic-local-frame-dynamical-system.hpp:204
Vector uk_fory_
Definition imu-elastic-local-frame-dynamical-system.hpp:360
virtual void iterateDynamicsEuler(const Vector3 &positionCom, const Vector3 &velocityCom, const Vector3 &accelerationCom, const Vector3 &AngMomentum, const Vector3 &dotAngMomentum, const Matrix3 &Inertia, const Matrix3 &dotInertia, const IndexedVectorArray &contactPos, const IndexedVectorArray &contactOri, Vector3 &position, Vector3 &linVelocity, Vector &fc1, Vector3 &oriVector, Vector3 &angularVel, Vector &fc2, const Vector3 &fm, const Vector3 &tm, const Vector3 &addForces, const Vector3 &addMoments, double dt)
virtual ~IMUElasticLocalFrameDynamicalSystem()
virtual destructor
virtual void computeElastPendulumForcesAndMoments(const IndexedVectorArray &PrArray, const Vector3 &position, const Vector3 &linVelocity, const Vector3 &oriVector, const Matrix3 &orientation, const Vector3 &angVel, Vector &forces, Vector &moments)
virtual stateObservation::NoiseBase * getMeasurementNoise() const
Gets a pointer on the measurement noise.
std::vector< Vector3, Eigen::aligned_allocator< Vector3 > > contactPositions_
Definition imu-elastic-local-frame-dynamical-system.hpp:364
virtual void setWithAbsolutePosition(bool b)
double marginalStabilityFactor_
Definition imu-elastic-local-frame-dynamical-system.hpp:378
virtual Index getMeasurementSize() const
Gets the contacts position.
Vector tc_
Definition imu-elastic-local-frame-dynamical-system.hpp:350
bool printed_
Definition imu-elastic-local-frame-dynamical-system.hpp:328
virtual void setKfe(const Matrix3 &m)
void setWithUnmodeledForces(bool b)
stateObservation::Vector computeAccelerations(const Vector &x, const Vector &u)
virtual bool getWithComBias() const
virtual void setPrinted(bool b)
Definition imu-elastic-local-frame-dynamical-system.hpp:211
Vector xk_
Definition imu-elastic-local-frame-dynamical-system.hpp:355
virtual void setKtv(const Matrix3 &m)
virtual void setKfv(const Matrix3 &m)
bool withAbsolutePos_
Definition imu-elastic-local-frame-dynamical-system.hpp:373
virtual void iterateDynamicsRK4(const Vector3 &positionCom, const Vector3 &velocityCom, const Vector3 &accelerationCom, const Vector3 &AngMomentum, const Vector3 &dotAngMomentum, const Matrix3 &Inertia, const Matrix3 &dotInertia, const IndexedVectorArray &contactPos, const IndexedVectorArray &contactOri, Vector3 &position, Vector3 &linVelocity, Vector &fc1, Vector3 &oriVector, Vector3 &angularVel, Vector &fc2, const Vector3 &fm, const Vector3 &tm, const Vector3 &addForces, const Vector3 &addMoments, double dt)
virtual void setKtvRopes(const Matrix3 &m)
stateObservation::Matrix measureDynamicsJacobian(const stateObservation::Vector &x, const stateObservation::Vector &u, TimeIndex k)
compute the Jacobien of the measurements dynamics at a given state value
unsigned index_
Definition imu-elastic-local-frame-dynamical-system.hpp:382
void setFDstep(const stateObservation::Vector &dx)
sets the finite differences derivation step vector
bool withForceMeasurements_
Definition imu-elastic-local-frame-dynamical-system.hpp:371
Vector xk_fory_
Definition imu-elastic-local-frame-dynamical-system.hpp:358
virtual void setWithForceMeasurements(bool b)
virtual void setMeasurementNoise(stateObservation::NoiseBase *)
Sets a noise which disturbs the measurements.
Definitions of Hrp2 constants.
Definition bidim-elastic-inv-pendulum-dyn-sys.hpp:21
Eigen::AngleAxis< double > AngleAxis
Euler Axis/Angle representation of orientation.
Definition definitions.hpp:133
long int TimeIndex
Definition definitions.hpp:139
Eigen::Vector3d Vector3
3D vector
Definition definitions.hpp:85
Eigen::Matrix3d Matrix3
3x3 Scalar Matrix
Definition definitions.hpp:109
Eigen::MatrixXd Matrix
Dynamic sized Matrix.
Definition definitions.hpp:100
Eigen::Matrix< double, 6, 1 > Vector6
6D vector
Definition definitions.hpp:97
Eigen::Index Index
Definition definitions.hpp:138
Eigen::VectorXd Vector
Dynamic sized scalar vector.
Definition definitions.hpp:76
Implements integrators for the kinematics, in terms or rotations and translations.
Definition imu-elastic-local-frame-dynamical-system.hpp:385
Vector3 & orientationVector(int i)
Definition imu-elastic-local-frame-dynamical-system.hpp:524
Matrix3 curRotation2
Definition imu-elastic-local-frame-dynamical-system.hpp:512
Matrix3 Rcit
Definition imu-elastic-local-frame-dynamical-system.hpp:481
Vector3 orientationVector3
Definition imu-elastic-local-frame-dynamical-system.hpp:515
Matrix3 curRotation3
Definition imu-elastic-local-frame-dynamical-system.hpp:514
Vector3 orientationVector1
Definition imu-elastic-local-frame-dynamical-system.hpp:511
Matrix Jx
Definition imu-elastic-local-frame-dynamical-system.hpp:431
Vector3 orientationFlexV
Definition imu-elastic-local-frame-dynamical-system.hpp:394
Vector xk1dx
Definition imu-elastic-local-frame-dynamical-system.hpp:412
Vector3 tm
Definition imu-elastic-local-frame-dynamical-system.hpp:468
Vector xk
Definition imu-elastic-local-frame-dynamical-system.hpp:411
Vector3 RciContactPos
Definition imu-elastic-local-frame-dynamical-system.hpp:484
Vector3 momenti
Definition imu-elastic-local-frame-dynamical-system.hpp:489
Vector xk_fory
Definition imu-elastic-local-frame-dynamical-system.hpp:416
Matrix3 skewV2R
Definition imu-elastic-local-frame-dynamical-system.hpp:498
Optimization()
Definition imu-elastic-local-frame-dynamical-system.hpp:517
Vector3 orientationVector2
Definition imu-elastic-local-frame-dynamical-system.hpp:513
Vector3 positionComBias
Definition imu-elastic-local-frame-dynamical-system.hpp:397
Matrix3 inertia
Definition imu-elastic-local-frame-dynamical-system.hpp:458
Matrix3 Rci
Definition imu-elastic-local-frame-dynamical-system.hpp:480
Vector ykdy
Definition imu-elastic-local-frame-dynamical-system.hpp:418
Matrix3 rtotal
Definition imu-elastic-local-frame-dynamical-system.hpp:426
Vector3 contactVel
Definition imu-elastic-local-frame-dynamical-system.hpp:483
Vector3 orientationControlV
Definition imu-elastic-local-frame-dynamical-system.hpp:448
Vector3 dotAngMomentum
Definition imu-elastic-local-frame-dynamical-system.hpp:443
Matrix3 curRotation1
Definition imu-elastic-local-frame-dynamical-system.hpp:510
Vector3 addForce
Definition imu-elastic-local-frame-dynamical-system.hpp:492
Vector3 angularAcceleration
Definition imu-elastic-local-frame-dynamical-system.hpp:471
Matrix3 RIRT
Definition imu-elastic-local-frame-dynamical-system.hpp:499
Matrix3 Rt
Definition imu-elastic-local-frame-dynamical-system.hpp:486
Matrix Jy
Definition imu-elastic-local-frame-dynamical-system.hpp:432
Matrix3 orinertia
Definition imu-elastic-local-frame-dynamical-system.hpp:422
IndexedVectorArray contactAngVelArray
Definition imu-elastic-local-frame-dynamical-system.hpp:456
Matrix3 skewVR
Definition imu-elastic-local-frame-dynamical-system.hpp:497
Matrix3 skewV2
Definition imu-elastic-local-frame-dynamical-system.hpp:496
Matrix3 skewV
Definition imu-elastic-local-frame-dynamical-system.hpp:495
Vector3 angularVelocityControl
Definition imu-elastic-local-frame-dynamical-system.hpp:449
Vector3 linearAcceleration
Definition imu-elastic-local-frame-dynamical-system.hpp:470
AngleAxis orientationAA
Definition imu-elastic-local-frame-dynamical-system.hpp:408
Matrix3 rFlex
Definition imu-elastic-local-frame-dynamical-system.hpp:399
Vector3 fm
Definition imu-elastic-local-frame-dynamical-system.hpp:467
Matrix3 rControl
Definition imu-elastic-local-frame-dynamical-system.hpp:451
Vector3 orientationVector0
Definition imu-elastic-local-frame-dynamical-system.hpp:509
Vector3 imuOmega
Definition imu-elastic-local-frame-dynamical-system.hpp:436
Vector3 ptotal
Definition imu-elastic-local-frame-dynamical-system.hpp:427
Vector3 addMoment
Definition imu-elastic-local-frame-dynamical-system.hpp:493
Vector3 oritotal
Definition imu-elastic-local-frame-dynamical-system.hpp:429
Vector3 velocityCom
Definition imu-elastic-local-frame-dynamical-system.hpp:440
Vector3 _2wxRv
Definition imu-elastic-local-frame-dynamical-system.hpp:501
IndexedVectorArray contactVelArray
Definition imu-elastic-local-frame-dynamical-system.hpp:455
Vector3 Rcp
Definition imu-elastic-local-frame-dynamical-system.hpp:504
Vector xk1
Definition imu-elastic-local-frame-dynamical-system.hpp:410
IndexedVectorArray contactOriV
Definition imu-elastic-local-frame-dynamical-system.hpp:454
Vector yk
Definition imu-elastic-local-frame-dynamical-system.hpp:417
Matrix3 dotInertia
Definition imu-elastic-local-frame-dynamical-system.hpp:459
Vector3 contactPos
Definition imu-elastic-local-frame-dynamical-system.hpp:482
Vector3 wx2Rc
Definition imu-elastic-local-frame-dynamical-system.hpp:500
IndexedVectorArray contactPosV
Definition imu-elastic-local-frame-dynamical-system.hpp:453
TimeIndex k_fory
Definition imu-elastic-local-frame-dynamical-system.hpp:420
Matrix3 rdrift
Definition imu-elastic-local-frame-dynamical-system.hpp:404
Vector3 Ra
Definition imu-elastic-local-frame-dynamical-system.hpp:502
Matrix3 & curRotation(int i)
Definition imu-elastic-local-frame-dynamical-system.hpp:533
Vector3 angularVelocityFlex
Definition imu-elastic-local-frame-dynamical-system.hpp:395
Vector3 positionCom
Definition imu-elastic-local-frame-dynamical-system.hpp:439
Vector3 imuAcc
Definition imu-elastic-local-frame-dynamical-system.hpp:435
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Vector3 positionFlex
Definition imu-elastic-local-frame-dynamical-system.hpp:391
Vector3 crosstempV
Definition imu-elastic-local-frame-dynamical-system.hpp:476
Vector3 positionControl
Definition imu-elastic-local-frame-dynamical-system.hpp:445
LLTMatrix3 invinertia
Definition imu-elastic-local-frame-dynamical-system.hpp:424
Vector3 pdrift
Definition imu-elastic-local-frame-dynamical-system.hpp:403
Vector3 AngMomentum
Definition imu-elastic-local-frame-dynamical-system.hpp:442
Vector3 angularAccelerationFlex
Definition imu-elastic-local-frame-dynamical-system.hpp:396
Vector3 forcei
Definition imu-elastic-local-frame-dynamical-system.hpp:488
Vector xdx
Definition imu-elastic-local-frame-dynamical-system.hpp:414
Vector3 accelerationFlex
Definition imu-elastic-local-frame-dynamical-system.hpp:393
Vector3 accelerationControl
Definition imu-elastic-local-frame-dynamical-system.hpp:447
IndexedVectorArray efforts
Definition imu-elastic-local-frame-dynamical-system.hpp:461
Vector3 drift
Definition imu-elastic-local-frame-dynamical-system.hpp:402
Vector3 Rc
Definition imu-elastic-local-frame-dynamical-system.hpp:503
Matrix3 crosstempM
Definition imu-elastic-local-frame-dynamical-system.hpp:477
Matrix3 curRotation0
Definition imu-elastic-local-frame-dynamical-system.hpp:508
Vector6 momentaDot
Definition imu-elastic-local-frame-dynamical-system.hpp:387
Vector3 velocityControl
Definition imu-elastic-local-frame-dynamical-system.hpp:446
Matrix3 rimu
Definition imu-elastic-local-frame-dynamical-system.hpp:434
double cy
Definition imu-elastic-local-frame-dynamical-system.hpp:406
AngleAxis aatotal
Definition imu-elastic-local-frame-dynamical-system.hpp:428
Vector3 velocityFlex
Definition imu-elastic-local-frame-dynamical-system.hpp:392
Vector sensorState
Definition imu-elastic-local-frame-dynamical-system.hpp:437
Vector3 accelerationCom
Definition imu-elastic-local-frame-dynamical-system.hpp:441
Vector3 t
Definition imu-elastic-local-frame-dynamical-system.hpp:464
Vector3 globalContactPos
Definition imu-elastic-local-frame-dynamical-system.hpp:485
Vector3 f
Definition imu-elastic-local-frame-dynamical-system.hpp:463
Vector3 vt
Definition imu-elastic-local-frame-dynamical-system.hpp:474
Vector3 vf
Definition imu-elastic-local-frame-dynamical-system.hpp:473
Matrix3 rFlexT
Definition imu-elastic-local-frame-dynamical-system.hpp:400
Definition imu-elastic-local-frame-dynamical-system.hpp:59