Gimbals#

Description#

The Gimbals component simulates a series of servo actuated gimbals. This is useful for redirecting the thrust from the Motors or Boosters components.

This component represents rotation about two different, arbitrary axes on a link, represented as gimbal_unit_1 and gimbal_unit_2. Rotation follows the right handed rotation rule.

Class Description#

class PyFlyt.core.abstractions.Gimbals(p: BulletClient, physics_period: float, np_random: RandomState, gimbal_unit_1: ndarray, gimbal_unit_2: ndarray, gimbal_tau: ndarray, gimbal_range_degrees: ndarray)#

A set of actuated gimbals.

The Gimbals component simulates a series of servo actuated gimbals. Each gimbal can rotate about two arbitrary axis that may not be orthogonal to each other.

Args:#

p (bullet_client.BulletClient): PyBullet physics client ID. physics_period (float): physics period of the simulation. np_random (np.random.RandomState): random number generator of the simulation. gimbal_unit_1 (np.ndarray): first unit vector that the gimbal rotates around. gimbal_unit_2 (np.ndarray): second unit vector that the gimbal rotates around. gimbal_tau (np.ndarray): gimbal actuation time constant. gimbal_range_degrees (np.ndarray): gimbal actuation range in degrees.

compute_rotation(gimbal_command: ndarray) ndarray#

Returns a rotation vector after the gimbal rotation.

Args:#

gimbal_command (np.ndarray): (num_gimbals, 2) array of floats between [-1, 1].

Returns:#

rotation_vector (np.ndarray): (num_gimbals, 3, 3) rotation matrices for all gimbals.

get_states() ndarray#

Gets the current state of the components.

Returns:#

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

physics_update()#

This does not need to be called for gimbals, call compute_rotation instead.

reset()#

Reset the gimbals.

state_update()#

This does not need to be called for gimbals.