state-observation 1.7.0
General implementation of observers.
Loading...
Searching...
No Matches
imu-mltpctive-dynamical-system.hpp
1
12
13#ifndef IMU_MULTIPLICATIVE_DYNAMICAL_SYSTEM_HPP
14#define IMU_MULTIPLICATIVE_DYNAMICAL_SYSTEM_HPP
15
16#include <state-observation/api.h>
17#include <state-observation/dynamical-system/dynamical-system-functor-base.hpp>
21#include <state-observation/tools/state-vector-arithmetics.hpp>
22
23namespace stateObservation
24{
25
35class STATE_OBSERVATION_DLLAPI IMUMltpctiveDynamicalSystem : public DynamicalSystemFunctorBase,
37{
38public:
41
44
46 virtual Vector stateDynamics(const Vector & x, const Vector & u, TimeIndex k);
47
49 virtual Vector measureDynamics(const Vector & x, const Vector & u, TimeIndex k);
50
52 virtual void setProcessNoise(NoiseBase *);
54 virtual void resetProcessNoise();
56 virtual NoiseBase * getProcessNoise() const;
57
61 virtual void resetMeasurementNoise();
63 virtual NoiseBase * getMeasurementNoise() const;
64
66 virtual void setSamplingPeriod(double dt);
67
68 virtual Matrix getAMatrix(const Vector & xh);
69 virtual Matrix getCMatrix(const Vector & xp);
70
72 virtual Index getStateSize() const;
74 virtual Index getInputSize() const;
76 virtual Index getMeasurementSize() const;
77
78 void stateSum(const Vector & stateVector, const Vector & tangentVector, Vector & sum);
79
80 void stateDifference(const Vector & stateVector1, const Vector & stateVector2, Vector & difference);
81
82protected:
83 static const Index stateSize_ = 19;
84 static const Index stateTangentSize_ = 18;
85 static const Index inputSize_ = 6;
86 static const Index measurementSize_ = 6;
87 typedef kine::indexes<kine::quaternion> indexes;
88 typedef kine::indexes<kine::rotationVector> indexesTangent;
89
90 struct opt
91 {
94
95 Vector3 deltaR;
96
97 Matrix AJacobian;
98 Matrix CJacobian;
99
100 Matrix3 Rt;
101
102 opt(int stateSize, int measurementSize) : AJacobian(stateSize, stateSize), CJacobian(measurementSize, stateSize)
103 {
104 AJacobian.setZero();
105 AJacobian.block<3, 3>(indexesTangent::pos, indexesTangent::pos).setIdentity();
106 AJacobian.block<6, 6>(indexesTangent::linVel, indexesTangent::linVel).setIdentity();
107
108 CJacobian.setZero();
109 }
110 } opt_;
111
113
114 NoiseBase * processNoise_;
115
116 double dt_;
117
118private:
119public:
120 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
121};
122} // namespace stateObservation
123#endif // IMU_MULTIPLICATIVE_DYNAMICAL_SYSTEM_HPP
Implements the accelerometer-gyrometer inertial measuremen.
Implements the accelerometer-gyrometer measurements.
virtual Vector stateDynamics(const Vector &x, const Vector &u, TimeIndex k)
Description of the state dynamics.
virtual ~IMUMltpctiveDynamicalSystem()
The virtual destructor.
virtual void resetMeasurementNoise()
Removes the measurement noise.
virtual Index getStateSize() const
Gets the state size.
virtual void setProcessNoise(NoiseBase *)
Sets a noise which disturbs the state dynamics.
virtual Index getMeasurementSize() const
Gets the measurement size.
virtual void resetProcessNoise()
Removes the process noise.
virtual Vector measureDynamics(const Vector &x, const Vector &u, TimeIndex k)
Description of the sensor's dynamics.
virtual Index getInputSize() const
Gets the input size.
virtual NoiseBase * getMeasurementNoise() const
Gets a pointer on the measurement noise.
virtual NoiseBase * getProcessNoise() const
Gets the process noise.
virtual void setMeasurementNoise(NoiseBase *)
Sets a noise which disturbs the measurements.
virtual void setSamplingPeriod(double dt)
Set the period of the time discretization.
This class is used to customize the way the difference between measurements, the state update functio...
Filtering of divergent component of motion (DCM) and estimation of a bias betweeen the DCM and the co...
Eigen::Vector3d Vector3
3D vector
Eigen::Matrix3d Matrix3
3x3 Scalar Matrix
Eigen::MatrixXd Matrix
Dynamic sized Matrix.
Eigen::VectorXd Vector
Dynamic sized scalar vector.
Implements integrators for the kinematics, in terms or rotations and translations.