#!/usr/bin/env python # Bedingungen: # 1. Ausrichtung des DMS Tools zu Aerotech mit Script: 210827_measure_DMS_Tool_linearity.py # 2. Omega Achse ausgereichtet mit Script:210827_measure_Omega_Offset_to_Smargon.py # 3. Die Kalibrierpin Vektoren wurden durch das Script: measure_PinVector_SHX_SHY.py ermittelt # 4. Der Kalibrierpin Vektor wurde durch das Script: measure_PinVector_SHZ_2.py ermittelt # 5. Smargon Koordinatensystem OX und OY wurde auf die Omega Achse Korrigiert # 6. KOmplettes Fehlerbild wurde in einer csv Datei geschrieben Chi 0-40 Grad / Omega jeweils 0/360 Grad # Dieses Scgript generiert eine LUT (Look up table) aufgrund des gemessenen Fehler des Smargons. # Dominik Buntschu, 8.9.2021 # Uses pandas, because pandas is fast, and needs less CPU & RAM usage than regular numpy import pandas as pd from pandas import read_csv import matplotlib.pyplot as plt from mpl_toolkits import mplot3d import numpy as np from matplotlib import cm #Daten von Error Datei in Panda DataFrame rawdf = read_csv('2021_09_09_14:01:04_measure_Smargon_Error_OXOY_CHI0_40.csv') #Aufbereiten der Daten rawdf['time']=rawdf['DMS_Secs']+rawdf['DMS_Nsecs']*1e-9 rawdf['OMEGA_Cont']=(rawdf['OMEGA_Cont']) rawdf['X']=(rawdf['DMS_X']-3.906065) #mit Offset zu 0 Referenz rawdf['Y']=(rawdf['DMS_Y']-0.222743) #mit Offset zu 0 Referenz rawdf['Z']=(rawdf['DMS_Z']-0.689140) #mit Offset zu 0 Referenz # Relevante Daten deklarieren df = rawdf[400:20900] # Bewegung startet ab Zeile 400 und endet mit Zeile 20900 # Generiert LUT lut = pd.DataFrame(columns=['CHI','OMEGA','OMEGA_Cont', 'X_LUT', 'Y_LUT', 'Z_LUT']) # Definition der Groesse der LUT (Schritte definieren) chistep = 10 # degrees omegastep = 10 # degrees Counter = 0 chi_tolerance = 1 #generiert Mittelwert mit CHI Schritten von chistep (10 Grad)und Omega Schritten von omegastep (10 Grad) for chi in range(0,40, chistep): for om in range(0,360, omegastep): Xavg = df[(df.CHI>chi-chi_tolerance)&(df.CHIom)&(df.OMEGAchi-chi_tolerance)&(df.CHIom)&(df.OMEGAchi-chi_tolerance)&(df.CHIom)&(df.OMEGA