17#ifndef GNC_NAVIGATION_MEASUREMENTS_CALC_RANGE_RANGERATE_MATRIX_HPP
18#define GNC_NAVIGATION_MEASUREMENTS_CALC_RANGE_RANGERATE_MATRIX_HPP
20#include "utils/Measurements.hpp"
22#define R_RR_MATRIX_H_STATES 12
23#define R_RR_MATRIX_TGT_STATES 6
24#define R_RR_MATRIX_OBS_STATES 6
25#define R_RR_MATRIX_MEAS 2
48 double xdiff = tar_state[0] - obs_state[0];
49 double ydiff = tar_state[1] - obs_state[1];
50 double zdiff = tar_state[2] - obs_state[2];
51 double xdotdiff = tar_state[3] - obs_state[3];
52 double ydotdiff = tar_state[4] - obs_state[4];
53 double zdotdiff = tar_state[5] - obs_state[5];
54 double range = std::sqrt(xdiff*xdiff + ydiff*ydiff + zdiff*zdiff);
55 double range3 = range*range*range;
56 double one_over_range, one_over_range3;
57 int err = clockwerk::safeDivide(1.0, range, one_over_range);
59 err = clockwerk::safeDivide(1.0, range3, one_over_range3);
63 out_measurements[0] = xdiff*one_over_range;
64 out_measurements[1] = ydiff*one_over_range;
65 out_measurements[2] = zdiff*one_over_range;
67 out_measurements[3] = 0.0;
68 out_measurements[4] = 0.0;
69 out_measurements[5] = 0.0;
71 out_measurements[6] = -((xdiff*(xdotdiff*xdiff + ydotdiff*ydiff+zdotdiff*zdiff))*one_over_range3 - xdotdiff*one_over_range);
72 out_measurements[7] = -((ydiff*(xdotdiff*xdiff + ydotdiff*ydiff+zdotdiff*zdiff))*one_over_range3 - ydotdiff*one_over_range);
73 out_measurements[8] = -((zdiff*(xdotdiff*xdiff + ydotdiff*ydiff+zdotdiff*zdiff))*one_over_range3 - zdotdiff*one_over_range);
75 out_measurements[9] = out_measurements[0];
76 out_measurements[10] = out_measurements[1];
77 out_measurements[11] = out_measurements[2];
#define R_RR_MATRIX_TGT_STATES
Definition CalcRangeRangeRateMatrix.hpp:23
#define R_RR_MATRIX_OBS_STATES
Definition CalcRangeRangeRateMatrix.hpp:24
#define R_RR_MATRIX_H_STATES
Definition CalcRangeRangeRateMatrix.hpp:22
Definition CalcRangeRangeRateMatrix.hpp:30
int calculateMeasurements(T time, const std::array< T, 6 > &tar_state, const std::array< T, 6 > &obs_state, std::array< T, 12 > &out_measurements)
Function to calculate Measurement Sensitivity Matrix.
Definition CalcRangeRangeRateMatrix.hpp:44
Definition Measurements.hpp:39
#define NO_ERROR
Definition clockwerkerrors.h:31