state-observation 1.7.0
General implementation of observers.
Loading...
Searching...
No Matches
rigid-body-kinematics.hpp
Go to the documentation of this file.
1
12
13#ifndef StATEOBSERVATIONRIGIDBODYKINEMATICS_H
14#define StATEOBSERVATIONRIGIDBODYKINEMATICS_H
15
16#include <Eigen/SVD>
17
18#include <state-observation/api.h>
22
23namespace stateObservation
24{
25namespace kine
26{
27inline void integrateKinematics(Vector3 & position, const Vector3 & velocity, double dt);
28
29inline void integrateKinematics(Vector3 & position, Vector3 & velocity, const Vector3 & acceleration, double dt);
30
31inline void integrateKinematics(Matrix3 & orientation, const Vector3 & rotationVelocity, double dt);
32
33inline void integrateKinematics(Matrix3 & orientation,
34 Vector3 & rotationVelocity,
35 const Vector3 & rotationAcceleration,
36 double dt);
37
38inline void integrateKinematics(Quaternion & orientation, const Vector3 & rotationVelocity, double dt);
39
40inline void integrateKinematics(Quaternion & orientation,
41 Vector3 & rotationVelocity,
42 const Vector3 & rotationAcceleration,
43 double dt);
44
48inline void integrateKinematics(Vector3 & position,
49 Vector3 & velocity,
50 const Vector3 & acceleration,
51 Matrix3 & orientation,
52 Vector3 & rotationVelocity,
53 const Vector3 & rotationAcceleration,
54 double dt);
55
59inline void integrateKinematics(Vector3 & position,
60 Vector3 & velocity,
61 const Vector3 & acceleration,
62 Quaternion & orientation,
63 Vector3 & rotationVelocity,
64 const Vector3 & rotationAcceleration,
65 double dt);
66
68inline void integrateKinematics(Vector3 & position,
69 const Vector3 & velocity,
70 Matrix3 & orientation,
71 const Vector3 & rotationVelocity,
72 double dt);
73
75inline void integrateKinematics(Vector3 & position,
76 const Vector3 & velocity,
77 Quaternion & orientation,
78 const Vector3 & rotationVelocity,
79 double dt);
80
84
87
90
93
96
99
102
104inline double scalarComponent(const Quaternion & q);
105
108
112
114
117inline Matrix3 rollPitchYawToRotationMatrix(double roll, double pitch, double yaw);
118
120
123inline Quaternion rollPitchYawToQuaternion(double roll, double pitch, double yaw);
124
126
129
131inline Matrix3 skewSymmetric(const Vector3 & v, Matrix3 & R);
132
134inline Matrix3 skewSymmetric(const Vector3 & v);
135
137inline Matrix3 skewSymmetric2(const Vector3 & v, Matrix3 & R);
138
141
144
147
154inline Matrix3 twoVectorsToRotationMatrix(const Vector3 & v1, const Vector3 Rv1);
155
161inline bool isPureYaw(const Matrix3 & R);
162
170
179inline Vector3 getInvariantOrthogonalVector(const Matrix3 & Rhat, const Vector3 & Rtez);
180
190inline Matrix3 mergeTiltWithYaw(const Vector3 & Rtez,
191 const Matrix3 & R2,
192 const Vector3 & v = Vector3::UnitX()) noexcept(false);
193
200inline Matrix3 mergeRoll1Pitch1WithYaw2(const Matrix3 & R1, const Matrix3 & R2, const Vector3 & v = Vector3::UnitX());
201
208inline Matrix3 mergeTiltWithYawAxisAgnostic(const Vector3 & Rtez, const Matrix3 & R2);
209
217
224inline double rotationMatrixToAngle(const Matrix3 & rotation, const Vector3 & axis, const Vector3 & v);
225
233inline double rotationMatrixToYaw(const Matrix3 & rotation, const Vector2 & v);
234
238inline double rotationMatrixToYaw(const Matrix3 & rotation);
239
246inline double rotationMatrixToYawAxisAgnostic(const Matrix3 & rotation);
247
252
257
261inline double randomAngle();
262
267inline bool isRotationMatrix(const Matrix3 &, double precision = 2 * cst::epsilon1);
268
271 const Vector3 & rotationVelocity,
272 const Vector3 & rotationAcceleration,
273 const Vector3 & fixedPoint,
274 Vector3 & outputTranslation,
275 Vector3 & outputLinearVelocity,
276 Vector3 & outputLinearAcceleration);
277
279inline Vector3 derivateRotationFD(const Quaternion & q1, const Quaternion & q2, double dt);
280
282inline Vector3 derivateRotationFD(const Vector3 & o1, const Vector3 & o2, double dt);
283
284inline Vector6 derivateHomogeneousMatrixFD(const Matrix4 & m1, const Matrix4 & m2, double dt);
285
286inline Vector6 derivatePoseThetaUFD(const Vector6 & v1, const Vector6 & v2, double dt);
287
295inline void derivateRotationMultiplicative(const Vector3 & deltaR, Matrix3 & dRdR, Matrix3 & dRddeltaR);
296
301
304inline IndexedVectorArray reconstructStateTrajectory(const IndexedVectorArray & positionOrientation, double dt);
305
306inline Vector invertState(const Vector & state);
307
308inline Matrix4 invertHomoMatrix(const Matrix4 & m);
309
310enum rotationType
311{
312 matrix = 0,
313 rotationVector = 1,
314 quaternion = 2,
315 angleaxis = 3
316};
317
318template<rotationType = rotationVector>
320{
321};
322
323template<>
324struct indexes<rotationVector>
325{
328 static const Index pos = 0;
329 static const Index ori = 3;
330 static const Index linVel = 6;
331 static const Index angVel = 9;
332 static const Index linAcc = 12;
333 static const Index angAcc = 15;
334 static const Index size = 18;
335};
336
337template<>
338struct indexes<quaternion>
339{
342 static const Index pos = 0;
343 static const Index ori = 3;
344 static const Index linVel = 7;
345 static const Index angVel = 10;
346 static const Index linAcc = 13;
347 static const Index angAcc = 16;
348 static const Index size = 19;
349};
350
352constexpr double quatNormTol = 1e-6;
353
355{
356public:
360 explicit Orientation(bool initialize = true);
361
363 explicit Orientation(const Vector3 & v);
364
365 explicit Orientation(const Quaternion & q);
366
367 explicit Orientation(const Matrix3 & m);
368
369 explicit Orientation(const AngleAxis & aa);
370
371 Orientation(const Quaternion & q, const Matrix3 & m);
372
373 Orientation(const double & roll, const double & pitch, const double & yaw);
374
375 Orientation(const Orientation & multiplier1, const Orientation & multiplier2);
376
377 inline Orientation & operator=(const Vector3 & v);
378
379 inline Orientation & operator=(const Quaternion & q);
380
381 inline Orientation & operator=(const Matrix3 & m);
382
383 inline Orientation & operator=(const AngleAxis & aa);
384
385 inline Orientation & setValue(const Quaternion & q, const Matrix3 & m);
386
387 inline Orientation & fromVector4(const Vector4 & v);
388
389 inline Orientation & setRandom();
390
391 template<typename t = Quaternion>
392 inline Orientation & setZeroRotation();
393
395 inline const Matrix3 & toMatrix3() const;
396 inline const Quaternion & toQuaternion() const;
397
398 inline operator const Matrix3 &() const;
399 inline operator const Quaternion &() const;
400
401 inline Vector4 toVector4() const;
402
403 inline Vector3 toRotationVector() const;
404 inline Vector3 toRollPitchYaw() const;
405 inline AngleAxis toAngleAxis() const;
406
409
410 inline Orientation operator*(const Orientation & R2) const;
411
413 inline const Orientation & setToProductNoAlias(const Orientation & R1, const Orientation & R2);
414
415 inline Orientation inverse() const;
416
421 inline const Orientation & integrate(Vector3 dt_x_omega);
422
425 inline const Orientation & integrateRightSide(Vector3 dt_x_omega);
426
435
444
446 inline Vector3 operator*(const Vector3 & v) const;
447
450 inline bool isSet() const;
451
454 inline void reset();
455
458 inline bool isMatrixSet() const;
461 inline bool isQuaternionSet() const;
462
465 inline void setMatrix(bool b = true);
466 inline void setQuaternion(bool b = true);
467
469
473 inline CheckedMatrix3 & getMatrixRefUnsafe();
477 inline CheckedQuaternion & getQuaternionRefUnsafe();
478
480 inline void synchronize();
481
483 static inline Orientation zeroRotation();
484
487
488 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
489
490protected:
491 void check_() const;
492
493 inline const Matrix3 & quaternionToMatrix_() const;
494 inline const Quaternion & matrixToQuaternion_() const;
495
496 mutable CheckedQuaternion q_;
497 mutable CheckedMatrix3 m_;
498};
499
500namespace internal
501{
502
503template<class T>
504class KinematicsInternal
505{
506public:
507 KinematicsInternal() {}
508
516 KinematicsInternal(const CheckedVector3 & position,
517 const CheckedVector3 & linVel,
518 const CheckedVector3 & linAcc,
519 const Orientation & orientation,
520 const CheckedVector3 & angVel,
521 const CheckedVector3 & angAcc);
522 struct Flags
523 {
524 typedef unsigned char Byte;
525
526 static const Byte position = BOOST_BINARY(000001);
527 static const Byte orientation = BOOST_BINARY(000010);
528 static const Byte linVel = BOOST_BINARY(000100);
529 static const Byte angVel = BOOST_BINARY(001000);
530 static const Byte linAcc = BOOST_BINARY(010000);
531 static const Byte angAcc = BOOST_BINARY(100000);
532
533 static const Byte pose = position | orientation;
534 static const Byte vel = linVel | angVel;
535 static const Byte acc = linAcc | angAcc;
536 static const Byte all = pose | vel | acc;
537 };
538
539 CheckedVector3 position;
540 Orientation orientation;
541
542 CheckedVector3 linVel;
543 CheckedVector3 angVel;
544
545 CheckedVector3 linAcc;
546 CheckedVector3 angAcc;
547
548 inline void reset();
549
555 T & fromVector(const Vector & v, typename Flags::Byte = Flags::all);
556
560 template<typename t = Quaternion>
561 T & setZero(typename Flags::Byte = Flags::all);
562
566 static inline T zeroKinematics(typename Flags::Byte = Flags::all);
567
572 inline Vector toVector(typename Flags::Byte) const;
573 inline Vector toVector() const;
574};
575} // namespace internal
576
577struct LocalKinematics;
578
584struct Kinematics : public internal::KinematicsInternal<Kinematics>
585{
586
587 Kinematics() {}
588
594 Kinematics(const Vector & v, Flags::Byte = Flags::all);
595
599 Kinematics(const Kinematics & multiplier1, const Kinematics & multiplier2);
600
608 Kinematics(const CheckedVector3 & position,
609 const CheckedVector3 & linVel,
610 const CheckedVector3 & linAcc,
611 const Orientation & orientation,
612 const CheckedVector3 & angVel,
613 const CheckedVector3 & angAcc);
614
618 explicit inline Kinematics(const LocalKinematics & locK);
619
623 inline Kinematics & operator=(const LocalKinematics & locK);
624
629 inline const Kinematics & integrate(double dt);
630
639 inline const Kinematics & update(const Kinematics & newValue, double dt, Flags::Byte = Flags::all);
640
645 inline Kinematics getInverse() const;
646
648 inline Kinematics operator*(const Kinematics &) const;
649
654 inline Kinematics & setToProductNoAlias(const Kinematics & operand1, const Kinematics & operand2);
655
658 inline Kinematics & setToDiffNoAlias(const Kinematics & multiplier1, const Kinematics & multiplier2);
659
661 inline Kinematics & setToDiffNoAliasLinPart(const Kinematics & multiplier1, const Kinematics & multiplier2);
662
664 inline Kinematics & setToDiffNoAliasAngPart(const Kinematics & multiplier1, const Kinematics & multiplier2);
665
666 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
667
668protected:
669 Vector3 tempVec_;
670};
671
677struct LocalKinematics : public internal::KinematicsInternal<LocalKinematics>
678{
679 LocalKinematics() {}
680
686 inline LocalKinematics(const Vector & v, Flags::Byte flags);
687
691 inline LocalKinematics(const LocalKinematics & multiplier1, const LocalKinematics & multiplier2);
692
700 LocalKinematics(const CheckedVector3 & position,
701 const CheckedVector3 & linVel,
702 const CheckedVector3 & linAcc,
703 const Orientation & orientation,
704 const CheckedVector3 & angVel,
705 const CheckedVector3 & angAcc);
706
710 explicit inline LocalKinematics(const Kinematics & kin);
711
715 inline LocalKinematics & operator=(const Kinematics & kine);
716
720 template<typename t = Quaternion>
721 LocalKinematics & setZero(Flags::Byte = Flags::all);
722
727 inline const LocalKinematics & integrate(double dt);
728
737 inline const LocalKinematics & update(const LocalKinematics & newValue, double dt, Flags::Byte = Flags::all);
738
743 inline LocalKinematics getInverse() const;
744
746 inline LocalKinematics operator*(const LocalKinematics &) const;
747
752 inline LocalKinematics & setToProductNoAlias(const LocalKinematics & operand1, const LocalKinematics & operand2);
753
756 inline LocalKinematics & setToDiffNoAlias(const LocalKinematics & multiplier1, const LocalKinematics & multiplier2);
757
759 inline LocalKinematics & setToDiffNoAliasLinPart(const LocalKinematics & multiplier1,
760 const LocalKinematics & multiplier2);
761
763 inline LocalKinematics & setToDiffNoAliasAngPart(const LocalKinematics & multiplier1,
764 const LocalKinematics & multiplier2);
765 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
766
767protected:
768 Vector3 tempVec_;
769 Vector3 tempVec_2;
770 Vector3 tempVec_3;
771 Vector3 tempVec_4;
772 Vector3 tempVec_5;
773};
774
775} // namespace kine
776} // namespace stateObservation
777
778inline std::ostream & operator<<(std::ostream & os, const stateObservation::kine::Kinematics & k);
779
780inline std::ostream & operator<<(std::ostream & os, const stateObservation::kine::LocalKinematics & k);
781
782#include <state-observation/tools/rigid-body-kinematics.hxx>
783
784#endif // StATEOBSERVATIONRIGIDBODYKINEMATICS_H
Orientation(bool initialize=true)
void reset()
resets the Orientation object.
bool isSet() const
checks that the orientation has been assigned a value.
CheckedMatrix3 & getMatrixRefUnsafe()
no checks are performed for these functions, use with caution
CheckedQuaternion & getQuaternionRefUnsafe()
get a reference to the quaternion representation of the orientation without calling the check functio...
const Matrix3 & toMatrix3() const
get a const reference on the matrix or the quaternion
Orientation(const Vector3 &v)
this is the rotation vector and NOT Euler angles
Vector3 operator*(const Vector3 &v) const
Rotate a vector.
void synchronize()
synchronizes the representations (quaternion and rotation matrix)
bool isMatrixSet() const
checks that the matrix representation of the orientation has been assigned a value.
const Orientation & integrate(Vector3 dt_x_omega)
Vector3 differentiateRightSide(Orientation R_k1) const
gives the log (rotation vector) of the "right-side" difference of orientation: log of (*this)....
Vector3 differentiate(Orientation R_k1) const
gives the log (rotation vector) of the "left-side" difference of orientation: log of R_k1*(*this)....
static Orientation zeroRotation()
retruns a zero rotation
Orientation operator*(const Orientation &R2) const
static Orientation randomRotation()
Returns a uniformly distributed random rotation.
const Orientation & setToProductNoAlias(const Orientation &R1, const Orientation &R2)
Noalias versions of the operator*.
bool isQuaternionSet() const
checks that the quaternion representation of the orientation has been assigned a value.
const Orientation & integrateRightSide(Vector3 dt_x_omega)
KinematicsInternal(const CheckedVector3 &position, const CheckedVector3 &linVel, const CheckedVector3 &linAcc, const Orientation &orientation, const CheckedVector3 &angVel, const CheckedVector3 &angAcc)
constructor of a Kinematics object given each variable independently.
T & fromVector(const Vector &v, typename Flags::Byte=Flags::all)
static T zeroKinematics(typename Flags::Byte=Flags::all)
returns an object corresponding to zero kinematics on the desired variables.
T & setZero(typename Flags::Byte=Flags::all)
Vector toVector(typename Flags::Byte) const
Definitions of types and some structures.
Gathers many kinds of algorithms.
Filtering of divergent component of motion (DCM) and estimation of a bias betweeen the DCM and the co...
Eigen::Matrix4d Matrix4
4x4 Scalar Matrix
Eigen::AngleAxis< double > AngleAxis
Euler Axis/Angle representation of orientation.
Eigen::Quaterniond Quaternion
Quaternion.
Eigen::Vector3d Vector3
3D vector
Eigen::Vector4d Vector4
4D vector
Eigen::Matrix3d Matrix3
3x3 Scalar Matrix
Eigen::Matrix< double, 6, 1 > Vector6
6D vector
Eigen::Matrix< double, 2, 1 > Vector2
2d Vector
Eigen::VectorXd Vector
Dynamic sized scalar vector.
Vector regulateRotationVector(const Vector3 &v)
bool isRotationMatrix(const Matrix3 &, double precision=2 *cst::epsilon1)
Checks if it is a rotation matrix (right-hand orthonormal) or not.
Matrix3 mergeRoll1Pitch1WithYaw2(const Matrix3 &R1, const Matrix3 &R2, const Vector3 &v=Vector3::UnitX())
Merge the roll and pitch with the yaw from a rotation matrix (minimizes the deviation of the v vector...
Quaternion rotationVectorToQuaternion(const Vector3 &v)
Transforms the rotation vector into quaternion.
Matrix3 mergeTiltWithYaw(const Vector3 &Rtez, const Matrix3 &R2, const Vector3 &v=Vector3::UnitX()) noexcept(false)
Merge the roll and pitch from the tilt (R^T e_z) with the yaw from a rotation matrix (minimizes the d...
Vector3 rotationMatrixToRollPitchYaw(const Matrix3 &R, Vector3 &v)
Matrix4 vector6ToHomogeneousMatrix(const Vector6 &v)
transforms a 6d vector (position theta mu) into a homogeneous matrix
Vector3 derivateRotationFD(const Quaternion &q1, const Quaternion &q2, double dt)
derivates a quaternion using finite difference to get a angular velocity vector
Matrix3 derivateRtvMultiplicative(const Matrix3 &R, const Vector3 &v)
void derivateRotationMultiplicative(const Vector3 &deltaR, Matrix3 &dRdR, Matrix3 &dRddeltaR)
Quaternion zeroRotationQuaternion()
Get the Identity Quaternion.
double rotationMatrixToAngle(const Matrix3 &rotation, const Vector3 &axis, const Vector3 &v)
take 3x3 matrix represeting a rotation and gives the angle that vector v turns around the axis with t...
Matrix3 orthogonalizeRotationMatrix(const Matrix3 &M)
Projects the Matrix to so(3).
Vector6 homogeneousMatrixToVector6(const Matrix4 &M)
transforms a homogeneous matrix into 6d vector (position theta mu)
AngleAxis rotationVectorToAngleAxis(const Vector3 &v)
Transforms the rotation vector into angle axis.
Quaternion rollPitchYawToQuaternion(double roll, double pitch, double yaw)
Vector3 getInvariantHorizontalVector(const Matrix3 &R)
Gets a vector that remains horizontal with this rotation. This vector is NOT normalized.
bool isPureYaw(const Matrix3 &R)
checks if this matrix is a pure yaw matrix or not
Vector3 vectorComponent(const Quaternion &q)
vector part of the quaternion
Vector3 rotationMatrixToRotationVector(const Matrix3 &R)
Transforms the rotation matrix into rotation vector.
double randomAngle()
get a randomAngle between -pi and pu
Matrix3 rotationVectorToRotationMatrix(const Vector3 &v)
Transforms the rotation vector into rotation matrix.
Matrix3 mergeRoll1Pitch1WithYaw2AxisAgnostic(const Matrix3 &R1, const Matrix3 &R2)
Merge the roll and pitch with the yaw from a rotation matrix with optimal reference vector.
Matrix3 rollPitchYawToRotationMatrix(double roll, double pitch, double yaw)
double scalarComponent(const Quaternion &q)
scalar component of a quaternion
constexpr double quatNormTol
relative tolereance to the square of quaternion norm.
Matrix3 mergeTiltWithYawAxisAgnostic(const Vector3 &Rtez, const Matrix3 &R2)
Merge the roll and pitch from the tilt (R^T e_z) with the yaw from a rotation matrix (minimizes the d...
Matrix3 twoVectorsToRotationMatrix(const Vector3 &v1, const Vector3 Rv1)
Builds the smallest angle matrix allowing to get from a NORMALIZED vector v1 to its imahe Rv1 This is...
Quaternion randomRotationQuaternion()
Get a uniformly random Quaternion.
Vector3 quaternionToRotationVector(const Quaternion &q)
Tranbsform a quaternion into rotation vector.
void fixedPointRotationToTranslation(const Matrix3 &R, const Vector3 &rotationVelocity, const Vector3 &rotationAcceleration, const Vector3 &fixedPoint, Vector3 &outputTranslation, Vector3 &outputLinearVelocity, Vector3 &outputLinearAcceleration)
transforms a rotation into translation given a constraint of a fixed point
Matrix3 skewSymmetric2(const Vector3 &v, Matrix3 &R)
transform a 3d vector into a squared skew symmetric 3x3 matrix
IndexedVectorArray reconstructStateTrajectory(const IndexedVectorArray &positionOrientation, double dt)
Vector3 getInvariantOrthogonalVector(const Matrix3 &Rhat, const Vector3 &Rtez)
Gets a vector that is orthogonal to and such that is orthogonal to the tilt . This vector is NOT n...
double rotationMatrixToYawAxisAgnostic(const Matrix3 &rotation)
take 3x3 matrix represeting a rotation and gives a corresponding angle around upward vertical axis
Matrix3 skewSymmetric(const Vector3 &v, Matrix3 &R)
transform a 3d vector into a skew symmetric 3x3 matrix
double rotationMatrixToYaw(const Matrix3 &rotation, const Vector2 &v)
take 3x3 matrix represeting a rotation and gives the angle that vector v turns around the upward vert...
Class facilitating the manipulation of the kinematics of a frame within another and the associated op...
Kinematics(const Kinematics &multiplier1, const Kinematics &multiplier2)
constructor of a Kinematics object resulting from the composition of two others.
const Kinematics & update(const Kinematics &newValue, double dt, Flags::Byte=Flags::all)
updates the current kinematics (k) with the new ones (k+1).
Kinematics & setToDiffNoAlias(const Kinematics &multiplier1, const Kinematics &multiplier2)
Kinematics & setToDiffNoAliasLinPart(const Kinematics &multiplier1, const Kinematics &multiplier2)
Linear part of the setToDiffNoAlias(const Kinematics &, const Kinematics &) function.
const Kinematics & integrate(double dt)
integrates the current kinematics over the timestep dt.
Kinematics(const Vector &v, Flags::Byte=Flags::all)
Kinematics & operator=(const LocalKinematics &locK)
fills the Kinematics object given its equivalent in the local frame.
Kinematics(const LocalKinematics &locK)
constructor of a Kinematics object given its equivalent in the local frame.
Kinematics & setToDiffNoAliasAngPart(const Kinematics &multiplier1, const Kinematics &multiplier2)
Angular part of the setToDiffNoAlias(const Kinematics &, const Kinematics &) function.
Kinematics getInverse() const
returns the inverse of the current kinematics.
Kinematics & setToProductNoAlias(const Kinematics &operand1, const Kinematics &operand2)
computes the composition of two Kinematics object.
Kinematics(const CheckedVector3 &position, const CheckedVector3 &linVel, const CheckedVector3 &linAcc, const Orientation &orientation, const CheckedVector3 &angVel, const CheckedVector3 &angAcc)
constructor of a Kinematics object given each variable independently.
Kinematics operator*(const Kinematics &) const
composition of transformation
Class facilitating the manipulation of the local kinematics of a frame within another and the associa...
LocalKinematics & setToProductNoAlias(const LocalKinematics &operand1, const LocalKinematics &operand2)
computes the composition of two LocalKinematics object.
LocalKinematics & setToDiffNoAliasLinPart(const LocalKinematics &multiplier1, const LocalKinematics &multiplier2)
Linear part of the setToDiffNoAlias(const LocalKinematics &, const LocalKinematics &) function.
LocalKinematics & operator=(const Kinematics &kine)
fills the LocalKinematics object given its equivalent in the global frame.
LocalKinematics getInverse() const
returns the inverse of the current local kinematics.
LocalKinematics operator*(const LocalKinematics &) const
composition of transformation
LocalKinematics & setToDiffNoAliasAngPart(const LocalKinematics &multiplier1, const LocalKinematics &multiplier2)
Angular part of the setToDiffNoAlias(const LocalKinematics &, const LocalKinematics &) function.
LocalKinematics & setToDiffNoAlias(const LocalKinematics &multiplier1, const LocalKinematics &multiplier2)
LocalKinematics(const Vector &v, Flags::Byte flags)
const LocalKinematics & integrate(double dt)
integrates the current local kinematics over the timestep dt.
LocalKinematics(const CheckedVector3 &position, const CheckedVector3 &linVel, const CheckedVector3 &linAcc, const Orientation &orientation, const CheckedVector3 &angVel, const CheckedVector3 &angAcc)
constructor of a Kinematics object given each variable independently.
LocalKinematics(const Kinematics &kin)
constructor of a LocalKinematics object given its equivalent in the global frame.
LocalKinematics & setZero(Flags::Byte=Flags::all)
LocalKinematics(const LocalKinematics &multiplier1, const LocalKinematics &multiplier2)
constructor of a LocalKinematics object resulting from the composition of two others.
const LocalKinematics & update(const LocalKinematics &newValue, double dt, Flags::Byte=Flags::all)
updates the current local kinematics (k) with the new ones (k+1).