udaan.models.quadrotor_cspayload package

Submodules

Module contents

Quadrotor with cable-suspended payload models — base dynamics, VPython visualization, and MuJoCo physics.

class udaan.models.quadrotor_cspayload.QuadrotorCsPayloadBase[source]

Bases: object

Base quadrotor-cable-suspended payload model — pure dynamics, no rendering.

Supports multiple input types (acceleration, wrench, propeller forces) and force types (wrench, propeller forces). Controllers are pluggable via position_controller and attitude_controller properties.

FORCE_TYPE

alias of ForceType

INPUT_TYPE

alias of InputType

__init__(**kwargs)[source]
property attitude_controller
property cable_length: float
property inertia
property inertia_inv
property mass
property payload_controller
property payload_mass: float
property position_controller
reset(**kwargs)[source]
simulate(tf, **kwargs)[source]

Run closed-loop simulation to time tf.

step(u, desired_att=None)[source]

One outer step: repackage input, then run inner substeps.

class udaan.models.quadrotor_cspayload.QuadrotorCsPayloadMujoco[source]

Bases: QuadrotorCsPayloadBase

Quadrotor with cable-suspended payload backed by MuJoCo physics engine.

Overrides step/reset to use MuJoCo instead of Euler ZOH. Supports three cable modeling approaches:

  • TENDON: spatial tendon constraint (fast, less realistic)

  • LINKS: rigid cylinder links with ball joints (slower, most stable)

  • CABLE: MuJoCo 2.3+ composite cable (experimental)

class MODEL_TYPE[source]

Bases: Enum

CABLE = 2
TENDON = 1
__init__(**kwargs)[source]
property cable_length: float
property inertia
property mass
property payload_mass: float
reset(**kwargs)[source]
step(u, desired_att=None)[source]

Step MuJoCo simulation.

class udaan.models.quadrotor_cspayload.QuadrotorCsPayloadState[source]

Bases: object

Quadrotor with cable-suspended payload state.

__init__(position=<factory>, velocity=<factory>, orientation=<factory>, angular_velocity=<factory>, payload_position=<factory>, payload_velocity=<factory>, cable_attitude=<factory>, cable_angular_velocity=<factory>)
angular_velocity: TSO3
cable_angular_velocity: TS2
cable_attitude: S2
dq()[source]
orientation: SO3
payload_position: ndarray[tuple[Any, ...], dtype[floating]]
payload_velocity: ndarray[tuple[Any, ...], dtype[floating]]
position: ndarray[tuple[Any, ...], dtype[floating]]
reset()[source]
velocity: ndarray[tuple[Any, ...], dtype[floating]]
class udaan.models.quadrotor_cspayload.QuadrotorCsPayloadVfx[source]

Bases: QuadrotorCsPayloadBase

Quadrotor with cable-suspended payload and VPython 3D visualization.

__init__(**kwargs)[source]
reset(**kwargs)[source]
step(u, desired_att=None)[source]

One outer step: repackage input, then run inner substeps.