fix(SF-483): Исправлен неправильный подсчёт скорости на этапе раскрытия, добавлен ассерт на достижение номинальной траектории до фазы подпора

This commit is contained in:
ermolaev_p 2024-11-15 14:34:31 +03:00
parent 1a36aa217b
commit e1c38eeb2d

View File

@ -51,12 +51,10 @@ class OptTimeCalculator(AutoConfigClass):
t22 = max(0, (l2 - (self.a_max_2 * t21 * t21)) / self.v_max_2)
T2 = t22 + 2 * t21 + offset
Topen = max(T1, T2)
topen_1_acc, topen_1_speed = self.calcFirstOpen(Topen, l1+Fs1)
topen_1_acc, topen_1_speed = self.calcFirstOpen(T1, l1+Fs1)
offset = self.calcSecondOpenOffset(topen_1_acc, topen_1_speed, Fs1)
topen_2_acc, topen_2_speed = self.calcSecondOpen(Topen - offset, l2)
topen_2_acc, topen_2_speed = self.calcSecondOpen(T2 - offset, l2)
self.allTimes["topen_1_acc"] = topen_1_acc
self.allTimes["topen_2_offset"] = offset
@ -95,7 +93,6 @@ class OptTimeCalculator(AutoConfigClass):
self.allTimes["topen_1_mark"] = topen_1_mark
self.allTimes["topen_2_mark"] = topen_2_mark
self.allTimes["topen"] = Topen
def Tgrow(self) -> None:
@ -109,7 +106,9 @@ class OptTimeCalculator(AutoConfigClass):
tspeed = sqrt(self.mass_1/self.k_hardness_1) * (arcsin(vFmax / L) - arccos(sqrt(self.k_hardness_1 / self.mass_1) * self.eff_control / L))
Fspeed = - self.eff_control * cos(self.freq * tspeed) + self.eff_control + 1/self.freq * vF0 * sin(self.freq * tspeed)
Fmeet = 1/self.freq * sqrt(self.freq**2 * self.Ftogrow**2 - vFmax**2)
Fstart_prop = self.Fstart_prop
assert Fmeet < Fstart_prop
tmeet = (Fmeet - Fspeed)/vFmax
tend = self.tGrowNominal(Fstart_prop) - self.tGrowNominal(Fmeet)
vp = 1/sqrt(self.k_hardness_1 * self.mass_1) * sqrt(self.Ftogrow**2 - self.Fstart_prop**2)