Compare commits

..

No commits in common. "059f4b5533613592c74528ea8c7ff088ddc1fecf" and "c184397c6cd292e0a234ac34c8fbe95592ea475e" have entirely different histories.

16 changed files with 2067 additions and 69 deletions

2000
2024_10_28-17_03_34.csv Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
from src.OptAlgorithm.AutoConfigClass import AutoConfigClass from OptAlgorithm.AutoConfigClass import AutoConfigClass
from numpy import sqrt from numpy import sqrt
class ConstantCalculator(AutoConfigClass): class ConstantCalculator(AutoConfigClass):

View File

@ -1,6 +1,6 @@
from src.OptAlgorithm.OptTimeCalculator import OptTimeCalculator from OptAlgorithm.OptTimeCalculator import OptTimeCalculator
from src.OptAlgorithm.AutoConfigClass import AutoConfigClass from OptAlgorithm.AutoConfigClass import AutoConfigClass
from src.OptAlgorithm.ConstantCalculator import ConstantCalculator from OptAlgorithm.ConstantCalculator import ConstantCalculator
from numpy import cos, sin, sqrt, cbrt, arcsin from numpy import cos, sin, sqrt, cbrt, arcsin

View File

@ -1,7 +1,7 @@
from numpy import sqrt, arcsin, arccos, cos, sin from numpy import sqrt, arcsin, arccos, cos, sin
from src.OptAlgorithm.AutoConfigClass import AutoConfigClass from OptAlgorithm.AutoConfigClass import AutoConfigClass
from src.OptAlgorithm.ConstantCalculator import ConstantCalculator from OptAlgorithm.ConstantCalculator import ConstantCalculator
class OptTimeCalculator(AutoConfigClass): class OptTimeCalculator(AutoConfigClass):

View File

