udaan.models.mujoco.quadrotor_fleet module

N-quadrotor fleet for comparing controllers side-by-side.

class udaan.models.mujoco.quadrotor_fleet.QuadrotorFleet[source]

Bases: BaseModel

Multiple independent quadrotors in a single MuJoCo scene.

Each quadrotor has its own controllers and can optionally carry an added mass at an offset (for robustness testing).

Usage:

fleet = QuadrotorFleet(num_quadrotors=3, render=True)
fleet[0].position_controller = MyController(...)

# Add disturbance to quad 1: 0.25kg at [0.2, 0.2, -0.05]
fleet = QuadrotorFleet(
    num_quadrotors=3,
    render=True,
    disturbances={
        1: {"mass": 0.25, "offset": [0.2, 0.2, -0.05]},
    },
)
fleet.simulate(tf=10, position=np.array([0, 0, 1]))
__init__(**kwargs)[source]
reset(**kwargs)[source]
simulate(tf, **kwargs)[source]

Run simulation with each quadrotor using its own controllers.

step(u)[source]

Step all quadrotors. u is (4*nQ,) wrench vector.