diff --git a/sw/tools/calibration/calibrate_mag_current.py b/sw/tools/calibration/calibrate_mag_current.py index 3f26fc3901..85b9106a5f 100755 --- a/sw/tools/calibration/calibrate_mag_current.py +++ b/sw/tools/calibration/calibrate_mag_current.py @@ -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("") print("") print("") + # calibration_utils.plot_measurements("MAG", measurements) + calibration_utils.plot_mag_current_fit(measurements, coefficient, offset) + if __name__ == "__main__": main() diff --git a/sw/tools/calibration/calibration_utils.py b/sw/tools/calibration/calibration_utils.py index 47175c8115..14cdfc98e0 100644 --- a/sw/tools/calibration/calibration_utils.py +++ b/sw/tools/calibration/calibration_utils.py @@ -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()