QuadX#
Model Description#
The QuadX UAV describes a multirotor UAV in the Quad-X configuration as described by ArduPilot and PX4. It consists of four motors with implementations for cascaded PID controllers.
Variants#
Two different models of the QuadX drone are provided.
This option can be selected through the drone_model parameter.
The available models are:
- cf2x(default)
- primitive_drone
Control Modes#
The control mode of the QuadX can be changed using the Aviary.set_mode or specifically calling set_mode on the drone instance itself.
Inspired by pybullet drones by University of Toronto’s Dynamic Systems Lab.
The various modes available are documented below.
Class Description#
- 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 | Generator = 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. - register_controller(controller_id: int, controller_constructor: type[ControlClass], base_mode: int) None#
- Registers a new controller for the UAV. - Parameters:
- controller_id (int) – controller_id 
- controller_constructor (type[ControlClass]) – controller_constructor 
- base_mode (int) – base_mode 
 
 
 - reset() None#
- Resets the vehicle to the initial state. 
 - set_mode(mode: int) None#
- Sets the current flight mode of the vehicle. - flight modes:
- -1: m1, m2, m3, m4 
- 0: vp, vq, vr, T 
- 1: p, q, r, vz 
- 2: vp, vq, vr, z 
- 3: p, q, r, z 
- 4: u, v, vr, z 
- 5: u, v, vr, vz 
- 6: vx, vy, vr, vz 
- 7: x, y, r, z 
 
- breakdown:
- vp, vq, vr = angular velocities 
- p, q, r = angular positions 
- u, v, w = local linear velocities 
- x, y, z = linear positions 
- vx, vy, vz = ground linear velocities 
- T = thrust 
 
 - Parameters:
- mode (int) – flight mode 
 
 - update_control(physics_step: int) None#
- Runs through controllers. - Parameters:
- physics_step (int) – the current physics step 
 
 - update_last(physics_step: int) None#
- Updates things only at the end of Aviary.step(). - Parameters:
- physics_step (int) – the current physics step 
 
 - update_physics() None#
- Updates the physics of the vehicle. 
 - update_state() None#
- Updates the current state of the UAV. - This includes: ang_vel, ang_pos, lin_vel, lin_pos.