forked from zietzm/Helmholtz_Test_Bench
Rotation rate csv file generator initial issue added
This commit is contained in:
@@ -0,0 +1,361 @@
|
||||
"t [s]","x [T]","y [T]","z [T]"
|
||||
0.0,0.0,-1.7452406437283511e-06,9.998476951563913e-05
|
||||
1.0,0.0,-3.489949670250097e-06,9.993908270190956e-05
|
||||
2.0,0.0,-5.233595624294383e-06,9.986295347545739e-05
|
||||
3.0,0.0,-6.9756473744125295e-06,9.975640502598241e-05
|
||||
4.0,0.0,-8.715574274765817e-06,9.961946980917455e-05
|
||||
5.0,0.0,-1.0452846326765347e-05,9.945218953682732e-05
|
||||
6.0,0.0,-1.2186934340514746e-05,9.92546151641322e-05
|
||||
7.0,0.0,-1.3917310096006543e-05,9.902680687415703e-05
|
||||
8.0,0.0,-1.5643446504023085e-05,9.876883405951377e-05
|
||||
9.0,0.0,-1.736481776669303e-05,9.84807753012208e-05
|
||||
10.0,0.0,-1.908089953765448e-05,9.81627183447664e-05
|
||||
11.0,0.0,-2.079116908177593e-05,9.781476007338056e-05
|
||||
12.0,0.0,-2.24951054343865e-05,9.743700647852352e-05
|
||||
13.0,0.0,-2.4192189559966768e-05,9.702957262759964e-05
|
||||
14.0,0.0,-2.5881904510252073e-05,9.659258262890682e-05
|
||||
15.0,0.0,-2.7563735581699915e-05,9.612616959383188e-05
|
||||
16.0,0.0,-2.9237170472273675e-05,9.563047559630354e-05
|
||||
17.0,0.0,-3.0901699437494747e-05,9.510565162951534e-05
|
||||
18.0,0.0,-3.2556815445715677e-05,9.455185755993167e-05
|
||||
19.0,0.0,-3.420201433256688e-05,9.396926207859082e-05
|
||||
20.0,0.0,-3.583679495453003e-05,9.335804264972018e-05
|
||||
21.0,0.0,-3.7460659341591216e-05,9.271838545667873e-05
|
||||
22.0,0.0,-3.9073112848927384e-05,9.205048534524402e-05
|
||||
23.0,0.0,-4.0673664307580036e-05,9.135454576426007e-05
|
||||
24.0,0.0,-4.226182617406996e-05,9.063077870366498e-05
|
||||
25.0,0.0,-4.3837114678907755e-05,8.987940462991669e-05
|
||||
26.0,0.0,-4.53990499739547e-05,8.910065241883677e-05
|
||||
27.0,0.0,-4.6947156278589106e-05,8.829475928589268e-05
|
||||
28.0,0.0,-4.8480962024633725e-05,8.746197071393956e-05
|
||||
29.0,0.0,-5.0000000000000016e-05,8.660254037844385e-05
|
||||
30.0,0.0,-5.150380749100544e-05,8.571673007021121e-05
|
||||
31.0,0.0,-5.299192642332052e-05,8.480480961564258e-05
|
||||
32.0,0.0,-5.4463903501502736e-05,8.386705679454238e-05
|
||||
33.0,0.0,-5.591929034707471e-05,8.290375725550414e-05
|
||||
34.0,0.0,-5.735764363510463e-05,8.191520442889916e-05
|
||||
35.0,0.0,-5.877852522924735e-05,8.090169943749473e-05
|
||||
36.0,0.0,-6.018150231520486e-05,7.986355100472926e-05
|
||||
37.0,0.0,-6.156614753256586e-05,7.880107536067216e-05
|
||||
38.0,0.0,-6.293203910498378e-05,7.771459614569705e-05
|
||||
39.0,0.0,-6.427876096865397e-05,7.660444431189777e-05
|
||||
40.0,0.0,-6.560590289905078e-05,7.547095802227717e-05
|
||||
41.0,0.0,-6.691306063588587e-05,7.431448254773938e-05
|
||||
42.0,0.0,-6.819983600624989e-05,7.313537016191701e-05
|
||||
43.0,0.0,-6.946583704589977e-05,7.193398003386506e-05
|
||||
44.0,0.0,-7.07106781186548e-05,7.071067811865471e-05
|
||||
45.0,0.0,-7.193398003386517e-05,6.946583704589967e-05
|
||||
46.0,0.0,-7.313537016191709e-05,6.81998360062498e-05
|
||||
47.0,0.0,-7.431448254773947e-05,6.691306063588577e-05
|
||||
48.0,0.0,-7.547095802227724e-05,6.560590289905067e-05
|
||||
49.0,0.0,-7.660444431189785e-05,6.427876096865388e-05
|
||||
50.0,0.0,-7.771459614569712e-05,6.293203910498368e-05
|
||||
51.0,0.0,-7.880107536067224e-05,6.156614753256577e-05
|
||||
52.0,0.0,-7.986355100472934e-05,6.0181502315204756e-05
|
||||
53.0,0.0,-8.090169943749478e-05,5.8778525229247246e-05
|
||||
54.0,0.0,-8.191520442889923e-05,5.735764363510454e-05
|
||||
55.0,0.0,-8.290375725550421e-05,5.5919290347074614e-05
|
||||
56.0,0.0,-8.386705679454245e-05,5.446390350150263e-05
|
||||
57.0,0.0,-8.480480961564264e-05,5.299192642332041e-05
|
||||
58.0,0.0,-8.571673007021128e-05,5.150380749100534e-05
|
||||
59.0,0.0,-8.660254037844392e-05,4.9999999999999914e-05
|
||||
60.0,0.0,-8.746197071393963e-05,4.848096202463361e-05
|
||||
61.0,0.0,-8.829475928589274e-05,4.6947156278588984e-05
|
||||
62.0,0.0,-8.910065241883682e-05,4.5399049973954584e-05
|
||||
63.0,0.0,-8.987940462991674e-05,4.383711467890765e-05
|
||||
64.0,0.0,-9.063077870366504e-05,4.2261826174069845e-05
|
||||
65.0,0.0,-9.135454576426014e-05,4.067366430757991e-05
|
||||
66.0,0.0,-9.205048534524408e-05,3.907311284892726e-05
|
||||
67.0,0.0,-9.271838545667878e-05,3.7460659341591094e-05
|
||||
68.0,0.0,-9.335804264972022e-05,3.583679495452991e-05
|
||||
69.0,0.0,-9.396926207859087e-05,3.420201433256675e-05
|
||||
70.0,0.0,-9.455185755993171e-05,3.255681544571555e-05
|
||||
71.0,0.0,-9.51056516295154e-05,3.0901699437494625e-05
|
||||
72.0,0.0,-9.563047559630358e-05,2.923717047227355e-05
|
||||
73.0,0.0,-9.612616959383192e-05,2.7563735581699786e-05
|
||||
74.0,0.0,-9.659258262890686e-05,2.5881904510251944e-05
|
||||
75.0,0.0,-9.702957262759967e-05,2.4192189559966636e-05
|
||||
76.0,0.0,-9.743700647852355e-05,2.2495105434386364e-05
|
||||
77.0,0.0,-9.781476007338059e-05,2.0791169081775793e-05
|
||||
78.0,0.0,-9.816271834476641e-05,1.908089953765434e-05
|
||||
79.0,0.0,-9.848077530122083e-05,1.7364817766692885e-05
|
||||
80.0,0.0,-9.876883405951378e-05,1.564344650402294e-05
|
||||
81.0,0.0,-9.902680687415704e-05,1.3917310096006394e-05
|
||||
82.0,0.0,-9.925461516413221e-05,1.2186934340514595e-05
|
||||
83.0,0.0,-9.945218953682734e-05,1.0452846326765189e-05
|
||||
84.0,0.0,-9.961946980917455e-05,8.715574274765657e-06
|
||||
85.0,0.0,-9.975640502598242e-05,6.975647374412368e-06
|
||||
86.0,0.0,-9.986295347545739e-05,5.233595624294219e-06
|
||||
87.0,0.0,-9.993908270190956e-05,3.4899496702499304e-06
|
||||
88.0,0.0,-9.998476951563913e-05,1.7452406437281821e-06
|
||||
89.0,0.0,-9.999999999999999e-05,-1.7151244994428827e-19
|
||||
90.0,0.0,-9.998476951563911e-05,-1.7452406437285252e-06
|
||||
91.0,0.0,-9.993908270190956e-05,-3.489949670250273e-06
|
||||
92.0,0.0,-9.986295347545739e-05,-5.233595624294562e-06
|
||||
93.0,0.0,-9.97564050259824e-05,-6.975647374412711e-06
|
||||
94.0,0.0,-9.961946980917452e-05,-8.715574274766e-06
|
||||
95.0,0.0,-9.945218953682731e-05,-1.0452846326765531e-05
|
||||
96.0,0.0,-9.925461516413217e-05,-1.2186934340514934e-05
|
||||
97.0,0.0,-9.9026806874157e-05,-1.3917310096006731e-05
|
||||
98.0,0.0,-9.876883405951374e-05,-1.564344650402328e-05
|
||||
99.0,0.0,-9.848077530122077e-05,-1.7364817766693227e-05
|
||||
100.0,0.0,-9.816271834476635e-05,-1.908089953765467e-05
|
||||
101.0,0.0,-9.781476007338052e-05,-2.079116908177613e-05
|
||||
102.0,0.0,-9.743700647852348e-05,-2.2495105434386696e-05
|
||||
103.0,0.0,-9.70295726275996e-05,-2.4192189559966968e-05
|
||||
104.0,0.0,-9.659258262890676e-05,-2.5881904510252273e-05
|
||||
105.0,0.0,-9.612616959383182e-05,-2.756373558170012e-05
|
||||
106.0,0.0,-9.563047559630347e-05,-2.9237170472273875e-05
|
||||
107.0,0.0,-9.510565162951529e-05,-3.090169943749494e-05
|
||||
108.0,0.0,-9.45518575599316e-05,-3.2556815445715866e-05
|
||||
109.0,0.0,-9.396926207859076e-05,-3.420201433256708e-05
|
||||
110.0,0.0,-9.335804264972008e-05,-3.583679495453023e-05
|
||||
111.0,0.0,-9.271838545667864e-05,-3.7460659341591406e-05
|
||||
112.0,0.0,-9.205048534524394e-05,-3.907311284892758e-05
|
||||
113.0,0.0,-9.135454576425999e-05,-4.067366430758023e-05
|
||||
114.0,0.0,-9.06307787036649e-05,-4.226182617407013e-05
|
||||
115.0,0.0,-8.987940462991662e-05,-4.3837114678907904e-05
|
||||
116.0,0.0,-8.910065241883671e-05,-4.539904997395483e-05
|
||||
117.0,0.0,-8.829475928589262e-05,-4.69471562785892e-05
|
||||
118.0,0.0,-8.746197071393952e-05,-4.8480962024633814e-05
|
||||
119.0,0.0,-8.66025403784438e-05,-5.00000000000001e-05
|
||||
120.0,0.0,-8.571673007021119e-05,-5.1503807491005496e-05
|
||||
121.0,0.0,-8.480480961564256e-05,-5.299192642332055e-05
|
||||
122.0,0.0,-8.386705679454238e-05,-5.446390350150276e-05
|
||||
123.0,0.0,-8.290375725550414e-05,-5.591929034707471e-05
|
||||
124.0,0.0,-8.191520442889917e-05,-5.735764363510461e-05
|
||||
125.0,0.0,-8.090169943749474e-05,-5.87785252292473e-05
|
||||
126.0,0.0,-7.98635510047293e-05,-6.01815023152048e-05
|
||||
127.0,0.0,-7.880107536067223e-05,-6.156614753256578e-05
|
||||
128.0,0.0,-7.771459614569712e-05,-6.29320391049837e-05
|
||||
129.0,0.0,-7.660444431189785e-05,-6.427876096865386e-05
|
||||
130.0,0.0,-7.547095802227727e-05,-6.560590289905064e-05
|
||||
131.0,0.0,-7.43144825477395e-05,-6.691306063588573e-05
|
||||
132.0,0.0,-7.313537016191715e-05,-6.819983600624973e-05
|
||||
133.0,0.0,-7.193398003386522e-05,-6.946583704589961e-05
|
||||
134.0,0.0,-7.071067811865489e-05,-7.071067811865462e-05
|
||||
135.0,0.0,-6.946583704589988e-05,-7.193398003386496e-05
|
||||
136.0,0.0,-6.819983600625e-05,-7.313537016191689e-05
|
||||
137.0,0.0,-6.691306063588599e-05,-7.431448254773925e-05
|
||||
138.0,0.0,-6.560590289905093e-05,-7.547095802227701e-05
|
||||
139.0,0.0,-6.427876096865415e-05,-7.660444431189762e-05
|
||||
140.0,0.0,-6.293203910498398e-05,-7.771459614569689e-05
|
||||
141.0,0.0,-6.156614753256608e-05,-7.880107536067199e-05
|
||||
142.0,0.0,-6.0181502315205095e-05,-7.986355100472907e-05
|
||||
143.0,0.0,-5.877852522924761e-05,-8.090169943749453e-05
|
||||
144.0,0.0,-5.735764363510492e-05,-8.191520442889896e-05
|
||||
145.0,0.0,-5.591929034707501e-05,-8.290375725550392e-05
|
||||
146.0,0.0,-5.446390350150306e-05,-8.386705679454216e-05
|
||||
147.0,0.0,-5.2991926423320864e-05,-8.480480961564236e-05
|
||||
148.0,0.0,-5.1503807491005815e-05,-8.571673007021098e-05
|
||||
149.0,0.0,-5.0000000000000416e-05,-8.660254037844362e-05
|
||||
150.0,0.0,-4.8480962024634146e-05,-8.746197071393933e-05
|
||||
151.0,0.0,-4.694715627858954e-05,-8.829475928589244e-05
|
||||
152.0,0.0,-4.539904997395516e-05,-8.910065241883652e-05
|
||||
153.0,0.0,-4.383711467890824e-05,-8.987940462991644e-05
|
||||
154.0,0.0,-4.226182617407047e-05,-9.063077870366475e-05
|
||||
155.0,0.0,-4.067366430758057e-05,-9.135454576425984e-05
|
||||
156.0,0.0,-3.9073112848927946e-05,-9.20504853452438e-05
|
||||
157.0,0.0,-3.74606593415918e-05,-9.27183854566785e-05
|
||||
158.0,0.0,-3.583679495453064e-05,-9.335804264971995e-05
|
||||
159.0,0.0,-3.420201433256751e-05,-9.39692620785906e-05
|
||||
160.0,0.0,-3.255681544571633e-05,-9.455185755993144e-05
|
||||
161.0,0.0,-3.0901699437495424e-05,-9.510565162951514e-05
|
||||
162.0,0.0,-2.923717047227438e-05,-9.563047559630332e-05
|
||||
163.0,0.0,-2.7563735581700646e-05,-9.612616959383168e-05
|
||||
164.0,0.0,-2.5881904510252828e-05,-9.659258262890663e-05
|
||||
165.0,0.0,-2.4192189559967547e-05,-9.702957262759945e-05
|
||||
166.0,0.0,-2.2495105434387296e-05,-9.743700647852332e-05
|
||||
167.0,0.0,-2.0791169081776752e-05,-9.78147600733804e-05
|
||||
168.0,0.0,-1.9080899537655325e-05,-9.816271834476623e-05
|
||||
169.0,0.0,-1.7364817766693902e-05,-9.848077530122065e-05
|
||||
170.0,0.0,-1.5643446504023976e-05,-9.876883405951363e-05
|
||||
171.0,0.0,-1.3917310096007455e-05,-9.90268068741569e-05
|
||||
172.0,0.0,-1.218693434051568e-05,-9.925461516413209e-05
|
||||
173.0,0.0,-1.04528463267663e-05,-9.945218953682723e-05
|
||||
174.0,0.0,-8.715574274766792e-06,-9.961946980917446e-05
|
||||
175.0,0.0,-6.9756473744135264e-06,-9.975640502598236e-05
|
||||
176.0,0.0,-5.233595624295401e-06,-9.986295347545735e-05
|
||||
177.0,0.0,-3.4899496702511345e-06,-9.993908270190952e-05
|
||||
178.0,0.0,-1.745240643729409e-06,-9.99847695156391e-05
|
||||
179.0,0.0,-1.0780605716316238e-18,-9.999999999999999e-05
|
||||
180.0,0.0,1.7452406437272534e-06,-9.998476951563914e-05
|
||||
181.0,0.0,3.4899496702489805e-06,-9.99390827019096e-05
|
||||
182.0,0.0,5.2335956242932474e-06,-9.986295347545744e-05
|
||||
183.0,0.0,6.975647374411375e-06,-9.975640502598249e-05
|
||||
184.0,0.0,8.715574274764644e-06,-9.961946980917466e-05
|
||||
185.0,0.0,1.0452846326764156e-05,-9.945218953682746e-05
|
||||
186.0,0.0,1.218693434051354e-05,-9.925461516413236e-05
|
||||
187.0,0.0,1.3917310096005318e-05,-9.90268068741572e-05
|
||||
188.0,0.0,1.5643446504021845e-05,-9.876883405951396e-05
|
||||
189.0,0.0,1.7364817766691777e-05,-9.848077530122103e-05
|
||||
190.0,0.0,1.9080899537653207e-05,-9.816271834476665e-05
|
||||
191.0,0.0,2.0791169081774648e-05,-9.781476007338083e-05
|
||||
192.0,0.0,2.24951054343852e-05,-9.743700647852382e-05
|
||||
193.0,0.0,2.4192189559965453e-05,-9.702957262759997e-05
|
||||
194.0,0.0,2.5881904510250748e-05,-9.659258262890718e-05
|
||||
195.0,0.0,2.756373558169858e-05,-9.612616959383227e-05
|
||||
196.0,0.0,2.923717047227232e-05,-9.563047559630396e-05
|
||||
197.0,0.0,3.090169943749338e-05,-9.510565162951579e-05
|
||||
198.0,0.0,3.2556815445714294e-05,-9.455185755993215e-05
|
||||
199.0,0.0,3.420201433256549e-05,-9.396926207859134e-05
|
||||
200.0,0.0,3.583679495452863e-05,-9.335804264972069e-05
|
||||
201.0,0.0,3.74606593415898e-05,-9.271838545667931e-05
|
||||
202.0,0.0,3.9073112848925954e-05,-9.205048534524464e-05
|
||||
203.0,0.0,4.067366430757859e-05,-9.135454576426072e-05
|
||||
204.0,0.0,4.226182617406852e-05,-9.063077870366565e-05
|
||||
205.0,0.0,4.383711467890631e-05,-8.987940462991739e-05
|
||||
206.0,0.0,4.5399049973953236e-05,-8.910065241883753e-05
|
||||
207.0,0.0,4.6947156278587635e-05,-8.829475928589346e-05
|
||||
208.0,0.0,4.8480962024632255e-05,-8.746197071394039e-05
|
||||
209.0,0.0,4.9999999999998545e-05,-8.660254037844469e-05
|
||||
210.0,0.0,5.150380749100397e-05,-8.57167300702121e-05
|
||||
211.0,0.0,5.299192642331904e-05,-8.48048096156435e-05
|
||||
212.0,0.0,5.446390350150125e-05,-8.386705679454334e-05
|
||||
213.0,0.0,5.591929034707323e-05,-8.290375725550516e-05
|
||||
214.0,0.0,5.7357643635103155e-05,-8.191520442890019e-05
|
||||
215.0,0.0,5.877852522924586e-05,-8.090169943749579e-05
|
||||
216.0,0.0,6.018150231520338e-05,-7.986355100473036e-05
|
||||
217.0,0.0,6.156614753256438e-05,-7.880107536067332e-05
|
||||
218.0,0.0,6.29320391049823e-05,-7.771459614569824e-05
|
||||
219.0,0.0,6.427876096865251e-05,-7.6604444311899e-05
|
||||
220.0,0.0,6.560590289904932e-05,-7.547095802227843e-05
|
||||
221.0,0.0,6.69130606358844e-05,-7.431448254774069e-05
|
||||
222.0,0.0,6.819983600624843e-05,-7.313537016191837e-05
|
||||
223.0,0.0,6.946583704589832e-05,-7.193398003386646e-05
|
||||
224.0,0.0,7.071067811865336e-05,-7.071067811865615e-05
|
||||
225.0,0.0,7.193398003386373e-05,-6.946583704590115e-05
|
||||
226.0,0.0,7.313537016191567e-05,-6.819983600625132e-05
|
||||
227.0,0.0,7.431448254773806e-05,-6.691306063588733e-05
|
||||
228.0,0.0,7.547095802227584e-05,-6.560590289905227e-05
|
||||
229.0,0.0,7.660444431189648e-05,-6.427876096865552e-05
|
||||
230.0,0.0,7.771459614569578e-05,-6.293203910498536e-05
|
||||
231.0,0.0,7.88010753606709e-05,-6.156614753256749e-05
|
||||
232.0,0.0,7.9863551004728e-05,-6.018150231520652e-05
|
||||
233.0,0.0,8.090169943749347e-05,-5.877852522924905e-05
|
||||
234.0,0.0,8.191520442889793e-05,-5.735764363510638e-05
|
||||
235.0,0.0,8.290375725550293e-05,-5.59192903470765e-05
|
||||
236.0,0.0,8.386705679454121e-05,-5.446390350150456e-05
|
||||
237.0,0.0,8.480480961564141e-05,-5.299192642332239e-05
|
||||
238.0,0.0,8.571673007021006e-05,-5.1503807491007346e-05
|
||||
239.0,0.0,8.660254037844273e-05,-5.000000000000197e-05
|
||||
240.0,0.0,8.746197071393847e-05,-4.84809620246357e-05
|
||||
241.0,0.0,8.829475928589161e-05,-4.6947156278591105e-05
|
||||
242.0,0.0,8.910065241883574e-05,-4.5399049973956746e-05
|
||||
243.0,0.0,8.987940462991567e-05,-4.383711467890985e-05
|
||||
244.0,0.0,9.063077870366399e-05,-4.226182617407208e-05
|
||||
245.0,0.0,9.135454576425911e-05,-4.06736643075822e-05
|
||||
246.0,0.0,9.205048534524308e-05,-3.9073112848929586e-05
|
||||
247.0,0.0,9.271838545667784e-05,-3.7460659341593446e-05
|
||||
248.0,0.0,9.33580426497193e-05,-3.583679495453231e-05
|
||||
249.0,0.0,9.396926207858998e-05,-3.420201433256919e-05
|
||||
250.0,0.0,9.455185755993087e-05,-3.2556815445718014e-05
|
||||
251.0,0.0,9.510565162951458e-05,-3.0901699437497125e-05
|
||||
252.0,0.0,9.563047559630281e-05,-2.9237170472276088e-05
|
||||
253.0,0.0,9.612616959383119e-05,-2.7563735581702364e-05
|
||||
254.0,0.0,9.659258262890617e-05,-2.588190451025455e-05
|
||||
255.0,0.0,9.702957262759902e-05,-2.419218955996928e-05
|
||||
256.0,0.0,9.743700647852293e-05,-2.2495105434389034e-05
|
||||
257.0,0.0,9.781476007338e-05,-2.0791169081778497e-05
|
||||
258.0,0.0,9.816271834476589e-05,-1.9080899537657073e-05
|
||||
259.0,0.0,9.848077530122034e-05,-1.7364817766695653e-05
|
||||
260.0,0.0,9.876883405951335e-05,-1.5643446504025735e-05
|
||||
261.0,0.0,9.902680687415665e-05,-1.3917310096009218e-05
|
||||
262.0,0.0,9.925461516413187e-05,-1.218693434051745e-05
|
||||
263.0,0.0,9.945218953682704e-05,-1.0452846326768074e-05
|
||||
264.0,0.0,9.96194698091743e-05,-8.715574274768568e-06
|
||||
265.0,0.0,9.975640502598223e-05,-6.975647374415304e-06
|
||||
266.0,0.0,9.986295347545723e-05,-5.23359562429718e-06
|
||||
267.0,0.0,9.993908270190947e-05,-3.4899496702529158e-06
|
||||
268.0,0.0,9.998476951563907e-05,-1.7452406437311914e-06
|
||||
269.0,0.0,9.999999999999999e-05,-2.860540645027611e-18
|
||||
270.0,0.0,9.998476951563917e-05,1.7452406437254714e-06
|
||||
271.0,0.0,9.993908270190969e-05,3.4899496702471983e-06
|
||||
272.0,0.0,9.986295347545754e-05,5.233595624291466e-06
|
||||
273.0,0.0,9.975640502598263e-05,6.975647374409598e-06
|
||||
274.0,0.0,9.961946980917481e-05,8.715574274762869e-06
|
||||
275.0,0.0,9.945218953682763e-05,1.0452846326762384e-05
|
||||
276.0,0.0,9.925461516413256e-05,1.218693434051177e-05
|
||||
277.0,0.0,9.902680687415744e-05,1.3917310096003553e-05
|
||||
278.0,0.0,9.876883405951424e-05,1.5643446504020087e-05
|
||||
279.0,0.0,9.848077530122133e-05,1.736481776669002e-05
|
||||
280.0,0.0,9.816271834476698e-05,1.9080899537651462e-05
|
||||
281.0,0.0,9.781476007338121e-05,2.0791169081772903e-05
|
||||
282.0,0.0,9.743700647852421e-05,2.249510543438346e-05
|
||||
283.0,0.0,9.70295726276004e-05,2.419218955996373e-05
|
||||
284.0,0.0,9.659258262890763e-05,2.5881904510249023e-05
|
||||
285.0,0.0,9.612616959383277e-05,2.7563735581696862e-05
|
||||
286.0,0.0,9.563047559630449e-05,2.9237170472270612e-05
|
||||
287.0,0.0,9.510565162951636e-05,3.090169943749168e-05
|
||||
288.0,0.0,9.455185755993274e-05,3.255681544571261e-05
|
||||
289.0,0.0,9.396926207859195e-05,3.420201433256381e-05
|
||||
290.0,0.0,9.335804264972136e-05,3.5836794954526964e-05
|
||||
291.0,0.0,9.271838545667996e-05,3.746065934158815e-05
|
||||
292.0,0.0,9.205048534524532e-05,3.907311284892432e-05
|
||||
293.0,0.0,9.135454576426144e-05,4.067366430757697e-05
|
||||
294.0,0.0,9.06307787036664e-05,4.2261826174066904e-05
|
||||
295.0,0.0,8.987940462991818e-05,4.383711467890471e-05
|
||||
296.0,0.0,8.910065241883834e-05,4.539904997395165e-05
|
||||
297.0,0.0,8.82947592858943e-05,4.694715627858606e-05
|
||||
298.0,0.0,8.746197071394126e-05,4.8480962024630696e-05
|
||||
299.0,0.0,8.66025403784456e-05,4.999999999999701e-05
|
||||
300.0,0.0,8.571673007021301e-05,5.150380749100244e-05
|
||||
301.0,0.0,8.480480961564445e-05,5.299192642331754e-05
|
||||
302.0,0.0,8.38670567945443e-05,5.446390350149976e-05
|
||||
303.0,0.0,8.290375725550615e-05,5.591929034707175e-05
|
||||
304.0,0.0,8.19152044289012e-05,5.735764363510169e-05
|
||||
305.0,0.0,8.090169943749684e-05,5.877852522924443e-05
|
||||
306.0,0.0,7.986355100473144e-05,6.018150231520196e-05
|
||||
307.0,0.0,7.880107536067441e-05,6.156614753256298e-05
|
||||
308.0,0.0,7.771459614569937e-05,6.293203910498092e-05
|
||||
309.0,0.0,7.660444431190015e-05,6.427876096865114e-05
|
||||
310.0,0.0,7.54709580222796e-05,6.560590289904795e-05
|
||||
311.0,0.0,7.43144825477419e-05,6.691306063588308e-05
|
||||
312.0,0.0,7.313537016191957e-05,6.819983600624714e-05
|
||||
313.0,0.0,7.19339800338677e-05,6.946583704589703e-05
|
||||
314.0,0.0,7.07106781186574e-05,7.07106781186521e-05
|
||||
315.0,0.0,6.946583704590244e-05,7.193398003386248e-05
|
||||
316.0,0.0,6.819983600625262e-05,7.313537016191446e-05
|
||||
317.0,0.0,6.691306063588866e-05,7.431448254773687e-05
|
||||
318.0,0.0,6.560590289905361e-05,7.547095802227468e-05
|
||||
319.0,0.0,6.427876096865689e-05,7.660444431189531e-05
|
||||
320.0,0.0,6.293203910498676e-05,7.771459614569464e-05
|
||||
321.0,0.0,6.156614753256888e-05,7.880107536066979e-05
|
||||
322.0,0.0,6.018150231520794e-05,7.986355100472693e-05
|
||||
323.0,0.0,5.8778525229250485e-05,8.090169943749244e-05
|
||||
324.0,0.0,5.7357643635107844e-05,8.191520442889691e-05
|
||||
325.0,0.0,5.5919290347077975e-05,8.290375725550196e-05
|
||||
326.0,0.0,5.446390350150605e-05,8.386705679454022e-05
|
||||
327.0,0.0,5.299192642332389e-05,8.480480961564048e-05
|
||||
328.0,0.0,5.150380749100887e-05,8.571673007020915e-05
|
||||
329.0,0.0,5.0000000000003506e-05,8.660254037844184e-05
|
||||
330.0,0.0,4.8480962024637256e-05,8.74619707139376e-05
|
||||
331.0,0.0,4.6947156278592683e-05,8.829475928589077e-05
|
||||
332.0,0.0,4.539904997395834e-05,8.910065241883492e-05
|
||||
333.0,0.0,4.3837114678911455e-05,8.987940462991489e-05
|
||||
334.0,0.0,4.22618261740737e-05,9.063077870366323e-05
|
||||
335.0,0.0,4.0673664307583824e-05,9.13545457642584e-05
|
||||
336.0,0.0,3.907311284893123e-05,9.205048534524239e-05
|
||||
337.0,0.0,3.74606593415951e-05,9.271838545667716e-05
|
||||
338.0,0.0,3.583679495453397e-05,9.335804264971866e-05
|
||||
339.0,0.0,3.420201433257086e-05,9.396926207858939e-05
|
||||
340.0,0.0,3.2556815445719695e-05,9.455185755993029e-05
|
||||
341.0,0.0,3.090169943749882e-05,9.510565162951402e-05
|
||||
342.0,0.0,2.923717047227779e-05,9.563047559630228e-05
|
||||
343.0,0.0,2.756373558170408e-05,9.612616959383069e-05
|
||||
344.0,0.0,2.5881904510256274e-05,9.659258262890569e-05
|
||||
345.0,0.0,2.4192189559971007e-05,9.702957262759859e-05
|
||||
346.0,0.0,2.2495105434390772e-05,9.743700647852253e-05
|
||||
347.0,0.0,2.0791169081780242e-05,9.781476007337964e-05
|
||||
348.0,0.0,1.908089953765882e-05,9.816271834476555e-05
|
||||
349.0,0.0,1.7364817766697412e-05,9.848077530122003e-05
|
||||
350.0,0.0,1.5643446504027497e-05,9.876883405951308e-05
|
||||
351.0,0.0,1.3917310096010983e-05,9.902680687415641e-05
|
||||
352.0,0.0,1.2186934340519218e-05,9.925461516413164e-05
|
||||
353.0,0.0,1.0452846326769846e-05,9.945218953682686e-05
|
||||
354.0,0.0,8.715574274770343e-06,9.961946980917414e-05
|
||||
355.0,0.0,6.975647374417082e-06,9.97564050259821e-05
|
||||
356.0,0.0,5.23359562429896e-06,9.986295347545714e-05
|
||||
357.0,0.0,3.489949670254698e-06,9.993908270190941e-05
|
||||
358.0,0.0,1.7452406437329738e-06,9.998476951563905e-05
|
||||
359.0,0.0,4.643020718423598e-18,9.999999999999999e-05
|
||||
|
@@ -3,18 +3,18 @@ import matplotlib.pyplot as plt
|
||||
|
||||
plot_fontsize = 12
|
||||
|
||||
in_rotvector = [0, 0, 1] # [-]
|
||||
in_rot_vector = [0, 0, 1] # [-]
|
||||
in_rotcenter = [0, 0, 0] # [uT]
|
||||
in_rotmag = 10 # [uT]
|
||||
in_rotrate = 1 # [deg/s]
|
||||
in_timestep = 1 # [s]
|
||||
|
||||
# Normalize rotation vector
|
||||
if np.linalg.norm(in_rotvector)==0:
|
||||
if np.linalg.norm(in_rot_vector)==0:
|
||||
# ui_print("Error: Rotation axis cannot be singular.")
|
||||
raise ValueError('Zero vector for rotation axis given!')
|
||||
else:
|
||||
v = in_rotvector / np.linalg.norm(in_rotvector)
|
||||
v = in_rot_vector / np.linalg.norm(in_rot_vector)
|
||||
# Find perpendiculat vectors
|
||||
if v[1] == 0 and v[2] == 0:
|
||||
a = np.cross(v, [0, 1, 0])
|
||||
|
||||
+230
-19
@@ -27,7 +27,7 @@ import src.csv_logging as log
|
||||
from src.calibration import AmbientFieldCalibration, CoilConstantCalibration, MagnetometerCalibrationSimple, \
|
||||
MagnetometerCalibrationComplete
|
||||
from src.exceptions import DeviceAccessError, MagFieldOutOfBounds
|
||||
from src.utility import ui_print, save_dict_list_to_csv, load_dict_list_from_csv
|
||||
from src.utility import ui_print, save_dict_list_to_csv, save_dict_list_to_csv2, load_dict_list_from_csv
|
||||
import src.helmholtz_cage_device as helmholtz_cage_device
|
||||
|
||||
# Define global font styles:
|
||||
@@ -43,6 +43,7 @@ DEFAULT_FONT = (font, points[2])
|
||||
|
||||
target_values = [np.nan, np.nan, np.nan, np.nan]
|
||||
|
||||
|
||||
class HelmholtzGUI(Tk):
|
||||
# main application window, almost everything else here is called from this class
|
||||
# Inherited base class: Tk(), main application window class
|
||||
@@ -407,6 +408,13 @@ class ExecuteCSVMode(Frame):
|
||||
self.z_override = BooleanVar(value=False) # True to disable connection check for Z PSU
|
||||
self.arduino_override = BooleanVar(value=False) # True to disable connection check for arduino
|
||||
|
||||
# Generate CSV sequence variables
|
||||
self.rot_vector_vars = [DoubleVar(value=1), DoubleVar(value=0), DoubleVar(value=0)]
|
||||
self.rot_center_vars = [DoubleVar(value=0), DoubleVar(value=0), DoubleVar(value=0)]
|
||||
self.rot_mag_vars = StringVar(value=100)
|
||||
self.rot_rate_vars = StringVar(value=1)
|
||||
self.time_step_vars = StringVar(value=1)
|
||||
|
||||
# --- UI ELEMENTS ---
|
||||
row_counter = 0 # keep track of which grid row we are in
|
||||
|
||||
@@ -480,6 +488,81 @@ class ExecuteCSVMode(Frame):
|
||||
|
||||
self.plot_canvas = None # Is generated upon plotting
|
||||
|
||||
# Second panel with CSV generator
|
||||
# setup header
|
||||
col_counter = 1
|
||||
row_counter = 0 # reset row counter
|
||||
header = Label(self, text="Generate CSV File", font=HEADER_FONT, padx=100, pady=3)
|
||||
header.grid(row=row_counter, column=col_counter, padx=100, sticky=W)
|
||||
row_counter += 1
|
||||
generate_csv_button_frame = Frame(self)
|
||||
generate_csv_button_frame.grid(row=row_counter, column=col_counter, padx=100, sticky=W)
|
||||
# Generate and export csv sequence
|
||||
self.generate_export_csv_button = Button(generate_csv_button_frame, text=" Generate and Export to CSV",
|
||||
command=self.export_csv_sequence,
|
||||
state="normal",
|
||||
pady=5, padx=5)
|
||||
self.generate_export_csv_button.grid(row=0, column=0, padx=5, pady=5)
|
||||
# Generate and export csv sequence
|
||||
self.generate_load_csv_button = Button(generate_csv_button_frame, text=" Generate and Load Sequence",
|
||||
command=self.generate_load_csv_sequence,
|
||||
state="normal",
|
||||
pady=5, padx=5)
|
||||
self.generate_load_csv_button.grid(row=0, column=1, padx=5, pady=5)
|
||||
row_counter += 1
|
||||
info_text = Label(self, text="Generate data of a circular, counter clockwise motion around an arbitrary axis and strength.",
|
||||
padx=100, pady=3)
|
||||
info_text.grid(row=row_counter, column=col_counter, padx=0, sticky=W)
|
||||
row_counter += 1
|
||||
|
||||
# Inputs and generation button
|
||||
input_csv_gen_frame = LabelFrame(self, text="Input Parameters for Rotating Magnetic Field")
|
||||
input_csv_gen_frame.grid(row=row_counter, column=col_counter, padx=(100, 0), pady=20, sticky="nw")
|
||||
for i, label in enumerate(['X', 'Y', 'Z']):
|
||||
axis_label = Label(input_csv_gen_frame, text=label)
|
||||
axis_label.grid(row=row_counter, column=i + 1, padx=5, pady=5, sticky="nw")
|
||||
row_counter += 1
|
||||
rot_vector_label = Label(input_csv_gen_frame, text="Axis of rotation: ")
|
||||
rot_vector_label.grid(row=row_counter, column=0, padx=5, pady=5, sticky="nw")
|
||||
for i in range(3):
|
||||
rot_vector_data = Entry(input_csv_gen_frame,
|
||||
textvariable=self.rot_vector_vars[i],
|
||||
width=15)
|
||||
rot_vector_data.grid(row=row_counter, column=i + 1, padx=5, pady=5, sticky="nw")
|
||||
rot_vector_unit = Label(input_csv_gen_frame, text="-")
|
||||
rot_vector_unit.grid(row=row_counter, column=4, padx=5, pady=5, sticky="nw")
|
||||
row_counter += 1
|
||||
rot_center_label = Label(input_csv_gen_frame, text="Center of rotation: ")
|
||||
rot_center_label.grid(row=row_counter, column=0, padx=5, pady=5, sticky="nw")
|
||||
for i in range(3):
|
||||
rot_center_data = Entry(input_csv_gen_frame,
|
||||
textvariable=self.rot_center_vars[i],
|
||||
width=15)
|
||||
rot_center_data.grid(row=row_counter, column=i + 1, padx=5, pady=5, sticky="nw")
|
||||
rot_center_unit = Label(input_csv_gen_frame, text="\u03BCT")
|
||||
rot_center_unit.grid(row=row_counter, column=4, padx=5, pady=5, sticky="nw")
|
||||
row_counter += 1
|
||||
rot_mag_label = Label(input_csv_gen_frame, text="Field magnitude: ")
|
||||
rot_mag_label.grid(row=row_counter, column=0, padx=5, pady=5, sticky="nw")
|
||||
rot_mag_data = Entry(input_csv_gen_frame, textvariable=self.rot_mag_vars, width=15)
|
||||
rot_mag_data.grid(row=row_counter, column=1, padx=5, pady=5, sticky="nw")
|
||||
rot_mag_unit = Label(input_csv_gen_frame, text="\u03BCT")
|
||||
rot_mag_unit.grid(row=row_counter, column=4, padx=5, pady=5, sticky="nw")
|
||||
row_counter += 1
|
||||
rot_rate_label = Label(input_csv_gen_frame, text="Rotation rate: ")
|
||||
rot_rate_label.grid(row=row_counter, column=0, padx=5, pady=5, sticky="nw")
|
||||
rot_rate_data = Entry(input_csv_gen_frame, textvariable=self.rot_rate_vars, width=15)
|
||||
rot_rate_data.grid(row=row_counter, column=1, padx=5, pady=5, sticky="nw")
|
||||
rot_rate_unit = Label(input_csv_gen_frame, text="\u00b0/s")
|
||||
rot_rate_unit.grid(row=row_counter, column=4, padx=5, pady=5, sticky="s")
|
||||
row_counter += 1
|
||||
time_step_label = Label(input_csv_gen_frame, text="Time step: ")
|
||||
time_step_label.grid(row=row_counter, column=0, padx=5, pady=5, sticky="nw")
|
||||
time_step_data = Entry(input_csv_gen_frame, textvariable=self.time_step_vars, width=15)
|
||||
time_step_data.grid(row=row_counter, column=1, padx=5, pady=5, sticky="nw")
|
||||
time_step_unit = Label(input_csv_gen_frame, text="s")
|
||||
time_step_unit.grid(row=row_counter, column=4, padx=5, pady=5, sticky="s")
|
||||
|
||||
def page_switch(self): # function that is called when switching to this window
|
||||
# every class in the UI needs this, even if it doesn't do anything
|
||||
pass
|
||||
@@ -570,7 +653,8 @@ class ExecuteCSVMode(Frame):
|
||||
figure = csv_threading.plot_field_sequence(self.sequence_array, width, height) # create figure to be displayed
|
||||
# Clear previous plots first
|
||||
try:
|
||||
self.plot_canvas.get_tk_widget().destroy()
|
||||
if self.plot_canvas != None:
|
||||
self.plot_canvas.get_tk_widget().destroy()
|
||||
except Exception as e:
|
||||
ui_print("Something went wrong while plotting csv data!", e)
|
||||
messagebox.showerror("Error!", "Something went wrong while plotting csv data: \n%s" % e)
|
||||
@@ -581,6 +665,132 @@ class ExecuteCSVMode(Frame):
|
||||
self.plot_canvas.draw() # equivalent to matplotlib.show()
|
||||
self.plot_canvas.get_tk_widget().grid(row=0, column=0, sticky="nesw") # place canvas in the UI
|
||||
|
||||
def export_csv_sequence(self): # Generate and export csv sequence
|
||||
# Generate rotation data
|
||||
t, x, y, z = self.generate_csv_sequence()
|
||||
# Assemble data to export
|
||||
rot_sequence = dict(enumerate(t))
|
||||
for i in range(len(t)):
|
||||
rot_sequence[i] = {'Time (s)': t[i], 'xField (T)': x[i], 'yField (T)': y[i], 'zField (T)': z[i]}
|
||||
# Save dictionary to disk
|
||||
save_dict_list_to_csv2('test_sequence_rotation.csv', rot_sequence, query_path=True)
|
||||
ui_print("Saved test sequence to disc.")
|
||||
print("Flag1")
|
||||
|
||||
def generate_load_csv_sequence(self): # Generate and load csv sequence
|
||||
# Generate rotation data
|
||||
t, x, y, z = self.generate_csv_sequence()
|
||||
# Write data into array
|
||||
temp_array = np.ndarray((len(t),4))
|
||||
for i in range(len(t)):
|
||||
temp_array[i] = [t[i], x[i], y[i], z[i]]
|
||||
self.sequence_array = temp_array
|
||||
try: # try to check the values and display the plot
|
||||
csv_threading.check_array_ok(self.sequence_array) # check for values exceeding limits
|
||||
self.sequence_array_ok = True # Has nothing to do with limits. Just means the data was parsed
|
||||
self.display_plot() # plot data and display
|
||||
except Exception as e: # something went wrong
|
||||
self.sequence_array_ok = False
|
||||
# display error messages:
|
||||
ui_print("Error while plotting rotation sequence:", e)
|
||||
messagebox.showerror("Error!", "Error while plotting rotation sequence: \n%s" % e)
|
||||
else: # nothing went wrong
|
||||
self.execute_button["state"] = "normal" # activate run button --> enable execution
|
||||
|
||||
|
||||
def generate_csv_sequence(self):
|
||||
# Some fixed values
|
||||
rot_center_gmean_max = 100 # [µT] Maximum geometric mean
|
||||
rot_center_default = [0, 0, 0] # [µT]
|
||||
rot_mag_default = 100 # [µT]
|
||||
rot_mag_max = 180 # [µT]
|
||||
rot_rate_default = 1 # [deg/s]
|
||||
rot_rate_max = 360 # [deg/s]
|
||||
rot_timestep_default = 1 # [s]
|
||||
rot_timestep_min = 0.2 # [s]
|
||||
# Initialize and get vectors
|
||||
rot_vector = [0, 0, 0]
|
||||
rot_center = [0, 0, 0]
|
||||
for i in range(len(rot_vector)):
|
||||
rot_vector[i] = float(self.rot_vector_vars[i].get()) # [-]
|
||||
rot_center[i] = float(self.rot_center_vars[i].get()) # [uT]
|
||||
rot_mag = float(self.rot_mag_vars.get()) # [uT]
|
||||
rot_rate = float(self.rot_rate_vars.get()) # [deg/s]
|
||||
rot_time_step = float(self.time_step_vars.get()) # [s]
|
||||
# Normalize rotation vector
|
||||
if np.linalg.norm(rot_vector) == 0:
|
||||
ui_print("Error: Rotation axis cannot be singular.")
|
||||
raise ValueError('Zero vector for rotation axis given!')
|
||||
else:
|
||||
v = rot_vector / np.linalg.norm(rot_vector)
|
||||
if np.linalg.norm(rot_vector) != 1:
|
||||
ui_print("Warning: Rotation axis not normalised. Normalising automatically.")
|
||||
for i in range(len(rot_vector)):
|
||||
self.rot_vector_vars[i].set("{:.3f}".format(v[i]))
|
||||
# Checking magnitude
|
||||
if rot_mag < 0:
|
||||
ui_print("Warning: Magnetic field magnitude cannot be negative. Changing sign automatically.")
|
||||
rot_mag = -rot_mag
|
||||
elif rot_mag ==0:
|
||||
ui_print("Warning: Magnetic field magnitude cannot be zero. Setting default automatically.")
|
||||
rot_mag = rot_mag_default
|
||||
elif rot_mag > rot_mag_max:
|
||||
ui_print("Warning: Magnetic field magnitude too large. Setting default automatically.")
|
||||
rot_mag = rot_mag_default
|
||||
self.rot_mag_vars.set("{:.3f}".format(rot_mag))
|
||||
# Checking center point
|
||||
if np.sqrt(rot_center[0]**2+rot_center[1]**2+rot_center[2]**2) > rot_center_gmean_max:
|
||||
ui_print("Warning: Rotation center excessive. Setting to zero automatically.")
|
||||
rot_center = rot_center_default
|
||||
for i in range(len(rot_center)):
|
||||
self.rot_center_vars[i].set("{:.3f}".format(rot_center[i]))
|
||||
# Checking rotation rate
|
||||
if rot_rate < 0:
|
||||
ui_print("Warning: Rotation rate cannot be negative. Changing sign automatically.")
|
||||
rot_rate = -rot_rate
|
||||
elif rot_mag ==0:
|
||||
ui_print("Warning: Rotation rate cannot be zero. Setting default automatically.")
|
||||
rot_rate = rot_rate_default
|
||||
elif rot_rate > rot_rate_max:
|
||||
ui_print("Warning: Rotation rate too large. Setting default automatically.")
|
||||
rot_rate = rot_rate_default
|
||||
self.rot_rate_vars.set("{:.3f}".format(rot_rate))
|
||||
# Check time step
|
||||
if rot_time_step < 0:
|
||||
ui_print("Warning: Time step cannot be negative. Changing sign automatically.")
|
||||
rot_time_step = -rot_time_step
|
||||
elif rot_time_step ==0:
|
||||
ui_print("Warning: Time step cannot be zero. Setting default automatically.")
|
||||
rot_time_step = rot_timestep_default
|
||||
elif rot_time_step < rot_timestep_min:
|
||||
ui_print("Warning: Time step too small. Setting default automatically.")
|
||||
rot_time_step = rot_timestep_default
|
||||
self.time_step_vars.set("{:.3f}".format(rot_time_step))
|
||||
# Find perpendicular vectors
|
||||
if v[1] == 0 and v[2] == 0:
|
||||
a = np.cross(v, [0, 1, 0])
|
||||
else:
|
||||
a = np.cross(v, [1, 0, 0])
|
||||
b = np.cross(v, a)
|
||||
# Calculate timing
|
||||
cycle_time = (360 / rot_rate) / rot_time_step
|
||||
arr_len = int(np.floor(cycle_time / rot_time_step))
|
||||
# Initialize vectors
|
||||
th = 0 # [rad]
|
||||
t = np.zeros(arr_len) # [s]
|
||||
x = np.zeros(arr_len) # [T]
|
||||
y = np.zeros(arr_len) # [T]
|
||||
z = np.zeros(arr_len) # [T]
|
||||
# Calculate vectors
|
||||
for i in range(arr_len):
|
||||
th = th + rot_rate * np.pi / 180
|
||||
t[i] = i * rot_time_step
|
||||
x[i] = (rot_center[0] + rot_mag * np.cos(th) * a[0] + rot_mag * np.sin(th) * b[0])*1e-6
|
||||
y[i] = (rot_center[1] + rot_mag * np.cos(th) * a[1] + rot_mag * np.sin(th) * b[1])*1e-6
|
||||
z[i] = (rot_center[2] + rot_mag * np.cos(th) * a[2] + rot_mag * np.sin(th) * b[2])*1e-6
|
||||
# Return vectors
|
||||
return t, x, y, z
|
||||
|
||||
|
||||
class CalibrateAmbientField(Frame):
|
||||
def __init__(self, parent, controller):
|
||||
@@ -651,22 +861,22 @@ class CalibrateAmbientField(Frame):
|
||||
axis_labels_hh = ['X_hh:', 'Y_hh:', 'Z_hh:', 'T_hh:']
|
||||
for i in range(4):
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_mgm[i])
|
||||
field_data_axis_label.grid(row=i+1, column=0, padx=10, pady=3)
|
||||
field_data_axis_label.grid(row=i + 1, column=0, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.field_value_vars[i])
|
||||
field_data_axis_data.grid(row=i+1, column=1, padx=(20, 0), pady=3)
|
||||
field_data_axis_data.grid(row=i + 1, column=1, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i+1, column=2, padx=5, pady=3)
|
||||
field_data_axis_units.grid(row=i + 1, column=2, padx=5, pady=3)
|
||||
|
||||
field_data_axis_label = Label(field_data_frame, text=axis_labels_hh[i])
|
||||
field_data_axis_label.grid(row=i+1, column=3, padx=10, pady=3)
|
||||
field_data_axis_label.grid(row=i + 1, column=3, padx=10, pady=3)
|
||||
|
||||
field_data_axis_data = Label(field_data_frame, textvariable=self.target_value_vars[i])
|
||||
field_data_axis_data.grid(row=i+1, column=4, padx=(20, 0), pady=3)
|
||||
field_data_axis_data.grid(row=i + 1, column=4, padx=(20, 0), pady=3)
|
||||
|
||||
field_data_axis_units = Label(field_data_frame, text="\u03BCT")
|
||||
field_data_axis_units.grid(row=i+1, column=5, padx=5, pady=3)
|
||||
field_data_axis_units.grid(row=i + 1, column=5, padx=5, pady=3)
|
||||
row_counter += 1
|
||||
|
||||
# Calibration start and reinitialize buttons
|
||||
@@ -840,7 +1050,8 @@ class CalibrateAmbientField(Frame):
|
||||
# Display in uT
|
||||
self.field_value_vars[i].set("{:.3f}".format(new_field[i] * 1e6))
|
||||
self.target_value_vars[i].set("{:.3f}".format(target_values[i] * 1e6))
|
||||
self.field_value_vars[3].set("{:.3f}".format(np.sqrt(new_field[0]**2+new_field[1]**2+new_field[2]**2) * 1e6))
|
||||
self.field_value_vars[3].set(
|
||||
"{:.3f}".format(np.sqrt(new_field[0] ** 2 + new_field[1] ** 2 + new_field[2] ** 2) * 1e6))
|
||||
self.target_value_vars[3].set("{:.3f}".format(target_values[3] * 1e6))
|
||||
|
||||
# Get mpi messages from calibration procedures
|
||||
@@ -1330,7 +1541,8 @@ class CalibrateMagnetometerSimple(Frame):
|
||||
# Display in uT
|
||||
self.field_value_vars[i].set("{:.3f}".format(new_field[i] * 1e6))
|
||||
self.target_value_vars[i].set("{:.3f}".format(target_values[i] * 1e6))
|
||||
self.field_value_vars[3].set("{:.3f}".format(np.sqrt(new_field[0]**2+new_field[1]**2+new_field[2]**2)* 1e6))
|
||||
self.field_value_vars[3].set(
|
||||
"{:.3f}".format(np.sqrt(new_field[0] ** 2 + new_field[1] ** 2 + new_field[2] ** 2) * 1e6))
|
||||
self.target_value_vars[3].set("{:.3f}".format(target_values[3] * 1e6))
|
||||
|
||||
# Get mpi messages from calibration procedures
|
||||
@@ -1749,7 +1961,7 @@ class CalibrateMagnetometerComplete(Frame):
|
||||
state='readonly')
|
||||
axis_data.grid(row=row_counter + row, column=1 + column, padx=5, pady=5, sticky="nw")
|
||||
results_label_unit = Label(calibration_results_frame, text="-")
|
||||
results_label_unit.grid(row=row_counter + row, column=1 + column+1, padx=5, pady=5, sticky="nw")
|
||||
results_label_unit.grid(row=row_counter + row, column=1 + column + 1, padx=5, pady=5, sticky="nw")
|
||||
row_counter += 3
|
||||
"""
|
||||
# A_mat
|
||||
@@ -1774,7 +1986,7 @@ class CalibrateMagnetometerComplete(Frame):
|
||||
state='readonly')
|
||||
axis_data.grid(row=row_counter, column=1 + row, padx=5, pady=5, sticky="nw")
|
||||
results_label_unit = Label(calibration_results_frame, text="T")
|
||||
results_label_unit.grid(row=row_counter, column=1 + row+1, padx=5, pady=5, sticky="nw")
|
||||
results_label_unit.grid(row=row_counter, column=1 + row + 1, padx=5, pady=5, sticky="nw")
|
||||
row_counter += 1
|
||||
|
||||
# Save calibration buttons
|
||||
@@ -1828,8 +2040,6 @@ class CalibrateMagnetometerComplete(Frame):
|
||||
pady=5, padx=5)
|
||||
self.export_figure_right_button.grid(row=1, column=2, padx=5, pady=5)
|
||||
|
||||
# FLAG Buttons
|
||||
|
||||
# This starts an endless polling loop
|
||||
self.update_view()
|
||||
|
||||
@@ -1852,7 +2062,8 @@ class CalibrateMagnetometerComplete(Frame):
|
||||
# Display in uT
|
||||
self.field_value_vars[i].set("{:.3f}".format(new_field[i] * 1e6))
|
||||
self.target_value_vars[i].set("{:.3f}".format(target_values[i] * 1e6))
|
||||
self.field_value_vars[3].set("{:.3f}".format(np.sqrt(new_field[0]**2+new_field[1]**2+new_field[2]**2)* 1e6))
|
||||
self.field_value_vars[3].set(
|
||||
"{:.3f}".format(np.sqrt(new_field[0] ** 2 + new_field[1] ** 2 + new_field[2] ** 2) * 1e6))
|
||||
self.target_value_vars[3].set("{:.3f}".format(target_values[3] * 1e6))
|
||||
|
||||
# Get mpi messages from calibration procedures
|
||||
@@ -2730,10 +2941,10 @@ class StatusDisplay(Frame):
|
||||
self.update_labels(new_status)
|
||||
target_values = [new_status['axes'][0]['target_field'],
|
||||
new_status['axes'][1]['target_field'],
|
||||
new_status['axes'][2]['target_field'],
|
||||
np.sqrt(new_status['axes'][0]['target_field']**2 +
|
||||
new_status['axes'][1]['target_field']**2 +
|
||||
new_status['axes'][2]['target_field']**2)]
|
||||
new_status['axes'][2]['target_field'],
|
||||
np.sqrt(new_status['axes'][0]['target_field'] ** 2 +
|
||||
new_status['axes'][1]['target_field'] ** 2 +
|
||||
new_status['axes'][2]['target_field'] ** 2)]
|
||||
except Empty:
|
||||
pass
|
||||
self.controller.after(200, self.update_label_poll_method)
|
||||
|
||||
@@ -31,8 +31,25 @@ def save_dict_list_to_csv(filename, data, query_path=False):
|
||||
|
||||
csv_writer.writeheader()
|
||||
for row in data:
|
||||
print(row)
|
||||
csv_writer.writerow(row)
|
||||
|
||||
def save_dict_list_to_csv2(filename, data, query_path=False):
|
||||
"""Creates a csv file under the specified path containing one row for each dict in the list 'data'.
|
||||
The file receives a header containing the keys of the first dict entry.
|
||||
Each dict should use the same keys."""
|
||||
if query_path:
|
||||
filename = filedialog.asksaveasfilename(initialfile=filename, title="Select csv save location...",
|
||||
filetypes=(("CSV", "*.csv"),))
|
||||
|
||||
with open(filename, mode='w', newline='') as csv_file:
|
||||
fieldnames = data[0].keys()
|
||||
csv_writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=',', quotechar='"',
|
||||
quoting=csv.QUOTE_NONNUMERIC)
|
||||
|
||||
csv_writer.writeheader()
|
||||
for row in data:
|
||||
csv_writer.writerow(data[row]) # this line makes issues in original file
|
||||
|
||||
def load_dict_list_from_csv(filename, query_path=False):
|
||||
""" Reads a csv file under the specified path containing one row for each dict in the list 'data'.
|
||||
|
||||
Reference in New Issue
Block a user