Trying to reach a working mini model

This commit is contained in:
2023-08-30 23:13:34 +02:00
parent 8fdf18f6a4
commit 2665e657ed
8 changed files with 189 additions and 77 deletions

View File

@@ -6,14 +6,14 @@ from . import MechJebManeuver
class ComsatManeuver(MechJebManeuver):
def __init__(self, conn, vessel, target_body):
super().__init__(conn, vessel)
def __init__(self, conn, mission_control, target_body):
super().__init__(conn, mission_control)
self.target_body = target_body
body = self.target_body
if body.satellites:
lowest_sat = min(body.satellites, key=lambda sat: sat.orbit.periapsis)
max_orbit = lowest_sat.orbit.periapsis - lowest_sat.sphere_of_influence
max_orbit = lowest_sat.orbit.periapsis_altitude - lowest_sat.sphere_of_influence
else:
max_orbit = body.sphere_of_influence
@@ -29,11 +29,11 @@ class ComsatManeuver(MechJebManeuver):
if vessel.orbit.body.name != self.target_body.name:
raise NotImplementedError
if not math.isclose(vessel.orbit.apoapsis, self.target_altitude, rel_tol=.01):
SetOrbitApoapsis(self.conn, vessel, self.target_altitude).prepare_maneuver()
elif not math.isclose(vessel.orbit.eccentricity, 0, rel_tol=.01):
CircularizeOrbitAndDeliver(self.conn, vessel, self.target_altitude).prepare_maneuver()
elif self.vessel.control.current_stage == 0:
if not math.isclose(vessel.orbit.apoapsis_altitude, self.target_altitude, rel_tol=.01):
SetOrbitApoapsis(self.conn, vessel, self.target_body).prepare_maneuver()
elif not math.isclose(vessel.orbit.eccentricity, 0, abs_tol=.001) or self.vessel.control.current_stage > 1:
CircularizeOrbitAndDeliver(self.conn, vessel, self.target_body).prepare_maneuver()
elif self.vessel.control.current_stage <= 1:
return True
return False
@@ -73,8 +73,13 @@ class CircularizeOrbitAndDeliver(ComsatManeuver):
while self.vessel.control.nodes:
self._execute_node()
if self.vessel.control.current_stage > 0:
self.vessel.control.activate_next_stage()
current_stage = self.vessel.control.current_stage
if current_stage > 1:
relay = self.vessel.control.activate_next_stage()
sc.active_vessel = relay[0]
sc.active_vessel.name = self.vessel.name + " " + current_stage
sc.active_vessel.control.solar_panels = True
sc.active_vessel = self.vessel
oro = self.maneuver_planner.operation_resonant_orbit
oro.resonance_numerator = 2