diff --git a/PyFlyt/core/abstractions/boosters.py b/PyFlyt/core/abstractions/boosters.py index 5f07da70..561f0c39 100644 --- a/PyFlyt/core/abstractions/boosters.py +++ b/PyFlyt/core/abstractions/boosters.py @@ -141,7 +141,7 @@ def get_states(self) -> np.ndarray: - (b0, b1, ..., bn) represent the remaining fuel ratio - (c0, c1, ..., cn) represent the current throttle state - Returns + Returns: ------- np.ndarray: A (3 * num_boosters, ) array diff --git a/PyFlyt/core/abstractions/camera.py b/PyFlyt/core/abstractions/camera.py index ce288d0e..52bd7252 100644 --- a/PyFlyt/core/abstractions/camera.py +++ b/PyFlyt/core/abstractions/camera.py @@ -100,7 +100,7 @@ def __init__( def view_mat(self) -> np.ndarray: """Generates the view matrix for the camera depending on the current orientation and implicit parameters. - Returns + Returns: ------- np.ndarray: view matrix. @@ -161,7 +161,7 @@ def physics_update(self): def capture_image(self) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """Captures the 3 relevant images from the camera. - Returns + Returns: ------- tuple[np.ndarray, np.ndarray, np.ndarray]: rgbaImg, depthImg, segImg diff --git a/PyFlyt/core/abstractions/gimbals.py b/PyFlyt/core/abstractions/gimbals.py index f0984a7a..f5f04b1d 100644 --- a/PyFlyt/core/abstractions/gimbals.py +++ b/PyFlyt/core/abstractions/gimbals.py @@ -123,7 +123,7 @@ def reset(self): def get_states(self) -> np.ndarray: """Gets the current state of the components. - Returns + Returns: ------- np.ndarray: a (2 * num_gimbals, ) array where every pair of values represents the current state of the gimbal diff --git a/PyFlyt/core/abstractions/lifting_surfaces.py b/PyFlyt/core/abstractions/lifting_surfaces.py index 148de490..af39b366 100644 --- a/PyFlyt/core/abstractions/lifting_surfaces.py +++ b/PyFlyt/core/abstractions/lifting_surfaces.py @@ -47,7 +47,7 @@ def reset(self): def get_states(self) -> np.ndarray: """Gets the current state of the components. - Returns + Returns: ------- np.ndarray: a (num_surfaces, ) array representing the actuation state for each surface @@ -254,7 +254,7 @@ def reset(self): def get_states(self) -> float: """Gets the current state of the components. - Returns + Returns: ------- float: the level of deflection of the surface. diff --git a/PyFlyt/core/abstractions/motors.py b/PyFlyt/core/abstractions/motors.py index 82c7ff62..eae4bb4b 100644 --- a/PyFlyt/core/abstractions/motors.py +++ b/PyFlyt/core/abstractions/motors.py @@ -98,7 +98,7 @@ def reset(self) -> None: def get_states(self) -> np.ndarray: """Gets the current state of the components. - Returns + Returns: ------- np.ndarray: an (num_motors, ) array for the current throttle level of each motor diff --git a/PyFlyt/core/aviary.py b/PyFlyt/core/aviary.py index 91b29bcb..a487e228 100644 --- a/PyFlyt/core/aviary.py +++ b/PyFlyt/core/aviary.py @@ -38,7 +38,7 @@ def __init__(self, message: str) -> None: def __str__(self) -> str: """__str__. - Returns + Returns: ------- str: @@ -380,7 +380,7 @@ def all_states(self) -> list[np.ndarray]: This function is not very optimized, if you want the state of a single drone, do `state(i)`. - Returns + Returns: ------- np.ndarray: list of states @@ -399,7 +399,7 @@ def all_aux_states(self) -> list[np.ndarray]: This function is not very optimized, if you want the aux state of a single drone, do `aux_state(i)`. - Returns + Returns: ------- np.ndarray: list of auxiliary states diff --git a/PyFlyt/core/drones/quadx.py b/PyFlyt/core/drones/quadx.py index fac7ad1b..cfc44363 100644 --- a/PyFlyt/core/drones/quadx.py +++ b/PyFlyt/core/drones/quadx.py @@ -32,6 +32,7 @@ def __init__( use_gimbal: bool = False, camera_angle_degrees: int = 20, camera_FOV_degrees: int = 90, + camera_position_offset: np.ndarray = np.array([0.0, 0.0, 0.0]), camera_resolution: tuple[int, int] = (128, 128), camera_fps: None | int = None, ): @@ -51,6 +52,7 @@ def __init__( use_gimbal (bool): use_gimbal camera_angle_degrees (int): camera_angle_degrees camera_FOV_degrees (int): camera_FOV_degrees + camera_position_offset (np.ndarray): offset position of the camera camera_resolution (tuple[int, int]): camera_resolution camera_fps (None | int): camera_fps @@ -205,6 +207,7 @@ def __init__( camera_FOV_degrees=camera_FOV_degrees, camera_angle_degrees=camera_angle_degrees, camera_resolution=camera_resolution, + camera_position_offset=camera_position_offset, ) # compute camera fps parameters diff --git a/PyFlyt/gym_envs/fixedwing_envs/fixedwing_waypoints_env.py b/PyFlyt/gym_envs/fixedwing_envs/fixedwing_waypoints_env.py index d6f20980..44a02488 100644 --- a/PyFlyt/gym_envs/fixedwing_envs/fixedwing_waypoints_env.py +++ b/PyFlyt/gym_envs/fixedwing_envs/fixedwing_waypoints_env.py @@ -116,7 +116,6 @@ def reset( super().begin_reset(seed, options) self.waypoints.reset(self.env, self.np_random) self.info["num_targets_reached"] = 0 - self.distance_to_immediate = np.inf super().end_reset() return self.state, self.info @@ -165,12 +164,9 @@ def compute_state(self) -> None: axis=-1, ) - new_state["target_deltas"] = self.waypoints.distance_to_target( + new_state["target_deltas"] = self.waypoints.distance_to_targets( ang_pos, lin_pos, quaternion ) - self.distance_to_immediate = float( - np.linalg.norm(new_state["target_deltas"][0]) - ) self.state: dict[Literal["attitude", "target_deltas"], np.ndarray] = new_state @@ -180,17 +176,17 @@ def compute_term_trunc_reward(self) -> None: # bonus reward if we are not sparse if not self.sparse_reward: - self.reward += max(3.0 * self.waypoints.progress_to_target(), 0.0) - self.reward += 1.0 / self.distance_to_immediate + self.reward += max(3.0 * self.waypoints.progress_to_next_target, 0.0) + self.reward += 1.0 / self.waypoints.distance_to_next_target # target reached - if self.waypoints.target_reached(): + if self.waypoints.target_reached: self.reward = 100.0 # advance the targets self.waypoints.advance_targets() # update infos and dones - self.truncation |= self.waypoints.all_targets_reached() - self.info["env_complete"] = self.waypoints.all_targets_reached() - self.info["num_targets_reached"] = self.waypoints.num_targets_reached() + self.truncation |= self.waypoints.all_targets_reached + self.info["env_complete"] = self.waypoints.all_targets_reached + self.info["num_targets_reached"] = self.waypoints.num_targets_reached diff --git a/PyFlyt/gym_envs/quadx_envs/quadx_base_env.py b/PyFlyt/gym_envs/quadx_envs/quadx_base_env.py index 943327e0..fc406705 100644 --- a/PyFlyt/gym_envs/quadx_envs/quadx_base_env.py +++ b/PyFlyt/gym_envs/quadx_envs/quadx_base_env.py @@ -75,24 +75,30 @@ def __init__( self.auxiliary_space = spaces.Box( low=-np.inf, high=np.inf, shape=(4,), dtype=np.float64 ) - angular_rate_limit = np.pi + + # define the action space + xyz_limit = np.pi thrust_limit = 0.8 - high = np.array( - [ - angular_rate_limit, - angular_rate_limit, - angular_rate_limit, - thrust_limit, - ] - ) - low = np.array( - [ - -angular_rate_limit, - -angular_rate_limit, - -angular_rate_limit, - 0.0, - ] - ) + if flight_mode == -1: + high = np.ones((4,)) * thrust_limit + low = np.zeros((4,)) + else: + high = np.array( + [ + xyz_limit, + xyz_limit, + xyz_limit, + thrust_limit, + ] + ) + low = np.array( + [ + -xyz_limit, + -xyz_limit, + -xyz_limit, + 0.0, + ] + ) self.action_space = spaces.Box(low=low, high=high, dtype=np.float64) # the whole implicit state space = attitude + previous action + auxiliary information diff --git a/PyFlyt/gym_envs/quadx_envs/quadx_pole_balance_env.py b/PyFlyt/gym_envs/quadx_envs/quadx_pole_balance_env.py index 1acc8f04..6d5aaf28 100644 --- a/PyFlyt/gym_envs/quadx_envs/quadx_pole_balance_env.py +++ b/PyFlyt/gym_envs/quadx_envs/quadx_pole_balance_env.py @@ -13,7 +13,7 @@ class QuadXPoleBalanceEnv(QuadXBaseEnv): """Simple Hover Environment with the additional goal of keeping a pole upright. - Actions are vp, vq, vr, T, ie: angular rates and thrust. + Actions are direct motor PWM commands because any underlying controller introduces too much control latency. The target is to not crash and not let the pole hit the ground for the longest time possible. Args: @@ -32,7 +32,7 @@ class QuadXPoleBalanceEnv(QuadXBaseEnv): def __init__( self, sparse_reward: bool = False, - flight_mode: int = 0, + flight_mode: int = -1, flight_dome_size: float = 3.0, max_duration_seconds: float = 20.0, angle_representation: Literal["euler", "quaternion"] = "quaternion", @@ -45,12 +45,12 @@ def __init__( Args: ---- sparse_reward (bool): whether to use sparse rewards or not. - flight_mode (int): the flight mode of the UAV + flight_mode (int): the flight mode of the UAV. flight_dome_size (float): size of the allowable flying area. max_duration_seconds (float): maximum simulation time of the environment. angle_representation (Literal["euler", "quaternion"]): can be "euler" or "quaternion". agent_hz (int): looprate of the agent to environment interaction. - render_mode (None | Literal["human", "rgb_array"]): render_mode + render_mode (None | Literal["human", "rgb_array"]): render_mode. render_resolution (tuple[int, int]): render_resolution. """ @@ -94,7 +94,10 @@ def reset( super().begin_reset( seed, options, - drone_options={"drone_model": "primitive_drone"}, + drone_options={ + "drone_model": "primitive_drone", + "camera_position_offset": np.array([-3.0, 0.0, 1.0]), + }, ) self.pole.reset(p=self.env, start_location=np.array([0.0, 0.0, 1.55])) super().end_reset(seed, options) diff --git a/PyFlyt/gym_envs/quadx_envs/quadx_pole_waypoints_env.py b/PyFlyt/gym_envs/quadx_envs/quadx_pole_waypoints_env.py index 642c632d..07bdaf2c 100644 --- a/PyFlyt/gym_envs/quadx_envs/quadx_pole_waypoints_env.py +++ b/PyFlyt/gym_envs/quadx_envs/quadx_pole_waypoints_env.py @@ -14,7 +14,7 @@ class QuadXPoleWaypointsEnv(QuadXBaseEnv): """QuadX Pole Waypoints Environment. - Actions are vp, vq, vr, T, ie: angular rates and thrust. + Actions are direct motor PWM commands because any underlying controller introduces too much control latency. The target is to get to a set of `[x, y, z]` waypoints in space without dropping the pole. Args: @@ -37,11 +37,11 @@ def __init__( sparse_reward: bool = False, num_targets: int = 4, goal_reach_distance: float = 0.2, - flight_mode: int = 0, + flight_mode: int = -1, flight_dome_size: float = 10.0, - max_duration_seconds: float = 60.0, + max_duration_seconds: float = 20.0, angle_representation: Literal["euler", "quaternion"] = "quaternion", - agent_hz: int = 30, + agent_hz: int = 40, render_mode: None | Literal["human", "rgb_array"] = None, render_resolution: tuple[int, int] = (480, 480), ): @@ -57,12 +57,11 @@ def __init__( max_duration_seconds (float): maximum simulation time of the environment. angle_representation (Literal["euler", "quaternion"]): can be "euler" or "quaternion". agent_hz (int): looprate of the agent to environment interaction. - render_mode (None | Literal["human", "rgb_array"]): render_mode + render_mode (None | Literal["human", "rgb_array"]): render_mode. render_resolution (tuple[int, int]): render_resolution. """ super().__init__( - start_pos=np.array([[0.0, 0.0, 1.0]]), flight_mode=flight_mode, flight_dome_size=flight_dome_size, max_duration_seconds=max_duration_seconds, @@ -126,7 +125,12 @@ def reset( """ super().begin_reset( - seed, options, drone_options={"drone_model": "primitive_drone"} + seed, + options, + drone_options={ + "drone_model": "primitive_drone", + "camera_position_offset": np.array([-3.0, 0.0, 1.0]), + }, ) # spawn in a pole @@ -135,7 +139,6 @@ def reset( # init some other metadata self.waypoints.reset(self.env, self.np_random) self.info["num_targets_reached"] = 0 - self.distance_to_immediate = np.inf super().end_reset() @@ -162,10 +165,10 @@ def compute_state(self) -> None: """ # compute attitude of self ang_vel, ang_pos, lin_vel, lin_pos, quaternion = super().compute_attitude() + aux_state = super().compute_auxiliary() rotation = ( np.array(self.env.getMatrixFromQuaternion(quaternion)).reshape(3, 3).T ) - aux_state = super().compute_auxiliary() # compute the pole's states ( @@ -210,36 +213,34 @@ def compute_state(self) -> None: pole_bot_pos, pole_top_vel, pole_bot_vel, - ] + ], + axis=-1, ) - new_state["target_deltas"] = self.waypoints.distance_to_target( + new_state["target_deltas"] = self.waypoints.distance_to_targets( ang_pos, lin_pos, quaternion ) - self.distance_to_immediate = float( - np.linalg.norm(new_state["target_deltas"][0]) - ) self.state: dict[Literal["attitude", "target_deltas"], np.ndarray] = new_state def compute_term_trunc_reward(self) -> None: - """Computes the termination, trunction, and reward of the current timestep.""" + """Computes the termination, truncation, and reward of the current timestep.""" super().compute_base_term_trunc_reward() # bonus reward if we are not sparse if not self.sparse_reward: - self.reward += max(3.0 * self.waypoints.progress_to_target(), 0.0) - self.reward += 0.1 / self.distance_to_immediate - self.reward -= self.pole.leaningness + self.reward += max(15.0 * self.waypoints.progress_to_next_target, 0.0) + self.reward += 0.5 / self.waypoints.distance_to_next_target + self.reward += (0.5 - self.pole.leaningness) # target reached - if self.waypoints.target_reached(): - self.reward = 100.0 + if self.waypoints.target_reached: + self.reward = 300.0 # advance the targets self.waypoints.advance_targets() # update infos and dones - self.truncation |= self.waypoints.all_targets_reached() - self.info["env_complete"] = self.waypoints.all_targets_reached() - self.info["num_targets_reached"] = self.waypoints.num_targets_reached() + self.truncation |= self.waypoints.all_targets_reached + self.info["env_complete"] = self.waypoints.all_targets_reached + self.info["num_targets_reached"] = self.waypoints.num_targets_reached diff --git a/PyFlyt/gym_envs/quadx_envs/quadx_waypoints_env.py b/PyFlyt/gym_envs/quadx_envs/quadx_waypoints_env.py index bea5d98e..dd565da7 100644 --- a/PyFlyt/gym_envs/quadx_envs/quadx_waypoints_env.py +++ b/PyFlyt/gym_envs/quadx_envs/quadx_waypoints_env.py @@ -122,7 +122,6 @@ def reset( super().begin_reset(seed, options) self.waypoints.reset(self.env, self.np_random) self.info["num_targets_reached"] = 0 - self.distance_to_immediate = np.inf super().end_reset() return self.state, self.info @@ -171,12 +170,9 @@ def compute_state(self) -> None: axis=-1, ) - new_state["target_deltas"] = self.waypoints.distance_to_target( + new_state["target_deltas"] = self.waypoints.distance_to_targets( ang_pos, lin_pos, quaternion ) - self.distance_to_immediate = float( - np.linalg.norm(new_state["target_deltas"][0]) - ) self.state: dict[Literal["attitude", "target_deltas"], np.ndarray] = new_state @@ -186,17 +182,17 @@ def compute_term_trunc_reward(self) -> None: # bonus reward if we are not sparse if not self.sparse_reward: - self.reward += max(3.0 * self.waypoints.progress_to_target(), 0.0) - self.reward += 0.1 / self.distance_to_immediate + self.reward += max(3.0 * self.waypoints.progress_to_next_target, 0.0) + self.reward += 0.1 / self.waypoints.distance_to_next_target # target reached - if self.waypoints.target_reached(): + if self.waypoints.target_reached: self.reward = 100.0 # advance the targets self.waypoints.advance_targets() # update infos and dones - self.truncation |= self.waypoints.all_targets_reached() - self.info["env_complete"] = self.waypoints.all_targets_reached() - self.info["num_targets_reached"] = self.waypoints.num_targets_reached() + self.truncation |= self.waypoints.all_targets_reached + self.info["env_complete"] = self.waypoints.all_targets_reached + self.info["num_targets_reached"] = self.waypoints.num_targets_reached diff --git a/PyFlyt/gym_envs/utils/pole_handler.py b/PyFlyt/gym_envs/utils/pole_handler.py index e2df09ca..f6a62d4b 100644 --- a/PyFlyt/gym_envs/utils/pole_handler.py +++ b/PyFlyt/gym_envs/utils/pole_handler.py @@ -61,7 +61,7 @@ def reset( def leaningness(self) -> float: """The lean of the pole, minimum of 0.0 and maximum of 1.0. - Returns + Returns: ------- float: diff --git a/PyFlyt/gym_envs/utils/waypoint_handler.py b/PyFlyt/gym_envs/utils/waypoint_handler.py index 2feb64d7..cb40deca 100644 --- a/PyFlyt/gym_envs/utils/waypoint_handler.py +++ b/PyFlyt/gym_envs/utils/waypoint_handler.py @@ -64,8 +64,8 @@ def reset( self.np_random = np_random # reset the error - self.new_distance = 0.0 - self.old_distance = 0.0 + self.new_distance = np.inf + self.old_distance = np.inf # we sample from polar coordinates to generate linear targets self.targets = np.zeros(shape=(self.num_targets, 3)) @@ -108,16 +108,26 @@ def reset( rgbaColor=(0, 1 - (i / len(self.target_visual)), 0, 1), ) - def distance_to_target( + @property + def distance_to_next_target(self) -> float: + """distance_to_next_target. + + Returns: + --- + float: + """ + return self.new_distance + + def distance_to_targets( self, ang_pos: np.ndarray, lin_pos: np.ndarray, quaternion: np.ndarray, ): - """distance_to_target. + """distance_to_targets. Args: - ---- + --- ang_pos (np.ndarray): ang_pos lin_pos (np.ndarray): lin_pos quaternion (np.ndarray): quaternion @@ -149,10 +159,14 @@ def distance_to_target( return target_deltas - def progress_to_target(self): + @property + def progress_to_next_target(self): """progress_to_target.""" + if np.any(np.isinf(self.old_distance + self.new_distance)): + return 0.0 return self.old_distance - self.new_distance + @property def target_reached(self): """target_reached.""" if not self.new_distance < self.goal_reach_distance: @@ -190,10 +204,12 @@ def advance_targets(self): rgbaColor=(0, 1 - (i / len(self.target_visual)), 0, 1), ) + @property def num_targets_reached(self): """num_targets_reached.""" return self.num_targets - len(self.targets) + @property def all_targets_reached(self): """all_targets_reached.""" return len(self.targets) == 0 diff --git a/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_base_env.py b/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_base_env.py index f6ae36dc..b11838dd 100644 --- a/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_base_env.py +++ b/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_base_env.py @@ -134,7 +134,7 @@ def __init__( def observation_space(self, agent: Any = None) -> Space: """observation_space. - Returns + Returns: ------- Space: @@ -144,7 +144,7 @@ def observation_space(self, agent: Any = None) -> Space: def action_space(self, agent: Any = None) -> spaces.Box: """action_space. - Returns + Returns: ------- spaces.Box: diff --git a/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_dogfight_env.py b/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_dogfight_env.py index 1425e216..348a832f 100644 --- a/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_dogfight_env.py +++ b/PyFlyt/pz_envs/fixedwing_envs/ma_fixedwing_dogfight_env.py @@ -178,7 +178,7 @@ def reset( def _compute_agent_states(self) -> None: """_compute_agent_states. - Returns + Returns: ------- None: diff --git a/docs/_sources/documentation/gym_envs/quadx_pole_balance_env.md.txt b/docs/_sources/documentation/gym_envs/quadx_pole_balance_env.md.txt index 018067b2..be13772a 100644 --- a/docs/_sources/documentation/gym_envs/quadx_pole_balance_env.md.txt +++ b/docs/_sources/documentation/gym_envs/quadx_pole_balance_env.md.txt @@ -1,6 +1,6 @@ # `PyFlyt/QuadX-Pole-Balance-v2` -```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/pole_balance.gif +```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_pole_balance.gif :width: 50% ``` diff --git a/docs/_sources/documentation/gym_envs/quadx_pole_waypoints_env.md.txt b/docs/_sources/documentation/gym_envs/quadx_pole_waypoints_env.md.txt index a318794d..aa196539 100644 --- a/docs/_sources/documentation/gym_envs/quadx_pole_waypoints_env.md.txt +++ b/docs/_sources/documentation/gym_envs/quadx_pole_waypoints_env.md.txt @@ -1,6 +1,6 @@ # `PyFlyt/QuadX-Pole-Waypoints-v2` -```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_waypoint.gif +```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_pole_waypoint.gif :width: 50% ``` diff --git a/docs/documentation/core/abstractions/boosters.html b/docs/documentation/core/abstractions/boosters.html index fa803fbe..30776569 100644 --- a/docs/documentation/core/abstractions/boosters.html +++ b/docs/documentation/core/abstractions/boosters.html @@ -452,14 +452,12 @@

Args:# -
-
Returns:
-

np.ndarray

-
-
Return type:
-

A (3 * num_boosters, ) array

-
-
+
+

Returns:#

+
+

np.ndarray: A (3 * num_boosters, ) array

+
+
diff --git a/docs/documentation/core/abstractions/camera.html b/docs/documentation/core/abstractions/camera.html index b7396fae..fcb0b78c 100644 --- a/docs/documentation/core/abstractions/camera.html +++ b/docs/documentation/core/abstractions/camera.html @@ -428,14 +428,12 @@

Args:# capture_image() tuple[ndarray, ndarray, ndarray]#

Captures the 3 relevant images from the camera.

-
-
Returns:
-

tuple[np.ndarray, np.ndarray, np.ndarray]

-
-
Return type:
-

rgbaImg, depthImg, segImg

-
-
+
+

Returns:#

+
+

tuple[np.ndarray, np.ndarray, np.ndarray]: rgbaImg, depthImg, segImg

+
+

@@ -460,14 +458,12 @@

Args:# property view_mat: ndarray#

Generates the view matrix for the camera depending on the current orientation and implicit parameters.

-
-
Returns:
-

np.ndarray

-
-
Return type:
-

view matrix.

-
-
+
+

Returns:#

+
+

np.ndarray: view matrix.

+
+

diff --git a/docs/documentation/core/abstractions/gimbals.html b/docs/documentation/core/abstractions/gimbals.html index d8e2481f..86de1c6f 100644 --- a/docs/documentation/core/abstractions/gimbals.html +++ b/docs/documentation/core/abstractions/gimbals.html @@ -441,14 +441,12 @@

Returns:#
get_states() ndarray#

Gets the current state of the components.

-
-
Returns:
-

np.ndarray

-
-
Return type:
-

a (2 * num_gimbals, ) array where every pair of values represents the current state of the gimbal

-
-
+
+

Returns:#

+
+

np.ndarray: a (2 * num_gimbals, ) array where every pair of values represents the current state of the gimbal

+
+
diff --git a/docs/documentation/core/abstractions/lifting_surfaces.html b/docs/documentation/core/abstractions/lifting_surfaces.html index fdbb0449..6ce6d786 100644 --- a/docs/documentation/core/abstractions/lifting_surfaces.html +++ b/docs/documentation/core/abstractions/lifting_surfaces.html @@ -432,14 +432,12 @@

Args:# get_states() float#

Gets the current state of the components.

-
-
Returns:
-

float

-
-
Return type:
-

the level of deflection of the surface.

-
-
+
+

Returns:#

+
+

float: the level of deflection of the surface.

+
+

@@ -452,8 +450,8 @@

Args:#

cmd (float): normalized actuation in [-1, 1].

-
-

Returns:#

+
+

Returns:#

tuple[np.ndarray, np.ndarray]: vec3 force, vec3 torque

@@ -470,8 +468,8 @@

Returns:#
state_update(surface_velocity: ndarray)#

Updates the local surface velocity of the lifting surface.

-
-

Args:#

+
+

Args:#

surface_velocity (np.ndarray): surface_velocity.

@@ -496,14 +494,12 @@

Args:# get_states() ndarray#

Gets the current state of the components.

-
-
Returns:
-

np.ndarray

-
-
Return type:
-

a (num_surfaces, ) array representing the actuation state for each surface

-
-
+
+

Returns:#

+
+

np.ndarray: a (num_surfaces, ) array representing the actuation state for each surface

+
+

diff --git a/docs/documentation/core/abstractions/motors.html b/docs/documentation/core/abstractions/motors.html index fa82f5fb..de9186e7 100644 --- a/docs/documentation/core/abstractions/motors.html +++ b/docs/documentation/core/abstractions/motors.html @@ -437,14 +437,12 @@

Args:# get_states() ndarray#

Gets the current state of the components.

-
-
Returns:
-

np.ndarray

-
-
Return type:
-

an (num_motors, ) array for the current throttle level of each motor

-
-
+
+

Returns:#

+
+

np.ndarray: an (num_motors, ) array for the current throttle level of each motor

+
+

diff --git a/docs/documentation/core/aviary.html b/docs/documentation/core/aviary.html index 030941da..7202c60d 100644 --- a/docs/documentation/core/aviary.html +++ b/docs/documentation/core/aviary.html @@ -626,14 +626,12 @@

Attributes -
Returns:
-

np.ndarray

-
-
Return type:
-

list of states

-
-

+
+

Returns:#

+
+

np.ndarray: list of states

+
+
@@ -642,14 +640,12 @@

Attributes -
Returns:
-

np.ndarray

-
-
Return type:
-

list of auxiliary states

-
-

+
+

Returns:#

+
+

np.ndarray: list of auxiliary states

+
+
diff --git a/docs/documentation/core/drones/quadx.html b/docs/documentation/core/drones/quadx.html index ad5d6f63..ca7d5848 100644 --- a/docs/documentation/core/drones/quadx.html +++ b/docs/documentation/core/drones/quadx.html @@ -418,7 +418,7 @@

Control Modes#

-class PyFlyt.core.drones.QuadX(p: BulletClient, start_pos: ndarray, start_orn: ndarray, control_hz: int = 120, physics_hz: int = 240, drone_model: str = 'cf2x', model_dir: None | str = None, np_random: None | RandomState = None, use_camera: bool = False, use_gimbal: bool = False, camera_angle_degrees: int = 20, camera_FOV_degrees: int = 90, camera_resolution: tuple[int, int] = (128, 128), camera_fps: None | int = None)#
+class PyFlyt.core.drones.QuadX(p: BulletClient, start_pos: ndarray, start_orn: ndarray, control_hz: int = 120, physics_hz: int = 240, drone_model: str = 'cf2x', model_dir: None | str = None, np_random: None | RandomState = None, use_camera: bool = False, use_gimbal: bool = False, camera_angle_degrees: int = 20, camera_FOV_degrees: int = 90, camera_position_offset: ndarray = array([0., 0., 0.]), camera_resolution: tuple[int, int] = (128, 128), camera_fps: None | int = None)#

QuadX instance that handles everything about a quadrotor in the X configuration.

diff --git a/docs/documentation/gym_envs/quadx_pole_balance_env.html b/docs/documentation/gym_envs/quadx_pole_balance_env.html index d929a310..5a239af1 100644 --- a/docs/documentation/gym_envs/quadx_pole_balance_env.html +++ b/docs/documentation/gym_envs/quadx_pole_balance_env.html @@ -389,7 +389,7 @@

PyFlyt/QuadX-Pole-Balance-v2#

-https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/pole_balance.gif +https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_pole_balance.gif
@@ -414,9 +414,9 @@

Usage#<

Environment Options#

-class PyFlyt.gym_envs.quadx_envs.quadx_pole_balance_env.QuadXPoleBalanceEnv(sparse_reward: bool = False, flight_mode: int = 0, flight_dome_size: float = 3.0, max_duration_seconds: float = 20.0, angle_representation: Literal['euler', 'quaternion'] = 'quaternion', agent_hz: int = 40, render_mode: None | Literal['human', 'rgb_array'] = None, render_resolution: tuple[int, int] = (480, 480))#
+class PyFlyt.gym_envs.quadx_envs.quadx_pole_balance_env.QuadXPoleBalanceEnv(sparse_reward: bool = False, flight_mode: int = -1, flight_dome_size: float = 3.0, max_duration_seconds: float = 20.0, angle_representation: Literal['euler', 'quaternion'] = 'quaternion', agent_hz: int = 40, render_mode: None | Literal['human', 'rgb_array'] = None, render_resolution: tuple[int, int] = (480, 480))#

Simple Hover Environment with the additional goal of keeping a pole upright.

-

Actions are vp, vq, vr, T, ie: angular rates and thrust. +

Actions are direct motor PWM commands because any underlying controller introduces too much control latency. The target is to not crash and not let the pole hit the ground for the longest time possible.

Args:#

diff --git a/docs/documentation/gym_envs/quadx_pole_waypoints_env.html b/docs/documentation/gym_envs/quadx_pole_waypoints_env.html index bd13cf40..6924eeca 100644 --- a/docs/documentation/gym_envs/quadx_pole_waypoints_env.html +++ b/docs/documentation/gym_envs/quadx_pole_waypoints_env.html @@ -389,7 +389,7 @@

PyFlyt/QuadX-Pole-Waypoints-v2#

-https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_waypoint.gif +https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_pole_waypoint.gif
@@ -434,9 +434,9 @@

Flattening the Environment#

-class PyFlyt.gym_envs.quadx_envs.quadx_pole_waypoints_env.QuadXPoleWaypointsEnv(sparse_reward: bool = False, num_targets: int = 4, goal_reach_distance: float = 0.2, flight_mode: int = 0, flight_dome_size: float = 10.0, max_duration_seconds: float = 60.0, angle_representation: Literal['euler', 'quaternion'] = 'quaternion', agent_hz: int = 30, render_mode: None | Literal['human', 'rgb_array'] = None, render_resolution: tuple[int, int] = (480, 480))#
+class PyFlyt.gym_envs.quadx_envs.quadx_pole_waypoints_env.QuadXPoleWaypointsEnv(sparse_reward: bool = False, num_targets: int = 4, goal_reach_distance: float = 0.2, flight_mode: int = -1, flight_dome_size: float = 10.0, max_duration_seconds: float = 20.0, angle_representation: Literal['euler', 'quaternion'] = 'quaternion', agent_hz: int = 40, render_mode: None | Literal['human', 'rgb_array'] = None, render_resolution: tuple[int, int] = (480, 480))#

QuadX Pole Waypoints Environment.

-

Actions are vp, vq, vr, T, ie: angular rates and thrust. +

Actions are direct motor PWM commands because any underlying controller introduces too much control latency. The target is to get to a set of [x, y, z] waypoints in space without dropping the pole.

Args:#

diff --git a/docs/searchindex.js b/docs/searchindex.js index 4e9a31e4..c798ee14 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Abstractions": [[2, "abstractions"]], "Accessing Individual Drones": [[10, "accessing-individual-drones"]], "Args:": [[3, "args"], [3, "args"], [4, "args"], [4, "id1"], [4, "id2"], [5, "args"], [5, "id1"], [6, "args"], [7, "args"], [7, "id1"], [8, "args"], [8, "id1"], [8, "id2"], [8, "args"], [8, "id1"], [8, "id2"], [9, "args"], [9, "id1"], [10, "args"], [10, "args"], [10, "id1"], [10, "id2"], [10, "id4"], [10, "id5"], [10, "id6"], [10, "id7"], [12, "args"], [12, "id1"], [12, "id2"], [13, "args"], [13, "id1"], [13, "id2"], [13, "id3"], [14, "args"], [14, "id1"], [14, "id2"], [17, "args"], [18, "args"], [19, "args"], [20, "args"], [21, "args"], [22, "args"], [24, "args"], [25, "args"]], "Attributes": [[10, "attributes"]], "Aviary": [[10, "aviary"]], "Axis Conventions": [[1, "axis-conventions"]], "Base Drone Class": [[3, "base-drone-class"]], "Boosters": [[4, "boosters"]], "Boring Bodies": [[5, "boring-bodies"]], "Camera": [[6, "camera"]], "Citation": [[27, "citation"]], "Class Description": [[3, "class-description"], [4, "class-description"], [5, "class-description"], [6, "class-description"], [7, "class-description"], [8, "class-description"], [9, "class-description"], [10, "class-description"], [12, "class-description"], [13, "class-description"], [14, "class-description"]], "Control Mode": [[12, "control-mode"], [14, "control-mode"]], "Control Modes": [[13, "control-modes"]], "Controlling Drone Types": [[10, "controlling-drone-types"]], "Core": [[1, "core"]], "Core API": [[1, "core-api"]], "Core API Example": [[10, "core-api-example"]], "Default Attributes": [[3, "default-attributes"], [15, "default-attributes"]], "Default Methods": [[3, "default-methods"]], "Description": [[2, "description"], [4, "description"], [5, "description"], [6, "description"], [7, "description"], [8, "description"], [9, "description"], [10, "description"], [26, "description"]], "Documentation": [[0, "documentation"]], "Drones": [[11, "drones"]], "Environment Options": [[17, "environment-options"], [18, "environment-options"], [19, "environment-options"], [20, "environment-options"], [21, "environment-options"], [22, "environment-options"], [24, "environment-options"], [25, "environment-options"]], "Environment Rules": [[24, "environment-rules"]], "Fixedwing": [[12, "fixedwing"]], "Flattening the Environment": [[17, "flattening-the-environment"], [20, "flattening-the-environment"], [21, "flattening-the-environment"]], "General Architecture": [[1, "general-architecture"]], "Gimbals": [[7, "gimbals"]], "Gymnasium Environments": [[0, "gymnasium-environments"], [16, "gymnasium-environments"]], "I want to do more!": [[0, "i-want-to-do-more"]], "Installation": [[0, "installation"]], "Lifting Surfaces": [[8, "lifting-surfaces"]], "Linux and MacOS": [[0, "linux-and-macos"]], "Looprates": [[10, "looprates"]], "MAFixedwingDogfightEnv": [[24, "mafixedwingdogfightenv"]], "MAQuadXHoverEnv": [[25, "maquadxhoverenv"]], "Mathematical Model": [[8, "mathematical-model"]], "Methods": [[10, "methods"]], "Model Description": [[12, "model-description"], [13, "model-description"], [14, "model-description"]], "More Complex Custom Wind Modelling": [[15, "more-complex-custom-wind-modelling"]], "Motors": [[9, "motors"]], "Multi Drone Physics Stepping": [[10, "multi-drone-physics-stepping"]], "Multi Drone Setup": [[10, "multi-drone-setup"]], "Optional Attributes": [[3, "optional-attributes"]], "Optional Methods": [[3, "optional-methods"]], "Overview": [[11, "overview"], [15, "overview"]], "Paper Publication": [[27, "paper-publication"]], "PettingZoo Environments": [[0, "pettingzoo-environments"], [23, "pettingzoo-environments"]], "Preimplemented Wind Models": [[15, "preimplemented-wind-models"]], "Preprint": [[27, "preprint"]], "PyFlyt - UAV Simulation Environments for Reinforcement Learning Research": [[26, "pyflyt-uav-simulation-environments-for-reinforcement-learning-research"]], "PyFlyt/Fixedwing-Waypoints-v2": [[17, "pyflyt-fixedwing-waypoints-v2"]], "PyFlyt/QuadX-Hover-v2": [[18, "pyflyt-quadx-hover-v2"]], "PyFlyt/QuadX-Pole-Balance-v2": [[19, "pyflyt-quadx-pole-balance-v2"]], "PyFlyt/QuadX-Pole-Waypoints-v2": [[20, "pyflyt-quadx-pole-waypoints-v2"]], "PyFlyt/QuadX-Waypoints-v2": [[21, "pyflyt-quadx-waypoints-v2"]], "PyFlyt/Rocket-Landing-v2": [[22, "pyflyt-rocket-landing-v2"]], "QuadX": [[13, "quadx"]], "Required Attributes": [[3, "required-attributes"]], "Required Methods": [[3, "required-methods"], [15, "required-methods"]], "Returns:": [[7, "returns"], [8, "returns"], [10, "returns"], [10, "id3"]], "Rocket": [[14, "rocket"]], "Setting Drone Options": [[10, "setting-drone-options"]], "Simple Custom Wind Modelling": [[15, "simple-custom-wind-modelling"]], "Single Drone Physics Stepping": [[10, "single-drone-physics-stepping"]], "Spawning Custom Drones": [[10, "spawning-custom-drones"]], "Task Description": [[17, "task-description"], [18, "task-description"], [19, "task-description"], [20, "task-description"], [21, "task-description"], [22, "task-description"], [24, "task-description"], [25, "task-description"]], "Tutorials": [[28, "tutorials"]], "Usage": [[2, "usage"], [10, "usage"], [17, "usage"], [18, "usage"], [19, "usage"], [20, "usage"], [21, "usage"], [22, "usage"], [24, "usage"], [25, "usage"]], "Variants": [[13, "variants"]], "Wind": [[15, "wind"]], "Windows": [[0, "windows"]]}, "docnames": ["documentation", "documentation/core", "documentation/core/abstractions", "documentation/core/abstractions/base_drone", "documentation/core/abstractions/boosters", "documentation/core/abstractions/boring_bodies", "documentation/core/abstractions/camera", "documentation/core/abstractions/gimbals", "documentation/core/abstractions/lifting_surfaces", "documentation/core/abstractions/motors", "documentation/core/aviary", "documentation/core/drones", "documentation/core/drones/fixedwing", "documentation/core/drones/quadx", "documentation/core/drones/rocket", "documentation/core/wind", "documentation/gym_envs", "documentation/gym_envs/fixedwing_waypoints_env", "documentation/gym_envs/quadx_hover_env", "documentation/gym_envs/quadx_pole_balance_env", "documentation/gym_envs/quadx_pole_waypoints_env", "documentation/gym_envs/quadx_waypoints_env", "documentation/gym_envs/rocket_landing_env", "documentation/pz_envs", "documentation/pz_envs/ma_fixedwing_dogfight_env", "documentation/pz_envs/ma_quadx_hover_env", "index", "paper", "tutorials"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["documentation.md", "documentation/core.md", "documentation/core/abstractions.md", "documentation/core/abstractions/base_drone.md", "documentation/core/abstractions/boosters.md", "documentation/core/abstractions/boring_bodies.md", "documentation/core/abstractions/camera.md", "documentation/core/abstractions/gimbals.md", "documentation/core/abstractions/lifting_surfaces.md", "documentation/core/abstractions/motors.md", "documentation/core/aviary.md", "documentation/core/drones.md", "documentation/core/drones/fixedwing.md", "documentation/core/drones/quadx.md", "documentation/core/drones/rocket.md", "documentation/core/wind.md", "documentation/gym_envs.md", "documentation/gym_envs/fixedwing_waypoints_env.md", "documentation/gym_envs/quadx_hover_env.md", "documentation/gym_envs/quadx_pole_balance_env.md", "documentation/gym_envs/quadx_pole_waypoints_env.md", "documentation/gym_envs/quadx_waypoints_env.md", "documentation/gym_envs/rocket_landing_env.md", "documentation/pz_envs.md", "documentation/pz_envs/ma_fixedwing_dogfight_env.md", "documentation/pz_envs/ma_quadx_hover_env.md", "index.md", "paper.md", "tutorials.md"], "indexentries": {"__call__() (in module pyflyt.core.abstractions.droneclass)": [[15, "PyFlyt.core.abstractions.DroneClass.__call__", false]], "__init__() (in module pyflyt.core.abstractions.windfieldclass)": [[15, "PyFlyt.core.abstractions.WindFieldClass.__init__", false]], "all_aux_states (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.all_aux_states", false]], "all_states (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.all_states", false]], "aux_state (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.aux_state", false]], "aux_state() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.aux_state", false]], "aviary (class in pyflyt.core)": [[10, "PyFlyt.core.Aviary", false]], "aviary_steps (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.aviary_steps", false]], "boosters (class in pyflyt.core.abstractions)": [[4, "PyFlyt.core.abstractions.Boosters", false]], "boringbodies (class in pyflyt.core.abstractions)": [[5, "PyFlyt.core.abstractions.BoringBodies", false]], "camera (class in pyflyt.core.abstractions)": [[6, "PyFlyt.core.abstractions.Camera", false]], "capture_image() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.capture_image", false]], "compute_rotation() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.compute_rotation", false]], "contact_array (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.contact_array", false]], "control_period (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.control_period", false]], "depthimg (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.depthImg", false]], "disable_artificial_damping() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.disable_artificial_damping", false]], "drone_path (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.drone_path", false]], "droneclass (class in pyflyt.core.abstractions)": [[3, "PyFlyt.core.abstractions.DroneClass", false]], "drones (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.drones", false]], "elapsed_ime (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.elapsed_ime", false]], "fixedwing (class in pyflyt.core.drones)": [[12, "PyFlyt.core.drones.Fixedwing", false]], "fixedwingwaypointsenv (class in pyflyt.gym_envs.fixedwing_envs.fixedwing_waypoints_env)": [[17, "PyFlyt.gym_envs.fixedwing_envs.fixedwing_waypoints_env.FixedwingWaypointsEnv", false]], "get_joint_info() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.get_joint_info", false]], "get_states() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.get_states", false]], "get_states() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.get_states", false]], "get_states() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.get_states", false]], "get_states() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.get_states", false]], "get_states() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.get_states", false]], "get_states() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.get_states", false]], "get_states() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.get_states", false]], "gimbals (class in pyflyt.core.abstractions)": [[7, "PyFlyt.core.abstractions.Gimbals", false]], "id (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.Id", false]], "instanced_controllers (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.instanced_controllers", false]], "liftingsurface (class in pyflyt.core.abstractions)": [[8, "PyFlyt.core.abstractions.LiftingSurface", false]], "liftingsurfaces (class in pyflyt.core.abstractions)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces", false]], "mafixedwingdogfightenv (class in pyflyt.pz_envs.fixedwing_envs.ma_fixedwing_dogfight_env)": [[24, "PyFlyt.pz_envs.fixedwing_envs.ma_fixedwing_dogfight_env.MAFixedwingDogfightEnv", false]], "maquadxhoverenv (class in pyflyt.pz_envs.quadx_envs.ma_quadx_hover_env)": [[25, "PyFlyt.pz_envs.quadx_envs.ma_quadx_hover_env.MAQuadXHoverEnv", false]], "motors (class in pyflyt.core.abstractions.motors)": [[9, "PyFlyt.core.abstractions.motors.Motors", false]], "np_random (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.np_random", false]], "np_random (pyflyt.core.abstractions.windfieldclass property)": [[15, "PyFlyt.core.abstractions.WindFieldClass.np_random", false]], "param_path (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.param_path", false]], "physics_period (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.physics_period", false]], "physics_steps (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.physics_steps", false]], "physics_update() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.physics_update", false]], "physics_update() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.physics_update", false]], "physics_update() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.physics_update", false]], "physics_update() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.physics_update", false]], "physics_update() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.physics_update", false]], "physics_update() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.physics_update", false]], "physics_update() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.physics_update", false]], "print_all_bodies() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.print_all_bodies", false]], "quadx (class in pyflyt.core.drones)": [[13, "PyFlyt.core.drones.QuadX", false]], "quadxhoverenv (class in pyflyt.gym_envs.quadx_envs.quadx_hover_env)": [[18, "PyFlyt.gym_envs.quadx_envs.quadx_hover_env.QuadXHoverEnv", false]], "quadxpolebalanceenv (class in pyflyt.gym_envs.quadx_envs.quadx_pole_balance_env)": [[19, "PyFlyt.gym_envs.quadx_envs.quadx_pole_balance_env.QuadXPoleBalanceEnv", false]], "quadxpolewaypointsenv (class in pyflyt.gym_envs.quadx_envs.quadx_pole_waypoints_env)": [[20, "PyFlyt.gym_envs.quadx_envs.quadx_pole_waypoints_env.QuadXPoleWaypointsEnv", false]], "quadxwaypointsenv (class in pyflyt.gym_envs.quadx_envs.quadx_waypoints_env)": [[21, "PyFlyt.gym_envs.quadx_envs.quadx_waypoints_env.QuadXWaypointsEnv", false]], "register_all_new_bodies() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.register_all_new_bodies", false]], "register_controller() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.register_controller", false]], "register_controller() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.register_controller", false]], "registered_base_controllers (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.registered_base_controllers", false]], "registered_controllers (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.registered_controllers", false]], "reset() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.reset", false]], "reset() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.reset", false]], "reset() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.reset", false]], "reset() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.reset", false]], "reset() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.reset", false]], "reset() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.reset", false]], "reset() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.reset", false]], "reset() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.reset", false]], "reset() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.reset", false]], "reset() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.reset", false]], "reset() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.reset", false]], "rgbaimg (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.rgbaImg", false]], "rocket (class in pyflyt.core.drones)": [[14, "PyFlyt.core.drones.Rocket", false]], "rocketlandingenv (class in pyflyt.gym_envs.rocket_envs.rocket_landing_env)": [[22, "PyFlyt.gym_envs.rocket_envs.rocket_landing_env.RocketLandingEnv", false]], "segimg (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.segImg", false]], "set_all_setpoints() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_all_setpoints", false]], "set_armed() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_armed", false]], "set_mode() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.set_mode", false]], "set_mode() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_mode", false]], "set_mode() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.set_mode", false]], "set_mode() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.set_mode", false]], "set_mode() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.set_mode", false]], "set_setpoint() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_setpoint", false]], "setpoint (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.setpoint", false]], "starting_fuel_ratio (pyflyt.core.drones.rocket attribute)": [[14, "PyFlyt.core.drones.Rocket.starting_fuel_ratio", false]], "starting_velocity (pyflyt.core.drones.fixedwing attribute)": [[12, "PyFlyt.core.drones.Fixedwing.starting_velocity", false]], "state (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.state", false]], "state() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.state", false]], "state_update() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.state_update", false]], "state_update() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.state_update", false]], "state_update() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.state_update", false]], "state_update() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.state_update", false]], "state_update() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.state_update", false]], "state_update() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.state_update", false]], "state_update() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.state_update", false]], "step() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.step", false]], "update_control() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_control", false]], "update_control() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_control", false]], "update_control() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_control", false]], "update_control() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_control", false]], "update_last() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_last", false]], "update_last() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_last", false]], "update_last() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_last", false]], "update_last() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_last", false]], "update_physics() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_physics", false]], "update_physics() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_physics", false]], "update_physics() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_physics", false]], "update_physics() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_physics", false]], "update_state() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_state", false]], "update_state() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_state", false]], "update_state() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_state", false]], "update_state() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_state", false]], "view_mat (pyflyt.core.abstractions.camera property)": [[6, "PyFlyt.core.abstractions.Camera.view_mat", false]], "windfieldclass (class in pyflyt.core.abstractions)": [[15, "PyFlyt.core.abstractions.WindFieldClass", false]]}, "objects": {"PyFlyt.core": [[10, 0, 1, "", "Aviary"]], "PyFlyt.core.Aviary": [[10, 1, 1, "", "all_aux_states"], [10, 1, 1, "", "all_states"], [10, 2, 1, "", "aux_state"], [10, 1, 1, "", "aviary_steps"], [10, 1, 1, "", "contact_array"], [10, 1, 1, "", "drones"], [10, 1, 1, "", "elapsed_ime"], [10, 1, 1, "", "physics_steps"], [10, 2, 1, "", "print_all_bodies"], [10, 2, 1, "", "register_all_new_bodies"], [10, 2, 1, "", "reset"], [10, 2, 1, "", "set_all_setpoints"], [10, 2, 1, "", "set_armed"], [10, 2, 1, "", "set_mode"], [10, 2, 1, "", "set_setpoint"], [10, 2, 1, "", "state"], [10, 2, 1, "", "step"]], "PyFlyt.core.abstractions": [[4, 0, 1, "", "Boosters"], [5, 0, 1, "", "BoringBodies"], [6, 0, 1, "", "Camera"], [3, 0, 1, "", "DroneClass"], [7, 0, 1, "", "Gimbals"], [8, 0, 1, "", "LiftingSurface"], [8, 0, 1, "", "LiftingSurfaces"], [15, 0, 1, "", "WindFieldClass"]], "PyFlyt.core.abstractions.Boosters": [[4, 3, 1, "", "get_states"], [4, 3, 1, "", "physics_update"], [4, 3, 1, "", "reset"], [4, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.BoringBodies": [[5, 3, 1, "", "get_states"], [5, 3, 1, "", "physics_update"], [5, 3, 1, "", "reset"], [5, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.Camera": [[6, 3, 1, "", "capture_image"], [6, 3, 1, "", "get_states"], [6, 3, 1, "", "physics_update"], [6, 3, 1, "", "state_update"], [6, 1, 1, "", "view_mat"]], "PyFlyt.core.abstractions.DroneClass": [[3, 1, 1, "", "Id"], [15, 2, 1, "", "__call__"], [3, 1, 1, "", "aux_state"], [3, 1, 1, "", "control_period"], [3, 1, 1, "", "depthImg"], [3, 2, 1, "", "disable_artificial_damping"], [3, 1, 1, "", "drone_path"], [3, 2, 1, "", "get_joint_info"], [3, 1, 1, "", "instanced_controllers"], [3, 1, 1, "", "np_random"], [3, 1, 1, "", "param_path"], [3, 1, 1, "", "physics_period"], [3, 2, 1, "", "register_controller"], [3, 1, 1, "", "registered_base_controllers"], [3, 1, 1, "", "registered_controllers"], [3, 2, 1, "", "reset"], [3, 1, 1, "", "rgbaImg"], [3, 1, 1, "", "segImg"], [3, 2, 1, "", "set_mode"], [3, 1, 1, "", "setpoint"], [3, 1, 1, "", "state"], [3, 2, 1, "", "update_control"], [3, 2, 1, "", "update_last"], [3, 2, 1, "", "update_physics"], [3, 2, 1, "", "update_state"]], "PyFlyt.core.abstractions.Gimbals": [[7, 3, 1, "", "compute_rotation"], [7, 3, 1, "", "get_states"], [7, 3, 1, "", "physics_update"], [7, 3, 1, "", "reset"], [7, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.LiftingSurface": [[8, 3, 1, "", "get_states"], [8, 3, 1, "", "physics_update"], [8, 3, 1, "", "reset"], [8, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.LiftingSurfaces": [[8, 3, 1, "", "get_states"], [8, 3, 1, "", "physics_update"], [8, 3, 1, "", "reset"], [8, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.WindFieldClass": [[15, 2, 1, "", "__init__"], [15, 1, 1, "", "np_random"]], "PyFlyt.core.abstractions.motors": [[9, 0, 1, "", "Motors"]], "PyFlyt.core.abstractions.motors.Motors": [[9, 3, 1, "", "get_states"], [9, 3, 1, "", "physics_update"], [9, 3, 1, "", "reset"], [9, 3, 1, "", "state_update"]], "PyFlyt.core.drones": [[12, 0, 1, "", "Fixedwing"], [13, 0, 1, "", "QuadX"], [14, 0, 1, "", "Rocket"]], "PyFlyt.core.drones.Fixedwing": [[12, 3, 1, "", "reset"], [12, 3, 1, "", "set_mode"], [12, 4, 1, "", "starting_velocity"], [12, 3, 1, "", "update_control"], [12, 3, 1, "", "update_last"], [12, 3, 1, "", "update_physics"], [12, 3, 1, "", "update_state"]], "PyFlyt.core.drones.QuadX": [[13, 3, 1, "", "register_controller"], [13, 3, 1, "", "reset"], [13, 3, 1, "", "set_mode"], [13, 3, 1, "", "update_control"], [13, 3, 1, "", "update_last"], [13, 3, 1, "", "update_physics"], [13, 3, 1, "", "update_state"]], "PyFlyt.core.drones.Rocket": [[14, 3, 1, "", "reset"], [14, 3, 1, "", "set_mode"], [14, 4, 1, "", "starting_fuel_ratio"], [14, 3, 1, "", "update_control"], [14, 3, 1, "", "update_last"], [14, 3, 1, "", "update_physics"], [14, 3, 1, "", "update_state"]], "PyFlyt.gym_envs.fixedwing_envs.fixedwing_waypoints_env": [[17, 0, 1, "", "FixedwingWaypointsEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_hover_env": [[18, 0, 1, "", "QuadXHoverEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_pole_balance_env": [[19, 0, 1, "", "QuadXPoleBalanceEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_pole_waypoints_env": [[20, 0, 1, "", "QuadXPoleWaypointsEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_waypoints_env": [[21, 0, 1, "", "QuadXWaypointsEnv"]], "PyFlyt.gym_envs.rocket_envs.rocket_landing_env": [[22, 0, 1, "", "RocketLandingEnv"]], "PyFlyt.pz_envs.fixedwing_envs.ma_fixedwing_dogfight_env": [[24, 0, 1, "", "MAFixedwingDogfightEnv"]], "PyFlyt.pz_envs.quadx_envs.ma_quadx_hover_env": [[25, 0, 1, "", "MAQuadXHoverEnv"]]}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "property", "Python property"], "2": ["py", "function", "Python function"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:class", "1": "py:property", "2": "py:function", "3": "py:method", "4": "py:attribute"}, "terms": {"": [3, 4, 6, 9, 10, 13, 23], "0": [1, 3, 4, 6, 8, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "01305": 27, "02": 24, "05": 14, "1": [1, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 19, 20, 21, 22, 24, 25], "10": [18, 20, 21, 25], "100": 17, "1000": [1, 10, 15], "10th": 14, "120": [3, 10, 12, 13, 14, 15, 17], "128": [3, 12, 13, 14], "15": 24, "150": 24, "2": [1, 3, 5, 7, 10, 12, 13, 14, 15, 17, 20, 21], "20": [12, 13, 19], "200": 22, "2023": 27, "20xx": 0, "225": 5, "2304": 27, "240": [3, 10, 12, 13, 14], "25": 10, "2d": 5, "3": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 25], "30": [10, 14, 17, 20, 21, 22, 24, 25], "4": [1, 10, 13, 17, 20, 21], "40": [10, 18, 19, 22, 25], "42": 23, "480": [17, 18, 19, 20, 21, 22], "5": [1, 10, 12, 13, 21], "50": 10, "500": 22, "6": [1, 10, 13], "60": [10, 20, 24], "65": 8, "7": [1, 10, 13, 14, 15], "8": [10, 15], "80": 0, "9": 14, "90": [3, 12, 13, 14], "A": [0, 3, 4, 5, 6, 7, 10, 27], "As": 5, "At": 1, "By": [3, 10], "For": [2, 10, 15, 23], "If": [0, 4, 17, 20, 21, 27], "In": [6, 10], "It": [0, 1, 2, 3, 4, 10, 13, 26], "NOT": 4, "OR": 8, "On": [1, 6], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "Then": [1, 15], "These": [10, 11], "To": [10, 15, 26], "_": [17, 18, 19, 20, 21, 22], "__call__": 15, "__file__": 3, "__init__": [3, 15], "_lowercase_": 10, "a0": 4, "a1": 4, "abil": 9, "abl": 10, "about": [7, 12, 13, 14], "abov": 1, "absolut": 22, "abstract": [1, 3, 4, 5, 6, 7, 8, 9, 15], "accept": [4, 9], "access": 3, "accord": 4, "accur": [3, 5], "achiev": 6, "acrow": 24, "act": [4, 9], "action": [17, 18, 19, 20, 21, 22, 23, 24, 25], "action_spac": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "actual": [4, 9], "actual_duty_cycl": [4, 9], "actuat": [3, 7, 8, 12, 24], "addit": [6, 19], "addition": [4, 9], "adjust": 6, "aerial": 24, "aerodynam": [3, 5, 8], "affect": 5, "after": 7, "agent": [17, 18, 19, 20, 21, 22, 23, 24, 25], "agent_hz": [17, 18, 19, 20, 21, 22, 24, 25], "agil": 8, "ai": 24, "aileron": 12, "air": 5, "aircraft": [6, 17, 20, 21, 24], "al": 8, "algorithm": [16, 23, 26], "all": [0, 1, 2, 3, 5, 7, 8, 9, 10, 23, 24, 25], "all_aux_st": 10, "all_param": 3, "all_stat": 10, "allow": [1, 2, 4, 9, 10, 17, 18, 19, 20, 21, 24, 25], "along": [9, 10], "alpha_0_bas": 8, "alpha_stall_n_bas": 8, "alpha_stall_p_bas": 8, "also": [4, 10], "altern": 0, "although": 10, "alwai": 4, "amalgam": 1, "amount": [4, 9, 10], "an": [1, 3, 4, 6, 8, 9, 10, 15, 24, 25], "ang_po": [3, 12, 13, 14], "ang_vel": [3, 12, 13, 14], "angl": [6, 8, 10, 21], "angle_represent": [17, 18, 19, 20, 21, 22, 25], "angular": [10, 13, 18, 19, 20, 21, 25], "ani": [3, 5, 10, 26], "anyth": [24, 26], "api": [23, 24], "append": 10, "appli": 5, "ar": [0, 1, 2, 3, 4, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "arbitrari": [4, 5, 7, 9], "ardupilot": 13, "area": [5, 17, 18, 19, 20, 21, 22, 24, 25], "arg": 15, "argument": [4, 9, 10, 17, 20, 21], "arm": 10, "around": [4, 7, 9], "arrai": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 25], "arrang": 10, "articl": 27, "artifici": 3, "arxiv": 27, "ascend": 10, "asid": 3, "assign": 3, "assisted_flight": 24, "assum": 5, "attach": [4, 6, 15], "attack": 8, "attribut": 1, "author": 27, "automat": [10, 24], "aux": 10, "aux_stat": [3, 10], "auxiliari": [3, 10], "avail": [0, 4, 13, 27], "aviari": [1, 3, 12, 13, 14, 15], "aviary_step": 10, "ax": [1, 5, 7], "axi": [3, 4, 7, 9, 14], "b": [1, 24], "b0": 4, "b1": 4, "backend": 3, "balanc": 20, "base": [1, 8, 24], "base_mod": [3, 13], "baselin": [17, 20, 21], "basic": [2, 15], "becom": 24, "been": 10, "befor": [3, 21, 24], "begin": 24, "behaviour": 3, "being": [17, 20, 21], "below": [13, 15], "between": [4, 7, 10], "big": 10, "bind": [3, 26], "biplan": 26, "bn": 4, "bodi": [1, 4, 6, 10], "body_id": 5, "bool": [3, 4, 6, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25], "boolean": [4, 10], "booster": [3, 7, 9, 10, 14, 22], "booster_id": 4, "boringbodi": 5, "bottom": 10, "bound": 24, "breakdown": 13, "briefli": 10, "bring": 0, "brusei": 27, "brushless": 9, "bug": 6, "build": 0, "built": [0, 1, 26], "bullet": 26, "bullet_cli": [3, 4, 5, 6, 7, 8, 9], "bulletcli": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "burn": 4, "c": [0, 24], "c0": 4, "c1": 4, "c_d": 5, "calcul": 4, "call": [2, 4, 6, 7, 9, 10, 13, 15], "callabl": 10, "camera": [3, 10], "camera_angle_degre": [3, 6, 12, 13, 14], "camera_fov_degre": [3, 6, 12, 13, 14], "camera_fp": [12, 13, 14], "camera_id": 6, "camera_position_offset": [6, 12, 14], "camera_resolut": [3, 6, 12, 13, 14], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26], "cannon": 24, "cannot": 4, "capabl": [1, 15], "captur": 6, "capture_imag": [3, 6], "cardin": 1, "cascad": 13, "case": 1, "caus": 5, "caveat": 10, "cd_0": 8, "cdot": 5, "ceil": 22, "center": 6, "cf2x": 13, "chang": [1, 4, 10, 13], "check": [3, 10], "chord": 8, "cinemat": 6, "cite": 27, "cl_alpha_2d": 8, "class": [1, 2, 11, 15, 17, 18, 19, 20, 21, 22, 24, 25], "click": 0, "client": [3, 4, 5, 6, 7, 8, 9], "close": [1, 10, 23, 24, 25], "cmd": [3, 8], "cn": 4, "code": 10, "coeffici": [5, 8, 9], "collis": 10, "command": [3, 4, 8, 9, 12, 17, 24], "command_id": 8, "command_sign": 8, "common": 10, "compat": [17, 20, 21], "complet": [17, 20, 21], "complic": 2, "compon": [1, 2, 3, 4, 5, 6, 7, 8, 9], "comprehens": [2, 3], "comput": [5, 9], "compute_rot": 7, "concaten": 3, "concis": [5, 9], "conda": 0, "condit": 8, "cone": 24, "configur": [2, 10, 13, 26], "consid": [3, 17, 20, 21, 24], "consist": 13, "constant": [4, 7, 8, 9, 17, 20, 21], "construct": [2, 3], "consult": 10, "contact": 10, "contact_arrai": 10, "contain": 10, "context_length": [17, 20, 21], "control": [1, 3, 11, 24], "control_hz": [3, 10, 12, 13, 14], "control_period": 3, "controlclass": [3, 13], "controller_constructor": [3, 13], "controller_id": [3, 13], "conveni": [4, 8, 9], "convert": [4, 8, 9], "core": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15], "correct": 8, "correspond": [10, 14], "counter": 9, "coupl": 0, "crash": [18, 19, 25], "creat": 3, "creativ": 10, "crucial": 4, "current": [4, 6, 7, 8, 9, 10, 12, 13, 14], "custom": [2, 3, 17, 20, 21, 26], "cycl": [4, 9], "damag": 24, "damage_per_hit": 24, "damp": 3, "datasheet": 14, "deal": 24, "debug": [3, 10], "def": [3, 15], "default": [10, 11, 13, 16, 23], "defin": [1, 3, 9, 10, 15], "deflect": [8, 10, 14], "deflection_limit": 8, "degre": [6, 7, 8], "denomin": 10, "densiti": 5, "depend": [3, 4, 5, 6, 9, 10, 15], "deplet": 4, "depth": 6, "depthimg": [3, 6], "describ": [1, 13, 14], "descript": 11, "design": 2, "desir": 1, "desktop": 0, "detail": 0, "develop": 0, "diagon": 4, "dict": [3, 10, 15, 17, 20, 21], "dictionari": 10, "differ": [4, 7, 10, 13, 16, 23], "difficult": 5, "direct": [1, 4, 5, 8], "directli": [12, 24], "directori": 3, "dirnam": 3, "disabl": 3, "disable_artificial_damp": 3, "disconnect": 15, "discret": 26, "displai": 3, "distanc": [6, 17, 20, 21, 22], "do": [3, 9, 10, 15], "document": [2, 3, 13, 26], "doe": [4, 5, 6, 7, 9, 10], "dogfight": 24, "domain": 1, "don": [1, 3], "down": 0, "download": 0, "downtilt": 6, "drag": [5, 8], "drag_coef": 5, "driven": 9, "drone": [1, 2, 4, 5, 6, 8, 9, 12, 13, 14, 18, 19, 26], "drone_index": 10, "drone_model": [3, 10, 12, 13, 14], "drone_opt": 10, "drone_path": 3, "drone_typ": [1, 10, 15], "drone_type_map": 10, "droneclass": [3, 10, 15], "drop": 20, "dtype": [3, 15], "duti": [4, 9], "dynam": [9, 13], "each": [1, 2, 3, 4, 5, 7, 8, 9, 10, 24, 25], "easier": [2, 17, 20, 21], "easili": 9, "east": 1, "effect": [6, 8, 21, 24], "elabor": 1, "elaps": 10, "elapsed_im": 10, "electr": 9, "element": [4, 10], "elsewher": 2, "enabl": 3, "encourag": 0, "end": [3, 12, 13, 14], "endpoint": 10, "enemi": 24, "engin": [4, 10, 26], "enough": [3, 10], "entiti": 10, "enu": 1, "env": [1, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "environ": [1, 6, 10, 15, 27], "equat": 5, "equival": 10, "essenti": 1, "et": 8, "eta": 8, "etc": 10, "euler": [3, 10, 17, 18, 19, 20, 21, 22, 25], "even": 10, "everi": [1, 7, 10], "everyth": [0, 12, 13, 14], "exact": [4, 9], "exampl": [0, 2, 3, 15], "except": 9, "exist": 5, "expand": 0, "experienc": [5, 10], "express": 3, "extent": 1, "extinguish": 4, "extract": 14, "f": 3, "f_i": 5, "factor": 8, "falcon": 14, "fall": [5, 22], "fals": [3, 6, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 24, 25], "familiar": 5, "fast": [17, 20, 21], "fastest": 23, "featur": 6, "field": [6, 10, 15], "figur": 5, "file": [3, 12, 14], "final": 1, "finlet": 14, "finlet_i": 22, "finlet_rol": 22, "finlet_x": 22, "fire": 24, "first": [0, 1, 7, 10, 14], "fix": [8, 12], "fixedw": [10, 11, 14], "fixedwing_env": [17, 24], "fixedwing_opt": 10, "fixedwing_waypoints_env": 17, "fixedwingwaypointsenv": 17, "flap": 8, "flap_to_chord": 8, "flatten": 2, "flattenwaypointenv": [17, 20, 21], "fledg": 0, "flexibl": [1, 26], "fli": 24, "flight": [1, 3, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 25], "flight_dome_s": [17, 18, 19, 20, 21, 24, 25], "flight_mod": [10, 17, 18, 19, 20, 21, 25], "float": [3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "floor": 10, "fluctuat": [4, 9], "fly": [17, 18, 19, 20, 21, 22, 24, 25], "focu": 6, "folder": 3, "follow": [1, 3, 5, 7, 15], "forc": [4, 5, 8, 9], "form": 3, "forward_unit": 8, "found": [2, 3], "four": 13, "fov": 6, "frac": 5, "frame": [1, 3, 4, 5, 10], "from": [1, 3, 4, 6, 7, 9, 10, 14, 15, 17, 20, 21, 23, 24, 25], "front": 1, "frontal": 5, "fuel": [4, 9, 10, 22], "fuel_burn": 4, "fueltank_id": 4, "full": [4, 8, 24], "fulli": 0, "function": [2, 3, 10, 15], "g": 1, "gener": [3, 4, 5, 6, 7, 8, 9], "geometri": 14, "get": [3, 4, 7, 8, 9, 10, 20, 26], "get_joint_info": 3, "get_stat": [2, 3, 4, 5, 6, 7, 8, 9], "getbasepositionandorient": 3, "getbaseveloc": 3, "geteulerfromquaternion": 3, "getmatrixfromquaternion": 3, "gimbal": [4, 6, 9, 14, 22], "gimbal_command": 7, "gimbal_range_degre": 7, "gimbal_tau": 7, "gimbal_unit_1": 7, "gimbal_unit_2": 7, "give": 10, "go": [0, 22], "goal": [17, 18, 19, 20, 21, 22, 25], "goal_reach_angl": 21, "goal_reach_dist": [17, 20, 21], "goe": 10, "gracefulli": [1, 10], "graviti": 1, "ground": [1, 5, 10, 13, 19], "gun": 24, "gym_env": [16, 17, 18, 19, 20, 21, 22], "gymnasium": [17, 18, 19, 20, 21, 22], "ha": [1, 3, 10, 14, 24], "hand": [7, 9], "handl": [1, 8, 10, 12, 13, 14], "handler": [8, 10], "happen": 3, "have": [1, 2, 3, 4, 9, 10, 15, 17, 20, 21], "health": 24, "height": [6, 15], "help": 0, "here": [0, 10, 27, 28], "high": 24, "highli": [0, 1], "hit": [19, 24], "hook": 15, "horizon": 6, "horizont": [1, 12, 22], "horri": 27, "hour": 0, "hover": [16, 19, 25], "how": [10, 16, 17, 20, 21, 23, 24], "howev": [17, 20, 21], "human": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "hz": 10, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "id": [3, 4, 5, 6, 7, 8, 9, 10], "idea": 5, "ie": [18, 19, 20, 21, 25], "ignit": [4, 14, 22], "illustr": 5, "imag": [6, 10], "immedi": [17, 20, 21], "implement": [2, 3, 4, 5, 13, 15], "implicit": 6, "import": [1, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "includ": [12, 13, 14, 17, 20, 21], "index": [1, 4, 10], "indic": 4, "individu": 5, "inertia": 4, "infin": 6, "info": [16, 23, 24, 25], "inform": [2, 3, 10], "inherit": 3, "initi": [3, 12, 13, 14, 15, 16, 23], "innocent": 27, "insert": [23, 24, 25], "inspir": 13, "instanc": [10, 12, 13, 14], "instanced_control": 3, "instanti": [1, 10], "instead": [6, 7, 10, 24], "int": [3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25], "integ": [3, 4, 6, 8, 9, 10], "interact": [17, 18, 19, 20, 21, 22, 24, 25], "interfac": 3, "interstag": 14, "invalid": 10, "invari": 15, "ipsum": 15, "is_tracking_camera": 6, "its": [1, 24], "itself": [1, 3, 5, 6, 13], "jame": 27, "jet": 27, "jim": 27, "joint": 3, "journal": 27, "jun": 27, "just": [0, 1], "keep": 19, "kei": [3, 10], "kg": [5, 12], "khan": 8, "kindli": 28, "king": 27, "kwarg": 15, "lab": 13, "last": 10, "later": 10, "latest": 0, "launch": 14, "law": 3, "lead": 10, "learn": [16, 17, 20, 21, 23, 24, 27], "left": [1, 12], "let": 19, "lethal": 24, "lethal_angle_radian": 24, "lethal_dist": 24, "level": [8, 9, 24], "li": 1, "librari": [17, 20, 21, 26], "lift": 2, "lifting_surfac": [3, 8], "lifting_unit": 8, "liftingsurfac": [3, 8], "like": [1, 10, 15, 17, 20, 21], "likewis": 4, "limit": [4, 8], "lin_po": [3, 12, 13, 14], "lin_vel": [3, 12, 13, 14], "linear": [9, 10, 13], "link": [4, 5, 6, 7, 8, 9], "liquid": 4, "list": [4, 5, 8, 9, 10], "lit": 4, "liter": [17, 18, 19, 20, 21, 22], "load": [3, 4, 12, 14], "local": [1, 3, 5, 8, 13], "locat": [3, 4, 9], "lock": 6, "log": 15, "logarithm": 15, "long": [18, 19, 20, 25], "longest": [18, 19, 25], "look": 1, "loop": 10, "looprat": [3, 17, 18, 19, 20, 21, 22, 24, 25], "loos": 1, "lorem": 15, "lose": 24, "lowercas": 10, "m": [5, 10], "m1": 13, "m2": 13, "m3": 13, "m4": 13, "ma_fixedwing_dogfight_env": 24, "ma_quadx_hover_env": 25, "magnitud": 10, "mai": [2, 7, 10, 23], "main": [5, 6, 12], "maintain": 23, "make": [16, 17, 18, 19, 20, 21, 22], "mani": [17, 20, 21, 24], "map": [6, 8, 10, 12], "maquadxhoverenv": 23, "mass": [4, 14], "match": 21, "mathbf": 5, "mathemat": 2, "matmul": 3, "matric": [4, 7, 9], "matrix": [4, 6, 9], "mauro": 27, "max": 4, "max_displac": 22, "max_duration_second": [17, 18, 19, 20, 21, 22, 24, 25], "max_fuel_burn": 4, "max_fuel_r": 4, "max_inertia": 4, "max_rpm": 9, "max_thrust": [4, 9], "maximum": [4, 8, 9, 17, 18, 19, 20, 21, 22, 24, 25], "mean": 24, "meaning": 4, "meter": [1, 19, 20], "method": 2, "microsoft": 0, "min": 4, "min_thrust": 4, "minimum": 4, "missil": 24, "mode": [1, 3, 10, 11, 15, 17, 18, 19, 20, 21, 25], "model": [2, 3, 10, 11, 24], "model_dir": [3, 12, 13, 14], "modern": 24, "modifi": 4, "moment": 4, "more": [2, 3, 4, 5, 9, 10], "most": [17, 20, 21, 23], "motor": [2, 7, 12, 13], "motor_id": 9, "move": 5, "movement": 1, "much": [10, 24], "multi": [1, 23], "multiag": 25, "multipl": [8, 10], "multirotor": 13, "must": [0, 2, 3, 10], "my_paramet": 15, "mycustomdron": 10, "mywindfield": 15, "n": [1, 4, 5, 9, 10, 15], "nadjim": 27, "name": [2, 3, 10], "nativ": 16, "ndarrai": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 25], "need": [2, 4, 6, 7, 9], "neg": [8, 9], "net": 9, "new": [0, 10, 13], "nois": [4, 9, 15], "noise_ratio": [4, 9], "non": [17, 20, 21], "none": [3, 4, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "noqa": 16, "normal": [4, 5, 8, 9], "normal_area": 5, "north": 1, "nose": 24, "note": 10, "noth": 10, "now": 0, "np": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 25], "np_random": [3, 4, 5, 7, 8, 9, 12, 13, 14, 15], "num_boost": 4, "num_dron": [10, 25], "num_gimb": 7, "num_motor": 9, "num_surfac": 8, "num_target": [17, 20, 21], "number": [1, 3, 4, 5, 7, 8, 9, 10, 17, 20, 21], "numpi": [0, 1, 10, 15, 25], "o": 3, "ob": [16, 17, 18, 19, 20, 21, 22], "object": [1, 6, 8, 10], "observ": [16, 17, 20, 21, 23, 24, 25], "obtain": [4, 9], "off": 4, "offer": [11, 26], "offset": 6, "oh": 10, "onboard": 3, "one": [10, 12, 14], "onli": [10, 12, 13, 14, 21, 22, 24], "open": 3, "optim": 10, "option": [0, 1, 2, 4, 13, 26], "order": [4, 10], "orient": [1, 3, 6, 10, 15, 25], "orthogon": 7, "other": [3, 7], "otherwis": 3, "our": 27, "out": [1, 10, 24], "output": [3, 4, 9], "outsid": [10, 24], "overrid": 15, "overview": 0, "own": [1, 2, 3, 15], "p": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "pad": [17, 20, 21, 22], "page": 10, "pair": 7, "parallelenv": 23, "param": 3, "param_path": 3, "paramet": [3, 4, 6, 10, 12, 13, 14, 15], "parameter": 4, "pass": [1, 8, 10], "path": 3, "per": 24, "percent": 4, "perform": 24, "period": [4, 5, 7, 8, 9], "persist": 1, "pettingzoo": 24, "phang": 27, "phyiscs_hz": 3, "physic": [1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 24, 26], "physics_camera_ratio": 3, "physics_control_ratio": 3, "physics_hz": [3, 4, 9, 10, 12, 13, 14], "physics_period": [3, 4, 5, 7, 8, 9], "physics_step": [3, 10, 12, 13, 14], "physics_upd": [2, 3, 4, 5, 6, 7, 8, 9], "pid": 13, "pip3": 0, "pitch": [3, 12, 17], "pixel": 6, "place": 8, "plain": 5, "plane": 1, "platform": 11, "plu": [4, 9, 15], "point": [1, 4, 6, 24], "pointer": [3, 10], "polici": [23, 24, 25], "popular": [15, 17, 20, 21], "posit": [1, 3, 8, 10, 13, 15, 25], "possibl": [0, 1, 10, 15, 17, 18, 19, 20, 21, 25], "presenc": 4, "present": [4, 9], "primari": 5, "primitive_dron": [10, 13], "principl": 5, "print": 10, "print_all_bodi": 10, "prior": 0, "produc": [4, 9], "propel": 9, "properti": [3, 4, 6, 10, 14, 15], "proport": 4, "propuls": 4, "provid": [0, 3, 10, 12, 13, 14, 15, 16, 23], "put": 1, "pwm": [4, 9], "px4": 13, "pybullet": [0, 3, 4, 5, 6, 7, 8, 9, 10, 13], "pyflyt": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 23, 24, 25, 27], "python": [0, 1, 15, 26], "pz_env": [23, 24, 25], "q": 13, "quad": 13, "quadcopt": 26, "quadrotor": [13, 18, 19, 20, 21], "quadx": [1, 10, 11, 15, 16], "quadx_env": [18, 19, 20, 21, 25], "quadx_hover_env": 18, "quadx_opt": 10, "quadx_pole_balance_env": 19, "quadx_pole_waypoints_env": 20, "quadx_waypoints_env": 21, "quadxhoverenv": 18, "quadxpolebalanceenv": 19, "quadxpolewaypointsenv": 20, "quadxwaypointsenv": 21, "quaternion": [17, 18, 19, 20, 21, 22, 25], "queri": 10, "r": 13, "radian": [1, 21], "ragdol": 10, "rais": 3, "ramp": [4, 8, 9], "randn": 15, "random": [3, 4, 5, 7, 8, 9, 15], "randomst": [3, 4, 5, 7, 8, 9, 12, 13, 14, 15], "rang": [1, 7, 10, 15, 24], "rate": [3, 4, 18, 19, 20, 21, 25], "ratio": [4, 8, 9], "raw": 10, "rb": 3, "re": 5, "reach": [1, 17, 20, 21], "read": [12, 14], "readabl": [17, 20, 21], "readili": [4, 9], "real": 8, "realpath": 3, "reason": 23, "receiv": [3, 10], "recommend": [0, 10], "redirect": [4, 7, 9], "refer": [1, 2, 5, 15, 28], "referenc": 5, "regist": [10, 13], "register_all_new_bodi": 10, "register_control": [3, 11, 13], "register_wind_field_funct": 15, "registered_base_control": 3, "registered_control": 3, "reignit": 4, "reimplement": 2, "reinforc": [16, 17, 20, 21, 23, 24, 27], "rel": [1, 4], "relev": [1, 2, 3, 6, 10], "reli": 4, "remain": [4, 10, 22], "render": [1, 10, 15, 26], "render_mod": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "render_resolut": [17, 18, 19, 20, 21, 22], "repeatedli": 1, "report": 14, "repositori": 0, "repres": [1, 3, 4, 5, 6, 7, 8, 9, 10], "requir": [2, 9], "research": 27, "reserv": 3, "reset": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "resetbasepositionandorient": 3, "reshap": 3, "resolut": 6, "resolv": 5, "result": [5, 17, 20, 21], "return": [2, 3, 4, 6, 9, 15], "revers": 9, "rew": [17, 18, 19, 20, 21, 22], "reward": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "rgb_arrai": [17, 18, 19, 20, 21, 22], "rgba": 6, "rgbaimg": [3, 6], "rgbimg": 10, "rho": 5, "right": [7, 9, 12], "rng": 10, "rocket": [4, 10, 11, 26], "rocket_brick": 3, "rocket_env": 22, "rocket_landing_env": 22, "rocket_opt": 10, "rocketbrick": 10, "rocketlandingenv": 22, "roll": [3, 12, 17], "rosetta": [2, 3], "rotat": [3, 4, 7, 9], "rotation_matrix": [5, 8], "rotation_vector": 7, "round": 10, "rpm": 9, "rpy": [1, 10], "rpyt": 24, "rule": [7, 9], "run": [0, 3, 12, 13, 14], "safe_load": 3, "same": [3, 5, 10], "sampl": [4, 9, 10, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "scale": 14, "scroll": 0, "second": [7, 10, 15], "section": [0, 1, 2, 3, 10], "seed": [10, 23], "segimg": [3, 6], "segment": 6, "select": [0, 13], "self": [3, 10, 15], "sequenc": [5, 10, 17, 20, 21], "seri": [4, 5, 7, 9], "serv": [1, 2, 3], "servo": 7, "set": [0, 1, 2, 3, 4, 7, 12, 13, 14, 15, 17, 20, 21], "set_all_setpoint": 10, "set_arm": 10, "set_mod": [1, 3, 10, 11, 12, 13, 14, 15], "set_setpoint": [1, 10], "setpoint": [1, 3, 10, 12, 14], "setup": 15, "sever": [3, 4, 11, 15], "shape": 15, "ship": 10, "shit": 10, "should": [3, 4], "show": 5, "shown": [1, 5], "sign": 5, "similar": [9, 10, 24], "similarli": [0, 10], "simpl": [0, 18, 19, 25], "simple_wind": 15, "simpli": [8, 10, 15], "simul": [3, 4, 5, 6, 7, 8, 9, 10, 15, 17, 18, 19, 20, 21, 22, 24, 25, 27], "sinc": 10, "singl": [1, 8, 12], "size": [17, 18, 19, 20, 21, 24, 25], "skip": [0, 3], "slope": 8, "small": 12, "so": [10, 15], "solid": 4, "some": [2, 3, 4, 9, 15], "someth": 1, "sourc": [0, 4, 10], "space": [1, 14, 17, 20, 21], "spacex": 14, "span": 8, "spars": [17, 18, 19, 20, 21, 22, 24, 25], "sparse_reward": [17, 18, 19, 20, 21, 22, 24, 25], "spawn": [1, 24], "spawn_height": 24, "special": 2, "specif": 13, "specifi": [3, 4, 17, 20, 21, 25], "stabl": [17, 20, 21], "stack": 3, "stage": 14, "stall": 8, "standard": [4, 9], "start": [1, 3, 10, 15, 24, 25, 26], "start_orn": [1, 3, 10, 12, 13, 14, 15, 25], "start_po": [1, 3, 10, 12, 13, 14, 15, 25], "starting_fuel_ratio": [4, 11, 14], "starting_veloc": [10, 11, 12], "state": [2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15], "state_upd": [2, 3, 4, 5, 6, 7, 8, 9], "stateless": 15, "step": [1, 3, 4, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "steppabl": 26, "stone": [2, 3], "store": 10, "str": [3, 10, 12, 13, 14, 24, 25], "straight": 0, "strength": 15, "string": [1, 10], "studio": 0, "subclass": 3, "submodul": 2, "subscript": 1, "suggest": 2, "super": [3, 15], "support": [0, 15, 23, 26], "surfac": [2, 5, 10], "surface_id": 8, "surface_veloc": 8, "swee": 27, "system": [13, 24], "t": [1, 3, 10, 13, 18, 19, 20, 21, 25], "tai": 27, "tai2023pyflyt": 27, "tail": 12, "take": 4, "tank": 4, "target": [17, 18, 19, 20, 21, 25], "target_duty_cycl": [4, 9], "task": 10, "tau": [4, 8, 9], "templat": 3, "term": [6, 10, 17, 18, 19, 20, 21, 22], "termin": [16, 22, 23, 24, 25], "test": [16, 23, 26], "text": 5, "th": 10, "theh": 6, "thei": [3, 4, 5, 15], "them": [0, 1, 5, 10, 17, 20, 21], "thermal": 15, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25], "thing": [1, 3, 10, 12, 13, 14], "think": 26, "those": [17, 20, 21], "three": [1, 5, 10], "throttl": [4, 9, 14, 22], "throttleabl": [4, 14], "through": [0, 1, 5, 8, 10, 12, 13, 14], "throughout": 10, "thrust": [3, 4, 7, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 25], "thrust_coef": 9, "thrust_unit": [4, 9], "tilt": 6, "time": [4, 7, 8, 9, 10, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26], "titl": 27, "tool": 0, "toronto": 13, "torqu": [4, 8, 9], "torque_coef": 9, "total_fuel_mass": 4, "toward": [17, 20, 21], "track": [6, 10], "train": 24, "trait": [4, 10], "transform": 4, "travel": 8, "true": [1, 10, 15, 24], "trunc": [17, 18, 19, 20, 21, 22], "truncat": [16, 23, 24, 25], "tube": 12, "tupl": [3, 6, 8, 12, 13, 14, 17, 18, 19, 20, 21, 22], "tutori": [2, 3], "two": [1, 5, 7, 13], "type": [1, 3, 4, 6, 7, 8, 9, 13], "typic": [4, 10], "u": 13, "uav": [8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 25, 27], "uav_id": [4, 5, 6, 8, 9], "unarm": 10, "under": [8, 10], "underli": [3, 10], "uniformli": 5, "uniqu": [4, 10], "unit": [4, 7, 8, 9], "univers": 13, "unstabl": 10, "up": [1, 4, 9], "updat": [3, 5, 8, 10, 12, 13, 14], "update_control": [3, 11, 12, 13, 14], "update_last": [3, 6, 11, 12, 13, 14], "update_phys": [2, 3, 11, 12, 13, 14], "update_st": [2, 3, 8, 11, 12, 13, 14], "updraft": 15, "upright": 19, "uptil": 6, "upward": 1, "urdf": 3, "us": [0, 1, 3, 4, 5, 7, 8, 9, 10, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25], "usabl": 3, "usag": [4, 15, 16, 23], "use_camera": [3, 10, 12, 13, 14], "use_gimb": [3, 6, 12, 13, 14], "use_yaw_target": 21, "user": [0, 1, 10, 15], "usual": [0, 3, 8, 15], "util": 1, "v": [5, 13], "v1": 14, "v2": 16, "v_i": 5, "v_x": 5, "v_y": 5, "v_z": 5, "valid": 10, "valu": [3, 4, 6, 7, 9, 14], "valueerror": 3, "vari": 15, "variabl": 15, "variant": 11, "varieti": 4, "variou": [1, 2, 10, 13, 15, 16, 23], "vec3": 8, "vector": [4, 5, 7, 8, 9, 10, 14], "vehicl": [3, 12, 13, 14], "vel": 3, "veloc": [5, 8, 10, 13, 15, 22], "veri": [2, 3, 10], "vertic": [12, 15], "via": 10, "view": 6, "view_mat": 6, "virtual": 0, "viscos": 8, "visit": 26, "visual": 0, "vp": [13, 18, 19, 20, 21, 25], "vq": [13, 18, 19, 20, 21, 25], "vr": [13, 18, 19, 20, 21, 25], "vx": 13, "vy": 13, "vz": 13, "w": 13, "wai": 0, "want": 10, "we": [0, 1, 3, 4, 10], "weapon": 24, "well": [1, 15, 23], "were": 14, "what": 10, "wheel": 0, "when": [6, 10, 24], "where": [0, 1, 3, 4, 5, 6, 7, 10, 15, 17, 20, 21, 23, 24, 25], "whether": [3, 4, 6, 10, 17, 18, 19, 20, 21, 22, 24, 25], "which": [5, 10, 17, 20, 21], "while": [0, 2, 3, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "whole": 10, "wide": 23, "width": [6, 24], "wind": 10, "wind_field": 15, "wind_opt": [10, 15], "wind_typ": [10, 15], "windfield": [10, 15], "windfieldclass": [10, 15], "wing": [8, 12], "wish": [0, 10, 27], "within": [2, 6, 10, 24], "without": [2, 17, 20, 21], "won": 10, "wong": 27, "work": 27, "world_scal": 10, "would": [17, 20, 21, 23, 24, 25], "wrapper": [17, 20, 21], "x": [1, 3, 5, 10, 13, 14, 17, 20, 21, 22, 25], "xx": 0, "xy": 15, "xyz": 5, "xz_b": 5, "xz_g": 5, "y": [1, 3, 5, 10, 13, 14, 17, 20, 21, 22], "yaml": [3, 12, 14], "yaw": [1, 3, 12, 14, 17, 21], "year": [0, 27], "ymmv": 0, "you": [0, 1, 10, 17, 20, 21, 23, 24, 25, 26, 27], "your": [2, 3, 23, 24, 25], "z": [1, 3, 5, 10, 13, 15, 17, 20, 21], "zero": [3, 8], "zeros_lik": [10, 15]}, "titles": ["Documentation", "Core", "Abstractions", "Base Drone Class", "Boosters", "Boring Bodies", "Camera", "Gimbals", "Lifting Surfaces", "Motors", "Aviary", "Drones", "Fixedwing", "QuadX", "Rocket", "Wind", "Gymnasium Environments", "PyFlyt/Fixedwing-Waypoints-v2", "PyFlyt/QuadX-Hover-v2", "PyFlyt/QuadX-Pole-Balance-v2", "PyFlyt/QuadX-Pole-Waypoints-v2", "PyFlyt/QuadX-Waypoints-v2", "PyFlyt/Rocket-Landing-v2", "PettingZoo Environments", "MAFixedwingDogfightEnv", "MAQuadXHoverEnv", "PyFlyt - UAV Simulation Environments for Reinforcement Learning Research", "Paper Publication", "Tutorials"], "titleterms": {"abstract": 2, "access": 10, "api": [1, 10], "architectur": 1, "arg": [3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25], "attribut": [3, 10, 15], "aviari": 10, "axi": 1, "balanc": 19, "base": 3, "bodi": 5, "booster": 4, "bore": 5, "camera": 6, "citat": 27, "class": [3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14], "complex": 15, "control": [10, 12, 13, 14], "convent": 1, "core": [1, 10], "custom": [10, 15], "default": [3, 15], "descript": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25, 26], "do": 0, "document": 0, "drone": [3, 10, 11], "environ": [0, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "exampl": 10, "fixedw": [12, 17], "flatten": [17, 20, 21], "gener": 1, "gimbal": 7, "gymnasium": [0, 16], "hover": 18, "i": 0, "individu": 10, "instal": 0, "land": 22, "learn": 26, "lift": 8, "linux": 0, "looprat": 10, "maco": 0, "mafixedwingdogfightenv": 24, "maquadxhoverenv": 25, "mathemat": 8, "method": [3, 10, 15], "mode": [12, 13, 14], "model": [8, 12, 13, 14, 15], "more": [0, 15], "motor": 9, "multi": 10, "option": [3, 10, 17, 18, 19, 20, 21, 22, 24, 25], "overview": [11, 15], "paper": 27, "pettingzoo": [0, 23], "physic": 10, "pole": [19, 20], "preimplement": 15, "preprint": 27, "public": 27, "pyflyt": [17, 18, 19, 20, 21, 22, 26], "quadx": [13, 18, 19, 20, 21], "reinforc": 26, "requir": [3, 15], "research": 26, "return": [7, 8, 10], "rocket": [14, 22], "rule": 24, "set": 10, "setup": 10, "simpl": 15, "simul": 26, "singl": 10, "spawn": 10, "step": 10, "surfac": 8, "task": [17, 18, 19, 20, 21, 22, 24, 25], "tutori": 28, "type": 10, "uav": 26, "usag": [2, 10, 17, 18, 19, 20, 21, 22, 24, 25], "v2": [17, 18, 19, 20, 21, 22], "variant": 13, "want": 0, "waypoint": [17, 20, 21], "wind": 15, "window": 0}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Abstractions": [[2, "abstractions"]], "Accessing Individual Drones": [[10, "accessing-individual-drones"]], "Args:": [[3, "args"], [3, "args"], [4, "args"], [4, "id1"], [4, "id2"], [5, "args"], [5, "id1"], [6, "args"], [7, "args"], [7, "id1"], [8, "args"], [8, "id1"], [8, "id3"], [8, "args"], [8, "id1"], [8, "id2"], [9, "args"], [9, "id1"], [10, "args"], [10, "args"], [10, "id1"], [10, "id2"], [10, "id4"], [10, "id5"], [10, "id6"], [10, "id7"], [12, "args"], [12, "id1"], [12, "id2"], [13, "args"], [13, "id1"], [13, "id2"], [13, "id3"], [14, "args"], [14, "id1"], [14, "id2"], [17, "args"], [18, "args"], [19, "args"], [20, "args"], [21, "args"], [22, "args"], [24, "args"], [25, "args"]], "Attributes": [[10, "attributes"]], "Aviary": [[10, "aviary"]], "Axis Conventions": [[1, "axis-conventions"]], "Base Drone Class": [[3, "base-drone-class"]], "Boosters": [[4, "boosters"]], "Boring Bodies": [[5, "boring-bodies"]], "Camera": [[6, "camera"]], "Citation": [[27, "citation"]], "Class Description": [[3, "class-description"], [4, "class-description"], [5, "class-description"], [6, "class-description"], [7, "class-description"], [8, "class-description"], [9, "class-description"], [10, "class-description"], [12, "class-description"], [13, "class-description"], [14, "class-description"]], "Control Mode": [[12, "control-mode"], [14, "control-mode"]], "Control Modes": [[13, "control-modes"]], "Controlling Drone Types": [[10, "controlling-drone-types"]], "Core": [[1, "core"]], "Core API": [[1, "core-api"]], "Core API Example": [[10, "core-api-example"]], "Default Attributes": [[3, "default-attributes"], [15, "default-attributes"]], "Default Methods": [[3, "default-methods"]], "Description": [[2, "description"], [4, "description"], [5, "description"], [6, "description"], [7, "description"], [8, "description"], [9, "description"], [10, "description"], [26, "description"]], "Documentation": [[0, "documentation"]], "Drones": [[11, "drones"]], "Environment Options": [[17, "environment-options"], [18, "environment-options"], [19, "environment-options"], [20, "environment-options"], [21, "environment-options"], [22, "environment-options"], [24, "environment-options"], [25, "environment-options"]], "Environment Rules": [[24, "environment-rules"]], "Fixedwing": [[12, "fixedwing"]], "Flattening the Environment": [[17, "flattening-the-environment"], [20, "flattening-the-environment"], [21, "flattening-the-environment"]], "General Architecture": [[1, "general-architecture"]], "Gimbals": [[7, "gimbals"]], "Gymnasium Environments": [[0, "gymnasium-environments"], [16, "gymnasium-environments"]], "I want to do more!": [[0, "i-want-to-do-more"]], "Installation": [[0, "installation"]], "Lifting Surfaces": [[8, "lifting-surfaces"]], "Linux and MacOS": [[0, "linux-and-macos"]], "Looprates": [[10, "looprates"]], "MAFixedwingDogfightEnv": [[24, "mafixedwingdogfightenv"]], "MAQuadXHoverEnv": [[25, "maquadxhoverenv"]], "Mathematical Model": [[8, "mathematical-model"]], "Methods": [[10, "methods"]], "Model Description": [[12, "model-description"], [13, "model-description"], [14, "model-description"]], "More Complex Custom Wind Modelling": [[15, "more-complex-custom-wind-modelling"]], "Motors": [[9, "motors"]], "Multi Drone Physics Stepping": [[10, "multi-drone-physics-stepping"]], "Multi Drone Setup": [[10, "multi-drone-setup"]], "Optional Attributes": [[3, "optional-attributes"]], "Optional Methods": [[3, "optional-methods"]], "Overview": [[11, "overview"], [15, "overview"]], "Paper Publication": [[27, "paper-publication"]], "PettingZoo Environments": [[0, "pettingzoo-environments"], [23, "pettingzoo-environments"]], "Preimplemented Wind Models": [[15, "preimplemented-wind-models"]], "Preprint": [[27, "preprint"]], "PyFlyt - UAV Simulation Environments for Reinforcement Learning Research": [[26, "pyflyt-uav-simulation-environments-for-reinforcement-learning-research"]], "PyFlyt/Fixedwing-Waypoints-v2": [[17, "pyflyt-fixedwing-waypoints-v2"]], "PyFlyt/QuadX-Hover-v2": [[18, "pyflyt-quadx-hover-v2"]], "PyFlyt/QuadX-Pole-Balance-v2": [[19, "pyflyt-quadx-pole-balance-v2"]], "PyFlyt/QuadX-Pole-Waypoints-v2": [[20, "pyflyt-quadx-pole-waypoints-v2"]], "PyFlyt/QuadX-Waypoints-v2": [[21, "pyflyt-quadx-waypoints-v2"]], "PyFlyt/Rocket-Landing-v2": [[22, "pyflyt-rocket-landing-v2"]], "QuadX": [[13, "quadx"]], "Required Attributes": [[3, "required-attributes"]], "Required Methods": [[3, "required-methods"], [15, "required-methods"]], "Returns:": [[4, "returns"], [6, "returns"], [6, "id1"], [7, "returns"], [7, "id2"], [8, "returns"], [8, "id2"], [8, "returns"], [9, "returns"], [10, "returns"], [10, "id1"], [10, "returns"], [10, "id3"]], "Rocket": [[14, "rocket"]], "Setting Drone Options": [[10, "setting-drone-options"]], "Simple Custom Wind Modelling": [[15, "simple-custom-wind-modelling"]], "Single Drone Physics Stepping": [[10, "single-drone-physics-stepping"]], "Spawning Custom Drones": [[10, "spawning-custom-drones"]], "Task Description": [[17, "task-description"], [18, "task-description"], [19, "task-description"], [20, "task-description"], [21, "task-description"], [22, "task-description"], [24, "task-description"], [25, "task-description"]], "Tutorials": [[28, "tutorials"]], "Usage": [[2, "usage"], [10, "usage"], [17, "usage"], [18, "usage"], [19, "usage"], [20, "usage"], [21, "usage"], [22, "usage"], [24, "usage"], [25, "usage"]], "Variants": [[13, "variants"]], "Wind": [[15, "wind"]], "Windows": [[0, "windows"]]}, "docnames": ["documentation", "documentation/core", "documentation/core/abstractions", "documentation/core/abstractions/base_drone", "documentation/core/abstractions/boosters", "documentation/core/abstractions/boring_bodies", "documentation/core/abstractions/camera", "documentation/core/abstractions/gimbals", "documentation/core/abstractions/lifting_surfaces", "documentation/core/abstractions/motors", "documentation/core/aviary", "documentation/core/drones", "documentation/core/drones/fixedwing", "documentation/core/drones/quadx", "documentation/core/drones/rocket", "documentation/core/wind", "documentation/gym_envs", "documentation/gym_envs/fixedwing_waypoints_env", "documentation/gym_envs/quadx_hover_env", "documentation/gym_envs/quadx_pole_balance_env", "documentation/gym_envs/quadx_pole_waypoints_env", "documentation/gym_envs/quadx_waypoints_env", "documentation/gym_envs/rocket_landing_env", "documentation/pz_envs", "documentation/pz_envs/ma_fixedwing_dogfight_env", "documentation/pz_envs/ma_quadx_hover_env", "index", "paper", "tutorials"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["documentation.md", "documentation/core.md", "documentation/core/abstractions.md", "documentation/core/abstractions/base_drone.md", "documentation/core/abstractions/boosters.md", "documentation/core/abstractions/boring_bodies.md", "documentation/core/abstractions/camera.md", "documentation/core/abstractions/gimbals.md", "documentation/core/abstractions/lifting_surfaces.md", "documentation/core/abstractions/motors.md", "documentation/core/aviary.md", "documentation/core/drones.md", "documentation/core/drones/fixedwing.md", "documentation/core/drones/quadx.md", "documentation/core/drones/rocket.md", "documentation/core/wind.md", "documentation/gym_envs.md", "documentation/gym_envs/fixedwing_waypoints_env.md", "documentation/gym_envs/quadx_hover_env.md", "documentation/gym_envs/quadx_pole_balance_env.md", "documentation/gym_envs/quadx_pole_waypoints_env.md", "documentation/gym_envs/quadx_waypoints_env.md", "documentation/gym_envs/rocket_landing_env.md", "documentation/pz_envs.md", "documentation/pz_envs/ma_fixedwing_dogfight_env.md", "documentation/pz_envs/ma_quadx_hover_env.md", "index.md", "paper.md", "tutorials.md"], "indexentries": {"__call__() (in module pyflyt.core.abstractions.droneclass)": [[15, "PyFlyt.core.abstractions.DroneClass.__call__", false]], "__init__() (in module pyflyt.core.abstractions.windfieldclass)": [[15, "PyFlyt.core.abstractions.WindFieldClass.__init__", false]], "all_aux_states (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.all_aux_states", false]], "all_states (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.all_states", false]], "aux_state (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.aux_state", false]], "aux_state() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.aux_state", false]], "aviary (class in pyflyt.core)": [[10, "PyFlyt.core.Aviary", false]], "aviary_steps (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.aviary_steps", false]], "boosters (class in pyflyt.core.abstractions)": [[4, "PyFlyt.core.abstractions.Boosters", false]], "boringbodies (class in pyflyt.core.abstractions)": [[5, "PyFlyt.core.abstractions.BoringBodies", false]], "camera (class in pyflyt.core.abstractions)": [[6, "PyFlyt.core.abstractions.Camera", false]], "capture_image() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.capture_image", false]], "compute_rotation() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.compute_rotation", false]], "contact_array (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.contact_array", false]], "control_period (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.control_period", false]], "depthimg (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.depthImg", false]], "disable_artificial_damping() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.disable_artificial_damping", false]], "drone_path (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.drone_path", false]], "droneclass (class in pyflyt.core.abstractions)": [[3, "PyFlyt.core.abstractions.DroneClass", false]], "drones (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.drones", false]], "elapsed_ime (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.elapsed_ime", false]], "fixedwing (class in pyflyt.core.drones)": [[12, "PyFlyt.core.drones.Fixedwing", false]], "fixedwingwaypointsenv (class in pyflyt.gym_envs.fixedwing_envs.fixedwing_waypoints_env)": [[17, "PyFlyt.gym_envs.fixedwing_envs.fixedwing_waypoints_env.FixedwingWaypointsEnv", false]], "get_joint_info() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.get_joint_info", false]], "get_states() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.get_states", false]], "get_states() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.get_states", false]], "get_states() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.get_states", false]], "get_states() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.get_states", false]], "get_states() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.get_states", false]], "get_states() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.get_states", false]], "get_states() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.get_states", false]], "gimbals (class in pyflyt.core.abstractions)": [[7, "PyFlyt.core.abstractions.Gimbals", false]], "id (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.Id", false]], "instanced_controllers (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.instanced_controllers", false]], "liftingsurface (class in pyflyt.core.abstractions)": [[8, "PyFlyt.core.abstractions.LiftingSurface", false]], "liftingsurfaces (class in pyflyt.core.abstractions)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces", false]], "mafixedwingdogfightenv (class in pyflyt.pz_envs.fixedwing_envs.ma_fixedwing_dogfight_env)": [[24, "PyFlyt.pz_envs.fixedwing_envs.ma_fixedwing_dogfight_env.MAFixedwingDogfightEnv", false]], "maquadxhoverenv (class in pyflyt.pz_envs.quadx_envs.ma_quadx_hover_env)": [[25, "PyFlyt.pz_envs.quadx_envs.ma_quadx_hover_env.MAQuadXHoverEnv", false]], "motors (class in pyflyt.core.abstractions.motors)": [[9, "PyFlyt.core.abstractions.motors.Motors", false]], "np_random (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.np_random", false]], "np_random (pyflyt.core.abstractions.windfieldclass property)": [[15, "PyFlyt.core.abstractions.WindFieldClass.np_random", false]], "param_path (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.param_path", false]], "physics_period (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.physics_period", false]], "physics_steps (pyflyt.core.aviary property)": [[10, "PyFlyt.core.Aviary.physics_steps", false]], "physics_update() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.physics_update", false]], "physics_update() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.physics_update", false]], "physics_update() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.physics_update", false]], "physics_update() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.physics_update", false]], "physics_update() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.physics_update", false]], "physics_update() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.physics_update", false]], "physics_update() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.physics_update", false]], "print_all_bodies() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.print_all_bodies", false]], "quadx (class in pyflyt.core.drones)": [[13, "PyFlyt.core.drones.QuadX", false]], "quadxhoverenv (class in pyflyt.gym_envs.quadx_envs.quadx_hover_env)": [[18, "PyFlyt.gym_envs.quadx_envs.quadx_hover_env.QuadXHoverEnv", false]], "quadxpolebalanceenv (class in pyflyt.gym_envs.quadx_envs.quadx_pole_balance_env)": [[19, "PyFlyt.gym_envs.quadx_envs.quadx_pole_balance_env.QuadXPoleBalanceEnv", false]], "quadxpolewaypointsenv (class in pyflyt.gym_envs.quadx_envs.quadx_pole_waypoints_env)": [[20, "PyFlyt.gym_envs.quadx_envs.quadx_pole_waypoints_env.QuadXPoleWaypointsEnv", false]], "quadxwaypointsenv (class in pyflyt.gym_envs.quadx_envs.quadx_waypoints_env)": [[21, "PyFlyt.gym_envs.quadx_envs.quadx_waypoints_env.QuadXWaypointsEnv", false]], "register_all_new_bodies() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.register_all_new_bodies", false]], "register_controller() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.register_controller", false]], "register_controller() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.register_controller", false]], "registered_base_controllers (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.registered_base_controllers", false]], "registered_controllers (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.registered_controllers", false]], "reset() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.reset", false]], "reset() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.reset", false]], "reset() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.reset", false]], "reset() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.reset", false]], "reset() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.reset", false]], "reset() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.reset", false]], "reset() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.reset", false]], "reset() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.reset", false]], "reset() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.reset", false]], "reset() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.reset", false]], "reset() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.reset", false]], "rgbaimg (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.rgbaImg", false]], "rocket (class in pyflyt.core.drones)": [[14, "PyFlyt.core.drones.Rocket", false]], "rocketlandingenv (class in pyflyt.gym_envs.rocket_envs.rocket_landing_env)": [[22, "PyFlyt.gym_envs.rocket_envs.rocket_landing_env.RocketLandingEnv", false]], "segimg (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.segImg", false]], "set_all_setpoints() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_all_setpoints", false]], "set_armed() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_armed", false]], "set_mode() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.set_mode", false]], "set_mode() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_mode", false]], "set_mode() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.set_mode", false]], "set_mode() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.set_mode", false]], "set_mode() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.set_mode", false]], "set_setpoint() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.set_setpoint", false]], "setpoint (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.setpoint", false]], "starting_fuel_ratio (pyflyt.core.drones.rocket attribute)": [[14, "PyFlyt.core.drones.Rocket.starting_fuel_ratio", false]], "starting_velocity (pyflyt.core.drones.fixedwing attribute)": [[12, "PyFlyt.core.drones.Fixedwing.starting_velocity", false]], "state (pyflyt.core.abstractions.droneclass property)": [[3, "PyFlyt.core.abstractions.DroneClass.state", false]], "state() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.state", false]], "state_update() (pyflyt.core.abstractions.boosters method)": [[4, "PyFlyt.core.abstractions.Boosters.state_update", false]], "state_update() (pyflyt.core.abstractions.boringbodies method)": [[5, "PyFlyt.core.abstractions.BoringBodies.state_update", false]], "state_update() (pyflyt.core.abstractions.camera method)": [[6, "PyFlyt.core.abstractions.Camera.state_update", false]], "state_update() (pyflyt.core.abstractions.gimbals method)": [[7, "PyFlyt.core.abstractions.Gimbals.state_update", false]], "state_update() (pyflyt.core.abstractions.liftingsurface method)": [[8, "PyFlyt.core.abstractions.LiftingSurface.state_update", false]], "state_update() (pyflyt.core.abstractions.liftingsurfaces method)": [[8, "PyFlyt.core.abstractions.LiftingSurfaces.state_update", false]], "state_update() (pyflyt.core.abstractions.motors.motors method)": [[9, "PyFlyt.core.abstractions.motors.Motors.state_update", false]], "step() (in module pyflyt.core.aviary)": [[10, "PyFlyt.core.Aviary.step", false]], "update_control() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_control", false]], "update_control() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_control", false]], "update_control() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_control", false]], "update_control() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_control", false]], "update_last() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_last", false]], "update_last() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_last", false]], "update_last() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_last", false]], "update_last() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_last", false]], "update_physics() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_physics", false]], "update_physics() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_physics", false]], "update_physics() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_physics", false]], "update_physics() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_physics", false]], "update_state() (in module pyflyt.core.abstractions.droneclass)": [[3, "PyFlyt.core.abstractions.DroneClass.update_state", false]], "update_state() (pyflyt.core.drones.fixedwing method)": [[12, "PyFlyt.core.drones.Fixedwing.update_state", false]], "update_state() (pyflyt.core.drones.quadx method)": [[13, "PyFlyt.core.drones.QuadX.update_state", false]], "update_state() (pyflyt.core.drones.rocket method)": [[14, "PyFlyt.core.drones.Rocket.update_state", false]], "view_mat (pyflyt.core.abstractions.camera property)": [[6, "PyFlyt.core.abstractions.Camera.view_mat", false]], "windfieldclass (class in pyflyt.core.abstractions)": [[15, "PyFlyt.core.abstractions.WindFieldClass", false]]}, "objects": {"PyFlyt.core": [[10, 0, 1, "", "Aviary"]], "PyFlyt.core.Aviary": [[10, 1, 1, "", "all_aux_states"], [10, 1, 1, "", "all_states"], [10, 2, 1, "", "aux_state"], [10, 1, 1, "", "aviary_steps"], [10, 1, 1, "", "contact_array"], [10, 1, 1, "", "drones"], [10, 1, 1, "", "elapsed_ime"], [10, 1, 1, "", "physics_steps"], [10, 2, 1, "", "print_all_bodies"], [10, 2, 1, "", "register_all_new_bodies"], [10, 2, 1, "", "reset"], [10, 2, 1, "", "set_all_setpoints"], [10, 2, 1, "", "set_armed"], [10, 2, 1, "", "set_mode"], [10, 2, 1, "", "set_setpoint"], [10, 2, 1, "", "state"], [10, 2, 1, "", "step"]], "PyFlyt.core.abstractions": [[4, 0, 1, "", "Boosters"], [5, 0, 1, "", "BoringBodies"], [6, 0, 1, "", "Camera"], [3, 0, 1, "", "DroneClass"], [7, 0, 1, "", "Gimbals"], [8, 0, 1, "", "LiftingSurface"], [8, 0, 1, "", "LiftingSurfaces"], [15, 0, 1, "", "WindFieldClass"]], "PyFlyt.core.abstractions.Boosters": [[4, 3, 1, "", "get_states"], [4, 3, 1, "", "physics_update"], [4, 3, 1, "", "reset"], [4, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.BoringBodies": [[5, 3, 1, "", "get_states"], [5, 3, 1, "", "physics_update"], [5, 3, 1, "", "reset"], [5, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.Camera": [[6, 3, 1, "", "capture_image"], [6, 3, 1, "", "get_states"], [6, 3, 1, "", "physics_update"], [6, 3, 1, "", "state_update"], [6, 1, 1, "", "view_mat"]], "PyFlyt.core.abstractions.DroneClass": [[3, 1, 1, "", "Id"], [15, 2, 1, "", "__call__"], [3, 1, 1, "", "aux_state"], [3, 1, 1, "", "control_period"], [3, 1, 1, "", "depthImg"], [3, 2, 1, "", "disable_artificial_damping"], [3, 1, 1, "", "drone_path"], [3, 2, 1, "", "get_joint_info"], [3, 1, 1, "", "instanced_controllers"], [3, 1, 1, "", "np_random"], [3, 1, 1, "", "param_path"], [3, 1, 1, "", "physics_period"], [3, 2, 1, "", "register_controller"], [3, 1, 1, "", "registered_base_controllers"], [3, 1, 1, "", "registered_controllers"], [3, 2, 1, "", "reset"], [3, 1, 1, "", "rgbaImg"], [3, 1, 1, "", "segImg"], [3, 2, 1, "", "set_mode"], [3, 1, 1, "", "setpoint"], [3, 1, 1, "", "state"], [3, 2, 1, "", "update_control"], [3, 2, 1, "", "update_last"], [3, 2, 1, "", "update_physics"], [3, 2, 1, "", "update_state"]], "PyFlyt.core.abstractions.Gimbals": [[7, 3, 1, "", "compute_rotation"], [7, 3, 1, "", "get_states"], [7, 3, 1, "", "physics_update"], [7, 3, 1, "", "reset"], [7, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.LiftingSurface": [[8, 3, 1, "", "get_states"], [8, 3, 1, "", "physics_update"], [8, 3, 1, "", "reset"], [8, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.LiftingSurfaces": [[8, 3, 1, "", "get_states"], [8, 3, 1, "", "physics_update"], [8, 3, 1, "", "reset"], [8, 3, 1, "", "state_update"]], "PyFlyt.core.abstractions.WindFieldClass": [[15, 2, 1, "", "__init__"], [15, 1, 1, "", "np_random"]], "PyFlyt.core.abstractions.motors": [[9, 0, 1, "", "Motors"]], "PyFlyt.core.abstractions.motors.Motors": [[9, 3, 1, "", "get_states"], [9, 3, 1, "", "physics_update"], [9, 3, 1, "", "reset"], [9, 3, 1, "", "state_update"]], "PyFlyt.core.drones": [[12, 0, 1, "", "Fixedwing"], [13, 0, 1, "", "QuadX"], [14, 0, 1, "", "Rocket"]], "PyFlyt.core.drones.Fixedwing": [[12, 3, 1, "", "reset"], [12, 3, 1, "", "set_mode"], [12, 4, 1, "", "starting_velocity"], [12, 3, 1, "", "update_control"], [12, 3, 1, "", "update_last"], [12, 3, 1, "", "update_physics"], [12, 3, 1, "", "update_state"]], "PyFlyt.core.drones.QuadX": [[13, 3, 1, "", "register_controller"], [13, 3, 1, "", "reset"], [13, 3, 1, "", "set_mode"], [13, 3, 1, "", "update_control"], [13, 3, 1, "", "update_last"], [13, 3, 1, "", "update_physics"], [13, 3, 1, "", "update_state"]], "PyFlyt.core.drones.Rocket": [[14, 3, 1, "", "reset"], [14, 3, 1, "", "set_mode"], [14, 4, 1, "", "starting_fuel_ratio"], [14, 3, 1, "", "update_control"], [14, 3, 1, "", "update_last"], [14, 3, 1, "", "update_physics"], [14, 3, 1, "", "update_state"]], "PyFlyt.gym_envs.fixedwing_envs.fixedwing_waypoints_env": [[17, 0, 1, "", "FixedwingWaypointsEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_hover_env": [[18, 0, 1, "", "QuadXHoverEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_pole_balance_env": [[19, 0, 1, "", "QuadXPoleBalanceEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_pole_waypoints_env": [[20, 0, 1, "", "QuadXPoleWaypointsEnv"]], "PyFlyt.gym_envs.quadx_envs.quadx_waypoints_env": [[21, 0, 1, "", "QuadXWaypointsEnv"]], "PyFlyt.gym_envs.rocket_envs.rocket_landing_env": [[22, 0, 1, "", "RocketLandingEnv"]], "PyFlyt.pz_envs.fixedwing_envs.ma_fixedwing_dogfight_env": [[24, 0, 1, "", "MAFixedwingDogfightEnv"]], "PyFlyt.pz_envs.quadx_envs.ma_quadx_hover_env": [[25, 0, 1, "", "MAQuadXHoverEnv"]]}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "property", "Python property"], "2": ["py", "function", "Python function"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:class", "1": "py:property", "2": "py:function", "3": "py:method", "4": "py:attribute"}, "terms": {"": [3, 4, 6, 9, 10, 13, 23], "0": [1, 3, 4, 6, 8, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "01305": 27, "02": 24, "05": 14, "1": [1, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 19, 20, 21, 22, 24, 25], "10": [18, 20, 21, 25], "100": 17, "1000": [1, 10, 15], "10th": 14, "120": [3, 10, 12, 13, 14, 15, 17], "128": [3, 12, 13, 14], "15": 24, "150": 24, "2": [1, 3, 5, 7, 10, 12, 13, 14, 15, 17, 20, 21], "20": [12, 13, 19, 20], "200": 22, "2023": 27, "20xx": 0, "225": 5, "2304": 27, "240": [3, 10, 12, 13, 14], "25": 10, "2d": 5, "3": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 25], "30": [10, 14, 17, 21, 22, 24, 25], "4": [1, 10, 13, 17, 20, 21], "40": [10, 18, 19, 20, 22, 25], "42": 23, "480": [17, 18, 19, 20, 21, 22], "5": [1, 10, 12, 13, 21], "50": 10, "500": 22, "6": [1, 10, 13], "60": [10, 24], "65": 8, "7": [1, 10, 13, 14, 15], "8": [10, 15], "80": 0, "9": 14, "90": [3, 12, 13, 14], "A": [0, 3, 4, 5, 6, 7, 10, 27], "As": 5, "At": 1, "By": [3, 10], "For": [2, 10, 15, 23], "If": [0, 4, 17, 20, 21, 27], "In": [6, 10], "It": [0, 1, 2, 3, 4, 10, 13, 26], "NOT": 4, "OR": 8, "On": [1, 6], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "Then": [1, 15], "These": [10, 11], "To": [10, 15, 26], "_": [17, 18, 19, 20, 21, 22], "__call__": 15, "__file__": 3, "__init__": [3, 15], "_lowercase_": 10, "a0": 4, "a1": 4, "abil": 9, "abl": 10, "about": [7, 12, 13, 14], "abov": 1, "absolut": 22, "abstract": [1, 3, 4, 5, 6, 7, 8, 9, 15], "accept": [4, 9], "access": 3, "accord": 4, "accur": [3, 5], "achiev": 6, "acrow": 24, "act": [4, 9], "action": [17, 18, 19, 20, 21, 22, 23, 24, 25], "action_spac": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "actual": [4, 9], "actual_duty_cycl": [4, 9], "actuat": [3, 7, 8, 12, 24], "addit": [6, 19], "addition": [4, 9], "adjust": 6, "aerial": 24, "aerodynam": [3, 5, 8], "affect": 5, "after": 7, "agent": [17, 18, 19, 20, 21, 22, 23, 24, 25], "agent_hz": [17, 18, 19, 20, 21, 22, 24, 25], "agil": 8, "ai": 24, "aileron": 12, "air": 5, "aircraft": [6, 17, 20, 21, 24], "al": 8, "algorithm": [16, 23, 26], "all": [0, 1, 2, 3, 5, 7, 8, 9, 10, 23, 24, 25], "all_aux_st": 10, "all_param": 3, "all_stat": 10, "allow": [1, 2, 4, 9, 10, 17, 18, 19, 20, 21, 24, 25], "along": [9, 10], "alpha_0_bas": 8, "alpha_stall_n_bas": 8, "alpha_stall_p_bas": 8, "also": [4, 10], "altern": 0, "although": 10, "alwai": 4, "amalgam": 1, "amount": [4, 9, 10], "an": [1, 3, 4, 6, 8, 9, 10, 15, 24, 25], "ang_po": [3, 12, 13, 14], "ang_vel": [3, 12, 13, 14], "angl": [6, 8, 10, 21], "angle_represent": [17, 18, 19, 20, 21, 22, 25], "angular": [10, 13, 18, 21, 25], "ani": [3, 5, 10, 19, 20, 26], "anyth": [24, 26], "api": [23, 24], "append": 10, "appli": 5, "ar": [0, 1, 2, 3, 4, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "arbitrari": [4, 5, 7, 9], "ardupilot": 13, "area": [5, 17, 18, 19, 20, 21, 22, 24, 25], "arg": 15, "argument": [4, 9, 10, 17, 20, 21], "arm": 10, "around": [4, 7, 9], "arrai": [1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 25], "arrang": 10, "articl": 27, "artifici": 3, "arxiv": 27, "ascend": 10, "asid": 3, "assign": 3, "assisted_flight": 24, "assum": 5, "attach": [4, 6, 15], "attack": 8, "attribut": 1, "author": 27, "automat": [10, 24], "aux": 10, "aux_stat": [3, 10], "auxiliari": [3, 10], "avail": [0, 4, 13, 27], "aviari": [1, 3, 12, 13, 14, 15], "aviary_step": 10, "ax": [1, 5, 7], "axi": [3, 4, 7, 9, 14], "b": [1, 24], "b0": 4, "b1": 4, "backend": 3, "balanc": 20, "base": [1, 8, 24], "base_mod": [3, 13], "baselin": [17, 20, 21], "basic": [2, 15], "becaus": [19, 20], "becom": 24, "been": 10, "befor": [3, 21, 24], "begin": 24, "behaviour": 3, "being": [17, 20, 21], "below": [13, 15], "between": [4, 7, 10], "big": 10, "bind": [3, 26], "biplan": 26, "bn": 4, "bodi": [1, 4, 6, 10], "body_id": 5, "bool": [3, 4, 6, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25], "boolean": [4, 10], "booster": [3, 7, 9, 10, 14, 22], "booster_id": 4, "boringbodi": 5, "bottom": 10, "bound": 24, "breakdown": 13, "briefli": 10, "bring": 0, "brusei": 27, "brushless": 9, "bug": 6, "build": 0, "built": [0, 1, 26], "bullet": 26, "bullet_cli": [3, 4, 5, 6, 7, 8, 9], "bulletcli": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "burn": 4, "c": [0, 24], "c0": 4, "c1": 4, "c_d": 5, "calcul": 4, "call": [2, 4, 6, 7, 9, 10, 13, 15], "callabl": 10, "camera": [3, 10], "camera_angle_degre": [3, 6, 12, 13, 14], "camera_fov_degre": [3, 6, 12, 13, 14], "camera_fp": [12, 13, 14], "camera_id": 6, "camera_position_offset": [6, 12, 13, 14], "camera_resolut": [3, 6, 12, 13, 14], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26], "cannon": 24, "cannot": 4, "capabl": [1, 15], "captur": 6, "capture_imag": [3, 6], "cardin": 1, "cascad": 13, "case": 1, "caus": 5, "caveat": 10, "cd_0": 8, "cdot": 5, "ceil": 22, "center": 6, "cf2x": 13, "chang": [1, 4, 10, 13], "check": [3, 10], "chord": 8, "cinemat": 6, "cite": 27, "cl_alpha_2d": 8, "class": [1, 2, 11, 15, 17, 18, 19, 20, 21, 22, 24, 25], "click": 0, "client": [3, 4, 5, 6, 7, 8, 9], "close": [1, 10, 23, 24, 25], "cmd": [3, 8], "cn": 4, "code": 10, "coeffici": [5, 8, 9], "collis": 10, "command": [3, 4, 8, 9, 12, 17, 19, 20, 24], "command_id": 8, "command_sign": 8, "common": 10, "compat": [17, 20, 21], "complet": [17, 20, 21], "complic": 2, "compon": [1, 2, 3, 4, 5, 6, 7, 8, 9], "comprehens": [2, 3], "comput": [5, 9], "compute_rot": 7, "concaten": 3, "concis": [5, 9], "conda": 0, "condit": 8, "cone": 24, "configur": [2, 10, 13, 26], "consid": [3, 17, 20, 21, 24], "consist": 13, "constant": [4, 7, 8, 9, 17, 20, 21], "construct": [2, 3], "consult": 10, "contact": 10, "contact_arrai": 10, "contain": 10, "context_length": [17, 20, 21], "control": [1, 3, 11, 19, 20, 24], "control_hz": [3, 10, 12, 13, 14], "control_period": 3, "controlclass": [3, 13], "controller_constructor": [3, 13], "controller_id": [3, 13], "conveni": [4, 8, 9], "convert": [4, 8, 9], "core": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15], "correct": 8, "correspond": [10, 14], "counter": 9, "coupl": 0, "crash": [18, 19, 25], "creat": 3, "creativ": 10, "crucial": 4, "current": [4, 6, 7, 8, 9, 10, 12, 13, 14], "custom": [2, 3, 17, 20, 21, 26], "cycl": [4, 9], "damag": 24, "damage_per_hit": 24, "damp": 3, "datasheet": 14, "deal": 24, "debug": [3, 10], "def": [3, 15], "default": [10, 11, 13, 16, 23], "defin": [1, 3, 9, 10, 15], "deflect": [8, 10, 14], "deflection_limit": 8, "degre": [6, 7, 8], "denomin": 10, "densiti": 5, "depend": [3, 4, 5, 6, 9, 10, 15], "deplet": 4, "depth": 6, "depthimg": [3, 6], "describ": [1, 13, 14], "descript": 11, "design": 2, "desir": 1, "desktop": 0, "detail": 0, "develop": 0, "diagon": 4, "dict": [3, 10, 15, 17, 20, 21], "dictionari": 10, "differ": [4, 7, 10, 13, 16, 23], "difficult": 5, "direct": [1, 4, 5, 8, 19, 20], "directli": [12, 24], "directori": 3, "dirnam": 3, "disabl": 3, "disable_artificial_damp": 3, "disconnect": 15, "discret": 26, "displai": 3, "distanc": [6, 17, 20, 21, 22], "do": [3, 9, 10, 15], "document": [2, 3, 13, 26], "doe": [4, 5, 6, 7, 9, 10], "dogfight": 24, "domain": 1, "don": [1, 3], "down": 0, "download": 0, "downtilt": 6, "drag": [5, 8], "drag_coef": 5, "driven": 9, "drone": [1, 2, 4, 5, 6, 8, 9, 12, 13, 14, 18, 19, 26], "drone_index": 10, "drone_model": [3, 10, 12, 13, 14], "drone_opt": 10, "drone_path": 3, "drone_typ": [1, 10, 15], "drone_type_map": 10, "droneclass": [3, 10, 15], "drop": 20, "dtype": [3, 15], "duti": [4, 9], "dynam": [9, 13], "each": [1, 2, 3, 4, 5, 7, 8, 9, 10, 24, 25], "easier": [2, 17, 20, 21], "easili": 9, "east": 1, "effect": [6, 8, 21, 24], "elabor": 1, "elaps": 10, "elapsed_im": 10, "electr": 9, "element": [4, 10], "elsewher": 2, "enabl": 3, "encourag": 0, "end": [3, 12, 13, 14], "endpoint": 10, "enemi": 24, "engin": [4, 10, 26], "enough": [3, 10], "entiti": 10, "enu": 1, "env": [1, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "environ": [1, 6, 10, 15, 27], "equat": 5, "equival": 10, "essenti": 1, "et": 8, "eta": 8, "etc": 10, "euler": [3, 10, 17, 18, 19, 20, 21, 22, 25], "even": 10, "everi": [1, 7, 10], "everyth": [0, 12, 13, 14], "exact": [4, 9], "exampl": [0, 2, 3, 15], "except": 9, "exist": 5, "expand": 0, "experienc": [5, 10], "express": 3, "extent": 1, "extinguish": 4, "extract": 14, "f": 3, "f_i": 5, "factor": 8, "falcon": 14, "fall": [5, 22], "fals": [3, 6, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 24, 25], "familiar": 5, "fast": [17, 20, 21], "fastest": 23, "featur": 6, "field": [6, 10, 15], "figur": 5, "file": [3, 12, 14], "final": 1, "finlet": 14, "finlet_i": 22, "finlet_rol": 22, "finlet_x": 22, "fire": 24, "first": [0, 1, 7, 10, 14], "fix": [8, 12], "fixedw": [10, 11, 14], "fixedwing_env": [17, 24], "fixedwing_opt": 10, "fixedwing_waypoints_env": 17, "fixedwingwaypointsenv": 17, "flap": 8, "flap_to_chord": 8, "flatten": 2, "flattenwaypointenv": [17, 20, 21], "fledg": 0, "flexibl": [1, 26], "fli": 24, "flight": [1, 3, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 25], "flight_dome_s": [17, 18, 19, 20, 21, 24, 25], "flight_mod": [10, 17, 18, 19, 20, 21, 25], "float": [3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "floor": 10, "fluctuat": [4, 9], "fly": [17, 18, 19, 20, 21, 22, 24, 25], "focu": 6, "folder": 3, "follow": [1, 3, 5, 7, 15], "forc": [4, 5, 8, 9], "form": 3, "forward_unit": 8, "found": [2, 3], "four": 13, "fov": 6, "frac": 5, "frame": [1, 3, 4, 5, 10], "from": [1, 3, 4, 6, 7, 9, 10, 14, 15, 17, 20, 21, 23, 24, 25], "front": 1, "frontal": 5, "fuel": [4, 9, 10, 22], "fuel_burn": 4, "fueltank_id": 4, "full": [4, 8, 24], "fulli": 0, "function": [2, 3, 10, 15], "g": 1, "gener": [3, 4, 5, 6, 7, 8, 9], "geometri": 14, "get": [3, 4, 7, 8, 9, 10, 20, 26], "get_joint_info": 3, "get_stat": [2, 3, 4, 5, 6, 7, 8, 9], "getbasepositionandorient": 3, "getbaseveloc": 3, "geteulerfromquaternion": 3, "getmatrixfromquaternion": 3, "gimbal": [4, 6, 9, 14, 22], "gimbal_command": 7, "gimbal_range_degre": 7, "gimbal_tau": 7, "gimbal_unit_1": 7, "gimbal_unit_2": 7, "give": 10, "go": [0, 22], "goal": [17, 18, 19, 20, 21, 22, 25], "goal_reach_angl": 21, "goal_reach_dist": [17, 20, 21], "goe": 10, "gracefulli": [1, 10], "graviti": 1, "ground": [1, 5, 10, 13, 19], "gun": 24, "gym_env": [16, 17, 18, 19, 20, 21, 22], "gymnasium": [17, 18, 19, 20, 21, 22], "ha": [1, 3, 10, 14, 24], "hand": [7, 9], "handl": [1, 8, 10, 12, 13, 14], "handler": [8, 10], "happen": 3, "have": [1, 2, 3, 4, 9, 10, 15, 17, 20, 21], "health": 24, "height": [6, 15], "help": 0, "here": [0, 10, 27, 28], "high": 24, "highli": [0, 1], "hit": [19, 24], "hook": 15, "horizon": 6, "horizont": [1, 12, 22], "horri": 27, "hour": 0, "hover": [16, 19, 25], "how": [10, 16, 17, 20, 21, 23, 24], "howev": [17, 20, 21], "human": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "hz": 10, "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], "id": [3, 4, 5, 6, 7, 8, 9, 10], "idea": 5, "ie": [18, 21, 25], "ignit": [4, 14, 22], "illustr": 5, "imag": [6, 10], "immedi": [17, 20, 21], "implement": [2, 3, 4, 5, 13, 15], "implicit": 6, "import": [1, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "includ": [12, 13, 14, 17, 20, 21], "index": [1, 4, 10], "indic": 4, "individu": 5, "inertia": 4, "infin": 6, "info": [16, 23, 24, 25], "inform": [2, 3, 10], "inherit": 3, "initi": [3, 12, 13, 14, 15, 16, 23], "innocent": 27, "insert": [23, 24, 25], "inspir": 13, "instanc": [10, 12, 13, 14], "instanced_control": 3, "instanti": [1, 10], "instead": [6, 7, 10, 24], "int": [3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25], "integ": [3, 4, 6, 8, 9, 10], "interact": [17, 18, 19, 20, 21, 22, 24, 25], "interfac": 3, "interstag": 14, "introduc": [19, 20], "invalid": 10, "invari": 15, "ipsum": 15, "is_tracking_camera": 6, "its": [1, 24], "itself": [1, 3, 5, 6, 13], "jame": 27, "jet": 27, "jim": 27, "joint": 3, "journal": 27, "jun": 27, "just": [0, 1], "keep": 19, "kei": [3, 10], "kg": [5, 12], "khan": 8, "kindli": 28, "king": 27, "kwarg": 15, "lab": 13, "last": 10, "latenc": [19, 20], "later": 10, "latest": 0, "launch": 14, "law": 3, "lead": 10, "learn": [16, 17, 20, 21, 23, 24, 27], "left": [1, 12], "let": 19, "lethal": 24, "lethal_angle_radian": 24, "lethal_dist": 24, "level": [8, 9, 24], "li": 1, "librari": [17, 20, 21, 26], "lift": 2, "lifting_surfac": [3, 8], "lifting_unit": 8, "liftingsurfac": [3, 8], "like": [1, 10, 15, 17, 20, 21], "likewis": 4, "limit": [4, 8], "lin_po": [3, 12, 13, 14], "lin_vel": [3, 12, 13, 14], "linear": [9, 10, 13], "link": [4, 5, 6, 7, 8, 9], "liquid": 4, "list": [4, 5, 8, 9, 10], "lit": 4, "liter": [17, 18, 19, 20, 21, 22], "load": [3, 4, 12, 14], "local": [1, 3, 5, 8, 13], "locat": [3, 4, 9], "lock": 6, "log": 15, "logarithm": 15, "long": [18, 19, 20, 25], "longest": [18, 19, 25], "look": 1, "loop": 10, "looprat": [3, 17, 18, 19, 20, 21, 22, 24, 25], "loos": 1, "lorem": 15, "lose": 24, "lowercas": 10, "m": [5, 10], "m1": 13, "m2": 13, "m3": 13, "m4": 13, "ma_fixedwing_dogfight_env": 24, "ma_quadx_hover_env": 25, "magnitud": 10, "mai": [2, 7, 10, 23], "main": [5, 6, 12], "maintain": 23, "make": [16, 17, 18, 19, 20, 21, 22], "mani": [17, 20, 21, 24], "map": [6, 8, 10, 12], "maquadxhoverenv": 23, "mass": [4, 14], "match": 21, "mathbf": 5, "mathemat": 2, "matmul": 3, "matric": [4, 7, 9], "matrix": [4, 6, 9], "mauro": 27, "max": 4, "max_displac": 22, "max_duration_second": [17, 18, 19, 20, 21, 22, 24, 25], "max_fuel_burn": 4, "max_fuel_r": 4, "max_inertia": 4, "max_rpm": 9, "max_thrust": [4, 9], "maximum": [4, 8, 9, 17, 18, 19, 20, 21, 22, 24, 25], "mean": 24, "meaning": 4, "meter": [1, 19, 20], "method": 2, "microsoft": 0, "min": 4, "min_thrust": 4, "minimum": 4, "missil": 24, "mode": [1, 3, 10, 11, 15, 17, 18, 19, 20, 21, 25], "model": [2, 3, 10, 11, 24], "model_dir": [3, 12, 13, 14], "modern": 24, "modifi": 4, "moment": 4, "more": [2, 3, 4, 5, 9, 10], "most": [17, 20, 21, 23], "motor": [2, 7, 12, 13, 19, 20], "motor_id": 9, "move": 5, "movement": 1, "much": [10, 19, 20, 24], "multi": [1, 23], "multiag": 25, "multipl": [8, 10], "multirotor": 13, "must": [0, 2, 3, 10], "my_paramet": 15, "mycustomdron": 10, "mywindfield": 15, "n": [1, 4, 5, 9, 10, 15], "nadjim": 27, "name": [2, 3, 10], "nativ": 16, "ndarrai": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 25], "need": [2, 4, 6, 7, 9], "neg": [8, 9], "net": 9, "new": [0, 10, 13], "nois": [4, 9, 15], "noise_ratio": [4, 9], "non": [17, 20, 21], "none": [3, 4, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 24, 25], "noqa": 16, "normal": [4, 5, 8, 9], "normal_area": 5, "north": 1, "nose": 24, "note": 10, "noth": 10, "now": 0, "np": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 25], "np_random": [3, 4, 5, 7, 8, 9, 12, 13, 14, 15], "num_boost": 4, "num_dron": [10, 25], "num_gimb": 7, "num_motor": 9, "num_surfac": 8, "num_target": [17, 20, 21], "number": [1, 3, 4, 5, 7, 8, 9, 10, 17, 20, 21], "numpi": [0, 1, 10, 15, 25], "o": 3, "ob": [16, 17, 18, 19, 20, 21, 22], "object": [1, 6, 8, 10], "observ": [16, 17, 20, 21, 23, 24, 25], "obtain": [4, 9], "off": 4, "offer": [11, 26], "offset": 6, "oh": 10, "onboard": 3, "one": [10, 12, 14], "onli": [10, 12, 13, 14, 21, 22, 24], "open": 3, "optim": 10, "option": [0, 1, 2, 4, 13, 26], "order": [4, 10], "orient": [1, 3, 6, 10, 15, 25], "orthogon": 7, "other": [3, 7], "otherwis": 3, "our": 27, "out": [1, 10, 24], "output": [3, 4, 9], "outsid": [10, 24], "overrid": 15, "overview": 0, "own": [1, 2, 3, 15], "p": [3, 4, 5, 6, 7, 8, 9, 12, 13, 14], "pad": [17, 20, 21, 22], "page": 10, "pair": 7, "parallelenv": 23, "param": 3, "param_path": 3, "paramet": [3, 4, 6, 10, 12, 13, 14, 15], "parameter": 4, "pass": [1, 8, 10], "path": 3, "per": 24, "percent": 4, "perform": 24, "period": [4, 5, 7, 8, 9], "persist": 1, "pettingzoo": 24, "phang": 27, "phyiscs_hz": 3, "physic": [1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 24, 26], "physics_camera_ratio": 3, "physics_control_ratio": 3, "physics_hz": [3, 4, 9, 10, 12, 13, 14], "physics_period": [3, 4, 5, 7, 8, 9], "physics_step": [3, 10, 12, 13, 14], "physics_upd": [2, 3, 4, 5, 6, 7, 8, 9], "pid": 13, "pip3": 0, "pitch": [3, 12, 17], "pixel": 6, "place": 8, "plain": 5, "plane": 1, "platform": 11, "plu": [4, 9, 15], "point": [1, 4, 6, 24], "pointer": [3, 10], "polici": [23, 24, 25], "popular": [15, 17, 20, 21], "posit": [1, 3, 8, 10, 13, 15, 25], "possibl": [0, 1, 10, 15, 17, 18, 19, 20, 21, 25], "presenc": 4, "present": [4, 9], "primari": 5, "primitive_dron": [10, 13], "principl": 5, "print": 10, "print_all_bodi": 10, "prior": 0, "produc": [4, 9], "propel": 9, "properti": [3, 4, 6, 10, 14, 15], "proport": 4, "propuls": 4, "provid": [0, 3, 10, 12, 13, 14, 15, 16, 23], "put": 1, "pwm": [4, 9, 19, 20], "px4": 13, "pybullet": [0, 3, 4, 5, 6, 7, 8, 9, 10, 13], "pyflyt": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 23, 24, 25, 27], "python": [0, 1, 15, 26], "pz_env": [23, 24, 25], "q": 13, "quad": 13, "quadcopt": 26, "quadrotor": [13, 18, 19, 20, 21], "quadx": [1, 10, 11, 15, 16], "quadx_env": [18, 19, 20, 21, 25], "quadx_hover_env": 18, "quadx_opt": 10, "quadx_pole_balance_env": 19, "quadx_pole_waypoints_env": 20, "quadx_waypoints_env": 21, "quadxhoverenv": 18, "quadxpolebalanceenv": 19, "quadxpolewaypointsenv": 20, "quadxwaypointsenv": 21, "quaternion": [17, 18, 19, 20, 21, 22, 25], "queri": 10, "r": 13, "radian": [1, 21], "ragdol": 10, "rais": 3, "ramp": [4, 8, 9], "randn": 15, "random": [3, 4, 5, 7, 8, 9, 15], "randomst": [3, 4, 5, 7, 8, 9, 12, 13, 14, 15], "rang": [1, 7, 10, 15, 24], "rate": [3, 4, 18, 21, 25], "ratio": [4, 8, 9], "raw": 10, "rb": 3, "re": 5, "reach": [1, 17, 20, 21], "read": [12, 14], "readabl": [17, 20, 21], "readili": [4, 9], "real": 8, "realpath": 3, "reason": 23, "receiv": [3, 10], "recommend": [0, 10], "redirect": [4, 7, 9], "refer": [1, 2, 5, 15, 28], "referenc": 5, "regist": [10, 13], "register_all_new_bodi": 10, "register_control": [3, 11, 13], "register_wind_field_funct": 15, "registered_base_control": 3, "registered_control": 3, "reignit": 4, "reimplement": 2, "reinforc": [16, 17, 20, 21, 23, 24, 27], "rel": [1, 4], "relev": [1, 2, 3, 6, 10], "reli": 4, "remain": [4, 10, 22], "render": [1, 10, 15, 26], "render_mod": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "render_resolut": [17, 18, 19, 20, 21, 22], "repeatedli": 1, "report": 14, "repositori": 0, "repres": [1, 3, 4, 5, 6, 7, 8, 9, 10], "requir": [2, 9], "research": 27, "reserv": 3, "reset": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "resetbasepositionandorient": 3, "reshap": 3, "resolut": 6, "resolv": 5, "result": [5, 17, 20, 21], "return": [2, 3, 15], "revers": 9, "rew": [17, 18, 19, 20, 21, 22], "reward": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "rgb_arrai": [17, 18, 19, 20, 21, 22], "rgba": 6, "rgbaimg": [3, 6], "rgbimg": 10, "rho": 5, "right": [7, 9, 12], "rng": 10, "rocket": [4, 10, 11, 26], "rocket_brick": 3, "rocket_env": 22, "rocket_landing_env": 22, "rocket_opt": 10, "rocketbrick": 10, "rocketlandingenv": 22, "roll": [3, 12, 17], "rosetta": [2, 3], "rotat": [3, 4, 7, 9], "rotation_matrix": [5, 8], "rotation_vector": 7, "round": 10, "rpm": 9, "rpy": [1, 10], "rpyt": 24, "rule": [7, 9], "run": [0, 3, 12, 13, 14], "safe_load": 3, "same": [3, 5, 10], "sampl": [4, 9, 10, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "scale": 14, "scroll": 0, "second": [7, 10, 15], "section": [0, 1, 2, 3, 10], "seed": [10, 23], "segimg": [3, 6], "segment": 6, "select": [0, 13], "self": [3, 10, 15], "sequenc": [5, 10, 17, 20, 21], "seri": [4, 5, 7, 9], "serv": [1, 2, 3], "servo": 7, "set": [0, 1, 2, 3, 4, 7, 12, 13, 14, 15, 17, 20, 21], "set_all_setpoint": 10, "set_arm": 10, "set_mod": [1, 3, 10, 11, 12, 13, 14, 15], "set_setpoint": [1, 10], "setpoint": [1, 3, 10, 12, 14], "setup": 15, "sever": [3, 4, 11, 15], "shape": 15, "ship": 10, "shit": 10, "should": [3, 4], "show": 5, "shown": [1, 5], "sign": 5, "similar": [9, 10, 24], "similarli": [0, 10], "simpl": [0, 18, 19, 25], "simple_wind": 15, "simpli": [8, 10, 15], "simul": [3, 4, 5, 6, 7, 8, 9, 10, 15, 17, 18, 19, 20, 21, 22, 24, 25, 27], "sinc": 10, "singl": [1, 8, 12], "size": [17, 18, 19, 20, 21, 24, 25], "skip": [0, 3], "slope": 8, "small": 12, "so": [10, 15], "solid": 4, "some": [2, 3, 4, 9, 15], "someth": 1, "sourc": [0, 4, 10], "space": [1, 14, 17, 20, 21], "spacex": 14, "span": 8, "spars": [17, 18, 19, 20, 21, 22, 24, 25], "sparse_reward": [17, 18, 19, 20, 21, 22, 24, 25], "spawn": [1, 24], "spawn_height": 24, "special": 2, "specif": 13, "specifi": [3, 4, 17, 20, 21, 25], "stabl": [17, 20, 21], "stack": 3, "stage": 14, "stall": 8, "standard": [4, 9], "start": [1, 3, 10, 15, 24, 25, 26], "start_orn": [1, 3, 10, 12, 13, 14, 15, 25], "start_po": [1, 3, 10, 12, 13, 14, 15, 25], "starting_fuel_ratio": [4, 11, 14], "starting_veloc": [10, 11, 12], "state": [2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15], "state_upd": [2, 3, 4, 5, 6, 7, 8, 9], "stateless": 15, "step": [1, 3, 4, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "steppabl": 26, "stone": [2, 3], "store": 10, "str": [3, 10, 12, 13, 14, 24, 25], "straight": 0, "strength": 15, "string": [1, 10], "studio": 0, "subclass": 3, "submodul": 2, "subscript": 1, "suggest": 2, "super": [3, 15], "support": [0, 15, 23, 26], "surfac": [2, 5, 10], "surface_id": 8, "surface_veloc": 8, "swee": 27, "system": [13, 24], "t": [1, 3, 10, 13, 18, 21, 25], "tai": 27, "tai2023pyflyt": 27, "tail": 12, "take": 4, "tank": 4, "target": [17, 18, 19, 20, 21, 25], "target_duty_cycl": [4, 9], "task": 10, "tau": [4, 8, 9], "templat": 3, "term": [6, 10, 17, 18, 19, 20, 21, 22], "termin": [16, 22, 23, 24, 25], "test": [16, 23, 26], "text": 5, "th": 10, "theh": 6, "thei": [3, 4, 5, 15], "them": [0, 1, 5, 10, 17, 20, 21], "thermal": 15, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25], "thing": [1, 3, 10, 12, 13, 14], "think": 26, "those": [17, 20, 21], "three": [1, 5, 10], "throttl": [4, 9, 14, 22], "throttleabl": [4, 14], "through": [0, 1, 5, 8, 10, 12, 13, 14], "throughout": 10, "thrust": [3, 4, 7, 9, 10, 12, 13, 14, 17, 18, 21, 25], "thrust_coef": 9, "thrust_unit": [4, 9], "tilt": 6, "time": [4, 7, 8, 9, 10, 15, 17, 18, 19, 20, 21, 22, 24, 25, 26], "titl": 27, "too": [19, 20], "tool": 0, "toronto": 13, "torqu": [4, 8, 9], "torque_coef": 9, "total_fuel_mass": 4, "toward": [17, 20, 21], "track": [6, 10], "train": 24, "trait": [4, 10], "transform": 4, "travel": 8, "true": [1, 10, 15, 24], "trunc": [17, 18, 19, 20, 21, 22], "truncat": [16, 23, 24, 25], "tube": 12, "tupl": [3, 6, 8, 12, 13, 14, 17, 18, 19, 20, 21, 22], "tutori": [2, 3], "two": [1, 5, 7, 13], "type": [1, 3, 13], "typic": [4, 10], "u": 13, "uav": [8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 25, 27], "uav_id": [4, 5, 6, 8, 9], "unarm": 10, "under": [8, 10], "underli": [3, 10, 19, 20], "uniformli": 5, "uniqu": [4, 10], "unit": [4, 7, 8, 9], "univers": 13, "unstabl": 10, "up": [1, 4, 9], "updat": [3, 5, 8, 10, 12, 13, 14], "update_control": [3, 11, 12, 13, 14], "update_last": [3, 6, 11, 12, 13, 14], "update_phys": [2, 3, 11, 12, 13, 14], "update_st": [2, 3, 8, 11, 12, 13, 14], "updraft": 15, "upright": 19, "uptil": 6, "upward": 1, "urdf": 3, "us": [0, 1, 3, 4, 5, 7, 8, 9, 10, 13, 15, 17, 18, 19, 20, 21, 22, 24, 25], "usabl": 3, "usag": [4, 15, 16, 23], "use_camera": [3, 10, 12, 13, 14], "use_gimb": [3, 6, 12, 13, 14], "use_yaw_target": 21, "user": [0, 1, 10, 15], "usual": [0, 3, 8, 15], "util": 1, "v": [5, 13], "v1": 14, "v2": 16, "v_i": 5, "v_x": 5, "v_y": 5, "v_z": 5, "valid": 10, "valu": [3, 4, 6, 7, 9, 14], "valueerror": 3, "vari": 15, "variabl": 15, "variant": 11, "varieti": 4, "variou": [1, 2, 10, 13, 15, 16, 23], "vec3": 8, "vector": [4, 5, 7, 8, 9, 10, 14], "vehicl": [3, 12, 13, 14], "vel": 3, "veloc": [5, 8, 10, 13, 15, 22], "veri": [2, 3, 10], "vertic": [12, 15], "via": 10, "view": 6, "view_mat": 6, "virtual": 0, "viscos": 8, "visit": 26, "visual": 0, "vp": [13, 18, 21, 25], "vq": [13, 18, 21, 25], "vr": [13, 18, 21, 25], "vx": 13, "vy": 13, "vz": 13, "w": 13, "wai": 0, "want": 10, "we": [0, 1, 3, 4, 10], "weapon": 24, "well": [1, 15, 23], "were": 14, "what": 10, "wheel": 0, "when": [6, 10, 24], "where": [0, 1, 3, 4, 5, 6, 7, 10, 15, 17, 20, 21, 23, 24, 25], "whether": [3, 4, 6, 10, 17, 18, 19, 20, 21, 22, 24, 25], "which": [5, 10, 17, 20, 21], "while": [0, 2, 3, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25], "whole": 10, "wide": 23, "width": [6, 24], "wind": 10, "wind_field": 15, "wind_opt": [10, 15], "wind_typ": [10, 15], "windfield": [10, 15], "windfieldclass": [10, 15], "wing": [8, 12], "wish": [0, 10, 27], "within": [2, 6, 10, 24], "without": [2, 17, 20, 21], "won": 10, "wong": 27, "work": 27, "world_scal": 10, "would": [17, 20, 21, 23, 24, 25], "wrapper": [17, 20, 21], "x": [1, 3, 5, 10, 13, 14, 17, 20, 21, 22, 25], "xx": 0, "xy": 15, "xyz": 5, "xz_b": 5, "xz_g": 5, "y": [1, 3, 5, 10, 13, 14, 17, 20, 21, 22], "yaml": [3, 12, 14], "yaw": [1, 3, 12, 14, 17, 21], "year": [0, 27], "ymmv": 0, "you": [0, 1, 10, 17, 20, 21, 23, 24, 25, 26, 27], "your": [2, 3, 23, 24, 25], "z": [1, 3, 5, 10, 13, 15, 17, 20, 21], "zero": [3, 8], "zeros_lik": [10, 15]}, "titles": ["Documentation", "Core", "Abstractions", "Base Drone Class", "Boosters", "Boring Bodies", "Camera", "Gimbals", "Lifting Surfaces", "Motors", "Aviary", "Drones", "Fixedwing", "QuadX", "Rocket", "Wind", "Gymnasium Environments", "PyFlyt/Fixedwing-Waypoints-v2", "PyFlyt/QuadX-Hover-v2", "PyFlyt/QuadX-Pole-Balance-v2", "PyFlyt/QuadX-Pole-Waypoints-v2", "PyFlyt/QuadX-Waypoints-v2", "PyFlyt/Rocket-Landing-v2", "PettingZoo Environments", "MAFixedwingDogfightEnv", "MAQuadXHoverEnv", "PyFlyt - UAV Simulation Environments for Reinforcement Learning Research", "Paper Publication", "Tutorials"], "titleterms": {"abstract": 2, "access": 10, "api": [1, 10], "architectur": 1, "arg": [3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25], "attribut": [3, 10, 15], "aviari": 10, "axi": 1, "balanc": 19, "base": 3, "bodi": 5, "booster": 4, "bore": 5, "camera": 6, "citat": 27, "class": [3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14], "complex": 15, "control": [10, 12, 13, 14], "convent": 1, "core": [1, 10], "custom": [10, 15], "default": [3, 15], "descript": [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 21, 22, 24, 25, 26], "do": 0, "document": 0, "drone": [3, 10, 11], "environ": [0, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], "exampl": 10, "fixedw": [12, 17], "flatten": [17, 20, 21], "gener": 1, "gimbal": 7, "gymnasium": [0, 16], "hover": 18, "i": 0, "individu": 10, "instal": 0, "land": 22, "learn": 26, "lift": 8, "linux": 0, "looprat": 10, "maco": 0, "mafixedwingdogfightenv": 24, "maquadxhoverenv": 25, "mathemat": 8, "method": [3, 10, 15], "mode": [12, 13, 14], "model": [8, 12, 13, 14, 15], "more": [0, 15], "motor": 9, "multi": 10, "option": [3, 10, 17, 18, 19, 20, 21, 22, 24, 25], "overview": [11, 15], "paper": 27, "pettingzoo": [0, 23], "physic": 10, "pole": [19, 20], "preimplement": 15, "preprint": 27, "public": 27, "pyflyt": [17, 18, 19, 20, 21, 22, 26], "quadx": [13, 18, 19, 20, 21], "reinforc": 26, "requir": [3, 15], "research": 26, "return": [4, 6, 7, 8, 9, 10], "rocket": [14, 22], "rule": 24, "set": 10, "setup": 10, "simpl": 15, "simul": 26, "singl": 10, "spawn": 10, "step": 10, "surfac": 8, "task": [17, 18, 19, 20, 21, 22, 24, 25], "tutori": 28, "type": 10, "uav": 26, "usag": [2, 10, 17, 18, 19, 20, 21, 22, 24, 25], "v2": [17, 18, 19, 20, 21, 22], "variant": 13, "want": 0, "waypoint": [17, 20, 21], "wind": 15, "window": 0}}) \ No newline at end of file diff --git a/docs_source/documentation/gym_envs/quadx_pole_balance_env.md b/docs_source/documentation/gym_envs/quadx_pole_balance_env.md index 018067b2..be13772a 100644 --- a/docs_source/documentation/gym_envs/quadx_pole_balance_env.md +++ b/docs_source/documentation/gym_envs/quadx_pole_balance_env.md @@ -1,6 +1,6 @@ # `PyFlyt/QuadX-Pole-Balance-v2` -```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/pole_balance.gif +```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_pole_balance.gif :width: 50% ``` diff --git a/docs_source/documentation/gym_envs/quadx_pole_waypoints_env.md b/docs_source/documentation/gym_envs/quadx_pole_waypoints_env.md index a318794d..aa196539 100644 --- a/docs_source/documentation/gym_envs/quadx_pole_waypoints_env.md +++ b/docs_source/documentation/gym_envs/quadx_pole_waypoints_env.md @@ -1,6 +1,6 @@ # `PyFlyt/QuadX-Pole-Waypoints-v2` -```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_waypoint.gif +```{figure} https://raw.githubusercontent.com/jjshoots/PyFlyt/master/readme_assets/quadx_pole_waypoint.gif :width: 50% ``` diff --git a/pyproject.toml b/pyproject.toml index 3ff7cdcd..73512851 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "PyFlyt" -version = "0.23.0" +version = "0.24.0" authors = [ { name="Jet", email="taijunjet@hotmail.com" }, ] @@ -49,5 +49,8 @@ reportMissingImports = "none" ignore = ["D401", "D404", "D203", "D213"] select = ["E4", "E7", "E9", "F", "I", "D"] +[tool.ruff.lint.pydocstyle] +convention = "google" + [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] diff --git a/readme_assets/pole_balance.gif b/readme_assets/quadx_pole_balance.gif similarity index 100% rename from readme_assets/pole_balance.gif rename to readme_assets/quadx_pole_balance.gif diff --git a/readme_assets/quadx_pole_waypoint.gif b/readme_assets/quadx_pole_waypoint.gif new file mode 100644 index 00000000..2f527b91 Binary files /dev/null and b/readme_assets/quadx_pole_waypoint.gif differ