@ -1,11 +1,14 @@
import pyqtgraph as pg import pyqtgraph as pg
import numpy as np import numpy as np
from src.gui import qt_settings as qts from utils import read_json, DiagramParser
from src.OptAlgorithm import OptAlgorithm from uml import Request, UMLCreator
#нижний fe x1
import qt_settings as qts
from OptAlgorithm import OptAlgorithm
class PlotWindow: class Application:
def __init__(self, def __init__(self,
opt: OptAlgorithm, opt: OptAlgorithm,
bool_dict: dict, bool_dict: dict,
@ -18,9 +21,9 @@ class PlotWindow:
self.scaler = 1000 self.scaler = 1000
self._getIdealTimings() self._getIdealTimings()
self._init_app() self._init_app()
self.WeldTime = 0.5 #[sec] self.WeldTime = 0.5 #[sec]
self.alpha = 100 #[0-255 прозрачность фона] self.alpha = 100 #[0-255 прозрачность фона]
def _init_app(self): def _init_app(self):
self.app = pg.mkQApp("Plotting") self.app = pg.mkQApp("Plotting")
self.win = pg.GraphicsLayoutWidget(show=True, title="") self.win = pg.GraphicsLayoutWidget(show=True, title="")
@ -85,13 +88,13 @@ class PlotWindow:
data.append([x_fe, x_me, v_fe, v_me, f]) data.append([x_fe, x_me, v_fe, v_me, f])
data = np.array(data).T data = np.array(data).T
return data return data
def _plotRealData(self): def _plotRealData(self):
for i, (key, dat) in enumerate(self.float_dict.items()): for i, (key, dat) in enumerate(self.float_dict.items()):
dat = np.array(dat).T dat = np.array(dat).T
dat[0] = dat[0]*self.scaler dat[0] = dat[0]*self.scaler
curve = pg.PlotDataItem(dat[0], dat[1], pen=pg.mkPen(color=qts.colors[i], width=2), name=key, autoDownsample=True, downsample=True) curve = pg.PlotDataItem(dat[0], dat[1], pen=pg.mkPen(color=qts.colors[i], width=2), name=key, autoDownsample=True, downsample=True)
if 'Electrode Force' in key: if 'Electrode Force' in key:
self.p11.addItem(curve) self.p11.addItem(curve)
self.l11.addItem(curve, key) self.l11.addItem(curve, key)
elif 'Rotor Position' in key: elif 'Rotor Position' in key:
@ -104,7 +107,7 @@ class PlotWindow:
def _plotIdealData(self, times): def _plotIdealData(self, times):
data = self._form_idealdatGraph(times) data = self._form_idealdatGraph(times)
x_fe = pg.PlotDataItem(times, data[0]*1000, pen=pg.mkPen(color=qts.colors[8], width=2), name='x_fe', autoDownsample=True, downsample=True) x_fe = pg.PlotDataItem(times, data[0]*1000, pen=pg.mkPen(color=qts.colors[8], width=2), name='x_fe', autoDownsample=True, downsample=True)
x_me = pg.PlotDataItem(times, data[1]*1000, pen=pg.mkPen(color=qts.colors[9], width=2), name='x_me', autoDownsample=True, downsample=True) x_me = pg.PlotDataItem(times, data[1]*1000, pen=pg.mkPen(color=qts.colors[9], width=2), name='x_me', autoDownsample=True, downsample=True)
v_fe = pg.PlotDataItem(times, data[2]*1000, pen=pg.mkPen(color=qts.colors[8], width=2), name='v_fe', autoDownsample=True, downsample=True) v_fe = pg.PlotDataItem(times, data[2]*1000, pen=pg.mkPen(color=qts.colors[8], width=2), name='v_fe', autoDownsample=True, downsample=True)
@ -127,12 +130,12 @@ class PlotWindow:
def _addBackgroundSplitter(self): def _addBackgroundSplitter(self):
alpha = self.alpha alpha = self.alpha
x = [[0, self.idealPhase0], x = [[0, self.idealPhase0],
[self.idealPhase0, self.idealPhase1], [self.idealPhase0, self.idealPhase1],
[self.idealPhase1, self.idealPhase2], [self.idealPhase1, self.idealPhase2],
[self.idealPhase2, self.idealPhase3]] [self.idealPhase2, self.idealPhase3]]
y01 = [10000, 10000] y01 = [100000000000, 100000000000]
y0_1 = [-10000, -10000] y0_1 = [-100000000000, -100000000000]
for i, _ in enumerate(x): for i, _ in enumerate(x):
a01 = pg.PlotDataItem(_, y01, pen=pg.mkPen(color=qts.colors[8], width=2), name=' ') a01 = pg.PlotDataItem(_, y01, pen=pg.mkPen(color=qts.colors[8], width=2), name=' ')
a0_1 = pg.PlotDataItem(_, y0_1, pen=pg.mkPen(color=qts.colors[8], width=2), name=' ') a0_1 = pg.PlotDataItem(_, y0_1, pen=pg.mkPen(color=qts.colors[8], width=2), name=' ')
@ -145,4 +148,40 @@ class PlotWindow:
self.p11.setYRange(-1000, 5000) self.p11.setYRange(-1000, 5000)
self.p12.setYRange(-50, 250) self.p12.setYRange(-50, 250)
self.p13.setYRange(-400, 400) self.p13.setYRange(-400, 400)
def get_ideal_timings(opt: OptAlgorithm) -> list[float]:
data = opt.Ts
ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen()]
return ideal_time
def main():
operator_params = read_json("params/operator_params.json")
system_params = read_json("params/system_params.json")
opt_algorithm = OptAlgorithm(operator_config=operator_params, system_config=system_params)
ideal_times = get_ideal_timings(opt_algorithm)
parser = DiagramParser()
parser.setData("2024_10_28-17_03_34.csv")
bool_dict = parser.getBoolDict()
float_dict = parser.getFloatDict()
request_generator = Request(server_url='http://www.plantuml.com/plantuml/svg/')
uml_creator = UMLCreator(request_generator=request_generator,
ideal_time=ideal_times,
bool_dict=bool_dict,
float_dict=float_dict)
uml_creator.update_uml()
app = Application(opt=opt_algorithm,
bool_dict=bool_dict,
float_dict=float_dict)
app.updatePlots()
pg.exec()
if __name__ == '__main__':
main()

View File

@ -235,6 +235,7 @@ QPushButton:disabled {
""" """
colors = [ colors = [
'#FF6F61', # яркий коралловый '#FF6F61', # яркий коралловый
'#6B5B95', # приглушенный фиолетовый '#6B5B95', # приглушенный фиолетовый
@ -248,8 +249,8 @@ colors = [
'#45B8AC' # мягкий мятный '#45B8AC' # мягкий мятный
] ]
RGBA = [(255, 255, 0), RGBA = [(124, 252, 0),
(32, 178, 70), (255, 215, 0),
(255, 69, 0), (255, 69, 0),
(123, 104, 238) (123, 104, 238)
] ]

View File

@ -1 +0,0 @@
from .plot_window import PlotWindow

View File

@ -1,42 +0,0 @@
import pyqtgraph as pg
from utils import read_json, DiagramParser
from uml import Request, UMLCreator
from OptAlgorithm import OptAlgorithm
from gui import PlotWindow
def get_ideal_timings(opt: OptAlgorithm) -> list[float]:
data = opt.Ts
ideal_time = [data['tclose'], data['tgrow'], opt.getMarkOpen()]
return ideal_time
def main():
operator_params = read_json("params/operator_params.json")
system_params = read_json("params/system_params.json")
opt_algorithm = OptAlgorithm(operator_config=operator_params, system_config=system_params)
ideal_times = get_ideal_timings(opt_algorithm)
parser = DiagramParser()
parser.setData("trace_samples/2024_11_01-09_39_17.csv")
bool_dict = parser.getBoolDict()
float_dict = parser.getFloatDict()
request_generator = Request(server_url='http://www.plantuml.com/plantuml/svg/')
uml_creator = UMLCreator(request_generator=request_generator,
ideal_time=ideal_times,
bool_dict=bool_dict,
float_dict=float_dict)
uml_creator.update_uml()
app = PlotWindow(opt=opt_algorithm,
bool_dict=bool_dict,
float_dict=float_dict)
app.updatePlots()
pg.exec()
if __name__ == '__main__':
main()

View File

@ -1,4 +1,5 @@
from src.uml.request_generator import Request import os
from uml.request_generator import Request
class UMLCreator: class UMLCreator:
@ -17,7 +18,7 @@ class UMLCreator:
sig = [ sig = [
'Electrode Closing Algorithm Execute', # Начало закрытия 'Electrode Closing Algorithm Execute', # Начало закрытия
'Electrode Closing Algorithm Done', 'Electrode Closing Algorithm Done',
# 'STEP 3: ME Hold P2 AND Condition Start Force Control', # Конец закрытия и Начало набора усилия 'STEP 3: ME Hold P2 AND Condition Start Force Control', # Конец закрытия и Начало набора усилия
'STEP 4: ME Force Control', 'STEP 4: ME Force Control',
'Position Control ME', # Начало разъезда или 'Posision Control Activated FE' 'Position Control ME', # Начало разъезда или 'Posision Control Activated FE'
'Position Control FE', # Начало разъезда 'Position Control FE', # Начало разъезда

View File

@ -50,7 +50,7 @@ class Request:
def generateSVG(self): def generateSVG(self):
self._compileUML() self._compileUML()
filename = abspath('UML.txt') filename = abspath('../UML.txt')
self.server.processes_file(filename, outfile='UML.svg') self.server.processes_file(filename, outfile='UML.svg')
#result = self.server.processes(self.stringUML) #result = self.server.processes(self.stringUML)
#return result #return result