forked from Archive/PX4-Autopilot
estimator_aid_source split GNSS pos (3d) -> pos (2d) + hgt
- per estimator air source status only keep a single set of flags and timestamp that applies to the entire source
This commit is contained in:
parent
8a9a091ff3
commit
2de990fd4b
|
@ -19,6 +19,7 @@ bool innovation_rejected # true if the observation has been rejected
|
|||
bool fused # true if the sample was successfully fused
|
||||
|
||||
# TOPICS estimator_aid_source_1d
|
||||
# TOPICS estimator_aid_src_baro_hgt estimator_aid_src_rng_hgt estimator_aid_src_airspeed
|
||||
# TOPICS estimator_aid_src_fake_hgt estimator_aid_src_sideslip
|
||||
# TOPICS estimator_aid_src_baro_hgt estimator_aid_src_ev_hgt estimator_aid_src_gnss_hgt estimator_aid_src_rng_hgt
|
||||
# TOPICS estimator_aid_src_airspeed estimator_aid_src_sideslip
|
||||
# TOPICS estimator_aid_src_fake_hgt
|
||||
# TOPICS estimator_aid_src_mag_heading estimator_aid_src_gnss_yaw estimator_aid_src_ev_yaw
|
||||
|
|
|
@ -5,7 +5,7 @@ uint8 estimator_instance
|
|||
|
||||
uint32 device_id
|
||||
|
||||
uint64[2] time_last_fuse
|
||||
uint64 time_last_fuse
|
||||
|
||||
float32[2] observation
|
||||
float32[2] observation_variance
|
||||
|
@ -14,9 +14,10 @@ float32[2] innovation
|
|||
float32[2] innovation_variance
|
||||
float32[2] test_ratio
|
||||
|
||||
bool[2] fusion_enabled # true when measurements are being fused
|
||||
bool[2] innovation_rejected # true if the observation has been rejected
|
||||
bool[2] fused # true if the sample was successfully fused
|
||||
bool fusion_enabled # true when measurements are being fused
|
||||
bool innovation_rejected # true if the observation has been rejected
|
||||
bool fused # true if the sample was successfully fused
|
||||
|
||||
# TOPICS estimator_aid_source_2d
|
||||
# TOPICS estimator_aid_src_fake_pos
|
||||
# TOPICS estimator_aid_src_ev_pos estimator_aid_src_fake_pos estimator_aid_src_gnss_pos
|
||||
# TOPICS estimator_aid_src_aux_vel
|
||||
|
|
|
@ -5,7 +5,7 @@ uint8 estimator_instance
|
|||
|
||||
uint32 device_id
|
||||
|
||||
uint64[3] time_last_fuse
|
||||
uint64 time_last_fuse
|
||||
|
||||
float32[3] observation
|
||||
float32[3] observation_variance
|
||||
|
@ -14,10 +14,11 @@ float32[3] innovation
|
|||
float32[3] innovation_variance
|
||||
float32[3] test_ratio
|
||||
|
||||
bool[3] fusion_enabled # true when measurements are being fused
|
||||
bool[3] innovation_rejected # true if the observation has been rejected
|
||||
bool[3] fused # true if the sample was successfully fused
|
||||
bool fusion_enabled # true when measurements are being fused
|
||||
bool innovation_rejected # true if the observation has been rejected
|
||||
bool fused # true if the sample was successfully fused
|
||||
|
||||
# TOPICS estimator_aid_source_3d
|
||||
# TOPICS estimator_aid_src_gnss_pos estimator_aid_src_gnss_vel
|
||||
# TOPICS estimator_aid_src_mag estimator_aid_src_aux_vel
|
||||
# TOPICS estimator_aid_src_ev_vel
|
||||
# TOPICS estimator_aid_src_gnss_vel
|
||||
# TOPICS estimator_aid_src_mag
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
uint64 timestamp # time since system start (microseconds)
|
||||
uint64 timestamp_sample # the timestamp of the raw data (microseconds)
|
||||
|
||||
uint32 baro_device_id # unique device ID for the sensor that does not change between power cycles
|
||||
uint32 device_id # unique device ID for the sensor that does not change between power cycles
|
||||
float32 bias # estimated barometric altitude bias (m)
|
||||
float32 bias_var # estimated barometric altitude bias variance (m^2)
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
void Ekf::updateAirspeed(const airspeedSample &airspeed_sample, estimator_aid_source_1d_s &airspeed) const
|
||||
{
|
||||
// reset flags
|
||||
resetEstimatorAidStatusFlags(airspeed);
|
||||
resetEstimatorAidStatus(airspeed);
|
||||
|
||||
// Variance for true airspeed measurement - (m/sec)^2
|
||||
const float R = sq(math::constrain(_params.eas_noise, 0.5f, 5.0f) *
|
||||
|
|
|
@ -240,8 +240,8 @@ struct dragSample {
|
|||
|
||||
struct auxVelSample {
|
||||
uint64_t time_us{}; ///< timestamp of the measurement (uSec)
|
||||
Vector3f vel{}; ///< measured NE velocity relative to the local origin (m/sec)
|
||||
Vector3f velVar{}; ///< estimated error variance of the NE velocity (m/sec)**2
|
||||
Vector2f vel{}; ///< measured NE velocity relative to the local origin (m/sec)
|
||||
Vector2f velVar{}; ///< estimated error variance of the NE velocity (m/sec)**2
|
||||
};
|
||||
|
||||
struct stateSample {
|
||||
|
|
|
@ -240,6 +240,8 @@ void Ekf::controlExternalVisionFusion()
|
|||
|
||||
// determine if we should use the horizontal position observations
|
||||
if (_control_status.flags.ev_pos) {
|
||||
resetEstimatorAidStatus(_aid_src_ev_pos);
|
||||
|
||||
if (reset && _control_status_prev.flags.ev_pos) {
|
||||
if (!_fuse_hpos_as_odom) {
|
||||
resetHorizontalPositionToVision();
|
||||
|
@ -272,14 +274,23 @@ void Ekf::controlExternalVisionFusion()
|
|||
Vector3f ev_delta_pos = _R_ev_to_ekf * Vector3f(_ev_sample_delayed.pos - _ev_sample_delayed_prev.pos);
|
||||
|
||||
// use the change in position since the last measurement
|
||||
_ev_pos_innov(0) = _state.pos(0) - _hpos_pred_prev(0) - ev_delta_pos(0);
|
||||
_ev_pos_innov(1) = _state.pos(1) - _hpos_pred_prev(1) - ev_delta_pos(1);
|
||||
_aid_src_ev_pos.observation[0] = ev_delta_pos(0);
|
||||
_aid_src_ev_pos.observation[1] = ev_delta_pos(1);
|
||||
|
||||
_aid_src_ev_pos.innovation[0] = _state.pos(0) - _hpos_pred_prev(0) - ev_delta_pos(0);
|
||||
_aid_src_ev_pos.innovation[1] = _state.pos(1) - _hpos_pred_prev(1) - ev_delta_pos(1);
|
||||
|
||||
// observation 1-STD error, incremental pos observation is expected to have more uncertainty
|
||||
Matrix3f ev_pos_var = matrix::diag(_ev_sample_delayed.posVar);
|
||||
ev_pos_var = _R_ev_to_ekf * ev_pos_var * _R_ev_to_ekf.transpose();
|
||||
ev_pos_obs_var(0) = fmaxf(ev_pos_var(0, 0), sq(0.5f));
|
||||
ev_pos_obs_var(1) = fmaxf(ev_pos_var(1, 1), sq(0.5f));
|
||||
|
||||
_aid_src_ev_pos.observation_variance[0] = ev_pos_obs_var(0);
|
||||
_aid_src_ev_pos.observation_variance[1] = ev_pos_obs_var(1);
|
||||
|
||||
_aid_src_ev_pos.innovation_variance[0] = P(7, 7) + _aid_src_ev_pos.observation_variance[0];
|
||||
_aid_src_ev_pos.innovation_variance[1] = P(8, 8) + _aid_src_ev_pos.observation_variance[1];
|
||||
}
|
||||
} else {
|
||||
// use the absolute position
|
||||
|
@ -291,11 +302,17 @@ void Ekf::controlExternalVisionFusion()
|
|||
ev_pos_var = _R_ev_to_ekf * ev_pos_var * _R_ev_to_ekf.transpose();
|
||||
}
|
||||
|
||||
_ev_pos_innov(0) = _state.pos(0) - ev_pos_meas(0);
|
||||
_ev_pos_innov(1) = _state.pos(1) - ev_pos_meas(1);
|
||||
_aid_src_ev_pos.observation[0] = ev_pos_meas(0);
|
||||
_aid_src_ev_pos.observation[1] = ev_pos_meas(1);
|
||||
|
||||
ev_pos_obs_var(0) = fmaxf(ev_pos_var(0, 0), sq(0.01f));
|
||||
ev_pos_obs_var(1) = fmaxf(ev_pos_var(1, 1), sq(0.01f));
|
||||
_aid_src_ev_pos.observation_variance[0] = fmaxf(ev_pos_var(0, 0), sq(0.01f));
|
||||
_aid_src_ev_pos.observation_variance[1] = fmaxf(ev_pos_var(1, 1), sq(0.01f));
|
||||
|
||||
_aid_src_ev_pos.innovation[0] = _state.pos(0) - _aid_src_ev_pos.observation[0];
|
||||
_aid_src_ev_pos.innovation[1] = _state.pos(1) - _aid_src_ev_pos.observation[1];
|
||||
|
||||
_aid_src_ev_pos.innovation_variance[0] = P(7, 7) + _aid_src_ev_pos.observation_variance[0];
|
||||
_aid_src_ev_pos.innovation_variance[1] = P(8, 8) + _aid_src_ev_pos.observation_variance[1];
|
||||
|
||||
// check if we have been deadreckoning too long
|
||||
if (isTimedOut(_time_last_hor_pos_fuse, _params.reset_timeout_max)) {
|
||||
|
@ -314,8 +331,12 @@ void Ekf::controlExternalVisionFusion()
|
|||
|
||||
// innovation gate size
|
||||
const float ev_pos_innov_gate = fmaxf(_params.ev_pos_innov_gate, 1.0f);
|
||||
setEstimatorAidStatusTestRatio(_aid_src_ev_pos, ev_pos_innov_gate);
|
||||
|
||||
fuseHorizontalPosition(_ev_pos_innov, ev_pos_innov_gate, ev_pos_obs_var, _ev_pos_innov_var, _ev_pos_test_ratio);
|
||||
_aid_src_ev_pos.timestamp_sample = _ev_sample_delayed.time_us;
|
||||
_aid_src_ev_pos.fusion_enabled = true;
|
||||
|
||||
fuseHorizontalPosition(_aid_src_ev_pos);
|
||||
}
|
||||
|
||||
// determine if we should use the velocity observations
|
||||
|
@ -324,8 +345,6 @@ void Ekf::controlExternalVisionFusion()
|
|||
resetVelocityToVision();
|
||||
}
|
||||
|
||||
_ev_vel_innov = _state.vel - getVisionVelocityInEkfFrame();
|
||||
|
||||
// check if we have been deadreckoning too long
|
||||
if (isTimedOut(_time_last_hor_vel_fuse, _params.reset_timeout_max)) {
|
||||
// only reset velocity if we have no another source of aiding constraining it
|
||||
|
@ -335,12 +354,17 @@ void Ekf::controlExternalVisionFusion()
|
|||
}
|
||||
}
|
||||
|
||||
resetEstimatorAidStatus(_aid_src_ev_vel);
|
||||
|
||||
const Vector3f obs_var = matrix::max(getVisionVelocityVarianceInEkfFrame(), sq(0.05f));
|
||||
|
||||
const float innov_gate = fmaxf(_params.ev_vel_innov_gate, 1.f);
|
||||
|
||||
fuseHorizontalVelocity(_ev_vel_innov, innov_gate, obs_var, _ev_vel_innov_var, _ev_vel_test_ratio);
|
||||
fuseVerticalVelocity(_ev_vel_innov, innov_gate, obs_var, _ev_vel_innov_var, _ev_vel_test_ratio);
|
||||
updateVelocityAidSrcStatus(_ev_sample_delayed.time_us, getVisionVelocityInEkfFrame(), obs_var, innov_gate, _aid_src_ev_vel);
|
||||
|
||||
_aid_src_ev_vel.fusion_enabled = true;
|
||||
|
||||
fuseVelocity(_aid_src_ev_vel);
|
||||
}
|
||||
|
||||
// determine if we should use the yaw observation
|
||||
|
@ -752,12 +776,12 @@ void Ekf::controlAuxVelFusion()
|
|||
|
||||
if (_auxvel_buffer->pop_first_older_than(_imu_sample_delayed.time_us, &auxvel_sample_delayed)) {
|
||||
|
||||
resetEstimatorAidStatus(_aid_src_aux_vel);
|
||||
|
||||
updateVelocityAidSrcStatus(auxvel_sample_delayed.time_us, auxvel_sample_delayed.vel, auxvel_sample_delayed.velVar, fmaxf(_params.auxvel_gate, 1.f), _aid_src_aux_vel);
|
||||
|
||||
if (isHorizontalAidingActive()) {
|
||||
_aid_src_aux_vel.fusion_enabled[0] = PX4_ISFINITE(auxvel_sample_delayed.vel(0));
|
||||
_aid_src_aux_vel.fusion_enabled[1] = PX4_ISFINITE(auxvel_sample_delayed.vel(1));
|
||||
_aid_src_aux_vel.fusion_enabled[2] = PX4_ISFINITE(auxvel_sample_delayed.vel(2));
|
||||
_aid_src_aux_vel.fusion_enabled = true;
|
||||
fuseVelocity(_aid_src_aux_vel);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1001,13 +1001,13 @@ void Ekf::fixCovarianceErrors(bool force_symmetry)
|
|||
if (fabsf(down_dvel_bias) > dVel_bias_lim) {
|
||||
|
||||
bool bad_vz_gps = _control_status.flags.gps && (down_dvel_bias * _aid_src_gnss_vel.innovation[2] < 0.0f);
|
||||
bool bad_vz_ev = _control_status.flags.ev_vel && (down_dvel_bias * _ev_vel_innov(2) < 0.0f);
|
||||
bool bad_vz_ev = _control_status.flags.ev_vel && (down_dvel_bias * _aid_src_ev_vel.innovation[2] < 0.0f);
|
||||
|
||||
if (bad_vz_gps || bad_vz_ev) {
|
||||
bool bad_z_baro = _control_status.flags.baro_hgt && (down_dvel_bias * _aid_src_baro_hgt.innovation < 0.0f);
|
||||
bool bad_z_gps = _control_status.flags.gps_hgt && (down_dvel_bias * _aid_src_gnss_pos.innovation[2] < 0.0f);
|
||||
bool bad_z_rng = _control_status.flags.rng_hgt && (down_dvel_bias * _aid_src_rng_hgt.innovation < 0.0f);
|
||||
bool bad_z_ev = _control_status.flags.ev_hgt && (down_dvel_bias * _ev_pos_innov(2) < 0.0f);
|
||||
bool bad_z_baro = _control_status.flags.baro_hgt && (down_dvel_bias * _aid_src_baro_hgt.innovation < 0.0f);
|
||||
bool bad_z_gps = _control_status.flags.gps_hgt && (down_dvel_bias * _aid_src_gnss_hgt.innovation < 0.0f);
|
||||
bool bad_z_rng = _control_status.flags.rng_hgt && (down_dvel_bias * _aid_src_rng_hgt.innovation < 0.0f);
|
||||
bool bad_z_ev = _control_status.flags.ev_hgt && (down_dvel_bias * _aid_src_ev_hgt.innovation < 0.0f);
|
||||
|
||||
|
||||
if (bad_z_baro || bad_z_gps || bad_z_rng || bad_z_ev) {
|
||||
|
|
|
@ -99,7 +99,7 @@ public:
|
|||
|
||||
void getAuxVelInnov(float aux_vel_innov[2]) const;
|
||||
void getAuxVelInnovVar(float aux_vel_innov[2]) const;
|
||||
void getAuxVelInnovRatio(float &aux_vel_innov_ratio) const { aux_vel_innov_ratio = Vector3f(_aid_src_aux_vel.test_ratio).max(); }
|
||||
void getAuxVelInnovRatio(float &aux_vel_innov_ratio) const { aux_vel_innov_ratio = math::max(_aid_src_aux_vel.test_ratio[0], _aid_src_aux_vel.test_ratio[1]); }
|
||||
|
||||
void getFlowInnov(float flow_innov[2]) const { _flow_innov.copyTo(flow_innov); }
|
||||
void getFlowInnovVar(float flow_innov_var[2]) const { _flow_innov_var.copyTo(flow_innov_var); }
|
||||
|
@ -422,11 +422,15 @@ public:
|
|||
const auto &aid_src_fake_hgt() const { return _aid_src_fake_hgt; }
|
||||
const auto &aid_src_fake_pos() const { return _aid_src_fake_pos; }
|
||||
|
||||
const auto &aid_src_ev_hgt() const { return _aid_src_ev_hgt; }
|
||||
const auto &aid_src_ev_pos() const { return _aid_src_ev_pos; }
|
||||
const auto &aid_src_ev_vel() const { return _aid_src_ev_vel; }
|
||||
const auto &aid_src_ev_yaw() const { return _aid_src_ev_yaw; }
|
||||
|
||||
const auto &aid_src_gnss_yaw() const { return _aid_src_gnss_yaw; }
|
||||
const auto &aid_src_gnss_vel() const { return _aid_src_gnss_vel; }
|
||||
const auto &aid_src_gnss_hgt() const { return _aid_src_gnss_hgt; }
|
||||
const auto &aid_src_gnss_pos() const { return _aid_src_gnss_pos; }
|
||||
const auto &aid_src_gnss_vel() const { return _aid_src_gnss_vel; }
|
||||
const auto &aid_src_gnss_yaw() const { return _aid_src_gnss_yaw; }
|
||||
|
||||
const auto &aid_src_mag_heading() const { return _aid_src_mag_heading; }
|
||||
const auto &aid_src_mag() const { return _aid_src_mag; }
|
||||
|
@ -529,17 +533,6 @@ private:
|
|||
Vector3f _delta_vel_bias_var_accum{}; ///< kahan summation algorithm accumulator for delta velocity bias variance
|
||||
Vector3f _delta_angle_bias_var_accum{}; ///< kahan summation algorithm accumulator for delta angle bias variance
|
||||
|
||||
float _vert_pos_innov_ratio{0.f}; ///< vertical position innovation divided by estimated standard deviation of innovation
|
||||
uint64_t _vert_pos_fuse_attempt_time_us{0}; ///< last system time in usec vertical position measurement fuson was attempted
|
||||
float _vert_vel_innov_ratio{0.f}; ///< standard deviation of vertical velocity innovation
|
||||
uint64_t _vert_vel_fuse_time_us{0}; ///< last system time in usec time vertical velocity measurement fuson was attempted
|
||||
|
||||
Vector3f _ev_vel_innov{}; ///< external vision velocity innovations (m/sec)
|
||||
Vector3f _ev_vel_innov_var{}; ///< external vision velocity innovation variances ((m/sec)**2)
|
||||
|
||||
Vector3f _ev_pos_innov{}; ///< external vision position innovations (m)
|
||||
Vector3f _ev_pos_innov_var{}; ///< external vision position innovation variances (m**2)
|
||||
|
||||
Vector2f _drag_innov{}; ///< multirotor drag measurement innovation (m/sec**2)
|
||||
Vector2f _drag_innov_var{}; ///< multirotor drag measurement innovation variance ((m/sec**2)**2)
|
||||
|
||||
|
@ -568,16 +561,20 @@ private:
|
|||
estimator_aid_source_2d_s _aid_src_fake_pos{};
|
||||
estimator_aid_source_1d_s _aid_src_fake_hgt{};
|
||||
|
||||
estimator_aid_source_1d_s _aid_src_ev_hgt{};
|
||||
estimator_aid_source_2d_s _aid_src_ev_pos{};
|
||||
estimator_aid_source_3d_s _aid_src_ev_vel{};
|
||||
estimator_aid_source_1d_s _aid_src_ev_yaw{};
|
||||
|
||||
estimator_aid_source_1d_s _aid_src_gnss_yaw{};
|
||||
estimator_aid_source_1d_s _aid_src_gnss_hgt{};
|
||||
estimator_aid_source_2d_s _aid_src_gnss_pos{};
|
||||
estimator_aid_source_3d_s _aid_src_gnss_vel{};
|
||||
estimator_aid_source_3d_s _aid_src_gnss_pos{};
|
||||
estimator_aid_source_1d_s _aid_src_gnss_yaw{};
|
||||
|
||||
estimator_aid_source_1d_s _aid_src_mag_heading{};
|
||||
estimator_aid_source_3d_s _aid_src_mag{};
|
||||
|
||||
estimator_aid_source_3d_s _aid_src_aux_vel{};
|
||||
estimator_aid_source_2d_s _aid_src_aux_vel{};
|
||||
|
||||
// output predictor states
|
||||
Vector3f _delta_angle_corr{}; ///< delta angle correction vector (rad)
|
||||
|
@ -737,32 +734,23 @@ private:
|
|||
// fuse optical flow line of sight rate measurements
|
||||
void fuseOptFlow();
|
||||
|
||||
void updateVelocityAidSrcStatus(const uint64_t &sample_time_us, const Vector3f &velocity, const Vector3f &obs_var,
|
||||
const float innov_gate, estimator_aid_source_3d_s &vel_aid_src) const;
|
||||
void updatePositionAidSrcStatus(const uint64_t &sample_time_us, const Vector3f &position, const Vector3f &obs_var,
|
||||
const float innov_gate, estimator_aid_source_3d_s &pos_aid_src) const;
|
||||
// horizontal and vertical position aid source
|
||||
void updateHorizontalPositionAidSrcStatus(const uint64_t &time_us, const Vector2f &obs, const Vector2f &obs_var, const float innov_gate, estimator_aid_source_2d_s &aid_src) const;
|
||||
void updateVerticalPositionAidSrcStatus(const uint64_t &time_us, const float obs, const float obs_var, const float innov_gate, estimator_aid_source_1d_s &aid_src) const;
|
||||
|
||||
// 2d & 3d velocity aid source
|
||||
void updateVelocityAidSrcStatus(const uint64_t &time_us, const Vector2f &obs, const Vector2f &obs_var, const float innov_gate, estimator_aid_source_2d_s &aid_src) const;
|
||||
void updateVelocityAidSrcStatus(const uint64_t &time_us, const Vector3f &obs, const Vector3f &obs_var, const float innov_gate, estimator_aid_source_3d_s &aid_src) const;
|
||||
|
||||
// horizontal and vertical position fusion
|
||||
void fuseHorizontalPosition(estimator_aid_source_2d_s &pos_aid_src);
|
||||
void fuseVerticalPosition(estimator_aid_source_1d_s &hgt_aid_src);
|
||||
|
||||
// 2d & 3d velocity fusion
|
||||
void fuseVelocity(estimator_aid_source_2d_s &vel_aid_src);
|
||||
void fuseVelocity(estimator_aid_source_3d_s &vel_aid_src);
|
||||
void fusePosition(estimator_aid_source_3d_s &pos_aid_src);
|
||||
|
||||
bool fuseHorizontalVelocity(const Vector3f &innov, float innov_gate, const Vector3f &obs_var,
|
||||
Vector3f &innov_var, Vector2f &test_ratio);
|
||||
|
||||
bool fuseVerticalVelocity(const Vector3f &innov, float innov_gate, const Vector3f &obs_var,
|
||||
Vector3f &innov_var, Vector2f &test_ratio);
|
||||
|
||||
bool fuseHorizontalPosition(const Vector3f &innov, float innov_gate, const Vector3f &obs_var,
|
||||
Vector3f &innov_var, Vector2f &test_ratiov);
|
||||
|
||||
bool fuseVerticalPosition(float innov, float innov_gate, float obs_var,
|
||||
float &innov_var, float &test_ratio);
|
||||
|
||||
void updateGpsYaw(const gpsSample &gps_sample);
|
||||
void updateGpsVel(const gpsSample &gps_sample);
|
||||
void updateGpsPos(const gpsSample &gps_sample);
|
||||
|
||||
void fuseGpsVel();
|
||||
void fuseGpsPos();
|
||||
|
||||
// calculate optical flow body angular rate compensation
|
||||
// returns false if bias corrected body rate data is unavailable
|
||||
|
@ -1125,68 +1113,54 @@ private:
|
|||
|
||||
void resetGpsDriftCheckFilters();
|
||||
|
||||
bool resetEstimatorAidStatusFlags(estimator_aid_source_1d_s &status) const
|
||||
{
|
||||
if (status.timestamp_sample != 0) {
|
||||
status.timestamp_sample = 0;
|
||||
status.fusion_enabled = false;
|
||||
status.innovation_rejected = false;
|
||||
status.fused = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void resetEstimatorAidStatus(estimator_aid_source_1d_s &status) const
|
||||
{
|
||||
if (resetEstimatorAidStatusFlags(status)) {
|
||||
// only bother resetting if timestamp_sample is set
|
||||
if (status.timestamp_sample != 0) {
|
||||
status.timestamp_sample = 0;
|
||||
|
||||
// preserve status.time_last_fuse
|
||||
|
||||
status.observation = 0;
|
||||
status.observation_variance = 0;
|
||||
|
||||
status.innovation = 0;
|
||||
status.innovation_variance = 0;
|
||||
status.test_ratio = 0;
|
||||
status.test_ratio = INFINITY;
|
||||
|
||||
status.fusion_enabled = false;
|
||||
status.innovation_rejected = true;
|
||||
status.fused = false;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool resetEstimatorAidStatusFlags(T &status) const
|
||||
{
|
||||
if (status.timestamp_sample != 0) {
|
||||
status.timestamp_sample = 0;
|
||||
|
||||
for (size_t i = 0; i < (sizeof(status.fusion_enabled) / sizeof(status.fusion_enabled[0])); i++) {
|
||||
status.fusion_enabled[i] = false;
|
||||
status.innovation_rejected[i] = false;
|
||||
status.fused[i] = false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void resetEstimatorAidStatus(T &status) const
|
||||
{
|
||||
if (resetEstimatorAidStatusFlags(status)) {
|
||||
for (size_t i = 0; i < (sizeof(status.fusion_enabled) / sizeof(status.fusion_enabled[0])); i++) {
|
||||
// only bother resetting if timestamp_sample is set
|
||||
if (status.timestamp_sample != 0) {
|
||||
status.timestamp_sample = 0;
|
||||
|
||||
// preserve status.time_last_fuse
|
||||
|
||||
for (size_t i = 0; i < (sizeof(status.observation) / sizeof(status.observation[0])); i++) {
|
||||
status.observation[i] = 0;
|
||||
status.observation_variance[i] = 0;
|
||||
|
||||
status.innovation[i] = 0;
|
||||
status.innovation_variance[i] = 0;
|
||||
status.test_ratio[i] = 0;
|
||||
status.test_ratio[i] = INFINITY;
|
||||
}
|
||||
|
||||
status.fusion_enabled = false;
|
||||
status.innovation_rejected = true;
|
||||
status.fused = false;
|
||||
}
|
||||
}
|
||||
|
||||
void setEstimatorAidStatusTestRatio(estimator_aid_source_1d_s &status, float innovation_gate) const
|
||||
{
|
||||
if (PX4_ISFINITE(status.innovation) && PX4_ISFINITE(status.innovation_variance)) {
|
||||
if (PX4_ISFINITE(status.innovation) && PX4_ISFINITE(status.innovation_variance) && (status.innovation_variance > 0.f)) {
|
||||
status.test_ratio = sq(status.innovation) / (sq(innovation_gate) * status.innovation_variance);
|
||||
status.innovation_rejected = (status.test_ratio > 1.f);
|
||||
|
||||
|
@ -1199,16 +1173,24 @@ private:
|
|||
template <typename T>
|
||||
void setEstimatorAidStatusTestRatio(T &status, float innovation_gate) const
|
||||
{
|
||||
bool innovation_rejected = false;
|
||||
|
||||
for (size_t i = 0; i < (sizeof(status.test_ratio) / sizeof(status.test_ratio[0])); i++) {
|
||||
if (PX4_ISFINITE(status.innovation[i]) && PX4_ISFINITE(status.innovation_variance[i])) {
|
||||
if (PX4_ISFINITE(status.innovation[i]) && PX4_ISFINITE(status.innovation_variance[i]) && (status.innovation_variance[i] > 0.f)) {
|
||||
status.test_ratio[i] = sq(status.innovation[i]) / (sq(innovation_gate) * status.innovation_variance[i]);
|
||||
status.innovation_rejected[i] = (status.test_ratio[i] > 1.f);
|
||||
|
||||
if (status.test_ratio[i] > 1.f) {
|
||||
innovation_rejected = true;
|
||||
}
|
||||
|
||||
} else {
|
||||
status.test_ratio[i] = INFINITY;
|
||||
status.innovation_rejected[i] = true;
|
||||
innovation_rejected = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if any of the innovations are rejected, then the overall innovation is rejected
|
||||
status.innovation_rejected = innovation_rejected;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -557,7 +557,7 @@ void Ekf::getGpsVelPosInnov(float hvel[2], float &vvel, float hpos[2], float &v
|
|||
|
||||
hpos[0] = _aid_src_gnss_pos.innovation[0];
|
||||
hpos[1] = _aid_src_gnss_pos.innovation[1];
|
||||
vpos = _aid_src_gnss_pos.innovation[2];
|
||||
vpos = _aid_src_gnss_hgt.innovation;
|
||||
}
|
||||
|
||||
void Ekf::getGpsVelPosInnovVar(float hvel[2], float &vvel, float hpos[2], float &vpos) const
|
||||
|
@ -568,7 +568,7 @@ void Ekf::getGpsVelPosInnovVar(float hvel[2], float &vvel, float hpos[2], float
|
|||
|
||||
hpos[0] = _aid_src_gnss_pos.innovation_variance[0];
|
||||
hpos[1] = _aid_src_gnss_pos.innovation_variance[1];
|
||||
vpos = _aid_src_gnss_pos.innovation_variance[2];
|
||||
vpos = _aid_src_gnss_hgt.innovation_variance;
|
||||
}
|
||||
|
||||
void Ekf::getGpsVelPosInnovRatio(float &hvel, float &vvel, float &hpos, float &vpos) const
|
||||
|
@ -577,35 +577,38 @@ void Ekf::getGpsVelPosInnovRatio(float &hvel, float &vvel, float &hpos, float &v
|
|||
vvel = _aid_src_gnss_vel.test_ratio[2];
|
||||
|
||||
hpos = fmaxf(_aid_src_gnss_pos.test_ratio[0], _aid_src_gnss_pos.test_ratio[1]);
|
||||
vpos = _aid_src_gnss_pos.test_ratio[2];
|
||||
vpos = _aid_src_gnss_hgt.test_ratio;
|
||||
}
|
||||
|
||||
void Ekf::getEvVelPosInnov(float hvel[2], float &vvel, float hpos[2], float &vpos) const
|
||||
{
|
||||
hvel[0] = _ev_vel_innov(0);
|
||||
hvel[1] = _ev_vel_innov(1);
|
||||
vvel = _ev_vel_innov(2);
|
||||
hpos[0] = _ev_pos_innov(0);
|
||||
hpos[1] = _ev_pos_innov(1);
|
||||
vpos = _ev_pos_innov(2);
|
||||
hvel[0] = _aid_src_ev_vel.innovation[0];
|
||||
hvel[1] = _aid_src_ev_vel.innovation[1];
|
||||
vvel = _aid_src_ev_vel.innovation[2];
|
||||
|
||||
hpos[0] = _aid_src_ev_pos.innovation[0];
|
||||
hpos[1] = _aid_src_ev_pos.innovation[1];
|
||||
vpos = _aid_src_ev_hgt.innovation;
|
||||
}
|
||||
|
||||
void Ekf::getEvVelPosInnovVar(float hvel[2], float &vvel, float hpos[2], float &vpos) const
|
||||
{
|
||||
hvel[0] = _ev_vel_innov_var(0);
|
||||
hvel[1] = _ev_vel_innov_var(1);
|
||||
vvel = _ev_vel_innov_var(2);
|
||||
hpos[0] = _ev_pos_innov_var(0);
|
||||
hpos[1] = _ev_pos_innov_var(1);
|
||||
vpos = _ev_pos_innov_var(2);
|
||||
hvel[0] = _aid_src_ev_vel.innovation_variance[0];
|
||||
hvel[1] = _aid_src_ev_vel.innovation_variance[1];
|
||||
vvel = _aid_src_ev_vel.innovation_variance[2];
|
||||
|
||||
hpos[0] = _aid_src_ev_pos.innovation_variance[0];
|
||||
hpos[1] = _aid_src_ev_pos.innovation_variance[1];
|
||||
vpos = _aid_src_ev_hgt.innovation_variance;
|
||||
}
|
||||
|
||||
void Ekf::getEvVelPosInnovRatio(float &hvel, float &vvel, float &hpos, float &vpos) const
|
||||
{
|
||||
hvel = _ev_vel_test_ratio(0);
|
||||
vvel = _ev_vel_test_ratio(1);
|
||||
hpos = _ev_pos_test_ratio(0);
|
||||
vpos = _ev_pos_test_ratio(1);
|
||||
hvel = fmaxf(_aid_src_ev_vel.test_ratio[0], _aid_src_ev_vel.test_ratio[1]);
|
||||
vvel = _aid_src_ev_vel.test_ratio[2];
|
||||
|
||||
hpos = fmaxf(_aid_src_ev_pos.test_ratio[0], _aid_src_ev_pos.test_ratio[1]);
|
||||
vpos = _aid_src_ev_hgt.test_ratio;
|
||||
}
|
||||
|
||||
void Ekf::getAuxVelInnov(float aux_vel_innov[2]) const
|
||||
|
@ -714,7 +717,7 @@ void Ekf::get_ekf_gpos_accuracy(float *ekf_eph, float *ekf_epv) const
|
|||
}
|
||||
|
||||
if (_control_status.flags.ev_pos) {
|
||||
hpos_err = math::max(hpos_err, sqrtf(sq(_ev_pos_innov(0)) + sq(_ev_pos_innov(1))));
|
||||
hpos_err = math::max(hpos_err, Vector2f(_aid_src_ev_pos.innovation).norm());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -731,8 +734,14 @@ void Ekf::get_ekf_lpos_accuracy(float *ekf_eph, float *ekf_epv) const
|
|||
// If we are dead-reckoning for too long, use the innovations as a conservative alternate measure of the horizontal position error
|
||||
// The reason is that complete rejection of measurements is often caused by heading misalignment or inertial sensing errors
|
||||
// and using state variances for accuracy reporting is overly optimistic in these situations
|
||||
if (_horizontal_deadreckon_time_exceeded && _control_status.flags.gps) {
|
||||
hpos_err = math::max(hpos_err, Vector2f(_aid_src_gnss_pos.innovation).norm());
|
||||
if (_horizontal_deadreckon_time_exceeded) {
|
||||
if (_control_status.flags.gps) {
|
||||
hpos_err = math::max(hpos_err, Vector2f(_aid_src_gnss_pos.innovation).norm());
|
||||
}
|
||||
|
||||
if (_control_status.flags.ev_pos) {
|
||||
hpos_err = math::max(hpos_err, Vector2f(_aid_src_ev_pos.innovation).norm());
|
||||
}
|
||||
}
|
||||
|
||||
*ekf_eph = hpos_err;
|
||||
|
@ -759,11 +768,11 @@ void Ekf::get_ekf_vel_accuracy(float *ekf_evh, float *ekf_evv) const
|
|||
vel_err_conservative = math::max(vel_err_conservative, Vector2f(_aid_src_gnss_pos.innovation).norm());
|
||||
|
||||
} else if (_control_status.flags.ev_pos) {
|
||||
vel_err_conservative = math::max(vel_err_conservative, sqrtf(sq(_ev_pos_innov(0)) + sq(_ev_pos_innov(1))));
|
||||
vel_err_conservative = math::max(vel_err_conservative, Vector2f(_aid_src_ev_pos.innovation).norm());
|
||||
}
|
||||
|
||||
if (_control_status.flags.ev_vel) {
|
||||
vel_err_conservative = math::max(vel_err_conservative, sqrtf(sq(_ev_vel_innov(0)) + sq(_ev_vel_innov(1))));
|
||||
vel_err_conservative = math::max(vel_err_conservative, Vector2f(_aid_src_ev_vel.innovation).norm());
|
||||
}
|
||||
|
||||
hvel_err = math::max(hvel_err, vel_err_conservative);
|
||||
|
@ -908,12 +917,12 @@ void Ekf::get_innovation_test_status(uint16_t &status, float &mag, float &vel, f
|
|||
}
|
||||
|
||||
if (_control_status.flags.ev_vel) {
|
||||
float ev_vel = sqrtf(math::max(_ev_vel_test_ratio(0), _ev_vel_test_ratio(1)));
|
||||
float ev_vel = sqrtf(Vector3f(_aid_src_ev_vel.test_ratio).max());
|
||||
vel = math::max(vel, ev_vel, FLT_MIN);
|
||||
}
|
||||
|
||||
if (_control_status.flags.ev_pos) {
|
||||
float ev_pos = sqrtf(_ev_pos_test_ratio(0));
|
||||
float ev_pos = sqrtf(Vector2f(_aid_src_ev_pos.test_ratio).max());
|
||||
pos = math::max(pos, ev_pos, FLT_MIN);
|
||||
}
|
||||
|
||||
|
@ -924,25 +933,28 @@ void Ekf::get_innovation_test_status(uint16_t &status, float &mag, float &vel, f
|
|||
|
||||
// return the combined vertical position innovation test ratio
|
||||
float hgt_sum = 0.f;
|
||||
int n_hgt_sources = 0;
|
||||
|
||||
if (_control_status.flags.baro_hgt) {
|
||||
hgt_sum += sqrtf(_aid_src_baro_hgt.test_ratio);
|
||||
n_hgt_sources++;
|
||||
}
|
||||
|
||||
if (_control_status.flags.gps_hgt) {
|
||||
hgt_sum += sqrtf(_aid_src_gnss_pos.test_ratio[2]);
|
||||
hgt_sum += sqrtf(_aid_src_gnss_hgt.test_ratio);
|
||||
n_hgt_sources++;
|
||||
}
|
||||
|
||||
if (_control_status.flags.rng_hgt) {
|
||||
hgt_sum += sqrtf(_aid_src_rng_hgt.test_ratio);
|
||||
n_hgt_sources++;
|
||||
}
|
||||
|
||||
if (_control_status.flags.ev_hgt) {
|
||||
hgt_sum += sqrtf(_ev_pos_test_ratio(1));
|
||||
hgt_sum += sqrtf(_aid_src_ev_hgt.test_ratio);
|
||||
n_hgt_sources++;
|
||||
}
|
||||
|
||||
const int n_hgt_sources = getNumberOfActiveVerticalPositionAidingSources();
|
||||
|
||||
if (n_hgt_sources > 0) {
|
||||
hgt = math::max(hgt_sum / static_cast<float>(n_hgt_sources), FLT_MIN);
|
||||
|
||||
|
@ -1498,7 +1510,6 @@ void Ekf::stopGpsPosFusion()
|
|||
if (_control_status.flags.gps) {
|
||||
ECL_INFO("stopping GPS position fusion");
|
||||
_control_status.flags.gps = false;
|
||||
stopGpsHgtFusion();
|
||||
|
||||
resetEstimatorAidStatus(_aid_src_gnss_pos);
|
||||
}
|
||||
|
@ -1571,18 +1582,20 @@ void Ekf::stopEvFusion()
|
|||
|
||||
void Ekf::stopEvPosFusion()
|
||||
{
|
||||
_control_status.flags.ev_pos = false;
|
||||
_ev_pos_innov.setZero();
|
||||
_ev_pos_innov_var.setZero();
|
||||
_ev_pos_test_ratio.setZero();
|
||||
if (_control_status.flags.ev_pos) {
|
||||
ECL_INFO("stopping EV pos fusion");
|
||||
_control_status.flags.ev_pos = false;
|
||||
resetEstimatorAidStatus(_aid_src_ev_pos);
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::stopEvVelFusion()
|
||||
{
|
||||
_control_status.flags.ev_vel = false;
|
||||
_ev_vel_innov.setZero();
|
||||
_ev_vel_innov_var.setZero();
|
||||
_ev_vel_test_ratio.setZero();
|
||||
if (_control_status.flags.ev_vel) {
|
||||
ECL_INFO("stopping EV vel fusion");
|
||||
_control_status.flags.ev_vel = false;
|
||||
resetEstimatorAidStatus(_aid_src_ev_vel);
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::stopEvYawFusion()
|
||||
|
|
|
@ -341,8 +341,7 @@ protected:
|
|||
|
||||
// innovation consistency check monitoring ratios
|
||||
AlphaFilter<float> _gnss_yaw_signed_test_ratio_lpf{0.1f}; // average signed test ratio used to detect a bias in the state
|
||||
Vector2f _ev_vel_test_ratio{}; // EV velocity innovation consistency check ratios
|
||||
Vector2f _ev_pos_test_ratio{}; // EV position innovation consistency check ratios
|
||||
|
||||
float _optflow_test_ratio{}; // Optical flow innovation consistency check ratio
|
||||
float _hagl_test_ratio{}; // height above terrain measurement innovation consistency check ratio
|
||||
Vector2f _drag_test_ratio{}; // drag innovation consistency check ratio
|
||||
|
|
|
@ -89,7 +89,7 @@ void Ekf::startEvHgtFusion()
|
|||
{
|
||||
if (!_control_status.flags.ev_hgt) {
|
||||
if (_params.height_sensor_ref == HeightSensor::EV) {
|
||||
_rng_hgt_b_est.reset();
|
||||
_ev_hgt_b_est.reset();
|
||||
_height_sensor_ref = HeightSensor::EV;
|
||||
resetHeightToEv();
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ void Ekf::controlFakeHgtFusion()
|
|||
auto &fake_hgt = _aid_src_fake_hgt;
|
||||
|
||||
// clear
|
||||
resetEstimatorAidStatusFlags(fake_hgt);
|
||||
resetEstimatorAidStatus(fake_hgt);
|
||||
|
||||
// If we aren't doing any aiding, fake position measurements at the last known vertical position to constrain drift
|
||||
const bool fake_hgt_data_ready = isTimedOut(fake_hgt.time_last_fuse, (uint64_t)2e5); // Fuse fake height at a limited rate
|
||||
|
|
|
@ -43,11 +43,11 @@ void Ekf::controlFakePosFusion()
|
|||
auto &fake_pos = _aid_src_fake_pos;
|
||||
|
||||
// clear
|
||||
resetEstimatorAidStatusFlags(fake_pos);
|
||||
resetEstimatorAidStatus(fake_pos);
|
||||
|
||||
// If we aren't doing any aiding, fake position measurements at the last known position to constrain drift
|
||||
// During intial tilt aligment, fake position is used to perform a "quasi-stationary" leveling of the EKF
|
||||
const bool fake_pos_data_ready = isTimedOut(fake_pos.time_last_fuse[0], (uint64_t)2e5); // Fuse fake position at a limited rate
|
||||
const bool fake_pos_data_ready = isTimedOut(fake_pos.time_last_fuse, (uint64_t)2e5); // Fuse fake position at a limited rate
|
||||
|
||||
if (fake_pos_data_ready) {
|
||||
const bool continuing_conditions_passing = !isHorizontalAidingActive();
|
||||
|
@ -58,7 +58,7 @@ void Ekf::controlFakePosFusion()
|
|||
if (continuing_conditions_passing) {
|
||||
fuseFakePosition();
|
||||
|
||||
const bool is_fusion_failing = isTimedOut(fake_pos.time_last_fuse[0], (uint64_t)4e5);
|
||||
const bool is_fusion_failing = isTimedOut(fake_pos.time_last_fuse, (uint64_t)4e5);
|
||||
|
||||
if (is_fusion_failing) {
|
||||
resetFakePosFusion();
|
||||
|
@ -100,8 +100,7 @@ void Ekf::resetFakePosFusion()
|
|||
resetHorizontalPositionToLastKnown();
|
||||
resetHorizontalVelocityToZero();
|
||||
|
||||
_aid_src_fake_pos.time_last_fuse[0] = _imu_sample_delayed.time_us;
|
||||
_aid_src_fake_pos.time_last_fuse[1] = _imu_sample_delayed.time_us;
|
||||
_aid_src_fake_pos.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
}
|
||||
|
||||
void Ekf::stopFakePosFusion()
|
||||
|
@ -144,16 +143,25 @@ void Ekf::fuseFakePosition()
|
|||
|
||||
setEstimatorAidStatusTestRatio(fake_pos, innov_gate);
|
||||
|
||||
// fuse
|
||||
for (int i = 0; i < 2; i++) {
|
||||
// always protect against extreme values that could result in a NaN
|
||||
fake_pos.fusion_enabled[i] = fake_pos.test_ratio[i] < sq(100.0f / innov_gate);
|
||||
fake_pos.fusion_enabled = true;
|
||||
|
||||
if (fake_pos.fusion_enabled[i] && !fake_pos.innovation_rejected[i]) {
|
||||
if (fuseVelPosHeight(fake_pos.innovation[i], fake_pos.innovation_variance[i], 3 + i)) {
|
||||
fake_pos.fused[i] = true;
|
||||
fake_pos.time_last_fuse[i] = _imu_sample_delayed.time_us;
|
||||
}
|
||||
// always protect against extreme values that could result in a NaN
|
||||
if (!fake_pos.innovation_rejected) {
|
||||
if ((fake_pos.test_ratio[0] > sq(100.0f / innov_gate)) || (fake_pos.test_ratio[1] > sq(100.0f / innov_gate))) {
|
||||
fake_pos.innovation_rejected = true;
|
||||
}
|
||||
}
|
||||
|
||||
// fuse
|
||||
if (fake_pos.fusion_enabled && !fake_pos.innovation_rejected) {
|
||||
if (fuseVelPosHeight(fake_pos.innovation[0], fake_pos.innovation_variance[0], 3)
|
||||
&& fuseVelPosHeight(fake_pos.innovation[1], fake_pos.innovation_variance[1], 4)
|
||||
) {
|
||||
fake_pos.fused = true;
|
||||
fake_pos.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
|
||||
} else {
|
||||
fake_pos.fused = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,17 +45,59 @@ void Ekf::controlGnssHeightFusion(const gpsSample &gps_sample)
|
|||
return;
|
||||
}
|
||||
|
||||
_gps_hgt_b_est.predict(_dt_ekf_avg);
|
||||
auto &aid_src = _aid_src_gnss_hgt;
|
||||
HeightBiasEstimator &bias_est = _gps_hgt_b_est;
|
||||
|
||||
bias_est.predict(_dt_ekf_avg);
|
||||
|
||||
if (_gps_data_ready) {
|
||||
const bool continuing_conditions_passing = !_gps_intermittent && _gps_checks_passed && _NED_origin_initialised;
|
||||
const bool starting_conditions_passing = continuing_conditions_passing;
|
||||
|
||||
const bool gps_checks_passing = isTimedOut(_last_gps_fail_us, (uint64_t)5e6);
|
||||
const bool gps_checks_failing = isTimedOut(_last_gps_pass_us, (uint64_t)5e6);
|
||||
|
||||
const float innov_gate = fmaxf(_params.gps_pos_innov_gate, 1.f);
|
||||
|
||||
const float measurement = gps_sample.hgt - getEkfGlobalOriginAltitude();
|
||||
const float measurement_var = getGpsHeightVariance(gps_sample);
|
||||
|
||||
// GNSS position, vertical position GNSS measurement has opposite sign to earth z axis
|
||||
updateVerticalPositionAidSrcStatus(gps_sample.time_us,
|
||||
-(measurement - bias_est.getBias()),
|
||||
measurement_var + bias_est.getBiasVar(),
|
||||
innov_gate,
|
||||
aid_src);
|
||||
|
||||
// update the bias estimator before updating the main filter but after
|
||||
// using its current state to compute the vertical position innovation
|
||||
if (gps_checks_passing && !gps_checks_failing
|
||||
&& PX4_ISFINITE(measurement) && PX4_ISFINITE(measurement_var)
|
||||
) {
|
||||
const float noise = sqrtf(measurement_var);
|
||||
bias_est.setMaxStateNoise(noise);
|
||||
bias_est.setProcessNoiseSpectralDensity(_params.gps_hgt_bias_nsd);
|
||||
bias_est.fuseBias(measurement - (-_state.pos(2)), measurement_var + P(9, 9));
|
||||
}
|
||||
|
||||
// determine if we should use GNSS height aiding
|
||||
const bool continuing_conditions_passing = (_params.gnss_ctrl & GnssCtrl::VPOS)
|
||||
&& PX4_ISFINITE(gps_sample.hgt)
|
||||
&& _NED_origin_initialised
|
||||
&& _gps_checks_passed;
|
||||
|
||||
const bool starting_conditions_passing = continuing_conditions_passing
|
||||
&& _gps_checks_passed
|
||||
&& gps_checks_passing
|
||||
&& !gps_checks_failing
|
||||
&& isNewestSampleRecent(_time_last_gps_buffer_push, 2 * GPS_MAX_INTERVAL);
|
||||
|
||||
if (_control_status.flags.gps_hgt) {
|
||||
if (continuing_conditions_passing) {
|
||||
/* fuseGpsHgt(); */ // Done in fuseGpsPos
|
||||
aid_src.fusion_enabled = true;
|
||||
|
||||
const bool is_fusion_failing = isTimedOut(_aid_src_gnss_pos.time_last_fuse[2], _params.hgt_fusion_timeout_max);
|
||||
if (continuing_conditions_passing) {
|
||||
|
||||
fuseVerticalPosition(aid_src);
|
||||
|
||||
const bool is_fusion_failing = isTimedOut(aid_src.time_last_fuse, _params.hgt_fusion_timeout_max);
|
||||
|
||||
if (isHeightResetRequired()) {
|
||||
// All height sources are failing
|
||||
|
@ -95,7 +137,7 @@ void Ekf::startGpsHgtFusion(const gpsSample &gps_sample)
|
|||
_gps_hgt_b_est.setBias(_state.pos(2) + (gps_sample.hgt - getEkfGlobalOriginAltitude()));
|
||||
|
||||
// Reset the timeout value here because the fusion isn't done at the same place and would immediately trigger a timeout
|
||||
_aid_src_gnss_pos.time_last_fuse[2] = _imu_sample_delayed.time_us;
|
||||
_aid_src_gnss_hgt.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
}
|
||||
|
||||
_control_status.flags.gps_hgt = true;
|
||||
|
@ -118,7 +160,7 @@ void Ekf::resetHeightToGps(const gpsSample &gps_sample)
|
|||
_rng_hgt_b_est.setBias(_rng_hgt_b_est.getBias() + _state_reset_status.posD_change);
|
||||
_ev_hgt_b_est.setBias(_ev_hgt_b_est.getBias() - _state_reset_status.posD_change);
|
||||
|
||||
_aid_src_gnss_pos.time_last_fuse[2] = _imu_sample_delayed.time_us;
|
||||
_aid_src_gnss_hgt.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
}
|
||||
|
||||
void Ekf::stopGpsHgtFusion()
|
||||
|
|
|
@ -52,22 +52,42 @@ void Ekf::controlGpsFusion()
|
|||
const gpsSample &gps_sample{_gps_sample_delayed};
|
||||
|
||||
updateGpsYaw(gps_sample);
|
||||
updateGpsVel(gps_sample);
|
||||
updateGpsPos(gps_sample);
|
||||
|
||||
const bool gps_checks_passing = isTimedOut(_last_gps_fail_us, (uint64_t)5e6);
|
||||
const bool gps_checks_failing = isTimedOut(_last_gps_pass_us, (uint64_t)5e6);
|
||||
|
||||
controlGpsYawFusion(gps_sample, gps_checks_passing, gps_checks_failing);
|
||||
|
||||
// GNSS velocity
|
||||
const Vector3f velocity{gps_sample.vel};
|
||||
const float vel_var = sq(gps_sample.sacc);
|
||||
const Vector3f vel_obs_var{vel_var, vel_var, vel_var * sq(1.5f)};
|
||||
updateVelocityAidSrcStatus(gps_sample.time_us, velocity, vel_obs_var, fmaxf(_params.gps_vel_innov_gate, 1.f), _aid_src_gnss_vel);
|
||||
_aid_src_gnss_vel.fusion_enabled = (_params.gnss_ctrl & GnssCtrl::VEL);
|
||||
|
||||
// GNSS position
|
||||
const float pos_var_lower_limit = fmaxf(_params.gps_pos_noise, 0.01f);
|
||||
float pos_var = sq(fmaxf(gps_sample.hacc, pos_var_lower_limit));
|
||||
|
||||
if (!isOtherSourceOfHorizontalAidingThan(_control_status.flags.gps)) {
|
||||
// if we are not using another source of aiding, then we are reliant on the GPS
|
||||
// observations to constrain attitude errors and must limit the observation noise value.
|
||||
float upper_limit = fmaxf(_params.pos_noaid_noise, pos_var_lower_limit);
|
||||
pos_var = fminf(pos_var, upper_limit);
|
||||
}
|
||||
|
||||
updateHorizontalPositionAidSrcStatus(gps_sample.time_us, gps_sample.pos, Vector2f(pos_var, pos_var), fmaxf(_params.gps_pos_innov_gate, 1.f), _aid_src_gnss_pos);
|
||||
_aid_src_gnss_pos.fusion_enabled = (_params.gnss_ctrl & GnssCtrl::HPOS);
|
||||
|
||||
// update GSF yaw estimator velocity (basic sanity check on GNSS velocity data)
|
||||
if (gps_checks_passing && !gps_checks_failing) {
|
||||
_yawEstimator.setVelocity(_gps_sample_delayed.vel.xy(), _gps_sample_delayed.sacc);
|
||||
_yawEstimator.setVelocity(velocity.xy(), gps_sample.sacc);
|
||||
}
|
||||
|
||||
// Determine if we should use GPS aiding for velocity and horizontal position
|
||||
// To start using GPS we need angular alignment completed, the local NED origin set and GPS data that has not failed checks recently
|
||||
const bool mandatory_conditions_passing = _control_status.flags.tilt_align
|
||||
const bool mandatory_conditions_passing = ((_params.gnss_ctrl & GnssCtrl::HPOS) || (_params.gnss_ctrl & GnssCtrl::VEL))
|
||||
&& _control_status.flags.tilt_align
|
||||
&& _control_status.flags.yaw_align
|
||||
&& _NED_origin_initialised;
|
||||
|
||||
|
@ -79,16 +99,11 @@ void Ekf::controlGpsFusion()
|
|||
if (continuing_conditions_passing
|
||||
|| !isOtherSourceOfHorizontalAidingThan(_control_status.flags.gps)) {
|
||||
|
||||
if (_params.gnss_ctrl & GnssCtrl::VEL) {
|
||||
fuseGpsVel();
|
||||
}
|
||||
|
||||
if ((_params.gnss_ctrl & GnssCtrl::HPOS) || (_params.gnss_ctrl & GnssCtrl::VPOS)) {
|
||||
fuseGpsPos();
|
||||
}
|
||||
fuseVelocity(_aid_src_gnss_vel);
|
||||
fuseHorizontalPosition(_aid_src_gnss_pos);
|
||||
|
||||
if (shouldResetGpsFusion()) {
|
||||
const bool was_gps_signal_lost = isTimedOut(_time_prev_gps_us, 1000000);
|
||||
const bool was_gps_signal_lost = isTimedOut(_time_prev_gps_us, 1'000'000);
|
||||
|
||||
/* A reset is not performed when getting GPS back after a significant period of no data
|
||||
* because the timeout could have been caused by bad GPS.
|
||||
|
@ -98,7 +113,7 @@ void Ekf::controlGpsFusion()
|
|||
&& _control_status.flags.in_air
|
||||
&& !was_gps_signal_lost
|
||||
&& _ekfgsf_yaw_reset_count < _params.EKFGSF_reset_count_limit
|
||||
&& isTimedOut(_ekfgsf_yaw_reset_time, 5000000)) {
|
||||
&& isTimedOut(_ekfgsf_yaw_reset_time, 5'000'000)) {
|
||||
// The minimum time interval between resets to the EKF-GSF estimate is limited to allow the EKF-GSF time
|
||||
// to improve its estimate if the previous reset was not successful.
|
||||
if (resetYawToEKFGSF()) {
|
||||
|
@ -116,8 +131,8 @@ void Ekf::controlGpsFusion()
|
|||
ECL_WARN("GPS fusion timeout - resetting");
|
||||
}
|
||||
|
||||
resetVelocityToGps(_gps_sample_delayed);
|
||||
resetHorizontalPositionToGps(_gps_sample_delayed);
|
||||
resetVelocityToGps(gps_sample);
|
||||
resetHorizontalPositionToGps(gps_sample);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
void Ekf::updateGpsYaw(const gpsSample &gps_sample)
|
||||
{
|
||||
auto &gps_yaw = _aid_src_gnss_yaw;
|
||||
resetEstimatorAidStatusFlags(gps_yaw);
|
||||
resetEstimatorAidStatus(gps_yaw);
|
||||
|
||||
if (PX4_ISFINITE(gps_sample.yaw)) {
|
||||
// initially populate for estimator_aid_src_gnss_yaw logging
|
||||
|
@ -64,155 +64,3 @@ void Ekf::updateGpsYaw(const gpsSample &gps_sample)
|
|||
gps_yaw.timestamp_sample = gps_sample.time_us;
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::updateGpsVel(const gpsSample &gps_sample)
|
||||
{
|
||||
auto &gps_vel = _aid_src_gnss_vel;
|
||||
resetEstimatorAidStatus(gps_vel);
|
||||
|
||||
const float vel_var = sq(gps_sample.sacc);
|
||||
const Vector3f obs_var{vel_var, vel_var, vel_var * sq(1.5f)};
|
||||
|
||||
// innovation gate size
|
||||
const float innov_gate = fmaxf(_params.gps_vel_innov_gate, 1.f);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
gps_vel.observation[i] = gps_sample.vel(i);
|
||||
gps_vel.observation_variance[i] = obs_var(i);
|
||||
|
||||
gps_vel.innovation[i] = _state.vel(i) - gps_sample.vel(i);
|
||||
gps_vel.innovation_variance[i] = P(4 + i, 4 + i) + obs_var(i);
|
||||
}
|
||||
|
||||
setEstimatorAidStatusTestRatio(gps_vel, innov_gate);
|
||||
|
||||
// vz special case if there is bad vertical acceleration data, then don't reject measurement,
|
||||
// but limit innovation to prevent spikes that could destabilise the filter
|
||||
if (_fault_status.flags.bad_acc_vertical && gps_vel.innovation_rejected[2]) {
|
||||
const float innov_limit = innov_gate * sqrtf(gps_vel.innovation_variance[2]);
|
||||
gps_vel.innovation[2] = math::constrain(gps_vel.innovation[2], -innov_limit, innov_limit);
|
||||
gps_vel.innovation_rejected[2] = false;
|
||||
}
|
||||
|
||||
gps_vel.timestamp_sample = gps_sample.time_us;
|
||||
}
|
||||
|
||||
void Ekf::updateGpsPos(const gpsSample &gps_sample)
|
||||
{
|
||||
auto &gps_pos = _aid_src_gnss_pos;
|
||||
resetEstimatorAidStatus(gps_pos);
|
||||
|
||||
const float height_measurement = gps_sample.hgt - getEkfGlobalOriginAltitude();
|
||||
const float height_measurement_var = getGpsHeightVariance(gps_sample);
|
||||
|
||||
Vector3f position;
|
||||
position(0) = gps_sample.pos(0);
|
||||
position(1) = gps_sample.pos(1);
|
||||
|
||||
// vertical position - gps measurement has opposite sign to earth z axis
|
||||
position(2) = -(height_measurement - _gps_hgt_b_est.getBias());
|
||||
|
||||
const float lower_limit = fmaxf(_params.gps_pos_noise, 0.01f);
|
||||
|
||||
Vector3f obs_var;
|
||||
|
||||
if (isOtherSourceOfHorizontalAidingThan(_control_status.flags.gps)) {
|
||||
// if we are using other sources of aiding, then relax the upper observation
|
||||
// noise limit which prevents bad GPS perturbing the position estimate
|
||||
obs_var(0) = obs_var(1) = sq(fmaxf(gps_sample.hacc, lower_limit));
|
||||
|
||||
} else {
|
||||
// if we are not using another source of aiding, then we are reliant on the GPS
|
||||
// observations to constrain attitude errors and must limit the observation noise value.
|
||||
float upper_limit = fmaxf(_params.pos_noaid_noise, lower_limit);
|
||||
obs_var(0) = obs_var(1) = sq(math::constrain(gps_sample.hacc, lower_limit, upper_limit));
|
||||
}
|
||||
|
||||
obs_var(2) = height_measurement_var + _gps_hgt_b_est.getBiasVar();
|
||||
|
||||
// innovation gate size
|
||||
float innov_gate = fmaxf(_params.gps_pos_innov_gate, 1.f);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
gps_pos.observation[i] = position(i);
|
||||
gps_pos.observation_variance[i] = obs_var(i);
|
||||
|
||||
gps_pos.innovation[i] = _state.pos(i) - position(i);
|
||||
gps_pos.innovation_variance[i] = P(7 + i, 7 + i) + obs_var(i);
|
||||
}
|
||||
|
||||
setEstimatorAidStatusTestRatio(gps_pos, innov_gate);
|
||||
|
||||
// z special case if there is bad vertical acceleration data, then don't reject measurement,
|
||||
// but limit innovation to prevent spikes that could destabilise the filter
|
||||
if (_fault_status.flags.bad_acc_vertical && gps_pos.innovation_rejected[2]) {
|
||||
const float innov_limit = innov_gate * sqrtf(gps_pos.innovation_variance[2]);
|
||||
gps_pos.innovation[2] = math::constrain(gps_pos.innovation[2], -innov_limit, innov_limit);
|
||||
gps_pos.innovation_rejected[2] = false;
|
||||
}
|
||||
|
||||
gps_pos.timestamp_sample = gps_sample.time_us;
|
||||
|
||||
// update the bias estimator before updating the main filter but after
|
||||
// using its current state to compute the vertical position innovation
|
||||
_gps_hgt_b_est.setMaxStateNoise(height_measurement_var);
|
||||
_gps_hgt_b_est.setProcessNoiseSpectralDensity(_params.gps_hgt_bias_nsd);
|
||||
_gps_hgt_b_est.fuseBias(height_measurement - (-_state.pos(2)), height_measurement_var + P(9, 9));
|
||||
}
|
||||
|
||||
void Ekf::fuseGpsVel()
|
||||
{
|
||||
// velocity
|
||||
auto &gps_vel = _aid_src_gnss_vel;
|
||||
|
||||
// vx & vy
|
||||
gps_vel.fusion_enabled[0] = true;
|
||||
gps_vel.fusion_enabled[1] = true;
|
||||
|
||||
if (!gps_vel.innovation_rejected[0] && !gps_vel.innovation_rejected[1]) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (fuseVelPosHeight(gps_vel.innovation[i], gps_vel.innovation_variance[i], i)) {
|
||||
gps_vel.fused[i] = true;
|
||||
gps_vel.time_last_fuse[i] = _imu_sample_delayed.time_us;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// vz
|
||||
gps_vel.fusion_enabled[2] = true;
|
||||
|
||||
if (gps_vel.fusion_enabled[2] && !gps_vel.innovation_rejected[2]) {
|
||||
if (fuseVelPosHeight(gps_vel.innovation[2], gps_vel.innovation_variance[2], 2)) {
|
||||
gps_vel.fused[2] = true;
|
||||
gps_vel.time_last_fuse[2] = _imu_sample_delayed.time_us;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::fuseGpsPos()
|
||||
{
|
||||
auto &gps_pos = _aid_src_gnss_pos;
|
||||
|
||||
// x & y
|
||||
gps_pos.fusion_enabled[0] = true;
|
||||
gps_pos.fusion_enabled[1] = true;
|
||||
|
||||
if (!gps_pos.innovation_rejected[0] && !gps_pos.innovation_rejected[1]) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (fuseVelPosHeight(gps_pos.innovation[i], gps_pos.innovation_variance[i], 3 + i)) {
|
||||
gps_pos.fused[i] = true;
|
||||
gps_pos.time_last_fuse[i] = _imu_sample_delayed.time_us;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// z
|
||||
gps_pos.fusion_enabled[2] = _control_status.flags.gps_hgt;
|
||||
|
||||
if (gps_pos.fusion_enabled[2] && !gps_pos.innovation_rejected[2]) {
|
||||
if (fuseVelPosHeight(gps_pos.innovation[2], gps_pos.innovation_variance[2], 5)) {
|
||||
gps_pos.fused[2] = true;
|
||||
gps_pos.time_last_fuse[2] = _imu_sample_delayed.time_us;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -178,7 +178,7 @@ Likelihood Ekf::estimateInertialNavFallingLikelihood() const
|
|||
}
|
||||
|
||||
if (_control_status.flags.gps_hgt) {
|
||||
checks[1] = {ReferenceType::GNSS, _aid_src_gnss_pos.innovation[2], _aid_src_gnss_pos.innovation_variance[2]};
|
||||
checks[1] = {ReferenceType::GNSS, _aid_src_gnss_hgt.innovation, _aid_src_gnss_hgt.innovation_variance};
|
||||
}
|
||||
|
||||
if (_control_status.flags.gps) {
|
||||
|
@ -190,11 +190,11 @@ Likelihood Ekf::estimateInertialNavFallingLikelihood() const
|
|||
}
|
||||
|
||||
if (_control_status.flags.ev_hgt) {
|
||||
checks[4] = {ReferenceType::GROUND, _ev_pos_innov(2), _ev_pos_innov_var(2)};
|
||||
checks[4] = {ReferenceType::GROUND, _aid_src_ev_hgt.innovation, _aid_src_ev_hgt.innovation_variance};
|
||||
}
|
||||
|
||||
if (_control_status.flags.ev_vel) {
|
||||
checks[5] = {ReferenceType::GROUND, _ev_vel_innov(2), _ev_vel_innov_var(2)};
|
||||
checks[5] = {ReferenceType::GROUND, _aid_src_ev_vel.innovation[2], _aid_src_ev_vel.innovation_variance[2]};
|
||||
}
|
||||
|
||||
// Compute the check based on innovation ratio for all the sources
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
void Ekf::updateBaroHgt(const baroSample &baro_sample, estimator_aid_source_1d_s &baro_hgt)
|
||||
{
|
||||
// reset flags
|
||||
resetEstimatorAidStatusFlags(baro_hgt);
|
||||
resetEstimatorAidStatus(baro_hgt);
|
||||
|
||||
// innovation gate size
|
||||
const float innov_gate = fmaxf(_params.baro_innov_gate, 1.f);
|
||||
|
@ -109,7 +109,7 @@ void Ekf::fuseBaroHgt(estimator_aid_source_1d_s &baro_hgt)
|
|||
void Ekf::updateRngHgt(estimator_aid_source_1d_s &rng_hgt)
|
||||
{
|
||||
// reset flags
|
||||
resetEstimatorAidStatusFlags(rng_hgt);
|
||||
resetEstimatorAidStatus(rng_hgt);
|
||||
|
||||
// measurement variance - user parameter defined
|
||||
const float measurement_var = fmaxf(sq(_params.range_noise) + sq(_params.range_noise_scaler * _range_sensor.getDistBottom()), 0.01f);
|
||||
|
@ -174,12 +174,13 @@ void Ekf::fuseEvHgt()
|
|||
// calculate the innovation assuming the external vision observation is in local NED frame
|
||||
const float obs = measurement - bias;
|
||||
const float obs_var = measurement_var + bias_var;
|
||||
_ev_pos_innov(2) = _state.pos(2) - obs;
|
||||
|
||||
// innovation gate size
|
||||
float innov_gate = fmaxf(_params.ev_pos_innov_gate, 1.f);
|
||||
|
||||
// _ev_pos_test_ratio(1) is the vertical test ratio
|
||||
fuseVerticalPosition(_ev_pos_innov(2), innov_gate, obs_var,
|
||||
_ev_pos_innov_var(2), _ev_pos_test_ratio(1));
|
||||
updateVerticalPositionAidSrcStatus(_ev_sample_delayed.time_us, obs, obs_var, innov_gate, _aid_src_ev_hgt);
|
||||
|
||||
_aid_src_ev_hgt.fusion_enabled = _control_status.flags.ev_hgt;
|
||||
|
||||
fuseVerticalPosition(_aid_src_ev_hgt);
|
||||
}
|
||||
|
|
|
@ -171,25 +171,25 @@ bool Ekf::fuseMag(const Vector3f &mag, estimator_aid_source_3d_s &aid_src_mag, b
|
|||
aid_src_mag.observation[i] = mag_observation(i);
|
||||
aid_src_mag.observation_variance[i] = R_MAG;
|
||||
aid_src_mag.innovation[i] = mag_innov(i);
|
||||
aid_src_mag.fusion_enabled[i] = _control_status.flags.mag_3D && update_all_states;
|
||||
}
|
||||
|
||||
aid_src_mag.fusion_enabled = _control_status.flags.mag_3D && update_all_states;
|
||||
|
||||
// do not use the synthesized measurement for the magnetomter Z component for 3D fusion
|
||||
if (_control_status.flags.synthetic_mag_z) {
|
||||
aid_src_mag.innovation[2] = 0.0f;
|
||||
aid_src_mag.innovation_rejected[2] = false;
|
||||
}
|
||||
|
||||
const float innov_gate = math::max(_params.mag_innov_gate, 1.f);
|
||||
setEstimatorAidStatusTestRatio(aid_src_mag, innov_gate);
|
||||
|
||||
// Perform an innovation consistency check and report the result
|
||||
_innov_check_fail_status.flags.reject_mag_x = aid_src_mag.innovation_rejected[0];
|
||||
_innov_check_fail_status.flags.reject_mag_y = aid_src_mag.innovation_rejected[1];
|
||||
_innov_check_fail_status.flags.reject_mag_z = aid_src_mag.innovation_rejected[2];
|
||||
_innov_check_fail_status.flags.reject_mag_x = (aid_src_mag.test_ratio[0] > 1.f);
|
||||
_innov_check_fail_status.flags.reject_mag_y = (aid_src_mag.test_ratio[1] > 1.f);
|
||||
_innov_check_fail_status.flags.reject_mag_z = (aid_src_mag.test_ratio[2] > 1.f);
|
||||
|
||||
// if any axis fails, abort the mag fusion
|
||||
if (aid_src_mag.innovation_rejected[0] || aid_src_mag.innovation_rejected[1] || aid_src_mag.innovation_rejected[2]) {
|
||||
if (aid_src_mag.innovation_rejected) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -197,6 +197,8 @@ bool Ekf::fuseMag(const Vector3f &mag, estimator_aid_source_3d_s &aid_src_mag, b
|
|||
SparseVector24f<0,1,2,3,16,17,18,19,20,21> Hfusion;
|
||||
Vector24f Kfusion;
|
||||
|
||||
bool fused[3] {false, false, false};
|
||||
|
||||
// update the states and covariance using sequential fusion of the magnetometer components
|
||||
for (uint8_t index = 0; index <= 2; index++) {
|
||||
|
||||
|
@ -397,37 +399,27 @@ bool Ekf::fuseMag(const Vector3f &mag, estimator_aid_source_3d_s &aid_src_mag, b
|
|||
Kfusion(21) = HKZ23*HKZ24;
|
||||
}
|
||||
|
||||
const bool is_fused = measurementUpdate(Kfusion, Hfusion, aid_src_mag.innovation[index]);
|
||||
|
||||
if (is_fused) {
|
||||
aid_src_mag.fused[index] = true;
|
||||
aid_src_mag.time_last_fuse[index] = _imu_sample_delayed.time_us;
|
||||
if (measurementUpdate(Kfusion, Hfusion, aid_src_mag.innovation[index])) {
|
||||
fused[index] = true;
|
||||
limitDeclination();
|
||||
|
||||
} else {
|
||||
aid_src_mag.fused[index] = false;
|
||||
}
|
||||
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
_fault_status.flags.bad_mag_x = !is_fused;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
_fault_status.flags.bad_mag_y = !is_fused;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
_fault_status.flags.bad_mag_z = !is_fused;
|
||||
break;
|
||||
}
|
||||
|
||||
if (is_fused) {
|
||||
limitDeclination();
|
||||
fused[index] = false;
|
||||
}
|
||||
}
|
||||
|
||||
return aid_src_mag.fused[0] && aid_src_mag.fused[1] && aid_src_mag.fused[2];
|
||||
_fault_status.flags.bad_mag_x = !fused[0];
|
||||
_fault_status.flags.bad_mag_y = !fused[1];
|
||||
_fault_status.flags.bad_mag_z = !fused[2];
|
||||
|
||||
if (fused[0] && fused[1] && fused[2]) {
|
||||
aid_src_mag.fused = true;
|
||||
aid_src_mag.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
return true;
|
||||
}
|
||||
|
||||
aid_src_mag.fused = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
// update quaternion states and covariances using the yaw innovation and yaw observation variance
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
void Ekf::updateSideslip(estimator_aid_source_1d_s &sideslip) const
|
||||
{
|
||||
// reset flags
|
||||
resetEstimatorAidStatusFlags(sideslip);
|
||||
resetEstimatorAidStatus(sideslip);
|
||||
|
||||
const float R = sq(_params.beta_noise); // observation noise variance
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
|
||||
/**
|
||||
* @file vel_pos_fusion.cpp
|
||||
* Function for fusing gps and baro measurements/
|
||||
*
|
||||
* @author Roman Bast <bapstroman@gmail.com>
|
||||
* @author Siddharth Bharat Purohit <siddharthbharatpurohit@gmail.com>
|
||||
|
@ -44,213 +43,148 @@
|
|||
#include <mathlib/mathlib.h>
|
||||
#include "ekf.h"
|
||||
|
||||
bool Ekf::fuseHorizontalVelocity(const Vector3f &innov, const float innov_gate, const Vector3f &obs_var,
|
||||
Vector3f &innov_var, Vector2f &test_ratio)
|
||||
void Ekf::updateVelocityAidSrcStatus(const uint64_t &time_us, const Vector2f &obs, const Vector2f &obs_var,
|
||||
const float innov_gate, estimator_aid_source_2d_s &aid_src) const
|
||||
{
|
||||
innov_var(0) = P(4, 4) + obs_var(0);
|
||||
innov_var(1) = P(5, 5) + obs_var(1);
|
||||
test_ratio(0) = fmaxf(sq(innov(0)) / (sq(innov_gate) * innov_var(0)),
|
||||
sq(innov(1)) / (sq(innov_gate) * innov_var(1)));
|
||||
resetEstimatorAidStatus(aid_src);
|
||||
|
||||
const bool innov_check_pass = (test_ratio(0) <= 1.0f);
|
||||
for (int i = 0; i < 2; i++) {
|
||||
aid_src.observation[i] = obs(i);
|
||||
aid_src.innovation[i] = _state.vel(i) - aid_src.observation[i];
|
||||
|
||||
if (innov_check_pass) {
|
||||
_innov_check_fail_status.flags.reject_hor_vel = false;
|
||||
|
||||
bool fuse_vx = fuseVelPosHeight(innov(0), innov_var(0), 0);
|
||||
bool fuse_vy = fuseVelPosHeight(innov(1), innov_var(1), 1);
|
||||
|
||||
return fuse_vx && fuse_vy;
|
||||
|
||||
} else {
|
||||
_innov_check_fail_status.flags.reject_hor_vel = true;
|
||||
return false;
|
||||
aid_src.observation_variance[i] = obs_var(i);
|
||||
aid_src.innovation_variance[i] = P(4 + i, 4 + i) + aid_src.observation_variance[i];
|
||||
}
|
||||
|
||||
setEstimatorAidStatusTestRatio(aid_src, innov_gate);
|
||||
|
||||
aid_src.timestamp_sample = time_us;
|
||||
}
|
||||
|
||||
bool Ekf::fuseVerticalVelocity(const Vector3f &innov, const float innov_gate, const Vector3f &obs_var,
|
||||
Vector3f &innov_var, Vector2f &test_ratio)
|
||||
void Ekf::updateVelocityAidSrcStatus(const uint64_t &time_us, const Vector3f &obs, const Vector3f &obs_var,
|
||||
const float innov_gate, estimator_aid_source_3d_s &aid_src) const
|
||||
{
|
||||
innov_var(2) = P(6, 6) + obs_var(2);
|
||||
test_ratio(1) = sq(innov(2)) / (sq(innov_gate) * innov_var(2));
|
||||
_vert_vel_innov_ratio = innov(2) / sqrtf(innov_var(2));
|
||||
_vert_vel_fuse_time_us = _imu_sample_delayed.time_us;
|
||||
bool innov_check_pass = (test_ratio(1) <= 1.0f);
|
||||
|
||||
// if there is bad vertical acceleration data, then don't reject measurement,
|
||||
// but limit innovation to prevent spikes that could destabilise the filter
|
||||
float innovation;
|
||||
|
||||
if (_fault_status.flags.bad_acc_vertical && !innov_check_pass) {
|
||||
const float innov_limit = innov_gate * sqrtf(innov_var(2));
|
||||
innovation = math::constrain(innov(2), -innov_limit, innov_limit);
|
||||
innov_check_pass = true;
|
||||
|
||||
} else {
|
||||
innovation = innov(2);
|
||||
}
|
||||
|
||||
if (innov_check_pass) {
|
||||
_innov_check_fail_status.flags.reject_ver_vel = false;
|
||||
|
||||
return fuseVelPosHeight(innovation, innov_var(2), 2);
|
||||
|
||||
} else {
|
||||
_innov_check_fail_status.flags.reject_ver_vel = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool Ekf::fuseHorizontalPosition(const Vector3f &innov, const float innov_gate, const Vector3f &obs_var,
|
||||
Vector3f &innov_var, Vector2f &test_ratio)
|
||||
{
|
||||
|
||||
innov_var(0) = P(7, 7) + obs_var(0);
|
||||
innov_var(1) = P(8, 8) + obs_var(1);
|
||||
test_ratio(0) = fmaxf(sq(innov(0)) / (sq(innov_gate) * innov_var(0)),
|
||||
sq(innov(1)) / (sq(innov_gate) * innov_var(1)));
|
||||
|
||||
const bool innov_check_pass = test_ratio(0) <= 1.0f;
|
||||
|
||||
if (innov_check_pass) {
|
||||
_innov_check_fail_status.flags.reject_hor_pos = false;
|
||||
|
||||
bool fuse_x = fuseVelPosHeight(innov(0), innov_var(0), 3);
|
||||
bool fuse_y = fuseVelPosHeight(innov(1), innov_var(1), 4);
|
||||
|
||||
return fuse_x && fuse_y;
|
||||
|
||||
} else {
|
||||
_innov_check_fail_status.flags.reject_hor_pos = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool Ekf::fuseVerticalPosition(const float innov, const float innov_gate, const float obs_var,
|
||||
float &innov_var, float &test_ratio)
|
||||
{
|
||||
innov_var = P(9, 9) + obs_var;
|
||||
test_ratio = sq(innov) / (sq(innov_gate) * innov_var);
|
||||
_vert_pos_innov_ratio = innov / sqrtf(innov_var);
|
||||
_vert_pos_fuse_attempt_time_us = _imu_sample_delayed.time_us;
|
||||
bool innov_check_pass = test_ratio <= 1.0f;
|
||||
|
||||
// if there is bad vertical acceleration data, then don't reject measurement,
|
||||
// but limit innovation to prevent spikes that could destabilise the filter
|
||||
float innovation;
|
||||
|
||||
if (_fault_status.flags.bad_acc_vertical && !innov_check_pass) {
|
||||
const float innov_limit = innov_gate * sqrtf(innov_var);
|
||||
innovation = math::constrain(innov, -innov_limit, innov_limit);
|
||||
innov_check_pass = true;
|
||||
|
||||
} else {
|
||||
innovation = innov;
|
||||
}
|
||||
|
||||
if (innov_check_pass) {
|
||||
_innov_check_fail_status.flags.reject_ver_pos = false;
|
||||
|
||||
return fuseVelPosHeight(innovation, innov_var, 5);
|
||||
|
||||
} else {
|
||||
_innov_check_fail_status.flags.reject_ver_pos = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::updateVelocityAidSrcStatus(const uint64_t& sample_time_us, const Vector3f& velocity, const Vector3f& obs_var, const float innov_gate, estimator_aid_source_3d_s& vel_aid_src) const
|
||||
{
|
||||
resetEstimatorAidStatus(vel_aid_src);
|
||||
resetEstimatorAidStatus(aid_src);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
vel_aid_src.observation[i] = velocity(i);
|
||||
vel_aid_src.observation_variance[i] = obs_var(i);
|
||||
aid_src.observation[i] = obs(i);
|
||||
aid_src.innovation[i] = _state.vel(i) - aid_src.observation[i];
|
||||
|
||||
vel_aid_src.innovation[i] = _state.vel(i) - velocity(i);
|
||||
vel_aid_src.innovation_variance[i] = P(4 + i, 4 + i) + obs_var(i);
|
||||
aid_src.observation_variance[i] = obs_var(i);
|
||||
aid_src.innovation_variance[i] = P(4 + i, 4 + i) + aid_src.observation_variance[i];
|
||||
}
|
||||
|
||||
setEstimatorAidStatusTestRatio(vel_aid_src, innov_gate);
|
||||
setEstimatorAidStatusTestRatio(aid_src, innov_gate);
|
||||
|
||||
// vz special case if there is bad vertical acceleration data, then don't reject measurement,
|
||||
// but limit innovation to prevent spikes that could destabilise the filter
|
||||
if (_fault_status.flags.bad_acc_vertical && vel_aid_src.innovation_rejected[2]) {
|
||||
const float innov_limit = innov_gate * sqrtf(vel_aid_src.innovation_variance[2]);
|
||||
vel_aid_src.innovation[2] = math::constrain(vel_aid_src.innovation[2], -innov_limit, innov_limit);
|
||||
vel_aid_src.innovation_rejected[2] = false;
|
||||
if (_fault_status.flags.bad_acc_vertical && aid_src.innovation_rejected) {
|
||||
const float innov_limit = innov_gate * sqrtf(aid_src.innovation_variance[2]);
|
||||
aid_src.innovation[2] = math::constrain(aid_src.innovation[2], -innov_limit, innov_limit);
|
||||
aid_src.innovation_rejected = false;
|
||||
}
|
||||
|
||||
vel_aid_src.timestamp_sample = sample_time_us;
|
||||
aid_src.timestamp_sample = time_us;
|
||||
}
|
||||
|
||||
void Ekf::updatePositionAidSrcStatus(const uint64_t& sample_time_us, const Vector3f& position, const Vector3f& obs_var, const float innov_gate, estimator_aid_source_3d_s& pos_aid_src) const
|
||||
void Ekf::updateVerticalPositionAidSrcStatus(const uint64_t &time_us, const float obs, const float obs_var,
|
||||
const float innov_gate, estimator_aid_source_1d_s &aid_src) const
|
||||
{
|
||||
resetEstimatorAidStatus(pos_aid_src);
|
||||
resetEstimatorAidStatus(aid_src);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
pos_aid_src.observation[i] = position(i);
|
||||
pos_aid_src.observation_variance[i] = obs_var(i);
|
||||
aid_src.observation = obs;
|
||||
aid_src.innovation = _state.pos(2) - aid_src.observation;
|
||||
|
||||
pos_aid_src.innovation[i] = _state.pos(i) - position(i);
|
||||
pos_aid_src.innovation_variance[i] = P(7 + i, 7 + i) + obs_var(i);
|
||||
}
|
||||
aid_src.observation_variance = obs_var;
|
||||
aid_src.innovation_variance = P(9, 9) + aid_src.observation_variance;
|
||||
|
||||
setEstimatorAidStatusTestRatio(pos_aid_src, innov_gate);
|
||||
setEstimatorAidStatusTestRatio(aid_src, innov_gate);
|
||||
|
||||
// z special case if there is bad vertical acceleration data, then don't reject measurement,
|
||||
// but limit innovation to prevent spikes that could destabilise the filter
|
||||
if (_fault_status.flags.bad_acc_vertical && pos_aid_src.innovation_rejected[2]) {
|
||||
const float innov_limit = innov_gate * sqrtf(pos_aid_src.innovation_variance[2]);
|
||||
pos_aid_src.innovation[2] = math::constrain(pos_aid_src.innovation[2], -innov_limit, innov_limit);
|
||||
pos_aid_src.innovation_rejected[2] = false;
|
||||
if (_fault_status.flags.bad_acc_vertical && aid_src.innovation_rejected) {
|
||||
const float innov_limit = innov_gate * sqrtf(aid_src.innovation_variance);
|
||||
aid_src.innovation = math::constrain(aid_src.innovation, -innov_limit, innov_limit);
|
||||
aid_src.innovation_rejected = false;
|
||||
}
|
||||
|
||||
pos_aid_src.timestamp_sample = sample_time_us;
|
||||
aid_src.timestamp_sample = time_us;
|
||||
}
|
||||
|
||||
void Ekf::fuseVelocity(estimator_aid_source_3d_s& vel_aid_src)
|
||||
void Ekf::updateHorizontalPositionAidSrcStatus(const uint64_t &time_us, const Vector2f &obs, const Vector2f &obs_var,
|
||||
const float innov_gate, estimator_aid_source_2d_s &aid_src) const
|
||||
{
|
||||
// vx & vy
|
||||
if (vel_aid_src.fusion_enabled[0] && !vel_aid_src.innovation_rejected[0]
|
||||
&& vel_aid_src.fusion_enabled[1] && !vel_aid_src.innovation_rejected[1]
|
||||
) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (fuseVelPosHeight(vel_aid_src.innovation[i], vel_aid_src.innovation_variance[i], i)) {
|
||||
vel_aid_src.fused[i] = true;
|
||||
vel_aid_src.time_last_fuse[i] = _imu_sample_delayed.time_us;
|
||||
}
|
||||
}
|
||||
resetEstimatorAidStatus(aid_src);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
aid_src.observation[i] = obs(i);
|
||||
aid_src.innovation[i] = _state.pos(i) - aid_src.observation[i];
|
||||
|
||||
aid_src.observation_variance[i] = obs_var(i);
|
||||
aid_src.innovation_variance[i] = P(7 + i, 7 + i) + aid_src.observation_variance[i];
|
||||
}
|
||||
|
||||
// vz
|
||||
if (vel_aid_src.fusion_enabled[2] && !vel_aid_src.innovation_rejected[2]) {
|
||||
if (fuseVelPosHeight(vel_aid_src.innovation[2], vel_aid_src.innovation_variance[2], 2)) {
|
||||
vel_aid_src.fused[2] = true;
|
||||
vel_aid_src.time_last_fuse[2] = _imu_sample_delayed.time_us;
|
||||
setEstimatorAidStatusTestRatio(aid_src, innov_gate);
|
||||
|
||||
aid_src.timestamp_sample = time_us;
|
||||
}
|
||||
|
||||
void Ekf::fuseVelocity(estimator_aid_source_2d_s &aid_src)
|
||||
{
|
||||
if (aid_src.fusion_enabled && !aid_src.innovation_rejected) {
|
||||
// vx, vy
|
||||
if (fuseVelPosHeight(aid_src.innovation[0], aid_src.innovation_variance[0], 0)
|
||||
&& fuseVelPosHeight(aid_src.innovation[1], aid_src.innovation_variance[1], 1)
|
||||
) {
|
||||
aid_src.fused = true;
|
||||
aid_src.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
|
||||
} else {
|
||||
aid_src.fused = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::fusePosition(estimator_aid_source_3d_s& pos_aid_src)
|
||||
void Ekf::fuseVelocity(estimator_aid_source_3d_s &aid_src)
|
||||
{
|
||||
if (aid_src.fusion_enabled && !aid_src.innovation_rejected) {
|
||||
// vx, vy, vz
|
||||
if (fuseVelPosHeight(aid_src.innovation[0], aid_src.innovation_variance[0], 0)
|
||||
&& fuseVelPosHeight(aid_src.innovation[1], aid_src.innovation_variance[1], 1)
|
||||
&& fuseVelPosHeight(aid_src.innovation[2], aid_src.innovation_variance[2], 2)
|
||||
) {
|
||||
aid_src.fused = true;
|
||||
aid_src.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
|
||||
} else {
|
||||
aid_src.fused = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::fuseHorizontalPosition(estimator_aid_source_2d_s &aid_src)
|
||||
{
|
||||
// x & y
|
||||
if (pos_aid_src.fusion_enabled[0] && !pos_aid_src.innovation_rejected[0]
|
||||
&& pos_aid_src.fusion_enabled[1] && !pos_aid_src.innovation_rejected[1]
|
||||
) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (fuseVelPosHeight(pos_aid_src.innovation[i], pos_aid_src.innovation_variance[i], 3 + i)) {
|
||||
pos_aid_src.fused[i] = true;
|
||||
pos_aid_src.time_last_fuse[i] = _imu_sample_delayed.time_us;
|
||||
}
|
||||
if (aid_src.fusion_enabled && !aid_src.innovation_rejected) {
|
||||
if (fuseVelPosHeight(aid_src.innovation[0], aid_src.innovation_variance[0], 3)
|
||||
&& fuseVelPosHeight(aid_src.innovation[1], aid_src.innovation_variance[1], 4)
|
||||
) {
|
||||
aid_src.fused = true;
|
||||
aid_src.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
|
||||
} else {
|
||||
aid_src.fused = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Ekf::fuseVerticalPosition(estimator_aid_source_1d_s &aid_src)
|
||||
{
|
||||
// z
|
||||
if (pos_aid_src.fusion_enabled[2] && !pos_aid_src.innovation_rejected[2]) {
|
||||
if (fuseVelPosHeight(pos_aid_src.innovation[2], pos_aid_src.innovation_variance[2], 5)) {
|
||||
pos_aid_src.fused[2] = true;
|
||||
pos_aid_src.time_last_fuse[2] = _imu_sample_delayed.time_us;
|
||||
if (aid_src.fusion_enabled && !aid_src.innovation_rejected) {
|
||||
if (fuseVelPosHeight(aid_src.innovation, aid_src.innovation_variance, 5)) {
|
||||
aid_src.fused = true;
|
||||
aid_src.time_last_fuse = _imu_sample_delayed.time_us;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -727,13 +727,17 @@ void EKF2::PublishAidSourceStatus(const hrt_abstime ×tamp)
|
|||
PublishAidSourceStatus(_ekf.aid_src_fake_pos(), _status_fake_pos_pub_last, _estimator_aid_src_fake_pos_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_fake_hgt(), _status_fake_hgt_pub_last, _estimator_aid_src_fake_hgt_pub);
|
||||
|
||||
// EV yaw
|
||||
// external vision (EV) hgt/pos/vel/yaw
|
||||
PublishAidSourceStatus(_ekf.aid_src_ev_hgt(), _status_ev_hgt_pub_last, _estimator_aid_src_ev_hgt_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_ev_pos(), _status_ev_pos_pub_last, _estimator_aid_src_ev_pos_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_ev_vel(), _status_ev_vel_pub_last, _estimator_aid_src_ev_vel_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_ev_yaw(), _status_ev_yaw_pub_last, _estimator_aid_src_ev_yaw_pub);
|
||||
|
||||
// GNSS yaw/velocity/position
|
||||
PublishAidSourceStatus(_ekf.aid_src_gnss_yaw(), _status_gnss_yaw_pub_last, _estimator_aid_src_gnss_yaw_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_gnss_vel(), _status_gnss_vel_pub_last, _estimator_aid_src_gnss_vel_pub);
|
||||
// GNSS hgt/pos/vel/yaw
|
||||
PublishAidSourceStatus(_ekf.aid_src_gnss_hgt(), _status_gnss_hgt_pub_last, _estimator_aid_src_gnss_hgt_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_gnss_pos(), _status_gnss_pos_pub_last, _estimator_aid_src_gnss_pos_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_gnss_vel(), _status_gnss_vel_pub_last, _estimator_aid_src_gnss_vel_pub);
|
||||
PublishAidSourceStatus(_ekf.aid_src_gnss_yaw(), _status_gnss_yaw_pub_last, _estimator_aid_src_gnss_yaw_pub);
|
||||
|
||||
// mag heading
|
||||
PublishAidSourceStatus(_ekf.aid_src_mag_heading(), _status_mag_heading_pub_last, _estimator_aid_src_mag_heading_pub);
|
||||
|
@ -768,7 +772,7 @@ void EKF2::PublishAttitude(const hrt_abstime ×tamp)
|
|||
|
||||
void EKF2::PublishBaroBias(const hrt_abstime ×tamp)
|
||||
{
|
||||
if (_device_id_baro != 0) {
|
||||
if (_ekf.aid_src_baro_hgt().timestamp_sample != 0) {
|
||||
const BiasEstimator::status &status = _ekf.getBaroBiasEstimatorStatus();
|
||||
|
||||
if (fabsf(status.bias - _last_baro_bias_published) > 0.001f) {
|
||||
|
@ -782,34 +786,40 @@ void EKF2::PublishBaroBias(const hrt_abstime ×tamp)
|
|||
|
||||
void EKF2::PublishGnssHgtBias(const hrt_abstime ×tamp)
|
||||
{
|
||||
const BiasEstimator::status &status = _ekf.getGpsHgtBiasEstimatorStatus();
|
||||
if (_ekf.get_gps_sample_delayed().time_us != 0) {
|
||||
const BiasEstimator::status &status = _ekf.getGpsHgtBiasEstimatorStatus();
|
||||
|
||||
if (fabsf(status.bias - _last_gnss_hgt_bias_published) > 0.001f) {
|
||||
_estimator_gnss_hgt_bias_pub.publish(fillEstimatorBiasMsg(status, _ekf.get_gps_sample_delayed().time_us, timestamp));
|
||||
if (fabsf(status.bias - _last_gnss_hgt_bias_published) > 0.001f) {
|
||||
_estimator_gnss_hgt_bias_pub.publish(fillEstimatorBiasMsg(status, _ekf.get_gps_sample_delayed().time_us, timestamp));
|
||||
|
||||
_last_gnss_hgt_bias_published = status.bias;
|
||||
_last_gnss_hgt_bias_published = status.bias;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EKF2::PublishRngHgtBias(const hrt_abstime ×tamp)
|
||||
{
|
||||
const BiasEstimator::status &status = _ekf.getRngHgtBiasEstimatorStatus();
|
||||
if (_ekf.get_rng_sample_delayed().time_us != 0) {
|
||||
const BiasEstimator::status &status = _ekf.getRngHgtBiasEstimatorStatus();
|
||||
|
||||
if (fabsf(status.bias - _last_rng_hgt_bias_published) > 0.001f) {
|
||||
_estimator_rng_hgt_bias_pub.publish(fillEstimatorBiasMsg(status, _ekf.get_rng_sample_delayed().time_us, timestamp));
|
||||
if (fabsf(status.bias - _last_rng_hgt_bias_published) > 0.001f) {
|
||||
_estimator_rng_hgt_bias_pub.publish(fillEstimatorBiasMsg(status, _ekf.get_rng_sample_delayed().time_us, timestamp));
|
||||
|
||||
_last_rng_hgt_bias_published = status.bias;
|
||||
_last_rng_hgt_bias_published = status.bias;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EKF2::PublishEvHgtBias(const hrt_abstime ×tamp)
|
||||
{
|
||||
const BiasEstimator::status &status = _ekf.getEvHgtBiasEstimatorStatus();
|
||||
if (_ekf.get_ev_sample_delayed().time_us != 0) {
|
||||
const BiasEstimator::status &status = _ekf.getEvHgtBiasEstimatorStatus();
|
||||
|
||||
if (fabsf(status.bias - _last_ev_hgt_bias_published) > 0.001f) {
|
||||
_estimator_ev_hgt_bias_pub.publish(fillEstimatorBiasMsg(status, _ekf.get_ev_sample_delayed().time_us, timestamp));
|
||||
if (fabsf(status.bias - _last_ev_hgt_bias_published) > 0.001f) {
|
||||
_estimator_ev_hgt_bias_pub.publish(fillEstimatorBiasMsg(status, _ekf.get_ev_sample_delayed().time_us, timestamp));
|
||||
|
||||
_last_ev_hgt_bias_published = status.bias;
|
||||
_last_ev_hgt_bias_published = status.bias;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -818,7 +828,7 @@ estimator_bias_s EKF2::fillEstimatorBiasMsg(const BiasEstimator::status &status,
|
|||
{
|
||||
estimator_bias_s bias{};
|
||||
bias.timestamp_sample = timestamp_sample_us;
|
||||
bias.baro_device_id = device_id;
|
||||
bias.device_id = device_id;
|
||||
bias.bias = status.bias;
|
||||
bias.bias_var = status.bias_var;
|
||||
bias.innov = status.innov;
|
||||
|
@ -1648,8 +1658,8 @@ void EKF2::UpdateAuxVelSample(ekf2_timestamps_s &ekf2_timestamps)
|
|||
// velocity of vehicle relative to target has opposite sign to target relative to vehicle
|
||||
auxVelSample auxvel_sample{
|
||||
.time_us = landing_target_pose.timestamp,
|
||||
.vel = Vector3f{-landing_target_pose.vx_rel, -landing_target_pose.vy_rel, NAN},
|
||||
.velVar = Vector3f{landing_target_pose.cov_vx_rel, landing_target_pose.cov_vy_rel, NAN},
|
||||
.vel = Vector2f{-landing_target_pose.vx_rel, -landing_target_pose.vy_rel},
|
||||
.velVar = Vector2f{landing_target_pose.cov_vx_rel, landing_target_pose.cov_vy_rel},
|
||||
};
|
||||
_ekf.setAuxVelData(auxvel_sample);
|
||||
}
|
||||
|
|
|
@ -270,11 +270,15 @@ private:
|
|||
hrt_abstime _status_fake_hgt_pub_last{0};
|
||||
hrt_abstime _status_fake_pos_pub_last{0};
|
||||
|
||||
hrt_abstime _status_ev_hgt_pub_last{0};
|
||||
hrt_abstime _status_ev_pos_pub_last{0};
|
||||
hrt_abstime _status_ev_vel_pub_last{0};
|
||||
hrt_abstime _status_ev_yaw_pub_last{0};
|
||||
|
||||
hrt_abstime _status_gnss_yaw_pub_last{0};
|
||||
hrt_abstime _status_gnss_vel_pub_last{0};
|
||||
hrt_abstime _status_gnss_hgt_pub_last{0};
|
||||
hrt_abstime _status_gnss_pos_pub_last{0};
|
||||
hrt_abstime _status_gnss_vel_pub_last{0};
|
||||
hrt_abstime _status_gnss_yaw_pub_last{0};
|
||||
|
||||
hrt_abstime _status_mag_pub_last{0};
|
||||
hrt_abstime _status_mag_heading_pub_last{0};
|
||||
|
@ -355,16 +359,20 @@ private:
|
|||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_fake_hgt_pub{ORB_ID(estimator_aid_src_fake_hgt)};
|
||||
uORB::PublicationMulti<estimator_aid_source_2d_s> _estimator_aid_src_fake_pos_pub{ORB_ID(estimator_aid_src_fake_pos)};
|
||||
|
||||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_gnss_yaw_pub{ORB_ID(estimator_aid_src_gnss_yaw)};
|
||||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_ev_hgt_pub{ORB_ID(estimator_aid_src_ev_hgt)};
|
||||
uORB::PublicationMulti<estimator_aid_source_2d_s> _estimator_aid_src_ev_pos_pub{ORB_ID(estimator_aid_src_ev_pos)};
|
||||
uORB::PublicationMulti<estimator_aid_source_3d_s> _estimator_aid_src_ev_vel_pub{ORB_ID(estimator_aid_src_ev_vel)};
|
||||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_ev_yaw_pub{ORB_ID(estimator_aid_src_ev_yaw)};
|
||||
|
||||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_gnss_hgt_pub{ORB_ID(estimator_aid_src_gnss_hgt)};
|
||||
uORB::PublicationMulti<estimator_aid_source_2d_s> _estimator_aid_src_gnss_pos_pub{ORB_ID(estimator_aid_src_gnss_pos)};
|
||||
uORB::PublicationMulti<estimator_aid_source_3d_s> _estimator_aid_src_gnss_vel_pub{ORB_ID(estimator_aid_src_gnss_vel)};
|
||||
uORB::PublicationMulti<estimator_aid_source_3d_s> _estimator_aid_src_gnss_pos_pub{ORB_ID(estimator_aid_src_gnss_pos)};
|
||||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_gnss_yaw_pub{ORB_ID(estimator_aid_src_gnss_yaw)};
|
||||
|
||||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_mag_heading_pub{ORB_ID(estimator_aid_src_mag_heading)};
|
||||
uORB::PublicationMulti<estimator_aid_source_3d_s> _estimator_aid_src_mag_pub{ORB_ID(estimator_aid_src_mag)};
|
||||
|
||||
uORB::PublicationMulti<estimator_aid_source_1d_s> _estimator_aid_src_ev_yaw_pub{ORB_ID(estimator_aid_src_ev_yaw)};
|
||||
|
||||
uORB::PublicationMulti<estimator_aid_source_3d_s> _estimator_aid_src_aux_vel_pub{ORB_ID(estimator_aid_src_aux_vel)};
|
||||
uORB::PublicationMulti<estimator_aid_source_2d_s> _estimator_aid_src_aux_vel_pub{ORB_ID(estimator_aid_src_aux_vel)};
|
||||
|
||||
// publications with topic dependent on multi-mode
|
||||
uORB::PublicationMulti<vehicle_attitude_s> _attitude_pub;
|
||||
|
|
|
@ -283,109 +283,109 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
|||
28090000,0.708,0.0302,0.0579,0.703,-2.7,-1.25,-1.23,-3.87,-2.19,-370,-7.96e-06,-5.81e-05,4.98e-06,6.07e-05,-0.00017,-0.00121,0.207,0.00204,0.435,0,0,0,0,0,6.7e-05,7.69e-05,7.62e-05,6.62e-05,0.0211,0.0202,0.00839,0.0831,0.0825,0.0353,3.81e-11,3.8e-11,1.49e-10,2.82e-06,2.81e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28190000,0.708,0.0353,0.0711,0.702,-2.76,-1.27,-0.952,-4.17,-2.3,-370,-8.23e-06,-5.79e-05,5.02e-06,5.75e-05,-0.000156,-0.00121,0.207,0.00204,0.435,0,0,0,0,0,6.68e-05,7.65e-05,7.58e-05,6.62e-05,0.0203,0.0195,0.00842,0.0852,0.0846,0.0354,3.75e-11,3.74e-11,1.47e-10,2.82e-06,2.81e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28290000,0.709,0.0276,0.0541,0.702,-2.76,-1.28,-0.0896,-4.44,-2.43,-370,-8.23e-06,-5.79e-05,4.84e-06,5.62e-05,-0.00015,-0.0012,0.207,0.00204,0.435,0,0,0,0,0,6.66e-05,7.69e-05,7.61e-05,6.58e-05,0.0207,0.02,0.00855,0.0924,0.0917,0.0355,3.76e-11,3.75e-11,1.46e-10,2.82e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28390000,0.711,0.0116,0.0227,0.702,-2.78,-1.28,0.77,-4.76,-2.55,-370,-8.68e-06,-5.78e-05,4.79e-06,4.14e-05,-0.000172,-0.0012,0.207,0.00204,0.435,0,0,0,0,0,6.6e-05,7.72e-05,7.66e-05,6.52e-05,0.02,0.0194,0.00865,0.0944,0.0937,0.0356,3.71e-11,3.69e-11,1.44e-10,2.81e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28490000,0.712,0.00273,0.00452,0.703,-2.74,-1.28,1.06,-5.04,-2.68,-370,-8.67e-06,-5.78e-05,4.74e-06,3.88e-05,-0.000166,-0.00119,0.207,0.00204,0.435,0,0,0,0,0,6.59e-05,7.75e-05,7.7e-05,6.49e-05,0.021,0.0206,0.00878,0.102,0.101,0.036,3.72e-11,3.7e-11,1.43e-10,2.81e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28590000,0.711,0.000919,0.00101,0.703,-2.69,-1.25,0.962,-5.36,-2.79,-370,-9.15e-06,-5.77e-05,4.81e-06,1.76e-05,-0.000225,-0.00118,0.207,0.00204,0.435,0,0,0,0,0,6.55e-05,7.77e-05,7.71e-05,6.47e-05,0.0204,0.02,0.00886,0.104,0.103,0.0361,3.68e-11,3.65e-11,1.41e-10,2.8e-06,2.79e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28690000,0.71,0.000219,9.44e-05,0.704,-2.62,-1.23,0.965,-5.62,-2.92,-370,-9.14e-06,-5.77e-05,4.74e-06,1.35e-05,-0.000215,-0.00118,0.207,0.00204,0.435,0,0,0,0,0,6.54e-05,7.79e-05,7.73e-05,6.46e-05,0.0215,0.0212,0.00895,0.112,0.111,0.0362,3.69e-11,3.66e-11,1.39e-10,2.8e-06,2.79e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28790000,0.709,-6.87e-05,-0.00016,0.705,-2.58,-1.21,0.969,-5.94,-3.03,-370,-9.67e-06,-5.76e-05,4.67e-06,-1.15e-05,-0.000265,-0.00117,0.207,0.00204,0.435,0,0,0,0,0,6.51e-05,7.8e-05,7.74e-05,6.45e-05,0.0208,0.0206,0.00888,0.113,0.112,0.0359,3.64e-11,3.61e-11,1.38e-10,2.79e-06,2.77e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28890000,0.709,-8.37e-05,6.09e-05,0.706,-2.51,-1.19,0.957,-6.19,-3.15,-370,-9.66e-06,-5.76e-05,4.63e-06,-1.59e-05,-0.000254,-0.00116,0.207,0.00204,0.435,0,0,0,0,0,6.5e-05,7.82e-05,7.75e-05,6.44e-05,0.0219,0.0218,0.00901,0.122,0.121,0.0364,3.65e-11,3.62e-11,1.36e-10,2.79e-06,2.77e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28990000,0.708,0.000106,0.000498,0.706,-2.48,-1.17,0.951,-6.52,-3.26,-370,-1.04e-05,-5.75e-05,4.5e-06,-3.28e-05,-0.000316,-0.00115,0.207,0.00204,0.435,0,0,0,0,0,6.48e-05,7.83e-05,7.75e-05,6.43e-05,0.0212,0.0212,0.00894,0.123,0.122,0.0361,3.6e-11,3.56e-11,1.35e-10,2.78e-06,2.76e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29090000,0.708,0.000262,0.000903,0.706,-2.42,-1.16,0.942,-6.77,-3.38,-369,-1.04e-05,-5.75e-05,4.42e-06,-3.76e-05,-0.000304,-0.00114,0.207,0.00204,0.435,0,0,0,0,0,6.47e-05,7.85e-05,7.76e-05,6.42e-05,0.0223,0.0224,0.00902,0.132,0.131,0.0362,3.61e-11,3.57e-11,1.33e-10,2.78e-06,2.76e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29190000,0.708,0.000476,0.00132,0.706,-2.38,-1.14,0.935,-7.05,-3.48,-369,-1.08e-05,-5.74e-05,4.46e-06,-5.4e-05,-0.000323,-0.00113,0.207,0.00204,0.435,0,0,0,0,0,6.46e-05,7.86e-05,7.77e-05,6.41e-05,0.0216,0.0218,0.009,0.133,0.132,0.0363,3.56e-11,3.52e-11,1.32e-10,2.77e-06,2.74e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29290000,0.708,0.000832,0.00217,0.706,-2.33,-1.13,0.96,-7.29,-3.6,-369,-1.08e-05,-5.74e-05,4.35e-06,-5.98e-05,-0.000309,-0.00113,0.207,0.00204,0.435,0,0,0,0,0,6.45e-05,7.88e-05,7.78e-05,6.4e-05,0.0227,0.023,0.00907,0.142,0.141,0.0364,3.57e-11,3.53e-11,1.31e-10,2.77e-06,2.74e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29390000,0.708,0.00137,0.00367,0.706,-2.3,-1.12,0.969,-7.59,-3.71,-369,-1.13e-05,-5.74e-05,4.1e-06,-7.31e-05,-0.000334,-0.00112,0.207,0.00204,0.435,0,0,0,0,0,6.44e-05,7.89e-05,7.77e-05,6.38e-05,0.022,0.0223,0.009,0.143,0.142,0.0362,3.51e-11,3.47e-11,1.29e-10,2.76e-06,2.73e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29490000,0.708,0.00188,0.0048,0.706,-2.25,-1.11,0.966,-7.81,-3.82,-369,-1.13e-05,-5.74e-05,4.07e-06,-7.75e-05,-0.000323,-0.00111,0.207,0.00204,0.435,0,0,0,0,0,6.44e-05,7.91e-05,7.78e-05,6.38e-05,0.0231,0.0235,0.00911,0.152,0.151,0.0366,3.52e-11,3.48e-11,1.28e-10,2.76e-06,2.73e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29590000,0.708,0.00228,0.00592,0.706,-2.23,-1.09,0.956,-8.08,-3.92,-369,-1.16e-05,-5.73e-05,4e-06,-9.82e-05,-0.000322,-0.0011,0.207,0.00204,0.435,0,0,0,0,0,6.42e-05,7.92e-05,7.78e-05,6.36e-05,0.0223,0.0227,0.00903,0.152,0.152,0.0363,3.47e-11,3.43e-11,1.26e-10,2.76e-06,2.72e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29690000,0.708,0.00257,0.00659,0.706,-2.18,-1.08,0.949,-8.3,-4.03,-369,-1.16e-05,-5.73e-05,3.9e-06,-0.000103,-0.000309,-0.0011,0.207,0.00204,0.435,0,0,0,0,0,6.41e-05,7.93e-05,7.79e-05,6.35e-05,0.0235,0.024,0.00909,0.163,0.162,0.0364,3.48e-11,3.44e-11,1.25e-10,2.76e-06,2.71e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29790000,0.708,0.00287,0.00711,0.706,-2.17,-1.07,0.935,-8.57,-4.13,-369,-1.21e-05,-5.72e-05,3.88e-06,-0.000118,-0.000318,-0.00109,0.207,0.00204,0.435,0,0,0,0,0,6.41e-05,7.94e-05,7.78e-05,6.34e-05,0.0227,0.0231,0.00906,0.162,0.162,0.0365,3.43e-11,3.38e-11,1.24e-10,2.75e-06,2.7e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29890000,0.708,0.00295,0.00734,0.706,-2.13,-1.06,0.921,-8.79,-4.23,-369,-1.21e-05,-5.72e-05,3.73e-06,-0.000126,-0.000297,-0.00108,0.207,0.00204,0.435,0,0,0,0,0,6.4e-05,7.96e-05,7.79e-05,6.32e-05,0.0239,0.0244,0.00911,0.173,0.172,0.0366,3.44e-11,3.39e-11,1.23e-10,2.75e-06,2.7e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29990000,0.708,0.0031,0.00752,0.706,-2.11,-1.05,0.904,-9.03,-4.32,-369,-1.23e-05,-5.71e-05,3.61e-06,-0.000145,-0.000289,-0.00107,0.207,0.00204,0.435,0,0,0,0,0,6.39e-05,7.97e-05,7.78e-05,6.3e-05,0.023,0.0235,0.00902,0.172,0.171,0.0364,3.38e-11,3.34e-11,1.21e-10,2.75e-06,2.69e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30090000,0.708,0.00309,0.00746,0.706,-2.08,-1.04,0.891,-9.24,-4.43,-369,-1.23e-05,-5.71e-05,3.49e-06,-0.00015,-0.000274,-0.00106,0.207,0.00204,0.435,0,0,0,0,0,6.38e-05,7.98e-05,7.78e-05,6.29e-05,0.0242,0.0248,0.00907,0.183,0.182,0.0364,3.39e-11,3.35e-11,1.2e-10,2.74e-06,2.68e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30190000,0.708,0.00315,0.00735,0.706,-2.06,-1.03,0.877,-9.49,-4.52,-369,-1.26e-05,-5.7e-05,3.48e-06,-0.000162,-0.000276,-0.00106,0.207,0.00204,0.435,0,0,0,0,0,6.37e-05,7.99e-05,7.77e-05,6.27e-05,0.0232,0.0238,0.00903,0.182,0.181,0.0365,3.34e-11,3.3e-11,1.19e-10,2.74e-06,2.67e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30290000,0.709,0.00306,0.00717,0.706,-2.03,-1.02,0.865,-9.7,-4.62,-368,-1.26e-05,-5.7e-05,3.41e-06,-0.000166,-0.000267,-0.00106,0.207,0.00204,0.435,0,0,0,0,0,6.36e-05,8.01e-05,7.78e-05,6.26e-05,0.0245,0.0251,0.00907,0.193,0.192,0.0366,3.35e-11,3.31e-11,1.18e-10,2.74e-06,2.67e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30390000,0.709,0.00308,0.00701,0.706,-2.01,-1.01,0.848,-9.92,-4.72,-368,-1.28e-05,-5.7e-05,3.34e-06,-0.000177,-0.000255,-0.00105,0.207,0.00204,0.435,0,0,0,0,0,6.35e-05,8.01e-05,7.76e-05,6.24e-05,0.0235,0.024,0.00898,0.192,0.191,0.0364,3.3e-11,3.25e-11,1.16e-10,2.74e-06,2.66e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30490000,0.709,0.00295,0.00676,0.705,-1.97,-1.01,0.834,-10.1,-4.82,-368,-1.28e-05,-5.7e-05,3.35e-06,-0.00018,-0.000247,-0.00105,0.207,0.00204,0.435,0,0,0,0,0,6.35e-05,8.03e-05,7.76e-05,6.23e-05,0.0247,0.0253,0.00907,0.204,0.203,0.0368,3.3e-11,3.26e-11,1.15e-10,2.74e-06,2.65e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30590000,0.709,0.00288,0.00647,0.705,-1.96,-0.998,0.793,-10.4,-4.92,-368,-1.31e-05,-5.69e-05,3.36e-06,-0.000189,-0.00024,-0.00104,0.207,0.00204,0.435,0,0,0,0,0,6.34e-05,8.02e-05,7.74e-05,6.21e-05,0.0237,0.0243,0.00897,0.202,0.201,0.0365,3.25e-11,3.21e-11,1.14e-10,2.73e-06,2.64e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30690000,0.709,0.00273,0.00616,0.705,-1.93,-0.99,0.786,-10.6,-5.02,-368,-1.31e-05,-5.69e-05,3.32e-06,-0.000194,-0.000227,-0.00104,0.207,0.00204,0.435,0,0,0,0,0,6.33e-05,8.04e-05,7.75e-05,6.2e-05,0.025,0.0256,0.009,0.214,0.213,0.0366,3.26e-11,3.22e-11,1.13e-10,2.73e-06,2.64e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30790000,0.709,0.00268,0.00583,0.705,-1.91,-0.979,0.777,-10.8,-5.1,-368,-1.32e-05,-5.69e-05,3.18e-06,-0.0002,-0.000222,-0.00103,0.207,0.00204,0.435,0,0,0,0,0,6.32e-05,8.04e-05,7.72e-05,6.18e-05,0.0239,0.0244,0.00895,0.212,0.211,0.0367,3.21e-11,3.17e-11,1.12e-10,2.73e-06,2.63e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30890000,0.709,0.0025,0.0054,0.705,-1.88,-0.971,0.765,-11,-5.2,-368,-1.32e-05,-5.69e-05,3.17e-06,-0.000205,-0.000211,-0.00103,0.207,0.00204,0.435,0,0,0,0,0,6.31e-05,8.05e-05,7.73e-05,6.17e-05,0.0252,0.0257,0.00898,0.224,0.223,0.0368,3.22e-11,3.18e-11,1.11e-10,2.73e-06,2.63e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30990000,0.709,0.00247,0.00493,0.705,-1.86,-0.962,0.756,-11.2,-5.29,-368,-1.35e-05,-5.68e-05,3.09e-06,-0.000212,-0.000201,-0.00102,0.207,0.00204,0.435,0,0,0,0,0,6.3e-05,8.05e-05,7.7e-05,6.15e-05,0.0241,0.0245,0.00887,0.221,0.22,0.0365,3.17e-11,3.14e-11,1.09e-10,2.73e-06,2.62e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31090000,0.709,0.00227,0.00444,0.705,-1.83,-0.954,0.744,-11.4,-5.39,-368,-1.35e-05,-5.68e-05,3.02e-06,-0.000218,-0.000187,-0.00102,0.207,0.00204,0.435,0,0,0,0,0,6.29e-05,8.06e-05,7.7e-05,6.14e-05,0.0253,0.0258,0.00895,0.233,0.232,0.0369,3.18e-11,3.15e-11,1.09e-10,2.73e-06,2.61e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31190000,0.709,0.0022,0.00422,0.705,-1.81,-0.946,0.733,-11.6,-5.48,-368,-1.36e-05,-5.68e-05,2.97e-06,-0.000231,-0.000161,-0.00101,0.207,0.00204,0.435,0,0,0,0,0,6.28e-05,8.06e-05,7.67e-05,6.12e-05,0.0242,0.0246,0.00884,0.231,0.23,0.0366,3.13e-11,3.1e-11,1.07e-10,2.73e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31290000,0.709,0.00197,0.0037,0.705,-1.78,-0.937,0.734,-11.7,-5.57,-368,-1.36e-05,-5.68e-05,2.96e-06,-0.000237,-0.000145,-0.001,0.207,0.00204,0.435,0,0,0,0,0,6.27e-05,8.07e-05,7.68e-05,6.11e-05,0.0254,0.0259,0.00887,0.243,0.242,0.0367,3.14e-11,3.11e-11,1.06e-10,2.72e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31390000,0.709,0.00184,0.00322,0.705,-1.76,-0.929,0.73,-12,-5.67,-368,-1.38e-05,-5.68e-05,2.9e-06,-0.000245,-0.000129,-0.000999,0.207,0.00204,0.435,0,0,0,0,0,6.26e-05,8.06e-05,7.64e-05,6.08e-05,0.0243,0.0247,0.00877,0.24,0.239,0.0364,3.09e-11,3.06e-11,1.05e-10,2.72e-06,2.59e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31490000,0.709,0.00164,0.00261,0.705,-1.73,-0.921,0.725,-12.1,-5.76,-368,-1.38e-05,-5.68e-05,2.79e-06,-0.000251,-0.000116,-0.000995,0.207,0.00204,0.435,0,0,0,0,0,6.25e-05,8.08e-05,7.65e-05,6.08e-05,0.0255,0.0259,0.00884,0.253,0.252,0.0368,3.1e-11,3.07e-11,1.04e-10,2.72e-06,2.59e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31590000,0.709,0.00157,0.00227,0.705,-1.71,-0.908,0.72,-12.3,-5.84,-368,-1.4e-05,-5.67e-05,2.8e-06,-0.000259,-9.87e-05,-0.000989,0.207,0.00204,0.435,0,0,0,0,0,6.24e-05,8.07e-05,7.61e-05,6.06e-05,0.0243,0.0247,0.00873,0.25,0.249,0.0365,3.05e-11,3.03e-11,1.03e-10,2.72e-06,2.58e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31690000,0.709,0.00132,0.00161,0.705,-1.68,-0.9,0.725,-12.5,-5.93,-368,-1.4e-05,-5.67e-05,2.79e-06,-0.000265,-8.66e-05,-0.000985,0.207,0.00204,0.435,0,0,0,0,0,6.23e-05,8.08e-05,7.62e-05,6.05e-05,0.0256,0.0259,0.00875,0.262,0.261,0.0366,3.06e-11,3.04e-11,1.02e-10,2.72e-06,2.57e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31790000,0.709,0.00112,0.000996,0.705,-1.66,-0.889,0.723,-12.7,-6.02,-367,-1.42e-05,-5.67e-05,2.78e-06,-0.000273,-6.78e-05,-0.000979,0.207,0.00204,0.435,0,0,0,0,0,6.22e-05,8.07e-05,7.59e-05,6.03e-05,0.0244,0.0247,0.00869,0.259,0.258,0.0366,3.02e-11,3e-11,1.01e-10,2.72e-06,2.56e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31890000,0.709,0.000878,0.000295,0.705,-1.63,-0.879,0.718,-12.9,-6.11,-367,-1.42e-05,-5.67e-05,2.75e-06,-0.000279,-5.49e-05,-0.000974,0.207,0.00204,0.435,0,0,0,0,0,6.21e-05,8.09e-05,7.59e-05,6.02e-05,0.0256,0.0259,0.00872,0.272,0.271,0.0367,3.03e-11,3.01e-11,1e-10,2.72e-06,2.56e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31990000,0.709,0.00074,-0.000166,0.705,-1.6,-0.867,0.712,-13,-6.18,-367,-1.42e-05,-5.67e-05,2.66e-06,-0.000287,-3.58e-05,-0.000968,0.207,0.00204,0.435,0,0,0,0,0,6.19e-05,8.07e-05,7.55e-05,6e-05,0.0244,0.0247,0.00861,0.268,0.267,0.0364,2.98e-11,2.97e-11,9.94e-11,2.72e-06,2.55e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32090000,0.709,0.000452,-0.000886,0.705,-1.57,-0.857,0.719,-13.2,-6.27,-367,-1.43e-05,-5.67e-05,2.61e-06,-0.000294,-2.07e-05,-0.000963,0.207,0.00204,0.435,0,0,0,0,0,6.19e-05,8.09e-05,7.56e-05,6e-05,0.0256,0.0259,0.00868,0.281,0.28,0.0368,2.99e-11,2.98e-11,9.86e-11,2.72e-06,2.55e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32190000,0.709,0.000238,-0.00166,0.705,-1.55,-0.847,0.717,-13.4,-6.35,-367,-1.44e-05,-5.66e-05,2.43e-06,-0.000303,2.47e-07,-0.000956,0.207,0.00204,0.435,0,0,0,0,0,6.17e-05,8.07e-05,7.52e-05,5.97e-05,0.0244,0.0246,0.00857,0.278,0.277,0.0365,2.95e-11,2.94e-11,9.76e-11,2.71e-06,2.54e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32290000,0.709,5.06e-06,-0.0024,0.705,-1.51,-0.837,0.711,-13.5,-6.44,-367,-1.44e-05,-5.66e-05,2.41e-06,-0.00031,1.62e-05,-0.000951,0.207,0.00204,0.435,0,0,0,0,0,6.17e-05,8.09e-05,7.53e-05,5.97e-05,0.0257,0.0259,0.00859,0.291,0.29,0.0365,2.96e-11,2.95e-11,9.67e-11,2.71e-06,2.54e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32390000,0.709,-0.000181,-0.00303,0.705,-1.48,-0.825,0.71,-13.7,-6.52,-367,-1.44e-05,-5.66e-05,2.43e-06,-0.000314,2.52e-05,-0.000948,0.207,0.00204,0.435,0,0,0,0,0,6.15e-05,8.07e-05,7.5e-05,5.95e-05,0.0244,0.0246,0.00853,0.287,0.286,0.0366,2.92e-11,2.91e-11,9.59e-11,2.71e-06,2.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32490000,0.709,-0.000303,-0.00327,0.706,-1.45,-0.814,0.716,-13.8,-6.6,-367,-1.44e-05,-5.66e-05,2.43e-06,-0.00032,3.64e-05,-0.000944,0.207,0.00204,0.435,0,0,0,0,0,6.15e-05,8.09e-05,7.5e-05,5.94e-05,0.0257,0.0258,0.00855,0.3,0.299,0.0366,2.93e-11,2.92e-11,9.5e-11,2.71e-06,2.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32590000,0.709,-0.000303,-0.00348,0.706,-1.43,-0.803,0.714,-14,-6.68,-367,-1.46e-05,-5.66e-05,2.36e-06,-0.000323,4.44e-05,-0.000941,0.207,0.00204,0.435,0,0,0,0,0,6.13e-05,8.07e-05,7.47e-05,5.92e-05,0.0244,0.0245,0.00844,0.296,0.295,0.0363,2.89e-11,2.89e-11,9.41e-11,2.71e-06,2.52e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32690000,0.708,-0.000346,-0.00357,0.706,-1.4,-0.793,0.71,-14.1,-6.76,-367,-1.46e-05,-5.66e-05,2.33e-06,-0.000325,4.99e-05,-0.000939,0.207,0.00204,0.435,0,0,0,0,0,6.12e-05,8.08e-05,7.47e-05,5.92e-05,0.0257,0.0258,0.00847,0.309,0.308,0.0363,2.9e-11,2.9e-11,9.32e-11,2.71e-06,2.52e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32790000,0.708,-0.000312,-0.00351,0.706,-1.37,-0.782,0.706,-14.3,-6.84,-367,-1.46e-05,-5.66e-05,2.31e-06,-0.000329,5.91e-05,-0.000936,0.207,0.00204,0.435,0,0,0,0,0,6.11e-05,8.06e-05,7.44e-05,5.9e-05,0.0244,0.0245,0.00841,0.305,0.304,0.0364,2.86e-11,2.86e-11,9.24e-11,2.71e-06,2.51e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32890000,0.708,-0.000221,-0.00347,0.706,-1.34,-0.771,0.706,-14.4,-6.91,-367,-1.46e-05,-5.66e-05,2.15e-06,-0.000335,6.98e-05,-0.000932,0.207,0.00204,0.435,0,0,0,0,0,6.1e-05,8.08e-05,7.44e-05,5.89e-05,0.0256,0.0257,0.00843,0.318,0.317,0.0364,2.87e-11,2.87e-11,9.16e-11,2.71e-06,2.51e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32990000,0.708,-9.33e-05,-0.0034,0.706,-1.32,-0.764,0.7,-14.6,-6.99,-367,-1.47e-05,-5.66e-05,2.27e-06,-0.00034,8.32e-05,-0.000928,0.207,0.00204,0.435,0,0,0,0,0,6.09e-05,8.06e-05,7.41e-05,5.88e-05,0.0244,0.0244,0.00833,0.315,0.313,0.0361,2.83e-11,2.84e-11,9.08e-11,2.7e-06,2.5e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33090000,0.708,-0.000127,-0.00343,0.706,-1.29,-0.755,0.695,-14.7,-7.07,-367,-1.47e-05,-5.66e-05,2.34e-06,-0.000343,8.88e-05,-0.000926,0.207,0.00204,0.435,0,0,0,0,0,6.08e-05,8.08e-05,7.42e-05,5.87e-05,0.0256,0.0256,0.0084,0.328,0.327,0.0365,2.84e-11,2.85e-11,9.01e-11,2.7e-06,2.5e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33190000,0.704,0.00328,-0.00247,0.71,-1.27,-0.744,0.636,-14.8,-7.14,-367,-1.48e-05,-5.66e-05,2.35e-06,-0.000346,9.6e-05,-0.000923,0.207,0.00204,0.435,0,0,0,0,0,6.05e-05,8.05e-05,7.39e-05,5.88e-05,0.0245,0.0244,0.0083,0.324,0.323,0.0362,2.81e-11,2.82e-11,8.93e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33290000,0.653,0.0154,-0.00156,0.758,-1.26,-0.726,0.618,-15,-7.21,-367,-1.48e-05,-5.66e-05,2.39e-06,-0.000348,9.99e-05,-0.000921,0.207,0.00204,0.435,0,0,0,0,0,5.83e-05,8.01e-05,7.44e-05,6.1e-05,0.0257,0.0256,0.00832,0.337,0.336,0.0362,2.82e-11,2.83e-11,8.85e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33390000,0.549,0.0134,-0.00183,0.836,-1.26,-0.715,0.809,-15.1,-7.29,-366,-1.48e-05,-5.66e-05,2.44e-06,-0.000352,0.000109,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.44e-05,7.9e-05,7.52e-05,6.48e-05,0.0242,0.0242,0.00826,0.333,0.332,0.0362,2.78e-11,2.8e-11,8.78e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33490000,0.411,0.0068,0.000639,0.911,-1.25,-0.709,0.826,-15.2,-7.36,-366,-1.48e-05,-5.66e-05,2.43e-06,-0.000353,0.00011,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.02e-05,7.79e-05,7.69e-05,6.92e-05,0.0257,0.0257,0.00809,0.346,0.345,0.0362,2.79e-11,2.81e-11,8.7e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33590000,0.254,0.000909,-0.00187,0.967,-1.21,-0.708,0.792,-15.3,-7.42,-366,-1.48e-05,-5.66e-05,2.43e-06,-0.000353,0.00011,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,4.66e-05,7.6e-05,7.81e-05,7.27e-05,0.0253,0.0253,0.00778,0.342,0.341,0.0359,2.75e-11,2.77e-11,8.63e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33690000,0.0872,-0.00238,-0.00494,0.996,-1.16,-0.705,0.798,-15.5,-7.49,-366,-1.48e-05,-5.66e-05,2.5e-06,-0.000353,0.00011,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,4.46e-05,7.48e-05,7.99e-05,7.5e-05,0.0278,0.0279,0.00764,0.355,0.354,0.0362,2.76e-11,2.78e-11,8.56e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33790000,-0.0823,-0.00389,-0.00675,0.997,-1.1,-0.688,0.78,-15.6,-7.55,-366,-1.49e-05,-5.65e-05,2.49e-06,-0.000353,0.00011,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,4.42e-05,7.21e-05,7.95e-05,7.54e-05,0.0279,0.0281,0.00737,0.351,0.35,0.0358,2.73e-11,2.75e-11,8.49e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33890000,-0.249,-0.00503,-0.00747,0.968,-1.03,-0.665,0.765,-15.7,-7.62,-366,-1.49e-05,-5.65e-05,2.5e-06,-0.000353,0.00011,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,4.56e-05,7.15e-05,8.05e-05,7.42e-05,0.0314,0.0317,0.00721,0.364,0.363,0.0357,2.74e-11,2.76e-11,8.42e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33990000,-0.395,-0.00324,-0.0112,0.919,-0.985,-0.627,0.736,-15.8,-7.68,-366,-1.51e-05,-5.65e-05,2.5e-06,-0.000353,0.00011,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,4.83e-05,6.85e-05,7.75e-05,7.15e-05,0.0315,0.032,0.00698,0.36,0.359,0.0354,2.7e-11,2.72e-11,8.34e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34090000,-0.5,-0.00217,-0.0127,0.866,-0.932,-0.582,0.74,-15.9,-7.74,-366,-1.51e-05,-5.65e-05,2.6e-06,-0.000353,0.00011,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.11e-05,6.86e-05,7.75e-05,6.87e-05,0.036,0.0367,0.00688,0.373,0.372,0.0355,2.71e-11,2.73e-11,8.28e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34190000,-0.57,-0.0015,-0.0114,0.822,-0.916,-0.541,0.738,-16.1,-7.81,-366,-1.54e-05,-5.65e-05,2.58e-06,-0.000379,0.000129,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.33e-05,6.49e-05,7.26e-05,6.62e-05,0.0363,0.0371,0.00668,0.37,0.368,0.0351,2.67e-11,2.7e-11,8.21e-11,2.7e-06,2.48e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34290000,-0.613,-0.00244,-0.00854,0.79,-0.868,-0.493,0.737,-16.2,-7.86,-366,-1.54e-05,-5.65e-05,2.6e-06,-0.000379,0.000129,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.48e-05,6.5e-05,7.24e-05,6.46e-05,0.0422,0.0432,0.00659,0.383,0.381,0.035,2.68e-11,2.71e-11,8.14e-11,2.7e-06,2.48e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34390000,-0.639,-0.00258,-0.00603,0.769,-0.852,-0.459,0.735,-16.3,-7.93,-366,-1.56e-05,-5.66e-05,2.63e-06,-0.000427,0.000174,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.57e-05,6.04e-05,6.66e-05,6.33e-05,0.0418,0.043,0.00646,0.379,0.377,0.0349,2.65e-11,2.68e-11,8.08e-11,2.67e-06,2.46e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34490000,-0.655,-0.00352,-0.00388,0.756,-0.801,-0.418,0.734,-16.4,-7.97,-366,-1.56e-05,-5.66e-05,2.67e-06,-0.000426,0.000174,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.63e-05,6.04e-05,6.65e-05,6.26e-05,0.0486,0.0501,0.0064,0.392,0.39,0.0347,2.66e-11,2.69e-11,8.02e-11,2.67e-06,2.46e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34590000,-0.664,-0.00292,-0.0028,0.747,-0.8,-0.403,0.73,-16.5,-8.05,-366,-1.6e-05,-5.67e-05,2.76e-06,-0.000523,0.000261,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.65e-05,5.53e-05,6.04e-05,6.2e-05,0.047,0.0485,0.00627,0.388,0.387,0.0343,2.64e-11,2.67e-11,7.95e-11,2.62e-06,2.42e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34690000,-0.67,-0.0033,-0.00201,0.742,-0.749,-0.364,0.727,-16.6,-8.08,-366,-1.6e-05,-5.67e-05,2.74e-06,-0.000523,0.000261,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.67e-05,5.53e-05,6.04e-05,6.17e-05,0.0543,0.0562,0.00627,0.401,0.399,0.0344,2.65e-11,2.68e-11,7.9e-11,2.62e-06,2.42e-06,5.01e-08,0,0,0,0,0,0,0,0
|
||||
34790000,-0.674,-0.0022,-0.00175,0.739,-0.751,-0.355,0.72,-16.7,-8.15,-366,-1.62e-05,-5.68e-05,2.67e-06,-0.000629,0.000364,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.67e-05,5.04e-05,5.46e-05,6.14e-05,0.0512,0.0528,0.00617,0.398,0.396,0.034,2.64e-11,2.67e-11,7.83e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34890000,-0.676,-0.00223,-0.00165,0.736,-0.703,-0.321,0.718,-16.8,-8.19,-365,-1.62e-05,-5.68e-05,2.76e-06,-0.000629,0.000364,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.68e-05,5.04e-05,5.46e-05,6.12e-05,0.0586,0.0607,0.00617,0.41,0.409,0.0338,2.65e-11,2.68e-11,7.77e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34990000,-0.68,-0.00856,-0.00445,0.734,0.308,0.288,-0.126,-16.9,-8.21,-365,-1.65e-05,-5.69e-05,2.7e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.69e-05,4.6e-05,4.95e-05,6.1e-05,0.0575,0.0576,0.00681,0.408,0.406,0.0338,2.64e-11,2.67e-11,7.72e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35090000,-0.68,-0.00859,-0.00448,0.734,0.434,0.311,-0.185,-16.8,-8.18,-365,-1.65e-05,-5.69e-05,2.75e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.68e-05,4.6e-05,4.95e-05,6.09e-05,0.0626,0.063,0.0068,0.419,0.418,0.0337,2.65e-11,2.68e-11,7.66e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35190000,-0.68,-0.00867,-0.0045,0.734,0.456,0.344,-0.182,-16.8,-8.15,-365,-1.64e-05,-5.69e-05,2.76e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.67e-05,4.59e-05,4.96e-05,6.09e-05,0.0676,0.0683,0.00664,0.432,0.431,0.0334,2.66e-11,2.69e-11,7.6e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35290000,-0.679,-0.00871,-0.00456,0.734,0.48,0.376,-0.179,-16.8,-8.11,-365,-1.64e-05,-5.69e-05,2.76e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.66e-05,4.59e-05,4.96e-05,6.08e-05,0.073,0.074,0.00656,0.447,0.446,0.0333,2.67e-11,2.7e-11,7.54e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35390000,-0.68,-0.00883,-0.00451,0.734,0.505,0.41,-0.175,-16.7,-8.07,-366,-1.64e-05,-5.69e-05,2.7e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.66e-05,4.58e-05,4.96e-05,6.08e-05,0.0786,0.08,0.00644,0.463,0.463,0.0332,2.68e-11,2.71e-11,7.49e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35490000,-0.68,-0.00888,-0.00451,0.734,0.528,0.441,-0.173,-16.7,-8.03,-366,-1.64e-05,-5.69e-05,2.65e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.65e-05,4.58e-05,4.97e-05,6.07e-05,0.0847,0.0864,0.00638,0.48,0.481,0.0331,2.69e-11,2.72e-11,7.43e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35590000,-0.679,-0.00581,-0.0045,0.734,0.419,0.36,-0.185,-16.8,-8.12,-366,-1.68e-05,-5.7e-05,2.82e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.63e-05,3.87e-05,4.15e-05,6.02e-05,0.0679,0.0692,0.00608,0.469,0.468,0.0327,2.69e-11,2.72e-11,7.37e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35690000,-0.679,-0.00582,-0.00446,0.734,0.437,0.388,-0.183,-16.7,-8.08,-366,-1.68e-05,-5.7e-05,2.83e-06,-0.000766,0.000503,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.62e-05,3.87e-05,4.15e-05,6.02e-05,0.073,0.0746,0.00604,0.485,0.485,0.0329,2.7e-11,2.73e-11,7.33e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35790000,-0.679,-0.00358,-0.00439,0.734,0.359,0.326,-0.191,-16.8,-8.15,-366,-1.7e-05,-5.71e-05,2.96e-06,-0.000785,0.00052,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.61e-05,3.34e-05,3.56e-05,5.99e-05,0.0609,0.0622,0.00581,0.476,0.476,0.0325,2.7e-11,2.73e-11,7.27e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35890000,-0.679,-0.00358,-0.00444,0.734,0.374,0.351,-0.19,-16.8,-8.12,-366,-1.7e-05,-5.71e-05,3.09e-06,-0.000785,0.00052,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.6e-05,3.34e-05,3.57e-05,5.98e-05,0.0662,0.0678,0.00577,0.491,0.491,0.0323,2.71e-11,2.74e-11,7.21e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35990000,-0.679,-0.00168,-0.00435,0.734,0.307,0.295,-0.196,-16.8,-8.18,-366,-1.72e-05,-5.72e-05,3.3e-06,-0.000859,0.000583,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.59e-05,2.94e-05,3.12e-05,5.97e-05,0.057,0.0582,0.00563,0.485,0.484,0.0322,2.72e-11,2.75e-11,7.17e-11,2.45e-06,2.27e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36090000,-0.679,-0.00173,-0.00433,0.734,0.318,0.316,-0.196,-16.8,-8.15,-366,-1.72e-05,-5.72e-05,3.43e-06,-0.000859,0.000583,-0.000917,0.207,0.00204,0.435,0,0,0,0,0,5.58e-05,2.94e-05,3.13e-05,5.96e-05,0.0624,0.064,0.00561,0.499,0.498,0.0321,2.73e-11,2.76e-11,7.12e-11,2.45e-06,2.27e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36190000,-0.679,-0.000258,-0.00422,0.734,0.262,0.269,-0.199,-16.8,-8.2,-366,-1.73e-05,-5.72e-05,3.46e-06,-0.000966,0.00067,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.57e-05,2.62e-05,2.78e-05,5.95e-05,0.0547,0.056,0.00549,0.494,0.493,0.0317,2.73e-11,2.77e-11,7.06e-11,2.42e-06,2.25e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36290000,-0.679,-0.00032,-0.00418,0.734,0.27,0.287,-0.199,-16.8,-8.17,-366,-1.73e-05,-5.72e-05,3.61e-06,-0.000966,0.00067,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.57e-05,2.63e-05,2.79e-05,5.94e-05,0.0602,0.0619,0.00552,0.507,0.506,0.0318,2.74e-11,2.78e-11,7.02e-11,2.42e-06,2.25e-06,5.01e-08,0,0,0,0,0,0,0,0
|
||||
36390000,-0.678,0.000744,-0.00408,0.735,0.225,0.244,-0.203,-16.9,-8.21,-366,-1.74e-05,-5.73e-05,3.82e-06,-0.00109,0.000763,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.56e-05,2.38e-05,2.51e-05,5.93e-05,0.0534,0.0547,0.00544,0.503,0.502,0.0315,2.75e-11,2.79e-11,6.97e-11,2.37e-06,2.2e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36490000,-0.678,0.00069,-0.00412,0.735,0.232,0.259,-0.202,-16.8,-8.19,-366,-1.74e-05,-5.73e-05,4.08e-06,-0.00109,0.000763,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.55e-05,2.38e-05,2.52e-05,5.93e-05,0.0589,0.0605,0.00547,0.516,0.515,0.0314,2.76e-11,2.8e-11,6.92e-11,2.37e-06,2.2e-06,5.01e-08,0,0,0,0,0,0,0,0
|
||||
36590000,-0.678,0.0015,-0.00397,0.735,0.192,0.222,-0.201,-16.9,-8.22,-366,-1.74e-05,-5.73e-05,4.21e-06,-0.00121,0.000856,-0.000921,0.207,0.00204,0.435,0,0,0,0,0,5.54e-05,2.19e-05,2.31e-05,5.92e-05,0.0525,0.0538,0.00543,0.512,0.512,0.031,2.77e-11,2.81e-11,6.87e-11,2.31e-06,2.15e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36690000,-0.678,0.00152,-0.00394,0.735,0.196,0.235,-0.201,-16.8,-8.2,-366,-1.74e-05,-5.73e-05,4.33e-06,-0.00121,0.000856,-0.000921,0.207,0.00204,0.435,0,0,0,0,0,5.54e-05,2.2e-05,2.32e-05,5.92e-05,0.058,0.0595,0.0055,0.525,0.524,0.0312,2.78e-11,2.82e-11,6.83e-11,2.31e-06,2.15e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36790000,-0.678,0.00212,-0.00385,0.735,0.162,0.203,-0.2,-16.9,-8.23,-366,-1.74e-05,-5.72e-05,4.46e-06,-0.00134,0.000942,-0.000923,0.207,0.00204,0.435,0,0,0,0,0,5.53e-05,2.05e-05,2.16e-05,5.91e-05,0.0518,0.0531,0.00549,0.522,0.521,0.0309,2.79e-11,2.83e-11,6.78e-11,2.23e-06,2.08e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36890000,-0.678,0.00208,-0.00384,0.735,0.164,0.212,-0.199,-16.9,-8.21,-366,-1.74e-05,-5.72e-05,4.6e-06,-0.00134,0.000942,-0.000923,0.207,0.00204,0.435,0,0,0,0,0,5.53e-05,2.05e-05,2.16e-05,5.91e-05,0.0571,0.0586,0.00556,0.534,0.533,0.0308,2.8e-11,2.84e-11,6.74e-11,2.23e-06,2.08e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36990000,-0.678,0.00256,-0.00368,0.735,0.135,0.183,-0.198,-16.9,-8.23,-366,-1.74e-05,-5.72e-05,4.74e-06,-0.00145,0.00102,-0.000924,0.207,0.00204,0.435,0,0,0,0,0,5.52e-05,1.94e-05,2.04e-05,5.9e-05,0.0511,0.0523,0.00559,0.532,0.531,0.0308,2.81e-11,2.85e-11,6.7e-11,2.14e-06,2e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37090000,-0.678,0.00253,-0.00365,0.735,0.137,0.19,-0.195,-16.9,-8.21,-366,-1.74e-05,-5.72e-05,4.94e-06,-0.00145,0.00102,-0.000924,0.207,0.00204,0.435,0,0,0,0,0,5.52e-05,1.95e-05,2.05e-05,5.9e-05,0.0563,0.0576,0.00568,0.544,0.543,0.0307,2.82e-11,2.86e-11,6.65e-11,2.14e-06,2e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37190000,-0.677,0.00288,-0.00354,0.736,0.112,0.161,-0.192,-16.9,-8.23,-366,-1.74e-05,-5.72e-05,5.16e-06,-0.00156,0.00108,-0.000927,0.207,0.00204,0.435,0,0,0,0,0,5.51e-05,1.86e-05,1.96e-05,5.89e-05,0.0504,0.0515,0.00571,0.542,0.541,0.0305,2.83e-11,2.86e-11,6.61e-11,2.05e-06,1.92e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37290000,-0.677,0.00287,-0.00358,0.736,0.112,0.168,-0.19,-16.9,-8.21,-366,-1.74e-05,-5.72e-05,5.32e-06,-0.00156,0.00108,-0.000927,0.207,0.00204,0.435,0,0,0,0,0,5.51e-05,1.87e-05,1.97e-05,5.89e-05,0.0553,0.0565,0.00584,0.553,0.552,0.0306,2.84e-11,2.87e-11,6.57e-11,2.05e-06,1.92e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37390000,-0.677,0.00311,-0.00343,0.736,0.0907,0.141,-0.187,-16.9,-8.23,-366,-1.74e-05,-5.72e-05,5.47e-06,-0.00166,0.00114,-0.000929,0.207,0.00204,0.435,0,0,0,0,0,5.5e-05,1.81e-05,1.9e-05,5.88e-05,0.0496,0.0505,0.00588,0.552,0.551,0.0304,2.85e-11,2.88e-11,6.52e-11,1.96e-06,1.84e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37490000,-0.677,0.00309,-0.00341,0.736,0.0896,0.148,-0.184,-16.9,-8.22,-366,-1.74e-05,-5.72e-05,5.59e-06,-0.00166,0.00114,-0.000929,0.207,0.00204,0.435,0,0,0,0,0,5.49e-05,1.81e-05,1.91e-05,5.87e-05,0.0542,0.0553,0.00599,0.563,0.562,0.0304,2.86e-11,2.89e-11,6.48e-11,1.96e-06,1.84e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37590000,-0.677,0.00327,-0.00331,0.736,0.0713,0.125,-0.18,-16.9,-8.23,-366,-1.74e-05,-5.71e-05,5.73e-06,-0.00175,0.00118,-0.000933,0.207,0.00204,0.435,0,0,0,0,0,5.49e-05,1.77e-05,1.86e-05,5.87e-05,0.0486,0.0495,0.00607,0.562,0.561,0.0305,2.87e-11,2.9e-11,6.45e-11,1.87e-06,1.76e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37690000,-0.677,0.00323,-0.00334,0.736,0.0689,0.131,-0.177,-16.9,-8.22,-366,-1.74e-05,-5.71e-05,5.89e-06,-0.00175,0.00118,-0.000933,0.207,0.00204,0.435,0,0,0,0,0,5.48e-05,1.78e-05,1.87e-05,5.87e-05,0.053,0.054,0.00619,0.573,0.572,0.0305,2.88e-11,2.91e-11,6.4e-11,1.87e-06,1.76e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37790000,-0.677,0.00339,-0.00332,0.736,0.0542,0.111,-0.172,-16.9,-8.23,-366,-1.74e-05,-5.71e-05,6.06e-06,-0.00182,0.00121,-0.000937,0.207,0.00204,0.435,0,0,0,0,0,5.47e-05,1.75e-05,1.84e-05,5.86e-05,0.0476,0.0483,0.00625,0.572,0.571,0.0303,2.89e-11,2.92e-11,6.36e-11,1.79e-06,1.68e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37890000,-0.677,0.00334,-0.00331,0.736,0.052,0.115,-0.162,-16.9,-8.22,-366,-1.74e-05,-5.71e-05,6.25e-06,-0.00183,0.00122,-0.000941,0.207,0.00204,0.435,0,0,0,0,0,5.47e-05,1.76e-05,1.85e-05,5.85e-05,0.0518,0.0526,0.00639,0.582,0.581,0.0304,2.9e-11,2.93e-11,6.32e-11,1.79e-06,1.68e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37990000,-0.676,0.00339,-0.00329,0.737,0.039,0.0984,-0.152,-16.9,-8.23,-366,-1.74e-05,-5.71e-05,6.41e-06,-0.00189,0.00126,-0.000947,0.207,0.00204,0.435,0,0,0,0,0,5.46e-05,1.74e-05,1.83e-05,5.85e-05,0.0465,0.0472,0.00647,0.582,0.581,0.0305,2.91e-11,2.94e-11,6.29e-11,1.71e-06,1.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38090000,-0.676,0.00334,-0.00328,0.737,0.0356,0.102,-0.143,-16.9,-8.22,-366,-1.74e-05,-5.71e-05,6.55e-06,-0.0019,0.00126,-0.00095,0.207,0.00204,0.435,0,0,0,0,0,5.46e-05,1.75e-05,1.84e-05,5.84e-05,0.0504,0.0511,0.00661,0.592,0.591,0.0306,2.92e-11,2.95e-11,6.25e-11,1.71e-06,1.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38190000,-0.676,0.00339,-0.0032,0.737,0.0235,0.0861,-0.135,-16.9,-8.23,-366,-1.74e-05,-5.7e-05,6.71e-06,-0.00196,0.00129,-0.000956,0.207,0.00204,0.435,0,0,0,0,0,5.45e-05,1.74e-05,1.83e-05,5.83e-05,0.0454,0.0459,0.00667,0.592,0.591,0.0305,2.93e-11,2.96e-11,6.21e-11,1.63e-06,1.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38290000,-0.676,0.00335,-0.0032,0.737,0.0208,0.0873,-0.127,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,6.87e-06,-0.00196,0.00129,-0.00096,0.207,0.00204,0.435,0,0,0,0,0,5.45e-05,1.74e-05,1.84e-05,5.83e-05,0.0491,0.0497,0.00683,0.602,0.601,0.0308,2.94e-11,2.97e-11,6.17e-11,1.63e-06,1.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38390000,-0.676,0.00338,-0.00311,0.737,0.0132,0.0753,-0.119,-16.9,-8.23,-366,-1.74e-05,-5.7e-05,7.05e-06,-0.00201,0.0013,-0.000965,0.207,0.00204,0.435,0,0,0,0,0,5.44e-05,1.74e-05,1.83e-05,5.82e-05,0.0443,0.0447,0.00689,0.602,0.601,0.0307,2.94e-11,2.98e-11,6.13e-11,1.56e-06,1.47e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38490000,-0.676,0.00335,-0.0031,0.737,0.0104,0.0772,-0.111,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.21e-06,-0.00201,0.00131,-0.000969,0.207,0.00204,0.435,0,0,0,0,0,5.43e-05,1.75e-05,1.84e-05,5.82e-05,0.0477,0.0482,0.00703,0.612,0.611,0.0309,2.95e-11,2.99e-11,6.1e-11,1.56e-06,1.47e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38590000,-0.675,0.00335,-0.003,0.737,0.00624,0.0661,-0.104,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.36e-06,-0.00205,0.00131,-0.000973,0.207,0.00204,0.435,0,0,0,0,0,5.43e-05,1.75e-05,1.84e-05,5.81e-05,0.0431,0.0435,0.00711,0.612,0.611,0.031,2.96e-11,2.99e-11,6.06e-11,1.49e-06,1.41e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38690000,-0.675,0.00325,-0.003,0.738,0.00243,0.0658,-0.0961,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.48e-06,-0.00205,0.00132,-0.000977,0.207,0.00204,0.435,0,0,0,0,0,5.42e-05,1.76e-05,1.85e-05,5.81e-05,0.0464,0.0468,0.00725,0.622,0.621,0.0312,2.97e-11,3e-11,6.03e-11,1.49e-06,1.41e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38790000,-0.675,0.00326,-0.00296,0.738,-0.0024,0.0542,-0.0883,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.62e-06,-0.00209,0.00133,-0.000982,0.207,0.00204,0.435,0,0,0,0,0,5.41e-05,1.76e-05,1.85e-05,5.8e-05,0.042,0.0423,0.00729,0.622,0.621,0.0311,2.98e-11,3.01e-11,5.99e-11,1.43e-06,1.35e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38890000,-0.675,0.00307,-0.00302,0.738,-0.0118,0.0441,0.411,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.77e-06,-0.00209,0.00133,-0.000984,0.207,0.00204,0.435,0,0,0,0,0,5.41e-05,1.77e-05,1.87e-05,5.8e-05,0.0448,0.0451,0.00745,0.632,0.631,0.0315,2.99e-11,3.02e-11,5.96e-11,1.43e-06,1.35e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28390000,0.711,0.0115,0.0226,0.702,-2.76,-1.29,0.769,-4.72,-2.56,-370,-8.22e-06,-5.79e-05,4.68e-06,5.36e-05,-0.000142,-0.0012,0.207,0.00204,0.435,0,0,0,0,0,6.63e-05,7.73e-05,7.67e-05,6.53e-05,0.0216,0.021,0.00865,0.1,0.0991,0.0356,3.77e-11,3.76e-11,1.44e-10,2.81e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28490000,0.712,0.00262,0.00443,0.703,-2.71,-1.28,1.06,-4.99,-2.69,-370,-8.22e-06,-5.79e-05,4.63e-06,5.11e-05,-0.000136,-0.00119,0.207,0.00204,0.435,0,0,0,0,0,6.61e-05,7.76e-05,7.7e-05,6.5e-05,0.0227,0.0222,0.00878,0.108,0.107,0.036,3.78e-11,3.77e-11,1.43e-10,2.81e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28590000,0.711,0.000848,0.000917,0.704,-2.64,-1.26,0.959,-5.26,-2.82,-370,-8.21e-06,-5.79e-05,4.62e-06,4.74e-05,-0.000127,-0.00119,0.207,0.00204,0.435,0,0,0,0,0,6.59e-05,7.78e-05,7.72e-05,6.49e-05,0.0239,0.0234,0.00887,0.117,0.115,0.0361,3.79e-11,3.77e-11,1.41e-10,2.81e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28690000,0.71,0.000143,1.51e-06,0.705,-2.56,-1.25,0.962,-5.52,-2.94,-370,-8.2e-06,-5.79e-05,4.56e-06,4.33e-05,-0.000116,-0.00118,0.207,0.00204,0.435,0,0,0,0,0,6.58e-05,7.79e-05,7.74e-05,6.48e-05,0.0251,0.0247,0.00896,0.126,0.125,0.0362,3.8e-11,3.78e-11,1.39e-10,2.81e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28790000,0.709,-0.000139,-0.000243,0.705,-2.53,-1.22,0.967,-5.85,-3.05,-370,-8.9e-06,-5.77e-05,4.52e-06,1.26e-05,-0.000185,-0.00117,0.207,0.00204,0.435,0,0,0,0,0,6.55e-05,7.81e-05,7.74e-05,6.46e-05,0.024,0.0237,0.00889,0.127,0.125,0.0359,3.73e-11,3.71e-11,1.38e-10,2.8e-06,2.78e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28890000,0.708,-0.000158,-2.47e-05,0.706,-2.46,-1.2,0.956,-6.1,-3.17,-370,-8.89e-06,-5.77e-05,4.48e-06,8.28e-06,-0.000175,-0.00116,0.207,0.00204,0.435,0,0,0,0,0,6.54e-05,7.82e-05,7.76e-05,6.46e-05,0.0252,0.025,0.00902,0.136,0.135,0.0364,3.74e-11,3.72e-11,1.36e-10,2.8e-06,2.78e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28990000,0.708,4.27e-05,0.000428,0.706,-2.45,-1.18,0.95,-6.44,-3.28,-370,-9.76e-06,-5.76e-05,4.37e-06,-1.27e-05,-0.000254,-0.00115,0.207,0.00204,0.435,0,0,0,0,0,6.51e-05,7.84e-05,7.76e-05,6.44e-05,0.0241,0.024,0.00895,0.136,0.135,0.0361,3.68e-11,3.65e-11,1.35e-10,2.79e-06,2.77e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29090000,0.708,0.000196,0.000831,0.706,-2.38,-1.17,0.941,-6.68,-3.4,-369,-9.75e-06,-5.76e-05,4.29e-06,-1.74e-05,-0.000242,-0.00115,0.207,0.00204,0.435,0,0,0,0,0,6.5e-05,7.86e-05,7.77e-05,6.43e-05,0.0253,0.0254,0.00903,0.147,0.145,0.0362,3.69e-11,3.66e-11,1.33e-10,2.79e-06,2.77e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29190000,0.708,0.000419,0.00126,0.706,-2.35,-1.15,0.934,-6.98,-3.5,-369,-1.03e-05,-5.75e-05,4.35e-06,-3.67e-05,-0.000272,-0.00114,0.207,0.00204,0.435,0,0,0,0,0,6.49e-05,7.87e-05,7.77e-05,6.42e-05,0.0242,0.0243,0.00901,0.146,0.145,0.0363,3.62e-11,3.59e-11,1.32e-10,2.78e-06,2.75e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29290000,0.708,0.000773,0.00211,0.706,-2.29,-1.14,0.959,-7.21,-3.62,-369,-1.03e-05,-5.75e-05,4.24e-06,-4.25e-05,-0.000257,-0.00113,0.207,0.00204,0.435,0,0,0,0,0,6.48e-05,7.88e-05,7.78e-05,6.41e-05,0.0255,0.0257,0.00908,0.157,0.156,0.0364,3.63e-11,3.6e-11,1.31e-10,2.78e-06,2.75e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29390000,0.708,0.00133,0.00362,0.706,-2.28,-1.12,0.968,-7.52,-3.73,-369,-1.09e-05,-5.75e-05,3.99e-06,-5.78e-05,-0.000292,-0.00112,0.207,0.00204,0.435,0,0,0,0,0,6.47e-05,7.9e-05,7.78e-05,6.4e-05,0.0243,0.0246,0.009,0.156,0.155,0.0362,3.56e-11,3.53e-11,1.29e-10,2.77e-06,2.74e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29490000,0.708,0.00183,0.00475,0.706,-2.23,-1.11,0.965,-7.75,-3.84,-369,-1.09e-05,-5.75e-05,3.97e-06,-6.22e-05,-0.000281,-0.00111,0.207,0.00204,0.435,0,0,0,0,0,6.46e-05,7.91e-05,7.79e-05,6.39e-05,0.0256,0.0259,0.00912,0.167,0.166,0.0366,3.57e-11,3.54e-11,1.28e-10,2.77e-06,2.73e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29590000,0.708,0.00224,0.00588,0.706,-2.2,-1.1,0.956,-8.02,-3.93,-369,-1.13e-05,-5.74e-05,3.9e-06,-8.52e-05,-0.000287,-0.0011,0.207,0.00204,0.435,0,0,0,0,0,6.45e-05,7.92e-05,7.78e-05,6.37e-05,0.0244,0.0248,0.00904,0.166,0.165,0.0363,3.51e-11,3.47e-11,1.27e-10,2.76e-06,2.72e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29690000,0.708,0.00254,0.00654,0.706,-2.16,-1.09,0.949,-8.23,-4.04,-369,-1.13e-05,-5.74e-05,3.8e-06,-9e-05,-0.000274,-0.0011,0.207,0.00204,0.435,0,0,0,0,0,6.44e-05,7.94e-05,7.79e-05,6.36e-05,0.0257,0.0261,0.0091,0.177,0.176,0.0364,3.52e-11,3.48e-11,1.25e-10,2.76e-06,2.72e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29790000,0.708,0.00284,0.00707,0.706,-2.15,-1.07,0.935,-8.52,-4.14,-369,-1.18e-05,-5.73e-05,3.79e-06,-0.000107,-0.000289,-0.00109,0.207,0.00204,0.435,0,0,0,0,0,6.43e-05,7.95e-05,7.78e-05,6.35e-05,0.0245,0.025,0.00906,0.176,0.175,0.0365,3.46e-11,3.42e-11,1.24e-10,2.76e-06,2.71e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29890000,0.708,0.00292,0.00731,0.706,-2.11,-1.07,0.921,-8.73,-4.25,-369,-1.18e-05,-5.73e-05,3.65e-06,-0.000115,-0.000268,-0.00108,0.207,0.00204,0.435,0,0,0,0,0,6.42e-05,7.96e-05,7.79e-05,6.34e-05,0.0258,0.0263,0.00912,0.188,0.186,0.0366,3.47e-11,3.43e-11,1.23e-10,2.76e-06,2.7e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29990000,0.708,0.00308,0.0075,0.706,-2.09,-1.05,0.904,-8.98,-4.34,-369,-1.21e-05,-5.72e-05,3.52e-06,-0.000135,-0.000263,-0.00107,0.207,0.00204,0.435,0,0,0,0,0,6.41e-05,7.97e-05,7.78e-05,6.32e-05,0.0246,0.0251,0.00903,0.186,0.184,0.0364,3.41e-11,3.37e-11,1.21e-10,2.75e-06,2.69e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30090000,0.708,0.00307,0.00744,0.706,-2.06,-1.04,0.89,-9.19,-4.44,-369,-1.21e-05,-5.71e-05,3.41e-06,-0.000141,-0.000248,-0.00107,0.207,0.00204,0.435,0,0,0,0,0,6.4e-05,7.99e-05,7.79e-05,6.31e-05,0.0259,0.0265,0.00908,0.198,0.196,0.0365,3.42e-11,3.38e-11,1.2e-10,2.75e-06,2.69e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30190000,0.708,0.00315,0.00733,0.706,-2.05,-1.03,0.877,-9.44,-4.53,-369,-1.25e-05,-5.71e-05,3.4e-06,-0.000154,-0.000253,-0.00106,0.207,0.00204,0.435,0,0,0,0,0,6.4e-05,7.99e-05,7.77e-05,6.29e-05,0.0247,0.0252,0.00903,0.195,0.194,0.0365,3.36e-11,3.32e-11,1.19e-10,2.75e-06,2.68e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30290000,0.709,0.00305,0.00715,0.706,-2.01,-1.03,0.865,-9.65,-4.64,-368,-1.25e-05,-5.71e-05,3.33e-06,-0.000157,-0.000244,-0.00106,0.207,0.00204,0.435,0,0,0,0,0,6.39e-05,8.01e-05,7.78e-05,6.28e-05,0.026,0.0266,0.00908,0.207,0.206,0.0366,3.37e-11,3.33e-11,1.18e-10,2.75e-06,2.67e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30390000,0.709,0.00308,0.007,0.706,-1.99,-1.02,0.848,-9.88,-4.73,-368,-1.27e-05,-5.7e-05,3.26e-06,-0.000169,-0.000234,-0.00105,0.207,0.00204,0.435,0,0,0,0,0,6.37e-05,8.01e-05,7.76e-05,6.26e-05,0.0248,0.0253,0.00898,0.205,0.204,0.0364,3.31e-11,3.27e-11,1.16e-10,2.74e-06,2.66e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30490000,0.709,0.00295,0.00676,0.706,-1.96,-1.01,0.834,-10.1,-4.83,-368,-1.27e-05,-5.7e-05,3.27e-06,-0.000172,-0.000226,-0.00105,0.207,0.00204,0.435,0,0,0,0,0,6.37e-05,8.03e-05,7.77e-05,6.25e-05,0.0261,0.0266,0.00907,0.217,0.216,0.0368,3.32e-11,3.28e-11,1.15e-10,2.74e-06,2.66e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30590000,0.709,0.00289,0.00647,0.705,-1.95,-1,0.793,-10.3,-4.93,-368,-1.3e-05,-5.7e-05,3.28e-06,-0.000181,-0.000221,-0.00104,0.207,0.00204,0.435,0,0,0,0,0,6.36e-05,8.03e-05,7.74e-05,6.23e-05,0.0248,0.0254,0.00897,0.215,0.213,0.0365,3.26e-11,3.23e-11,1.14e-10,2.74e-06,2.65e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30690000,0.709,0.00274,0.00616,0.705,-1.91,-0.994,0.786,-10.5,-5.03,-368,-1.3e-05,-5.7e-05,3.24e-06,-0.000186,-0.000208,-0.00104,0.207,0.00204,0.435,0,0,0,0,0,6.35e-05,8.04e-05,7.75e-05,6.22e-05,0.0261,0.0267,0.00901,0.227,0.226,0.0366,3.27e-11,3.24e-11,1.13e-10,2.74e-06,2.64e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30790000,0.709,0.0027,0.00584,0.705,-1.89,-0.982,0.777,-10.7,-5.11,-368,-1.32e-05,-5.69e-05,3.1e-06,-0.000193,-0.000204,-0.00103,0.207,0.00204,0.435,0,0,0,0,0,6.34e-05,8.04e-05,7.72e-05,6.2e-05,0.0249,0.0254,0.00895,0.224,0.223,0.0367,3.22e-11,3.18e-11,1.12e-10,2.74e-06,2.63e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30890000,0.709,0.00252,0.0054,0.705,-1.86,-0.974,0.765,-10.9,-5.21,-368,-1.32e-05,-5.69e-05,3.1e-06,-0.000198,-0.000193,-0.00103,0.207,0.00204,0.435,0,0,0,0,0,6.33e-05,8.06e-05,7.73e-05,6.19e-05,0.0262,0.0267,0.00899,0.237,0.235,0.0368,3.23e-11,3.19e-11,1.11e-10,2.73e-06,2.63e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30990000,0.709,0.0025,0.00494,0.705,-1.85,-0.964,0.756,-11.1,-5.3,-368,-1.34e-05,-5.68e-05,3.02e-06,-0.000206,-0.000185,-0.00102,0.207,0.00204,0.435,0,0,0,0,0,6.32e-05,8.05e-05,7.7e-05,6.17e-05,0.0249,0.0254,0.00888,0.233,0.232,0.0365,3.17e-11,3.14e-11,1.1e-10,2.73e-06,2.62e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31090000,0.709,0.00229,0.00445,0.705,-1.82,-0.956,0.744,-11.3,-5.4,-368,-1.34e-05,-5.68e-05,2.95e-06,-0.000212,-0.000171,-0.00102,0.207,0.00204,0.435,0,0,0,0,0,6.32e-05,8.07e-05,7.71e-05,6.16e-05,0.0262,0.0267,0.00896,0.246,0.245,0.0369,3.18e-11,3.15e-11,1.09e-10,2.73e-06,2.61e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31190000,0.709,0.00223,0.00423,0.705,-1.8,-0.948,0.733,-11.5,-5.49,-368,-1.36e-05,-5.68e-05,2.9e-06,-0.000224,-0.000145,-0.00101,0.207,0.00204,0.435,0,0,0,0,0,6.3e-05,8.06e-05,7.67e-05,6.14e-05,0.0249,0.0253,0.00885,0.243,0.241,0.0366,3.13e-11,3.1e-11,1.07e-10,2.73e-06,2.61e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31290000,0.709,0.00201,0.00372,0.705,-1.77,-0.939,0.734,-11.7,-5.58,-368,-1.36e-05,-5.68e-05,2.89e-06,-0.000231,-0.000129,-0.00101,0.207,0.00204,0.435,0,0,0,0,0,6.29e-05,8.08e-05,7.68e-05,6.13e-05,0.0262,0.0266,0.00888,0.256,0.254,0.0367,3.14e-11,3.11e-11,1.06e-10,2.73e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31390000,0.709,0.00188,0.00324,0.705,-1.75,-0.931,0.73,-11.9,-5.68,-368,-1.38e-05,-5.68e-05,2.82e-06,-0.000239,-0.000114,-0.001,0.207,0.00204,0.435,0,0,0,0,0,6.28e-05,8.07e-05,7.65e-05,6.11e-05,0.0249,0.0253,0.00877,0.252,0.251,0.0364,3.09e-11,3.07e-11,1.05e-10,2.73e-06,2.59e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31490000,0.709,0.00168,0.00263,0.705,-1.72,-0.923,0.725,-12.1,-5.77,-368,-1.38e-05,-5.68e-05,2.72e-06,-0.000245,-0.0001,-0.000995,0.207,0.00204,0.435,0,0,0,0,0,6.28e-05,8.08e-05,7.65e-05,6.1e-05,0.0261,0.0266,0.00884,0.265,0.264,0.0368,3.1e-11,3.08e-11,1.04e-10,2.73e-06,2.59e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31590000,0.709,0.00162,0.00229,0.705,-1.7,-0.91,0.72,-12.3,-5.85,-368,-1.39e-05,-5.67e-05,2.73e-06,-0.000253,-8.36e-05,-0.000989,0.207,0.00204,0.435,0,0,0,0,0,6.26e-05,8.07e-05,7.62e-05,6.08e-05,0.0249,0.0252,0.00873,0.261,0.26,0.0365,3.05e-11,3.03e-11,1.03e-10,2.72e-06,2.58e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31690000,0.709,0.00137,0.00163,0.705,-1.67,-0.901,0.725,-12.5,-5.94,-368,-1.39e-05,-5.67e-05,2.71e-06,-0.000258,-7.15e-05,-0.000986,0.207,0.00204,0.435,0,0,0,0,0,6.25e-05,8.09e-05,7.62e-05,6.07e-05,0.0261,0.0265,0.00876,0.274,0.273,0.0366,3.06e-11,3.04e-11,1.02e-10,2.72e-06,2.57e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31790000,0.709,0.00118,0.00102,0.705,-1.65,-0.891,0.723,-12.7,-6.03,-367,-1.42e-05,-5.67e-05,2.7e-06,-0.000267,-5.32e-05,-0.000979,0.207,0.00204,0.435,0,0,0,0,0,6.24e-05,8.08e-05,7.59e-05,6.05e-05,0.0248,0.0251,0.00869,0.27,0.269,0.0366,3.02e-11,3e-11,1.01e-10,2.72e-06,2.57e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31890000,0.709,0.000931,0.000322,0.705,-1.62,-0.881,0.718,-12.8,-6.11,-367,-1.42e-05,-5.67e-05,2.68e-06,-0.000273,-4.02e-05,-0.000975,0.207,0.00204,0.435,0,0,0,0,0,6.24e-05,8.09e-05,7.59e-05,6.05e-05,0.0261,0.0264,0.00872,0.283,0.282,0.0367,3.03e-11,3.01e-11,1e-10,2.72e-06,2.56e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31990000,0.709,0.000799,-0.000136,0.705,-1.59,-0.868,0.712,-13,-6.19,-367,-1.42e-05,-5.67e-05,2.59e-06,-0.000281,-2.13e-05,-0.000969,0.207,0.00204,0.435,0,0,0,0,0,6.22e-05,8.08e-05,7.56e-05,6.02e-05,0.0248,0.025,0.00861,0.279,0.278,0.0364,2.98e-11,2.97e-11,9.95e-11,2.72e-06,2.55e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32090000,0.709,0.000512,-0.000856,0.705,-1.56,-0.858,0.719,-13.2,-6.28,-367,-1.42e-05,-5.67e-05,2.54e-06,-0.000288,-6.11e-06,-0.000964,0.207,0.00204,0.435,0,0,0,0,0,6.22e-05,8.09e-05,7.56e-05,6.02e-05,0.026,0.0263,0.00868,0.293,0.291,0.0368,2.99e-11,2.98e-11,9.87e-11,2.72e-06,2.55e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32190000,0.709,0.000302,-0.00163,0.706,-1.54,-0.848,0.717,-13.3,-6.36,-367,-1.44e-05,-5.66e-05,2.36e-06,-0.000297,1.47e-05,-0.000957,0.207,0.00204,0.435,0,0,0,0,0,6.2e-05,8.08e-05,7.53e-05,6e-05,0.0247,0.0249,0.00857,0.288,0.287,0.0365,2.95e-11,2.94e-11,9.77e-11,2.72e-06,2.54e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32290000,0.709,6.97e-05,-0.00236,0.706,-1.51,-0.838,0.711,-13.5,-6.44,-367,-1.44e-05,-5.66e-05,2.34e-06,-0.000304,3.07e-05,-0.000952,0.207,0.00204,0.435,0,0,0,0,0,6.19e-05,8.09e-05,7.53e-05,5.99e-05,0.026,0.0262,0.00859,0.302,0.3,0.0365,2.96e-11,2.95e-11,9.68e-11,2.72e-06,2.54e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32390000,0.709,-0.000112,-0.00299,0.706,-1.48,-0.826,0.71,-13.6,-6.52,-367,-1.45e-05,-5.66e-05,2.36e-06,-0.000308,3.96e-05,-0.000948,0.207,0.00204,0.435,0,0,0,0,0,6.18e-05,8.08e-05,7.5e-05,5.98e-05,0.0247,0.0249,0.00853,0.297,0.296,0.0366,2.92e-11,2.91e-11,9.6e-11,2.72e-06,2.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32490000,0.709,-0.000233,-0.00324,0.706,-1.45,-0.815,0.716,-13.8,-6.61,-367,-1.45e-05,-5.66e-05,2.36e-06,-0.000313,5.09e-05,-0.000945,0.207,0.00204,0.435,0,0,0,0,0,6.17e-05,8.09e-05,7.5e-05,5.97e-05,0.0259,0.0261,0.00855,0.311,0.309,0.0366,2.93e-11,2.92e-11,9.51e-11,2.71e-06,2.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32590000,0.708,-0.000229,-0.00345,0.706,-1.42,-0.805,0.714,-14,-6.69,-367,-1.46e-05,-5.66e-05,2.29e-06,-0.000317,5.87e-05,-0.000942,0.207,0.00204,0.435,0,0,0,0,0,6.16e-05,8.08e-05,7.47e-05,5.95e-05,0.0246,0.0248,0.00845,0.306,0.305,0.0363,2.89e-11,2.89e-11,9.42e-11,2.71e-06,2.52e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32690000,0.708,-0.000272,-0.00353,0.706,-1.39,-0.794,0.71,-14.1,-6.77,-367,-1.46e-05,-5.66e-05,2.26e-06,-0.000319,6.42e-05,-0.00094,0.207,0.00204,0.435,0,0,0,0,0,6.15e-05,8.09e-05,7.48e-05,5.94e-05,0.0259,0.026,0.00847,0.32,0.318,0.0363,2.9e-11,2.9e-11,9.33e-11,2.71e-06,2.52e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32790000,0.708,-0.000234,-0.00347,0.706,-1.36,-0.783,0.706,-14.2,-6.84,-367,-1.46e-05,-5.66e-05,2.23e-06,-0.000323,7.35e-05,-0.000937,0.207,0.00204,0.435,0,0,0,0,0,6.14e-05,8.07e-05,7.44e-05,5.93e-05,0.0246,0.0247,0.00841,0.315,0.314,0.0364,2.86e-11,2.86e-11,9.25e-11,2.71e-06,2.51e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32890000,0.708,-0.000142,-0.00343,0.706,-1.34,-0.773,0.706,-14.4,-6.92,-367,-1.46e-05,-5.66e-05,2.08e-06,-0.000328,8.42e-05,-0.000933,0.207,0.00204,0.435,0,0,0,0,0,6.13e-05,8.09e-05,7.45e-05,5.92e-05,0.0258,0.0259,0.00843,0.329,0.327,0.0364,2.87e-11,2.87e-11,9.17e-11,2.71e-06,2.51e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32990000,0.708,-1.14e-05,-0.00336,0.706,-1.32,-0.765,0.7,-14.5,-7,-367,-1.48e-05,-5.66e-05,2.2e-06,-0.000334,9.76e-05,-0.000928,0.207,0.00204,0.435,0,0,0,0,0,6.11e-05,8.07e-05,7.42e-05,5.91e-05,0.0246,0.0246,0.00833,0.325,0.323,0.0361,2.83e-11,2.84e-11,9.09e-11,2.71e-06,2.5e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33090000,0.708,-4.5e-05,-0.00339,0.706,-1.29,-0.756,0.695,-14.7,-7.08,-367,-1.48e-05,-5.66e-05,2.26e-06,-0.000336,0.000103,-0.000926,0.207,0.00204,0.435,0,0,0,0,0,6.11e-05,8.09e-05,7.42e-05,5.9e-05,0.0258,0.0258,0.0084,0.338,0.336,0.0365,2.84e-11,2.85e-11,9.02e-11,2.71e-06,2.5e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33190000,0.704,0.00336,-0.00242,0.71,-1.26,-0.745,0.636,-14.8,-7.15,-367,-1.48e-05,-5.66e-05,2.28e-06,-0.000339,0.00011,-0.000924,0.207,0.00204,0.435,0,0,0,0,0,6.08e-05,8.06e-05,7.39e-05,5.91e-05,0.0246,0.0246,0.0083,0.334,0.332,0.0362,2.81e-11,2.82e-11,8.93e-11,2.71e-06,2.5e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33290000,0.652,0.0155,-0.00152,0.758,-1.26,-0.727,0.618,-14.9,-7.22,-367,-1.48e-05,-5.66e-05,2.32e-06,-0.000341,0.000114,-0.000922,0.207,0.00204,0.435,0,0,0,0,0,5.86e-05,8.02e-05,7.45e-05,6.13e-05,0.0258,0.0258,0.00832,0.347,0.345,0.0362,2.82e-11,2.83e-11,8.86e-11,2.71e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33390000,0.549,0.0135,-0.0018,0.836,-1.26,-0.715,0.809,-15.1,-7.3,-366,-1.49e-05,-5.66e-05,2.36e-06,-0.000346,0.000123,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.46e-05,7.91e-05,7.53e-05,6.52e-05,0.0243,0.0243,0.00826,0.343,0.341,0.0362,2.78e-11,2.8e-11,8.79e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33490000,0.411,0.0069,0.00065,0.912,-1.24,-0.71,0.826,-15.2,-7.37,-366,-1.49e-05,-5.66e-05,2.35e-06,-0.000346,0.000124,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.03e-05,7.8e-05,7.71e-05,6.96e-05,0.0258,0.0258,0.00809,0.356,0.354,0.0362,2.79e-11,2.81e-11,8.71e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33590000,0.254,0.00101,-0.00188,0.967,-1.21,-0.708,0.792,-15.3,-7.43,-366,-1.48e-05,-5.66e-05,2.35e-06,-0.000346,0.000124,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,4.67e-05,7.61e-05,7.82e-05,7.32e-05,0.0253,0.0254,0.00778,0.352,0.35,0.0359,2.75e-11,2.77e-11,8.63e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33690000,0.0871,-0.00227,-0.00496,0.996,-1.15,-0.705,0.798,-15.4,-7.5,-366,-1.48e-05,-5.66e-05,2.42e-06,-0.000346,0.000124,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,4.47e-05,7.48e-05,8e-05,7.55e-05,0.0278,0.028,0.00764,0.365,0.363,0.0362,2.76e-11,2.78e-11,8.57e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33790000,-0.0824,-0.00379,-0.00679,0.997,-1.1,-0.688,0.78,-15.6,-7.56,-366,-1.49e-05,-5.65e-05,2.42e-06,-0.000346,0.000124,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,4.43e-05,7.22e-05,7.96e-05,7.59e-05,0.0279,0.0281,0.00737,0.361,0.359,0.0358,2.73e-11,2.75e-11,8.5e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33890000,-0.249,-0.00494,-0.00753,0.968,-1.03,-0.664,0.765,-15.7,-7.63,-366,-1.49e-05,-5.65e-05,2.43e-06,-0.000346,0.000124,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,4.57e-05,7.16e-05,8.07e-05,7.47e-05,0.0314,0.0318,0.00721,0.374,0.372,0.0357,2.74e-11,2.76e-11,8.42e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33990000,-0.395,-0.00315,-0.0112,0.919,-0.984,-0.627,0.736,-15.8,-7.69,-366,-1.51e-05,-5.65e-05,2.43e-06,-0.000346,0.000124,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,4.84e-05,6.86e-05,7.77e-05,7.19e-05,0.0315,0.032,0.00698,0.37,0.368,0.0354,2.7e-11,2.72e-11,8.35e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34090000,-0.5,-0.00209,-0.0128,0.866,-0.931,-0.582,0.74,-15.9,-7.75,-366,-1.51e-05,-5.65e-05,2.53e-06,-0.000346,0.000124,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.13e-05,6.87e-05,7.77e-05,6.91e-05,0.036,0.0367,0.00688,0.383,0.381,0.0355,2.71e-11,2.73e-11,8.29e-11,2.7e-06,2.49e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34190000,-0.57,-0.00143,-0.0115,0.822,-0.916,-0.54,0.738,-16,-7.82,-366,-1.54e-05,-5.65e-05,2.51e-06,-0.000373,0.000143,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.35e-05,6.5e-05,7.27e-05,6.66e-05,0.0363,0.0371,0.00668,0.379,0.377,0.0351,2.67e-11,2.7e-11,8.22e-11,2.7e-06,2.48e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34290000,-0.613,-0.00237,-0.00863,0.79,-0.868,-0.492,0.737,-16.1,-7.87,-366,-1.54e-05,-5.65e-05,2.53e-06,-0.000372,0.000143,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.5e-05,6.51e-05,7.25e-05,6.49e-05,0.0422,0.0432,0.00659,0.392,0.39,0.035,2.68e-11,2.71e-11,8.15e-11,2.7e-06,2.48e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34390000,-0.639,-0.00251,-0.00611,0.769,-0.853,-0.458,0.735,-16.3,-7.94,-366,-1.57e-05,-5.66e-05,2.56e-06,-0.000421,0.000189,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.6e-05,6.04e-05,6.67e-05,6.37e-05,0.0418,0.043,0.00646,0.388,0.386,0.0349,2.65e-11,2.68e-11,8.09e-11,2.67e-06,2.46e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34490000,-0.655,-0.00345,-0.00397,0.756,-0.802,-0.417,0.734,-16.4,-7.98,-366,-1.57e-05,-5.66e-05,2.6e-06,-0.000421,0.000189,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.65e-05,6.05e-05,6.66e-05,6.3e-05,0.0486,0.0501,0.0064,0.401,0.399,0.0347,2.66e-11,2.69e-11,8.02e-11,2.67e-06,2.46e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34590000,-0.664,-0.00285,-0.00288,0.747,-0.801,-0.402,0.73,-16.5,-8.05,-366,-1.6e-05,-5.67e-05,2.69e-06,-0.000518,0.000275,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.68e-05,5.54e-05,6.06e-05,6.24e-05,0.047,0.0485,0.00627,0.398,0.396,0.0343,2.64e-11,2.67e-11,7.96e-11,2.62e-06,2.42e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34690000,-0.67,-0.00323,-0.0021,0.742,-0.75,-0.363,0.727,-16.6,-8.09,-366,-1.6e-05,-5.67e-05,2.67e-06,-0.000518,0.000275,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.7e-05,5.54e-05,6.05e-05,6.21e-05,0.0543,0.0562,0.00627,0.41,0.408,0.0344,2.65e-11,2.68e-11,7.9e-11,2.62e-06,2.42e-06,5.01e-08,0,0,0,0,0,0,0,0
|
||||
34790000,-0.674,-0.00214,-0.00183,0.739,-0.752,-0.354,0.72,-16.7,-8.16,-366,-1.63e-05,-5.68e-05,2.6e-06,-0.000624,0.000378,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.7e-05,5.05e-05,5.48e-05,6.17e-05,0.0512,0.0529,0.00617,0.408,0.405,0.034,2.64e-11,2.67e-11,7.84e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34890000,-0.676,-0.00217,-0.00173,0.736,-0.705,-0.32,0.718,-16.8,-8.19,-365,-1.63e-05,-5.68e-05,2.69e-06,-0.000624,0.000378,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.71e-05,5.05e-05,5.48e-05,6.16e-05,0.0586,0.0607,0.00617,0.42,0.418,0.0338,2.65e-11,2.68e-11,7.78e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34990000,-0.68,-0.0085,-0.00452,0.733,0.306,0.289,-0.126,-16.9,-8.22,-365,-1.65e-05,-5.69e-05,2.63e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.72e-05,4.61e-05,4.96e-05,6.13e-05,0.0575,0.0577,0.00681,0.417,0.415,0.0338,2.64e-11,2.67e-11,7.72e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35090000,-0.68,-0.00853,-0.00455,0.733,0.431,0.312,-0.185,-16.8,-8.19,-365,-1.65e-05,-5.69e-05,2.68e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.71e-05,4.61e-05,4.96e-05,6.13e-05,0.0627,0.063,0.0068,0.429,0.427,0.0337,2.65e-11,2.68e-11,7.66e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35190000,-0.68,-0.00854,-0.00458,0.734,0.452,0.344,-0.185,-16.8,-8.16,-365,-1.65e-05,-5.69e-05,2.7e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.7e-05,4.61e-05,4.97e-05,6.12e-05,0.0677,0.0683,0.00671,0.442,0.44,0.0336,2.66e-11,2.69e-11,7.6e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35290000,-0.68,-0.00859,-0.00464,0.734,0.476,0.376,-0.182,-16.7,-8.12,-365,-1.65e-05,-5.69e-05,2.7e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.69e-05,4.61e-05,4.97e-05,6.11e-05,0.0731,0.074,0.00663,0.456,0.455,0.0335,2.67e-11,2.7e-11,7.55e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35390000,-0.68,-0.00865,-0.0046,0.734,0.498,0.409,-0.179,-16.7,-8.08,-366,-1.65e-05,-5.69e-05,2.64e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.69e-05,4.61e-05,4.98e-05,6.11e-05,0.0788,0.0801,0.00658,0.472,0.471,0.0336,2.68e-11,2.71e-11,7.5e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35490000,-0.68,-0.00869,-0.0046,0.734,0.521,0.441,-0.177,-16.6,-8.04,-366,-1.65e-05,-5.69e-05,2.59e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.68e-05,4.61e-05,4.98e-05,6.1e-05,0.0849,0.0865,0.0065,0.489,0.489,0.0335,2.69e-11,2.72e-11,7.44e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35590000,-0.679,-0.00565,-0.00458,0.734,0.413,0.359,-0.189,-16.7,-8.13,-366,-1.68e-05,-5.7e-05,2.77e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.66e-05,3.88e-05,4.16e-05,6.05e-05,0.068,0.0692,0.00619,0.478,0.477,0.0331,2.69e-11,2.72e-11,7.38e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35690000,-0.679,-0.00566,-0.00453,0.734,0.431,0.387,-0.187,-16.7,-8.09,-366,-1.68e-05,-5.7e-05,2.78e-06,-0.000761,0.000515,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.65e-05,3.88e-05,4.16e-05,6.05e-05,0.0731,0.0747,0.00614,0.494,0.493,0.0332,2.7e-11,2.73e-11,7.33e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35790000,-0.679,-0.00344,-0.00445,0.734,0.354,0.325,-0.194,-16.8,-8.16,-366,-1.71e-05,-5.72e-05,2.91e-06,-0.00078,0.000532,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.63e-05,3.35e-05,3.57e-05,6.02e-05,0.061,0.0622,0.0059,0.486,0.484,0.0328,2.7e-11,2.73e-11,7.27e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35890000,-0.679,-0.00344,-0.0045,0.734,0.368,0.35,-0.193,-16.7,-8.12,-366,-1.71e-05,-5.71e-05,3.04e-06,-0.00078,0.000532,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.63e-05,3.35e-05,3.58e-05,6.01e-05,0.0663,0.0678,0.00585,0.501,0.5,0.0327,2.71e-11,2.74e-11,7.22e-11,2.46e-06,2.28e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35990000,-0.679,-0.00155,-0.00439,0.734,0.302,0.295,-0.199,-16.8,-8.19,-366,-1.72e-05,-5.72e-05,3.26e-06,-0.000854,0.000595,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.62e-05,2.95e-05,3.13e-05,6e-05,0.057,0.0583,0.0057,0.494,0.493,0.0325,2.72e-11,2.75e-11,7.17e-11,2.45e-06,2.27e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36090000,-0.679,-0.0016,-0.00438,0.734,0.312,0.315,-0.199,-16.8,-8.15,-366,-1.72e-05,-5.72e-05,3.39e-06,-0.000854,0.000595,-0.000918,0.207,0.00204,0.435,0,0,0,0,0,5.61e-05,2.95e-05,3.13e-05,5.99e-05,0.0625,0.0641,0.00568,0.508,0.507,0.0324,2.73e-11,2.76e-11,7.12e-11,2.45e-06,2.27e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36190000,-0.679,-0.000139,-0.00426,0.734,0.257,0.268,-0.203,-16.8,-8.21,-366,-1.73e-05,-5.73e-05,3.43e-06,-0.000961,0.00068,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.6e-05,2.63e-05,2.78e-05,5.98e-05,0.0548,0.0561,0.00555,0.503,0.502,0.032,2.74e-11,2.77e-11,7.07e-11,2.42e-06,2.25e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36290000,-0.679,-0.000201,-0.00422,0.734,0.265,0.286,-0.203,-16.8,-8.18,-366,-1.73e-05,-5.73e-05,3.57e-06,-0.000961,0.00068,-0.000919,0.207,0.00204,0.435,0,0,0,0,0,5.6e-05,2.64e-05,2.79e-05,5.97e-05,0.0603,0.0619,0.00558,0.516,0.515,0.0321,2.75e-11,2.78e-11,7.02e-11,2.42e-06,2.25e-06,5.01e-08,0,0,0,0,0,0,0,0
|
||||
36390000,-0.679,0.000852,-0.00411,0.735,0.22,0.243,-0.206,-16.8,-8.22,-366,-1.74e-05,-5.73e-05,3.78e-06,-0.00108,0.000771,-0.00092,0.207,0.00204,0.435,0,0,0,0,0,5.59e-05,2.38e-05,2.52e-05,5.96e-05,0.0534,0.0548,0.00549,0.512,0.511,0.0317,2.75e-11,2.79e-11,6.97e-11,2.37e-06,2.2e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36490000,-0.678,0.000798,-0.00415,0.735,0.227,0.258,-0.205,-16.8,-8.19,-366,-1.74e-05,-5.73e-05,4.05e-06,-0.00108,0.000771,-0.00092,0.207,0.00204,0.435,0,0,0,0,0,5.58e-05,2.39e-05,2.53e-05,5.96e-05,0.059,0.0606,0.00552,0.525,0.524,0.0316,2.76e-11,2.8e-11,6.92e-11,2.37e-06,2.2e-06,5.01e-08,0,0,0,0,0,0,0,0
|
||||
36590000,-0.678,0.0016,-0.00399,0.735,0.188,0.221,-0.205,-16.8,-8.23,-366,-1.74e-05,-5.73e-05,4.18e-06,-0.00121,0.000862,-0.000922,0.207,0.00204,0.435,0,0,0,0,0,5.57e-05,2.19e-05,2.31e-05,5.95e-05,0.0526,0.0538,0.00547,0.522,0.521,0.0313,2.77e-11,2.81e-11,6.87e-11,2.31e-06,2.15e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36690000,-0.678,0.00162,-0.00396,0.735,0.191,0.234,-0.204,-16.8,-8.2,-366,-1.74e-05,-5.73e-05,4.31e-06,-0.00121,0.000862,-0.000922,0.207,0.00204,0.435,0,0,0,0,0,5.57e-05,2.2e-05,2.32e-05,5.95e-05,0.058,0.0596,0.00554,0.534,0.533,0.0314,2.78e-11,2.82e-11,6.83e-11,2.31e-06,2.15e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36790000,-0.678,0.00222,-0.00387,0.735,0.158,0.202,-0.203,-16.8,-8.23,-366,-1.75e-05,-5.73e-05,4.44e-06,-0.00133,0.000946,-0.000923,0.207,0.00204,0.435,0,0,0,0,0,5.56e-05,2.05e-05,2.16e-05,5.94e-05,0.0519,0.0531,0.00552,0.532,0.53,0.0311,2.79e-11,2.83e-11,6.79e-11,2.23e-06,2.08e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36890000,-0.678,0.00217,-0.00386,0.735,0.16,0.211,-0.202,-16.8,-8.21,-366,-1.75e-05,-5.72e-05,4.58e-06,-0.00133,0.000946,-0.000923,0.207,0.00204,0.435,0,0,0,0,0,5.55e-05,2.06e-05,2.17e-05,5.93e-05,0.0572,0.0587,0.00559,0.544,0.542,0.031,2.8e-11,2.84e-11,6.74e-11,2.23e-06,2.08e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36990000,-0.678,0.00265,-0.00369,0.735,0.132,0.182,-0.201,-16.8,-8.23,-366,-1.75e-05,-5.72e-05,4.72e-06,-0.00144,0.00102,-0.000925,0.207,0.00204,0.435,0,0,0,0,0,5.55e-05,1.94e-05,2.04e-05,5.93e-05,0.0512,0.0523,0.00562,0.542,0.54,0.031,2.81e-11,2.85e-11,6.7e-11,2.15e-06,2e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37090000,-0.678,0.00262,-0.00366,0.735,0.133,0.19,-0.198,-16.8,-8.21,-366,-1.75e-05,-5.72e-05,4.92e-06,-0.00144,0.00102,-0.000925,0.207,0.00204,0.435,0,0,0,0,0,5.54e-05,1.95e-05,2.05e-05,5.93e-05,0.0563,0.0577,0.00571,0.553,0.552,0.0309,2.82e-11,2.86e-11,6.65e-11,2.15e-06,2e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37190000,-0.677,0.00296,-0.00355,0.736,0.109,0.161,-0.195,-16.9,-8.23,-366,-1.75e-05,-5.72e-05,5.14e-06,-0.00155,0.00108,-0.000928,0.207,0.00204,0.435,0,0,0,0,0,5.54e-05,1.86e-05,1.96e-05,5.92e-05,0.0504,0.0515,0.00573,0.552,0.55,0.0306,2.83e-11,2.87e-11,6.61e-11,2.06e-06,1.92e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37290000,-0.677,0.00295,-0.00358,0.736,0.109,0.167,-0.193,-16.8,-8.21,-366,-1.75e-05,-5.72e-05,5.3e-06,-0.00155,0.00108,-0.000928,0.207,0.00204,0.435,0,0,0,0,0,5.53e-05,1.87e-05,1.97e-05,5.92e-05,0.0553,0.0566,0.00585,0.563,0.561,0.0308,2.84e-11,2.88e-11,6.57e-11,2.06e-06,1.92e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37390000,-0.677,0.00319,-0.00343,0.736,0.0882,0.141,-0.19,-16.9,-8.23,-366,-1.75e-05,-5.72e-05,5.45e-06,-0.00165,0.00114,-0.00093,0.207,0.00204,0.435,0,0,0,0,0,5.53e-05,1.81e-05,1.9e-05,5.91e-05,0.0496,0.0505,0.0059,0.562,0.56,0.0306,2.85e-11,2.89e-11,6.53e-11,1.97e-06,1.84e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37490000,-0.677,0.00316,-0.00341,0.736,0.0869,0.147,-0.187,-16.8,-8.22,-366,-1.75e-05,-5.72e-05,5.58e-06,-0.00165,0.00114,-0.00093,0.207,0.00204,0.435,0,0,0,0,0,5.52e-05,1.82e-05,1.91e-05,5.9e-05,0.0542,0.0553,0.00601,0.572,0.571,0.0306,2.86e-11,2.9e-11,6.48e-11,1.97e-06,1.84e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37590000,-0.677,0.00334,-0.00331,0.736,0.069,0.125,-0.183,-16.9,-8.23,-366,-1.75e-05,-5.71e-05,5.72e-06,-0.00174,0.00118,-0.000934,0.207,0.00204,0.435,0,0,0,0,0,5.52e-05,1.77e-05,1.87e-05,5.9e-05,0.0486,0.0495,0.00608,0.572,0.57,0.0306,2.87e-11,2.9e-11,6.45e-11,1.88e-06,1.76e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37690000,-0.677,0.0033,-0.00334,0.736,0.0665,0.13,-0.18,-16.8,-8.22,-366,-1.75e-05,-5.71e-05,5.88e-06,-0.00174,0.00118,-0.000934,0.207,0.00204,0.435,0,0,0,0,0,5.51e-05,1.78e-05,1.88e-05,5.89e-05,0.0531,0.054,0.00621,0.582,0.581,0.0306,2.88e-11,2.91e-11,6.4e-11,1.88e-06,1.76e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37790000,-0.677,0.00344,-0.00331,0.736,0.0525,0.111,-0.172,-16.9,-8.23,-366,-1.74e-05,-5.71e-05,6.06e-06,-0.00181,0.00122,-0.000939,0.207,0.00204,0.435,0,0,0,0,0,5.5e-05,1.75e-05,1.84e-05,5.89e-05,0.0476,0.0484,0.00626,0.582,0.58,0.0305,2.89e-11,2.92e-11,6.36e-11,1.79e-06,1.68e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37890000,-0.677,0.00339,-0.00331,0.736,0.0501,0.115,-0.163,-16.8,-8.22,-366,-1.74e-05,-5.71e-05,6.24e-06,-0.00182,0.00122,-0.000943,0.207,0.00204,0.435,0,0,0,0,0,5.49e-05,1.76e-05,1.85e-05,5.88e-05,0.0518,0.0526,0.00639,0.592,0.591,0.0305,2.9e-11,2.93e-11,6.32e-11,1.79e-06,1.68e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37990000,-0.676,0.00344,-0.00328,0.737,0.0376,0.0982,-0.152,-16.9,-8.23,-366,-1.74e-05,-5.71e-05,6.41e-06,-0.00189,0.00126,-0.00095,0.207,0.00204,0.435,0,0,0,0,0,5.49e-05,1.74e-05,1.83e-05,5.88e-05,0.0465,0.0472,0.00648,0.592,0.59,0.0306,2.91e-11,2.94e-11,6.29e-11,1.71e-06,1.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38090000,-0.676,0.00338,-0.00328,0.737,0.034,0.102,-0.143,-16.9,-8.22,-366,-1.74e-05,-5.71e-05,6.55e-06,-0.00189,0.00126,-0.000953,0.207,0.00204,0.435,0,0,0,0,0,5.48e-05,1.75e-05,1.84e-05,5.87e-05,0.0504,0.0512,0.00661,0.602,0.6,0.0307,2.92e-11,2.95e-11,6.25e-11,1.71e-06,1.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38190000,-0.676,0.00343,-0.0032,0.737,0.0222,0.0859,-0.134,-16.9,-8.23,-366,-1.74e-05,-5.71e-05,6.71e-06,-0.00195,0.00129,-0.000959,0.207,0.00204,0.435,0,0,0,0,0,5.48e-05,1.74e-05,1.83e-05,5.86e-05,0.0454,0.046,0.00667,0.602,0.6,0.0306,2.93e-11,2.96e-11,6.21e-11,1.63e-06,1.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38290000,-0.676,0.00339,-0.00319,0.737,0.0195,0.0872,-0.127,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,6.87e-06,-0.00195,0.00129,-0.000963,0.207,0.00204,0.435,0,0,0,0,0,5.47e-05,1.75e-05,1.84e-05,5.86e-05,0.0491,0.0497,0.00684,0.612,0.61,0.0309,2.94e-11,2.97e-11,6.17e-11,1.63e-06,1.53e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38390000,-0.676,0.00343,-0.00311,0.737,0.012,0.0751,-0.12,-16.9,-8.23,-366,-1.74e-05,-5.7e-05,7.05e-06,-0.002,0.0013,-0.000967,0.207,0.00204,0.435,0,0,0,0,0,5.46e-05,1.74e-05,1.83e-05,5.85e-05,0.0443,0.0447,0.00689,0.612,0.61,0.0308,2.95e-11,2.98e-11,6.14e-11,1.56e-06,1.47e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38490000,-0.676,0.0034,-0.0031,0.737,0.00916,0.0769,-0.112,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.21e-06,-0.002,0.00131,-0.000971,0.207,0.00204,0.435,0,0,0,0,0,5.46e-05,1.75e-05,1.85e-05,5.85e-05,0.0477,0.0482,0.00703,0.622,0.62,0.0309,2.96e-11,2.99e-11,6.1e-11,1.56e-06,1.47e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38590000,-0.675,0.0034,-0.00299,0.737,0.00517,0.0659,-0.105,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.37e-06,-0.00204,0.00131,-0.000975,0.207,0.00204,0.435,0,0,0,0,0,5.45e-05,1.75e-05,1.84e-05,5.84e-05,0.0431,0.0435,0.00711,0.622,0.62,0.0311,2.96e-11,3e-11,6.07e-11,1.5e-06,1.41e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38690000,-0.675,0.0033,-0.00299,0.738,0.00134,0.0656,-0.097,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.49e-06,-0.00205,0.00132,-0.000979,0.207,0.00204,0.435,0,0,0,0,0,5.45e-05,1.76e-05,1.85e-05,5.84e-05,0.0464,0.0468,0.00725,0.632,0.63,0.0312,2.97e-11,3.01e-11,6.03e-11,1.5e-06,1.41e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38790000,-0.675,0.0033,-0.00295,0.738,-0.00334,0.0541,-0.0893,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.63e-06,-0.00208,0.00132,-0.000984,0.207,0.00204,0.435,0,0,0,0,0,5.44e-05,1.76e-05,1.86e-05,5.83e-05,0.042,0.0423,0.00729,0.632,0.63,0.0312,2.98e-11,3.01e-11,5.99e-11,1.44e-06,1.35e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38890000,-0.675,0.00312,-0.00301,0.738,-0.0127,0.0439,0.41,-16.9,-8.22,-366,-1.74e-05,-5.7e-05,7.77e-06,-0.00209,0.00132,-0.000986,0.207,0.00204,0.435,0,0,0,0,0,5.44e-05,1.77e-05,1.87e-05,5.83e-05,0.0448,0.0452,0.00745,0.641,0.64,0.0316,2.99e-11,3.02e-11,5.96e-11,1.44e-06,1.35e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
|
|
|
|
@ -180,6 +180,9 @@ void LoggedTopics::add_default_topics()
|
|||
|
||||
// add_optional_topic_multi("estimator_aid_src_airspeed", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
// add_optional_topic_multi("estimator_aid_src_baro_hgt", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
// add_optional_topic_multi("estimator_aid_src_ev_pos", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
// add_optional_topic_multi("estimator_aid_src_ev_vel", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
// add_optional_topic_multi("estimator_aid_src_ev_yaw", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
// add_optional_topic_multi("estimator_aid_src_rng_hgt", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
// add_optional_topic_multi("estimator_aid_src_fake_hgt", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
// add_optional_topic_multi("estimator_aid_src_fake_pos", 100, MAX_ESTIMATOR_INSTANCES);
|
||||
|
@ -267,9 +270,14 @@ void LoggedTopics::add_default_topics()
|
|||
add_optional_topic_multi("estimator_aid_src_rng_hgt", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_fake_hgt", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_fake_pos", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_gnss_yaw", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_gnss_vel", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_ev_hgt", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_ev_pos", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_ev_vel", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_ev_yaw", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_gnss_hgt", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_gnss_pos", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_gnss_vel", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_gnss_yaw", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_mag_heading", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_mag", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
add_optional_topic_multi("estimator_aid_src_ev_yaw", 0, MAX_ESTIMATOR_INSTANCES);
|
||||
|
|
Loading…
Reference in New Issue