Parachute trigger comparison

Created Diff expires in
7 हटाए गए
लाइनें
कुल
हटाया गया
शब्द
कुल
हटाया गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diffchecker logo
Diffchecker Pro
54 लाइनें
19 जोड़े गए
लाइनें
कुल
जोड़ा गया
शब्द
कुल
जोड़ा गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diffchecker logo
Diffchecker Pro
66 लाइनें
for parachute in node.parachutes:
for parachute in overshootable_node.parachutes:
# Calculate and save pressure signal
# Calculate and save pressure signal
(
(
noisy_pressure,
noisy_pressure,
height_above_ground_level,
height_above_ground_level,
) = self.__calculate_and_save_pressure_signals(
) = self.__calculate_and_save_pressure_signals(
parachute, node.t, self.y_sol[2]
parachute,
overshootable_node.t,
overshootable_node.y_sol[2],
)
)

# Check for parachute trigger
if not parachute.triggerfunc(
if not parachute.triggerfunc(
noisy_pressure,
noisy_pressure,
height_above_ground_level,
height_above_ground_level,
self.y_sol,
overshootable_node.y_sol,
self.sensors,
self.sensors,
):
):
return False # Early exit: parachute not deployed
return False # Early exit, parachute not triggred


# Remove parachute from flight parachutes
# Remove parachute from flight parachutes
self.parachutes.remove(parachute)
self.parachutes.remove(parachute)


# Create phase for time after detection and before inflation
# Create phase for time after detection and before inflation
# Must only be created if parachute has any lag
# Must only be created if parachute has any lag
i = 1
i = 1
if parachute.lag != 0:
if parachute.lag != 0:
self.flight_phases.add_phase(
self.flight_phases.add_phase(
node.t,
overshootable_node.t,
phase.derivative,
phase.derivative,
clear=True,
clear=True,
index=phase_index + i,
index=phase_index + i,
)
)
i += 1
i += 1


# Create flight phase for time after inflation
# Create flight phase for time after inflation
callbacks = [
callbacks = [
lambda self, parachute_cd_s=parachute.cd_s: setattr(
lambda self, parachute_cd_s=parachute.cd_s: setattr(
self, "parachute_cd_s", parachute_cd_s
self, "parachute_cd_s", parachute_cd_s
)
)
]
]
self.flight_phases.add_phase(
self.flight_phases.add_phase(
node.t + parachute.lag,
overshootable_node.t + parachute.lag,
self.u_dot_parachute,
self.u_dot_parachute,
callbacks,
callbacks,
clear=False,
clear=False,
index=phase_index + i,
index=phase_index + i,
)
)


# Rollback history
self.t = overshootable_node.t
self.y_sol = overshootable_node.y_sol
self.solution[-1] = [overshootable_node.t, *overshootable_node.y_sol]

# Prepare to leave loops and start new flight phase
# Prepare to leave loops and start new flight phase
overshootable_nodes.flush_after(overshootable_index)
phase.time_nodes.flush_after(node_index)
phase.time_nodes.flush_after(node_index)
phase.time_nodes.add_node(self.t, [], [], [])
phase.time_nodes.add_node(self.t, [], [], [])
phase.solver.status = "finished"
phase.solver.status = "finished"

# Save parachute event
self.parachute_events.append([self.t, parachute])
self.parachute_events.append([self.t, parachute])
return True
return True


return False
return False