Exemplo n.º 1
0
    def launch(self):
        # -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
        #              L A U N C H               #
        #             P R O G R A M              #
        # -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

        self.ap.engage()
        print("For 300km Parking Orbit - Moon Shot launch at LAN = 334.56846 - 6.68379")
        _tp = self.orbital_period(self.parking_orbit_alt + self.radius_eq, self.mu)
        ui = UI()

        while self.mode == "Launch Prep":
            if self.control.get_action_group(9):
                self.control.throttle = 1
                self.stage()
                self.mode = "Launch"

        while self.mode != "Orbit":
            self.pitch_and_heading()

            if self.falafels is True:
                if self.altitude() > 80000:
                    self.control.toggle_action_group(8)
                    self.falafels = False

            if self.mode == "Launch":
                _twr = self.twr_calc(self.thrust(), self.mass(), self.altitude(), self.radius_eq, self.mu)
                if _twr > 1:
                    self.lAz_data = self.azimuth_init()
                    self.stage()
                    self.mode = "Booster"

            if self.mode == "Booster":
                self.flameout("Core Stage")

            if self.mode == "Core Stage":
                self.flameout("Orbit Insertion")

            if self.mode == "Orbit Insertion":
                if (self.circ_dv() < 10) or (_tp < self.period()):
                    self.control.throttle = 0
                    self.mode = "Orbit"

            if self.circ_dv() > 500: time.sleep(.1)
            ui.gravity_turn(self.mode)

        ui.remove_ui()
        self.launch_final()
Exemplo n.º 2
0
    def launch(self):
        # -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
        #              L A U N C H               #
        #             P R O G R A M              #
        # -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

        self.ap.engage()
        ui = UI()

        while self.mode == "Launch Prep":
            if self.control.get_action_group(9):
                self.control.throttle = 1
                self.control.activate_next_stage()
                self.mode = "Launch"
            time.sleep(1)

        while self.mode != "Orbit":
            self.pitch_and_heading()

            if self.boosters:
                if self.named_flameout("FASADeltaCastorSrb"):
                    self.control.activate_next_stage()
                    time.sleep(1.5)
                    self.boosters = False

            if self.mode == "Testing":
                self.list_parts(self.engines)
                self.mode = "Orbit"

            if self.mode == "Launch":
                _twr = self.twr_calc(self.thrust(), self.mass(), self.altitude(), self.radius_eq, self.mu)
                if _twr > 1:
                    self.lAz_data = self.azimuth_init()
                    self.control.activate_next_stage()
                    self.mode = "Booster Stage"

            if self.mode == "Booster Stage":

                if (self.altitude() > 80000) and (self.falafels is True):
                    self.control.activate_next_stage()
                    self.falafels = False

                if self.named_flameout("R7.Core.Engine"):
                    self.control.throttle = 0
                    time.sleep(1.5)
                    self.control.activate_next_stage()
                    self.mode = "Upper Stage"

            if self.mode == "Upper Stage":

                if self.eng_status(self.get_active_engine(), "Status") == "Flame-Out!":
                    self.control.throttle = 0
                    time.sleep(1.5)
                    self.control.activate_next_stage()
                    self.control.rcs = True
                    self.mode = "Cruise"

            if self.mode == "Cruise":
                if self.time_to_burn(self.ETA_ap(), self.maneuver_burn_time(self.circ_dv())) < 5:
                    self.ullage_rcs()
                    self.mode = "Orbit Insertion"

            if self.mode == "Orbit Insertion":
                self.control.rcs = False
                if (self.circ_dv() < 10) or (self.orbital_period(self.parking_orbit_alt + self.radius_eq,
                                                                 self.mu) < self.period()):
                    self.control.throttle = 0
                    self.mode = "Orbit"

            if self.circ_dv() > 500: time.sleep(.1)

            ui.gravity_turn(self.mode)

        ui.remove_ui()
        self.control.rcs = True
        self.ap.disengage()
        self.control.sas = True
        time.sleep(2)