dev: Внедрение склейки этапов по позиции

This commit is contained in:
Леонид Титов 2024-12-27 18:25:27 +03:00
parent d782189449
commit e8c57334f3
4 changed files with 49 additions and 9 deletions

View File

@ -32,8 +32,8 @@
0.003 0.003
], ],
"object_position": [ "object_position": [
0.03, 0.02,
0.03 0.01
], ],
"time_wielding": [ "time_wielding": [
1.332, 1.332,

View File

@ -64,7 +64,8 @@ class PassportFormer(BasePointPassportFormer):
tesla_time = sum(self._params[0].get("Tesla summary time", [])) tesla_time = sum(self._params[0].get("Tesla summary time", []))
useful_data = {"tesla_time": tesla_time, useful_data = {"tesla_time": tesla_time,
"range": system_settings["gun_range"], "range": system_settings["gun_range"],
"k_hardness": system_settings["k_hardness_1"] "k_hardness": system_settings["k_hardness_1"],
} }
for i in range(point_quantity): for i in range(point_quantity):
@ -72,6 +73,21 @@ class PassportFormer(BasePointPassportFormer):
key: (value[i] if i < len(value) else value[0]) key: (value[i] if i < len(value) else value[0])
for key, value in self._params[0].items() for key, value in self._params[0].items()
} }
next_i = i + 1
if next_i < point_quantity:
next_operator_settings = {
key: (value[next_i] if i < len(value) else value[0])
for key, value in self._params[0].items()
}
displacement_me = -0.005
displacement_fe = -0.005
operator_settings["distance_h_end1"] += displacement_fe
operator_settings["distance_h_end2"] += displacement_me
params_list = [operator_settings, system_settings] params_list = [operator_settings, system_settings]
cache_key = self._generate_cache_key(params_list) cache_key = self._generate_cache_key(params_list)
if cache_key in self._ideal_data_cashe and False: if cache_key in self._ideal_data_cashe and False:
@ -88,8 +104,8 @@ class PassportFormer(BasePointPassportFormer):
useful_p_data = {"thickness": operator_settings["object_thickness"], useful_p_data = {"thickness": operator_settings["object_thickness"],
"position": operator_settings["object_position"]-0.5*operator_settings["object_thickness"], "position": operator_settings["object_position"]-0.5*operator_settings["object_thickness"],
"force": operator_settings["force_target"], "force": operator_settings["force_target"],
"P1": operator_settings["object_position"] + operator_settings["object_thickness"], "P1": operator_settings["object_position"] + 0.5*operator_settings["object_thickness"],
"P2": operator_settings["object_position"]} "P2": operator_settings["object_position"] - 0.5*operator_settings["object_thickness"]}
points_pocket.append([point_timeframe, ideal_data, point_events, useful_p_data]) points_pocket.append([point_timeframe, ideal_data, point_events, useful_p_data])
return dataframe, points_pocket, useful_data return dataframe, points_pocket, useful_data

View File

@ -200,7 +200,8 @@ class PlotWidget(BasePlotWidget):
dataframe, points_pocket, useful_data = data dataframe, points_pocket, useful_data = data
tesla_time = useful_data["tesla_time"] tesla_time = useful_data["tesla_time"]
range_ME = useful_data["range"] gun_range = useful_data["range"]
k_hardness = useful_data["k_hardness"] k_hardness = useful_data["k_hardness"]
dat_is_none = dataframe is None dat_is_none = dataframe is None
@ -226,7 +227,7 @@ class PlotWidget(BasePlotWidget):
"ME", "ME",
description["Real_signals"], description["Real_signals"],
dataframe, dataframe,
range_ME gun_range
) )
# Итерация по точкам # Итерация по точкам
@ -246,7 +247,7 @@ class PlotWidget(BasePlotWidget):
global_shift +=ideal_data["Ideal cycle"] global_shift +=ideal_data["Ideal cycle"]
# TODO: проверить корректность расчетов # TODO: проверить корректность расчетов
if settings["force compensation FE"] and not dat_is_none: if False and settings["force compensation FE"] and not dat_is_none:
force = useful_p_data["force"] force = useful_p_data["force"]
F_comp = - force/k_hardness F_comp = - force/k_hardness
point_idxs = dataframe[(dataframe["time"] >= point_timeframe[0]) & (dataframe["time"] <= point_timeframe[1])].index point_idxs = dataframe[(dataframe["time"] >= point_timeframe[0]) & (dataframe["time"] <= point_timeframe[1])].index
@ -256,7 +257,11 @@ class PlotWidget(BasePlotWidget):
# Модифицируем данные для отображения гарфика # Модифицируем данные для отображения гарфика
if settings["ideals"] and settings["mirror ME"]: if settings["ideals"] and settings["mirror ME"]:
for stage in point_events.keys(): for stage in point_events.keys():
ideal_data[stage] = self._mirror_shift_data("ME", description["Ideal_signals"], ideal_data[stage], range_ME) ideal_data[stage] = (
self._mirror_shift_ideal("ME", "FE", description["Ideal_signals"],
ideal_data[stage],
gun_range, useful_p_data["P1"]*1000, useful_p_data["P2"]*1000)
)
# Добавляем реальные стадии # Добавляем реальные стадии
if settings["stages"] and not dat_is_none: if settings["stages"] and not dat_is_none:

View File

@ -298,6 +298,22 @@ class BasePlotWidget:
if valid_str in signal["name"] and signal["name"] in keys: if valid_str in signal["name"] and signal["name"] in keys:
dataframe[signal["name"]] = dataframe[signal["name"]].apply(lambda x: shift-x) dataframe[signal["name"]] = dataframe[signal["name"]].apply(lambda x: shift-x)
return dataframe return dataframe
def _mirror_shift_ideal(self,
name_ME: str, name_FE: str,
signals: list[dict],
dataframe: pd.DataFrame,
shift: float,
P1: float, P2: float) -> pd.DataFrame:
keys = dataframe.keys()
for signal in signals:
if name_ME in signal["name"] and signal["name"] in keys:
dataframe[signal["name"]] = dataframe[signal["name"]].apply(lambda x: -x+P1)
if name_FE in signal["name"] and signal["name"] in keys:
dataframe[signal["name"]] = dataframe[signal["name"]].apply(lambda x: x+P2)
return dataframe
def _shift_data(self, def _shift_data(self,
valid_str: str, valid_str: str,
@ -369,6 +385,9 @@ class BaseIdealDataBuilder(OptAlgorithm):
operator_params, system_params = params operator_params, system_params = params
self.mul = system_params['time_capture'] self.mul = system_params['time_capture']
self.welding_time = operator_params['time_wielding'] self.welding_time = operator_params['time_wielding']
super().__init__(operator_params, system_params) super().__init__(operator_params, system_params)