32 #include <Eigen/Geometry> 36 template class Measurement_<MagneticModel>;
39 : declination_(0.0), inclination_(60.0 * M_PI/180.0), magnitude_(0.0)
64 R(0,0) = R(1,1) = R(2,2) = pow(
stddev_, 2);
85 MeasurementVector y_nav;
86 y_nav = state.
R() * y;
87 return atan2(y_nav.y(), y_nav.x()) - state.
getYaw();
96 double cos_inclination, sin_inclination;
97 sincos(
inclination_, &sin_inclination, &cos_inclination);
99 double cos_declination, sin_declination;
100 sincos(
declination_, &sin_declination, &cos_declination);
104 if (magnitude == 0.0) magnitude = 1.0;
113 , auto_heading_(true)
129 double norm =
y_.norm();
virtual void getMeasurementNoise(NoiseVariance &R, const State &, bool init)
Magnetic(const std::string &name="height")
virtual bool update(const MeasurementUpdate &update)
virtual const boost::shared_ptr< OrientationStateType > & orientation() const
virtual MeasurementVector const & getVector(const Update &update, const State &)
Matrix_< 3, 3 >::type RotationMatrix
virtual void getExpectedValue(MeasurementVector &y_pred, const State &state)
static const GlobalReferencePtr & Instance()
const State::RotationMatrix & R() const
virtual ParameterList & parameters()
virtual bool prepareUpdate(State &state, const Update &update)
ParameterList & add(const std::string &key, T &value, const T &default_value)
ParameterList & parameters()
double getMagneticHeading(const State &state, const MeasurementVector &y) const
virtual bool init(PoseEstimation &estimator, Measurement &measurement, State &state)
GlobalReferencePtr reference_
virtual Vector const & getVector() const
virtual void getStateJacobian(MeasurementMatrix &C, const State &state, bool init)
void updateMagneticField()
MeasurementVector magnetic_field_north_
virtual Model * getModel() const
EIGEN_MAKE_ALIGNED_OPERATOR_NEW MagneticModel()
void setReference(const GlobalReference::Heading &reference_heading)
MeasurementVector magnetic_field_reference_
double getTrueHeading(const State &state, const MeasurementVector &y) const
virtual MeasurementVector const & getVector(const Update &update, const State &state)