Browse Source

Replay : Incorporate EKF4 flash logging updates

master
priseborough 11 years ago committed by Andrew Tridgell
parent
commit
4f2a390dfa
  1. 46
      Tools/Replay/Replay.pde

46
Tools/Replay/Replay.pde

@ -211,7 +211,7 @@ void setup()
fprintf(ekf1f, "timestamp TimeMS Roll Pitch Yaw VN VE VD PN PE PD GX GY GZ\n"); fprintf(ekf1f, "timestamp TimeMS Roll Pitch Yaw VN VE VD PN PE PD GX GY GZ\n");
fprintf(ekf2f, "timestamp TimeMS AX AY AZ VWN VWE MN ME MD MX MY MZ\n"); fprintf(ekf2f, "timestamp TimeMS AX AY AZ VWN VWE MN ME MD MX MY MZ\n");
fprintf(ekf3f, "timestamp TimeMS IVN IVE IVD IPN IPE IPD IMX IMY IMZ IVT\n"); fprintf(ekf3f, "timestamp TimeMS IVN IVE IVD IPN IPE IPD IMX IMY IMZ IVT\n");
fprintf(ekf4f, "timestamp TimeMS SVN SVE SVD SPN SPE SPD SMX SMY SMZ SVT\n"); fprintf(ekf4f, "timestamp TimeMS SV SP SH SMX SMY SMZ SVT OFN EFE\n");
ahrs.set_ekf_use(true); ahrs.set_ekf_use(true);
@ -326,10 +326,12 @@ void loop()
Vector3f posInnov; Vector3f posInnov;
Vector3f magInnov; Vector3f magInnov;
float tasInnov; float tasInnov;
Vector3f velVar; float velVar;
Vector3f posVar; float posVar;
float hgtVar;
Vector3f magVar; Vector3f magVar;
float tasVar; float tasVar;
Vector2f offset;
const Matrix3f &dcm_matrix = ((AP_AHRS_DCM)ahrs).get_dcm_matrix(); const Matrix3f &dcm_matrix = ((AP_AHRS_DCM)ahrs).get_dcm_matrix();
dcm_matrix.to_euler(&DCM_attitude.x, &DCM_attitude.y, &DCM_attitude.z); dcm_matrix.to_euler(&DCM_attitude.x, &DCM_attitude.y, &DCM_attitude.z);
@ -342,7 +344,7 @@ void loop()
NavEKF.getMagNED(magNED); NavEKF.getMagNED(magNED);
NavEKF.getMagXYZ(magXYZ); NavEKF.getMagXYZ(magXYZ);
NavEKF.getInnovations(velInnov, posInnov, magInnov, tasInnov); NavEKF.getInnovations(velInnov, posInnov, magInnov, tasInnov);
NavEKF.getVariances(velVar, posVar, magVar, tasVar); NavEKF.getVariances(velVar, posVar, hgtVar, magVar, tasVar, offset);
NavEKF.getPosNED(ekf_relpos); NavEKF.getPosNED(ekf_relpos);
Vector3f inav_pos = inertial_nav.get_position() * 0.01f; Vector3f inav_pos = inertial_nav.get_position() * 0.01f;
float temp = degrees(ekf_euler.z); float temp = degrees(ekf_euler.z);
@ -486,31 +488,29 @@ void loop()
innovVT); innovVT);
// define messages for EKF4 data packet // define messages for EKF4 data packet
int16_t sqrtvarVN = (int16_t)(100*sqrtf(velVar.x)); int16_t sqrtvarV = (int16_t)(100*velVar);
int16_t sqrtvarVE = (int16_t)(100*sqrtf(velVar.y)); int16_t sqrtvarP = (int16_t)(100*posVar);
int16_t sqrtvarVD = (int16_t)(100*sqrtf(velVar.z)); int16_t sqrtvarH = (int16_t)(100*hgtVar);
int16_t sqrtvarPN = (int16_t)(100*sqrtf(posVar.x)); int16_t sqrtvarMX = (int16_t)(100*magVar.x);
int16_t sqrtvarPE = (int16_t)(100*sqrtf(posVar.y)); int16_t sqrtvarMY = (int16_t)(100*magVar.y);
int16_t sqrtvarPD = (int16_t)(100*sqrtf(posVar.z)); int16_t sqrtvarMZ = (int16_t)(100*magVar.z);
int16_t sqrtvarMX = (int16_t)(sqrtf(magVar.x)); int16_t sqrtvarVT = (int16_t)(100*tasVar);
int16_t sqrtvarMY = (int16_t)(sqrtf(magVar.y)); int16_t offsetNorth = (int8_t)(offset.x);
int16_t sqrtvarMZ = (int16_t)(sqrtf(magVar.z)); int16_t offsetEast = (int8_t)(offset.y);
int16_t sqrtvarVT = (int16_t)(100*sqrtf(tasVar));
// print EKF4 data packet // print EKF4 data packet
fprintf(ekf4f, "%.3f %d %d %d %d %d %d %d %d %d %d %d\n", fprintf(ekf4f, "%.3f %d %d %d %d %d %d %d %d %d %d\n",
hal.scheduler->millis() * 0.001f, hal.scheduler->millis() * 0.001f,
hal.scheduler->millis(), hal.scheduler->millis(),
sqrtvarVN, sqrtvarV,
sqrtvarVE, sqrtvarP,
sqrtvarVD, sqrtvarH,
sqrtvarPN,
sqrtvarPE,
sqrtvarPD,
sqrtvarMX, sqrtvarMX,
sqrtvarMY, sqrtvarMY,
sqrtvarMZ, sqrtvarMZ,
sqrtvarVT); sqrtvarVT,
offsetNorth,
offsetEast);
} }
} }
} }

Loading…
Cancel
Save