fix(SF-483): Исправлен неправильный подсчёт скорости на этапе раскрытия, добавлен ассерт на достижение номинальной траектории до фазы подпора
This commit is contained in:
parent
1a36aa217b
commit
e1c38eeb2d
@ -51,12 +51,10 @@ class OptTimeCalculator(AutoConfigClass):
|
|||||||
t22 = max(0, (l2 - (self.a_max_2 * t21 * t21)) / self.v_max_2)
|
t22 = max(0, (l2 - (self.a_max_2 * t21 * t21)) / self.v_max_2)
|
||||||
T2 = t22 + 2 * t21 + offset
|
T2 = t22 + 2 * t21 + offset
|
||||||
|
|
||||||
Topen = max(T1, T2)
|
topen_1_acc, topen_1_speed = self.calcFirstOpen(T1, l1+Fs1)
|
||||||
|
|
||||||
topen_1_acc, topen_1_speed = self.calcFirstOpen(Topen, l1+Fs1)
|
|
||||||
offset = self.calcSecondOpenOffset(topen_1_acc, topen_1_speed, 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_1_acc"] = topen_1_acc
|
||||||
self.allTimes["topen_2_offset"] = offset
|
self.allTimes["topen_2_offset"] = offset
|
||||||
@ -95,7 +93,6 @@ class OptTimeCalculator(AutoConfigClass):
|
|||||||
|
|
||||||
self.allTimes["topen_1_mark"] = topen_1_mark
|
self.allTimes["topen_1_mark"] = topen_1_mark
|
||||||
self.allTimes["topen_2_mark"] = topen_2_mark
|
self.allTimes["topen_2_mark"] = topen_2_mark
|
||||||
self.allTimes["topen"] = Topen
|
|
||||||
|
|
||||||
def Tgrow(self) -> None:
|
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))
|
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)
|
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)
|
Fmeet = 1/self.freq * sqrt(self.freq**2 * self.Ftogrow**2 - vFmax**2)
|
||||||
|
|
||||||
Fstart_prop = self.Fstart_prop
|
Fstart_prop = self.Fstart_prop
|
||||||
|
assert Fmeet < Fstart_prop
|
||||||
tmeet = (Fmeet - Fspeed)/vFmax
|
tmeet = (Fmeet - Fspeed)/vFmax
|
||||||
tend = self.tGrowNominal(Fstart_prop) - self.tGrowNominal(Fmeet)
|
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)
|
vp = 1/sqrt(self.k_hardness_1 * self.mass_1) * sqrt(self.Ftogrow**2 - self.Fstart_prop**2)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user