From d4f7d61607a19645c4461763b5e4b11846a4e7d6 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 5 Dec 2024 11:19:55 +0300 Subject: [PATCH] =?UTF-8?q?dev:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=80=D1=8B=20=D1=82=D0=B5=D1=81=D0=BB=D1=8B=20=D0=B2=20operat?= =?UTF-8?q?or=5Fparams?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- params/operator_params.json | 151 ++++++++++++++++-- .../passportFormer.cpython-310.pyc | Bin 3688 -> 3917 bytes src/controller/passportFormer.py | 5 +- src/gui/__pycache__/plotter.cpython-310.pyc | Bin 4523 -> 4940 bytes .../settings_window.cpython-310.pyc | Bin 3858 -> 3870 bytes src/gui/plotter.py | 25 ++- src/gui/settings_window.py | 3 +- .../base/__pycache__/base.cpython-310.pyc | Bin 13957 -> 14133 bytes src/utils/base/base.py | 24 ++- 9 files changed, 179 insertions(+), 29 deletions(-) diff --git a/params/operator_params.json b/params/operator_params.json index f1666e2..6b33d31 100644 --- a/params/operator_params.json +++ b/params/operator_params.json @@ -128,20 +128,20 @@ 0.005 ], "time_wielding": [ - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0 + 1.332, + 1.644, + 1.644, + 1.428, + 1.284, + 1.308, + 1.272, + 1.38, + 1.416, + 1.392, + 1.38, + 1.404, + 1.452, + 1.452 ], "time_command": [ 0.0, @@ -192,7 +192,7 @@ 0.0045 ], "force_target": [ - 4000.0, + 5000.0, 5000.0, 5000.0, 5000.0, @@ -222,5 +222,126 @@ 500.0, 500.0, 500.0 + ], + "Tesla closing": [ + 0.216, + + 0.228, + + 0.252, + + 0.216, + + 0.228, + + 0.216, + + 0.228, + + 0.228, + + 0.228, + + 0.216, + + 0.228, + + 0.216, + + 0.216, + + 0.216 + + ], + "Tesla squeeze": [ + 0.276, + + 0.288, + + 0.264, + + 0.264, + + 0.276, + + 0.276, + + 0.312, + + 0.276, + + 0.240, + + 0.240, + + 0.240, + + 0.240, + + 0.240, + + 0.240 + + ], + "Tesla welding": [ + 1.332, + + 1.644, + + 1.644, + + 1.428, + + 1.284, + + 1.308, + + 1.272, + + 1.380, + + 1.416, + + 1.392, + + 1.380, + + 1.404, + + 1.452, + + 1.452 + + ], + "Tesla oncomming_relief": [ + 0.528, + + 0.528, + + 0.540, + + 0.636, + + 0.504, + + 0.468, + + 0.492, + + 0.540, + + 0.563, + + 0.588, + + 0.541, + + 0.564, + + 0.576, + + 0.507 + ] + } \ No newline at end of file diff --git a/src/controller/__pycache__/passportFormer.cpython-310.pyc b/src/controller/__pycache__/passportFormer.cpython-310.pyc index 66f156d4714c91337ece95087a45865081796734..b341e534ac4889b8283cc222f31ac59693b2e73e 100644 GIT binary patch delta 580 zcmYjN&1(};5TAM3?8n=E!L~7`eqIWiQfSeFU$sT)RY7{G+7e24UDBjU^LDi!X6Ye< z>A{1(leYwfp8W&7dXwG*;!*zrZyuaY2{`ck&Bq&l^Jacu{(e<;l#;-9viUUr@kPye z(&4PYNbZ<|t2ssu;pLY+u+CnVmVQO->K{(6sbJ za{4d}eI$DYx=ZBb-II)cF&3H2Do*N>8`|$h=JkQB(5gZc^dS}a%?pd>mp64?5}y5m zWRo>B|G%77Gi(dO%s1EM`CCCM-{DIP-OziR>-+1_!yaae#2_G_JPJs~)({c8S4eC? zO`6B@4c;){udhov-DSF$A44$B!!EL$SYEOiGmNCn6a&Gwo$>y}_xd2Z ztbV4I3)X~QVyAECF^;A>2a(=MJG!1kY1(MV3Aa`zb8m9fea3ih*__H{ztu?6-Om2O zYE7BX{-zogl2`j9RZpX&wPXJH8|Fpu=-KmNoY$k*Q9I2g$Aeec=?6KDw_45*EL+hW~idGNO(kkc!l!D+z>_t2%QV&8((1@{VL6HdxUMlEm z@6sGS3SNB#A3@NQ9z5t9xJ3{b<~Q^03?DPk<&PN|Nhv_Tuf@$Ee30X|Fty6)=#^F7 zZeB#!Kr6bY-06IvaWCdA&*zd8bAriq-+Da zD`btP|CC8az!F=#WcwD`zIn?MF#zH|FG2|MDP?re_6_xJ=c^9k?+)aI+B0$gY3-We zF(XV|H76!ZlGsp?OM+yONfDttOKb~jmI}lfR@JL`!h3b+lv&MDU3W*lxGk}pk4`%A zem{!UyxdrirM^FIjNpy1tg)b@SJ&V;fkpIK4mlRkMNik3rpu-=hhxZDL1%W!@w}ow XMMZtf4mQ=c*T$B5^p list[pd.DataFrame, dict, list]: passports_pocket = [] events, point_quantity = self._filter_events(dataframe["time"], dataframe) + system_settings = {key: value[0] for key, value in self._params[1].items()} - for i in range(0, point_quantity): if not dataframe["time"].isna().all(): operator_settings = {} @@ -56,7 +56,8 @@ class PassportFormer(BasePointPassportFormer): else: frame = dataframe point_events = {key: [value[0][i], value[1][i]] for key, value in events.items()} - passports_pocket.append([frame, ideal_data, point_events]) + tesla_events = sum([operator_settings[key] for key in self._tesla_stages]) + passports_pocket.append([frame, ideal_data, point_events, tesla_events]) return passports_pocket def update_settings(self, params: list[dict, dict]): diff --git a/src/gui/__pycache__/plotter.cpython-310.pyc b/src/gui/__pycache__/plotter.cpython-310.pyc index ed41deec6e391ecf1462a7a7103a5764deebe2df..d72912671c2446ec1e442ec41c96c5db5999d53e 100644 GIT binary patch delta 2162 zcmZuyU2GIp6rMY~J3G6xKeO#_+iiEZ+twlrYCsg^M}7)g2m~ym=mfG3d#B6F>`(7Z z(ULpXq$ZO16Y)NnU?A-#tAD2<9L?tQ0G_h4KlUw41d_7jM^0QI#m;5KGh~FdC z$w5pWLQ_OD491W4?5@i~T67jfCHj4H45##Ct&U}~lUB3U?VuK4bu4#^%{%A)c>6*C zjC9>`&8AgvbnPy4YB4r}EE~`~T0~(1$K%W30(mhP%Zr)Vwaim6JXMp~DCSkggV;s| zC9napN!dAxv%ZEx>+gi8r`T50>d?mtzrC#NAzBKv(r7Z`*Z9t7@sLULGrbCaMj8z`)T!aN0Sm!*pm`-7`*>pV_#KpYSK zfbz7jDAE2;B3_XvVAsWPW<`d*{~QYaj4�Bo8hQgV2$XVY#p(c_nvA8|RVb5+4pu0MU4W@YR*qQFVP*MKq^zdAZCZfmeoh zF?yUmErzt$a_bdXlYRM_Eo_5$Pb-E!pdhYkZ;_qiUu{QU8S0Of&{V+G2&;(c)V?jP zp$Dt0_g2Bxd}HU$UoQT1V1Mi8{ngb=`l(jisxphtH(a>dyQ-Ju>SV1VE~mB}+z#Qs z(&%;?rpsPL&b{b~Ua%G%KVsT8+YDnPZc>UZflUVSX0M0W@d=FIE$*kr3c(GE;dmpO z;5OGpIX$dSgcos2>`Na#`5aC@55~aW;H*JLkY z2KE;t4tJNib=Qc&+I5$0!kIyFJ3YF11R<(1ay^U9c3Io(G_1OfP1Z=9I(-nk7ITd_ zLfh&XNd#e+GPH2DFd`8SFeV*BjOuhdM#hCxgq*cgH1dze`|()A)xs_^jd}`T{B-@? ze9NY5jSO3g!@(#-A$d7Ul0=6-u8RYiqs6G4B7J0lM8S{G0a+(WIZ2Y@qs;Z~SR3%F z-^7Q^UWSLE;Q`ehv)!|;uSj^zK?&i?>@b*bL_K@B7PM$w+K7k!)CpA@7#66E1tPx| zx3gpWvgp;(8L`fMySKo0BP)JOeZ^hqL8*nR@$<FJ)Io}S;`-s~outVwnvgiXw^hAd{+{IGFJ%%3z_#?DsHWMa?H zR`*61y2)V$0}{+qBIKaX9)m|w1TTWf@DT9m#rJ9wHxBeyuU@_S-m7}= z)jZns<&@dY<Bblu5J91*?97YmIMQy62H=Mt%PDp{7p}eV7&MRx)ichr&-F=;;b@3 ze-;hpbG6)1g`qw^Jpl$aWuWw$gX{&r8_v6-doJ|aHEoaxJio!KV8BNZMiFd)L81qi zeCQ9AWpOm|Eu9ok6P1jk2VQuJuLd_AVI{}*?m~mz2wVF#?loK8&i@!LCciOjV0O8t z@a<^6LsYbBZ4$+bnA48anus+!^Mco}HnkHplR=9tLQXtR9Y2WY=0$*7mTx&fgxbRZ zPC5wPrdMaJM&tRmOZsl>BpSRxF7E1!CuTvptN=X!je&p;RrrEKuo9AW5-TAER3mar z>8qP$p4_KPnkX6vj8CttaVE~jIk9L=-7%vyOWK69F!Ld4P+0+bWX_Xyx=uMmX{j3L zqg<4?$#o^R;zC6F*(e`bQDIY!i&2p;M|wXO6*nm*D{lgy4t)3I&RwuG$qXC(FKvrU zu+xl65$v|fkns*vpNlMQlg&h2j>`NaNm!PIy_H))nE}eLqb$qXB(5+uu1b0f=&M5_ z-2F@f#!+&V#MPAtQ6;KwBP>@Y@kpfg^U(-$0-p(d-x@)t7w0CToya_tfP6iy-pbLQ)q=<=%k?hc~}pfBsi>xd@rt4#h>Pmw@#yo zAvlGe#~WSVc00>n-FI(z{_q;+(V`46$klJGwtQB9Pd-aXAKU=Ys7A|5f~KhjZ;mN` z$S;U#>$4+x-8IUu;Gpn17@Q1VbvPpshewiGL4N)QKwtc0ovrP{DK?^$8ajKH zlB=kfu_R?EUkJajbJj#{9>D?_s6oj20#484G}-XGkQNOUlL$KzFa>-M!nAl)u+LRc zoI${3a`~XV4$>guw}NnxV6EklE4YN`;cp|z$hSbAp(6Gd&sVmW#+Nu!)=G}nb34op z_=5PjICa=DdTT3Tle@i}G8!k@S#9^$_%S5Jhkc-hYdy&5FyIubb@5lxK4YLLariKNitAwM3vxc>q5u&zG%%)H}g&~+hli9CG73jPoMj)ZdHJP7VaI&A&Yqd>q3SUMo9)qhGxcvjEoE= zY+zCLg+RUwL#%oXQ!OJ9Gu1K!#TgcG)G($nmT=ZE0aY`DRWpOt2?5ox)Uv|V)Uc#5 zi8GXNmT=XuHZwxh7Mc_)q%Z_CXfpd1F#=sv#HI=)HMu9tb4#+_V#!XeES_w^9V8+E z6cu7rV3cAMVH9ALV`Tcz@^AA3?m$My@X4Qet}}8>KE?Zu(QooWz7WnBE=Dd!9!8eG E04tR>Z~y=R diff --git a/src/gui/plotter.py b/src/gui/plotter.py index fb53772..a692411 100644 --- a/src/gui/plotter.py +++ b/src/gui/plotter.py @@ -1,5 +1,5 @@ import pandas as pd -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QGraphicsRectItem import pyqtgraph as pg import numpy as np from numpy import floating @@ -63,7 +63,7 @@ class PlotWidget(BasePlotWidget): return ProcessStage(mean_value=mean, start_index=int(start), finish_index=int(finish)) return None - def _build_widget(self, data: list[pd.DataFrame, dict, list]) -> QWidget: + def _build_widget(self, data: list[pd.DataFrame, dict, dict, list]) -> QWidget: widget = QWidget() layout = QVBoxLayout() @@ -72,8 +72,8 @@ class PlotWidget(BasePlotWidget): df_continuous = pd.DataFrame({}) plot_widget, legend = self._init_plot_widget(title=channel) settings = description["Settings"] - - for dataframe, ideal_data, events in data: + + for dataframe, ideal_data, events, tesla_data in data: df_continuous = pd.concat([df_continuous, dataframe], axis=0) dataframe_headers = dataframe.columns.tolist() stages = events.keys() @@ -149,7 +149,24 @@ class PlotWidget(BasePlotWidget): if settings["performance"]: performance_list = np.array(performance_list) performance_label = QLabel(f"""Performance: best = {round(performance_list.max(),2)} %, worse = {round(performance_list.min(),2)} %, average = {round(performance_list.mean(),2)}%""") + + TWC_start = 0 + TWC_len = df_continuous["time"].max() + TWC_region = QGraphicsRectItem(TWC_start, -1000, TWC_start+TWC_len, 100) + TWC_region.setBrush(pg.mkBrush(0, 255, 0, 255)) + + tesla_start = 0 + tesla_len = 35.488 + tesla_reginon = QGraphicsRectItem(tesla_start, -1100, tesla_start+tesla_len ,100) + tesla_reginon.setBrush(pg.mkBrush(255, 0, 0, 255)) + + time_reduction = round((1 - TWC_len/tesla_len)*100, 2) + time_reduction_label = QLabel(f"Time reduction: {time_reduction} %") + layout.addWidget(performance_label) + layout.addWidget(time_reduction_label) + plot_widget.addItem(TWC_region) + plot_widget.addItem(tesla_reginon) layout.addWidget(plot_widget) diff --git a/src/gui/settings_window.py b/src/gui/settings_window.py index cdda08e..f0576b2 100644 --- a/src/gui/settings_window.py +++ b/src/gui/settings_window.py @@ -78,8 +78,9 @@ class settingsWindow(QWidget): def _restore(self) -> None: self._param_table.setRowCount(len(self._data)) - self._param_table.setColumnCount(len(self._data[self._data.keys()[0]])) + self._param_table.setColumnCount(len(self._data)+1) for i, (key, items) in enumerate(self._data.items()): + self._param_table.setColumnCount(len(self._data[key])+1) self._param_table.setItem(i, 0, QTableWidgetItem(key)) for j, item in enumerate(items): self._param_table.setItem(i, j+1, QTableWidgetItem(str(item))) diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index 12a92154e9bd82b4656c060afe026e6260798ce5..fdf72ef98d54f18c27e0d0df4417198247c4e44c 100644 GIT binary patch delta 1806 zcmZ`(du&r>6z{pcyIa>i+O_LzuXZbg4rE)qVL+!N0i%H9p%9%h%jmt-N!P~jR*Yq2 z9doF_5O#|R*3ddl{xTJd3GL@bQN%g4}s!Mf~ zkNrN?|DQ$C%5ke&s1_N2+qkR-R6Fr1@>Wv?gORF6b^M!U#%iZ)PARxf-MDqY(jzOX zBnZ9&tPO!f}c<)>d>z>7cj0+o8T^D7$+sOB`n~WAKIm`qZk;M+ z7QK^;%3?e2@rPj>p7n>|3V!E5207djH~^yiW?yAXxj3u=jr9w99@o4QDdofVL zOiIXxu`}ey8Fg!Ch>UZPqiVauQUx6yTtsw&;Jl?Pjj^NISR}pTK&X^2@vjuPzCuEo1rfZoVJ@aHz zi{NCW84lt1ky*-7E_)1}O|gzQnBH{hgA@%=mvje_B8wzBu1QJ>$kr05u!@5?)b!&Z zcV+-+Vk{~nBrK}5pP59=YA~xYN^+N2$E(E&B67C$eoasI2KC1t*R-rQWyX^)yiY~E%k{0vbUd$Q z(#bwOLxz?T&$FCQLZrwXLL>hSdrvUD!*Cj#=gx!mxNh#xu{YUqoZ%ye_X(y_r?c{k zwn0l}bnyX8KE#pc`LF@cHtRGtv6j8<#%ylp*f_&W4Eq@NG8hMn&l0u8xEDTU? z8_ml{86u5%YWmh0$L?4c?8C#c^@FeS5(_!*VOT~$O*ER*#tx%7JT2y|Ome*Fy13Dc z_ims(%SuJuG=7fb($cOj5*aW485fxzUURw64Ux&eU@n`AuUKmgGGAZf8HQ)^o3?P6 zKfn3KK4EsA;Y$YYm{`s*jE(J$&gJytdL!91C)Sc{#TEE)`x1l=Cu@Va@ZV^iuQj1G$h6# delta 1643 zcmZ`(eN0AoF{Uw&#KoxDvi+mcKLpQt4U9zXOMmy=bAIQZ z_s++Cw|~zgWm${GsKMWh6P@V`EpufZHt7!y+-FmQdR~f;o*O20+{jJbJSlMtFQYXr zaT_`fB}=+%k`F{h6T1k9D>(ZGN?mF8Eo5B} z)O?R0A#O&<+i&kxQk|J>?%qD0PUY5RAI*soxb9kO8A9`nBz#02fst}Y$q0%+zy`O% z7GTzWYiO{@AhjSlq7wm;{V`BCCWwu(8$;T^=Xn(C^`f-OD5hhF!2^a>ImI z&ql%K4X~e~#mm9!b;zO)X}`irZ@qg|J#g7e+=dbc+y~daVR?+yb+8cklvJR28P@xb zvq8A*dyS35Xytl#ZT?K9lR5LI&aBdx?928CwzZ3$N)tY-uW`_Q2(LW!8 zg=!z919?`CJ|QRx-pQsR5o~657!I~>8K+2LgorHE&=aIk<3CH1n!^2Lm;NmuTBV#Nq364-D)=e z0S?vv!rU+x$}vAIhPKMb=%6>$u5h9loPQ{sFJUtHw4*!INNYSK8Xe~3p*M&u`W2(xUlJMRA7}p!lj_iWRnFsm(BDkIozcB z#dAcb;zjhuc~SjOk#?5g1A-6X(z-U*3$CUsu@j_ti{LE58H8om6|aJv+L7wdDdJP2 zdj8OK(d4h3xuQ|pZgWsCpH|@m? z6#KLeqA?GgYuSt^)0}TX>OQE8wdklxV6esq!v=#ShQLn2Oag^`4OFo)C|( zTo4Dq*qUH3Kv(O-LkB6uMzT|riLD5jL^V0Bq)?MX4PI>TIkM|l+0|Tp{2$EI#FWMV z+Ru?)>PRGzq<;7pbjZrQ6~kRnNk#cfl66JK*Thw4kM0=pB*9*oh=;>e{$j;GC+Q-= zR|J$XaTmb|d>5~?b>N39bai20Yt2hWGg#WTv*&@gb+dQilQzGJGAn2VgblAPH!QYA MO9!k5Ys4P^2RkR1$N&HU diff --git a/src/utils/base/base.py b/src/utils/base/base.py index da61e93..9459004 100644 --- a/src/utils/base/base.py +++ b/src/utils/base/base.py @@ -147,27 +147,31 @@ class BasePlotWidget: } ] }, - "Electrode Force, N": { + "Electrode Posicion, mm": { "Settings": { - "zoom": True, - "stages": False, + "zoom": False, + "stages": True, "performance": False, "ideals": True }, "Real_signals": [ { - "name": "Electrode Force, N ME", + "name": "Rotor Position, mm ME", "pen": 'r', }, { - "name": "Electrode Force, N FE", + "name": "Rotor Position, mm FE", "pen": 'w', } ], "Ideal_signals": [ { - "name": "Force", - "pen": {'color': 'r', 'width':3}, + "name": "Posicion ME", + "pen": {'color': 'g', 'width':3}, + }, + { + "name": "Posicion ME", + "pen": {'color': 'b', 'width':3}, } ] }, @@ -341,6 +345,12 @@ class BasePointPassportFormer: "Relief", "Oncomming" ] + self._tesla_stages = [ + "Tesla squeeze", + "Tesla closing", + "Tesla welding", + "Tesla oncomming_relief" + ] def _find_indexes(self, signal: str,