Skip to content

Commit be42228

Browse files
author
Malmahrouqi3
committed
ENH: added discrte and continuous controller functions
1 parent e0173e2 commit be42228

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

rocketpy/rocket/rocket.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1952,6 +1952,42 @@ def add_thrust_eccentricity(self, x, y):
19521952
self.thrust_eccentricity_y = y
19531953
return self
19541954

1955+
def add_discrete_controller(self,
1956+
controller_function,
1957+
refresh_rate,
1958+
interactive_objects=None,
1959+
initial_observed_variables=None,
1960+
name=None
1961+
):
1962+
1963+
controller = _Controller(
1964+
controller_function=controller_function,
1965+
sampling_rate=refresh_rate,
1966+
interactive_objects=interactive_objects,
1967+
initial_observed_variables=initial_observed_variables,
1968+
name=name)
1969+
1970+
self._add_controllers(controller)
1971+
1972+
return None
1973+
1974+
def add_continuous_controller(self,
1975+
controller_function,
1976+
interactive_objects=None,
1977+
initial_observed_variables=None,
1978+
name=None
1979+
):
1980+
1981+
controller = _Controller(
1982+
controller_function=controller_function,
1983+
sampling_rate=np.inf,
1984+
interactive_objects=interactive_objects,
1985+
initial_observed_variables=initial_observed_variables,
1986+
name=name)
1987+
1988+
self._add_controllers(controller)
1989+
return controller
1990+
19551991
def draw(self, vis_args=None, plane="xz", *, filename=None):
19561992
"""Draws the rocket in a matplotlib figure.
19571993

rocketpy/simulation/flight.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4497,6 +4497,9 @@ def add_parachutes(self, parachutes, t_init, t_end):
44974497

44984498
def add_controllers(self, controllers, t_init, t_end):
44994499
for controller in controllers:
4500+
# Skip node creation for continuous controllers
4501+
if math.isinf(controller.sampling_rate):
4502+
continue
45004503
# Calculate start of sampling time nodes
45014504
controller_time_step = 1 / controller.sampling_rate
45024505
controller_node_list = [

0 commit comments

Comments
 (0)