Visualization of mag_current calib result (#2022)

show a plot of the fit, such that the user can see anomalies and see the significance
This commit is contained in:
Ewoud Smeur
2017-02-22 13:42:58 +01:00
committed by Felix Ruess
parent 642b8e6568
commit becfaed10d
2 changed files with 22 additions and 2 deletions
@@ -71,13 +71,16 @@ def main():
if options.verbose:
print("found "+str(len(measurements))+" records")
coefficient = calibration_utils.estimate_mag_current_relation(measurements)
coefficient, offset = calibration_utils.estimate_mag_current_relation(measurements)
print("")
print("<define name= \"MAG_X_CURRENT_COEF\" value=\""+str(coefficient[0])+"\"/>")
print("<define name= \"MAG_Y_CURRENT_COEF\" value=\""+str(coefficient[1])+"\"/>")
print("<define name= \"MAG_Z_CURRENT_COEF\" value=\""+str(coefficient[2])+"\"/>")
# calibration_utils.plot_measurements("MAG", measurements)
calibration_utils.plot_mag_current_fit(measurements, coefficient, offset)
if __name__ == "__main__":
main()
+18 -1
View File
@@ -134,10 +134,12 @@ def scale_measurements(meas, p):
def estimate_mag_current_relation(meas):
"""Calculate linear coefficient of magnetometer-current relation."""
coefficient = []
offset = []
for i in range(0, 3):
gradient, intercept, r_value, p_value, std_err = stats.linregress(meas[:, 3], meas[:, i])
coefficient.append(gradient)
return coefficient
offset.append(intercept)
return coefficient, offset
def print_xml(p, sensor, res):
@@ -376,3 +378,18 @@ def read_turntable_log(ac_id, tt_id, filename, _min, _max):
if m and last_tt and _min < last_tt < _max:
list_tt.append([last_tt, float(m.group(2)), float(m.group(3)), float(m.group(4))])
return np.array(list_tt)
def plot_mag_current_fit(measurements, coefficient, offset):
plt.subplot(2, 1, 1)
plt.plot(measurements[:, 0])
plt.plot(measurements[:, 1])
plt.plot(measurements[:, 2])
plt.plot(measurements[:, 3]*coefficient[0]+offset[0])
plt.plot(measurements[:, 3]*coefficient[1]+offset[1])
plt.plot(measurements[:, 3]*coefficient[2]+offset[2])
plt.ylabel('ADC')
plt.title("Raw measurements")
plt.subplot(2, 1, 2)
plt.plot(measurements[:, 3])
plt.show()