Skip to main content

Quadrotor dynamics and control for cable-suspended payload systems

Project description

udaan — aerial robotics framework

A Python mujoco based models and controllers for quadcopter cable-suspended payload systems.

CI License Python 3.10+ MuJoCo


Quadrotor Quad + Payload (tendon) Quad + Payload (links)

Multi-Quad Pointmass Multi-Quad Rigidbody Fleet L1 Comparison


Developed as part of the thesis: Dynamics and Control for Collaborative Aerial Manipulation (Kotaru, 2022). Original research code: vkotaru/floating_models. This package is the cleaned-up public release, refactored with Claude.

Features

:helicopter: Quadrotor dynamics Single and multi-vehicle SE(3) rigid-body simulation
:control_knobs: Geometric controllers PD on SE(3), L1 adaptive on SO(3), force allocation
:chains: Cable-suspended payloads Tendon and multi-link cable models with S2 pendulum dynamics
:people_holding_hands: Cooperative transport N-quadrotor point-mass and rigid-body payload systems
:joystick: MuJoCo integration Physics-backed simulation with GLFW rendering and GIF recording
:straight_ruler: Manifold library SO(3), S2 exponential maps, geodesic stepping, config errors
:chart_with_upwards_trend: Trajectory generation Polynomial, circular, Lissajous, and smooth reference trajectories
:desktop_computer: CLI interface udaan run commands for quick demos and experiments

Installation

pip install -e .

MuJoCo is included as a core dependency. VPython visualization is optional:

pip install -e ".[all]"

Quick Start

CLI

udaan run quadrotor -t 10                             # quadrotor with geometric control
udaan run quad-payload -t 10 -m tendon                # quadrotor + cable-suspended payload
udaan run multi-quad -n 3 -t 10                       # multi-quadrotor cooperative payload
udaan run multi-quad-rigid -t 10                      # multi-quadrotor rigid-body payload
udaan run fleet --demo l1-comparison -t 10            # L1 vs PD controller comparison
udaan run fleet --demo gain-sweep -t 10               # PD gain tuning comparison
udaan run quadrotor -t 5 -r out.gif                   # record to GIF

Python

import udaan as U
import numpy as np

mdl = U.models.mujoco.Quadrotor(render=True)
mdl.simulate(tf=10, position=np.array([1., 1., 0.]))

Documentation

:pushpin: Controller roadmap
Controller System Status Reference
Geometric PD (SE(3)) Quadrotor :white_check_mark: Implemented Lee, Leok, McClamroch 2010
Geometric L1 Adaptive (SO(3)) Quadrotor :white_check_mark: Implemented Kotaru, Wu, Sreenath 2020
Geometric PD (SE(3) x S2) Quad + Payload :white_check_mark: Implemented Sreenath, Lee, Kumar 2013
Propeller Force Allocation Quadrotor :white_check_mark: Implemented
Differential Flatness Quad + Payload :construction: Partial (flat2state utils) Sreenath, Lee, Kumar 2013
NLMPC (CasADi) Quadrotor :memo: Planned
VBLMPC Quad + Payload :memo: Planned Kotaru, Sreenath 2020
Geometric PD Multi-Quad Payload :memo: Planned Lee 2014
RL (Gymnasium) All :memo: Planned
:package: Package API reference

Base Models (udaan.models.base)

Math-only dynamics, no simulator dependency.

Model State Space Description
Quadrotor SE(3) Rigid body quadrotor, wrench/accel/prop-force inputs
QuadrotorCSPayload SE(3) x S2 Quadrotor + cable-suspended point-mass payload
FloatingPointmass R3 3D point mass with gravity
S2Pendulum S2 Spherical pendulum on the 2-sphere
PointmassSuspendedPayload R3 x S2 Single point-mass agent with suspended payload
MultiPointmassSuspendedPayload R3 x (S2)^n Multiple point-mass agents, shared payload

MuJoCo Models (udaan.models.mujoco)

MuJoCo-backed physics with GLFW visualization.

Model Description
Quadrotor Single quadrotor
QuadrotorCSPayload Quad + payload (tendon or links cable model)
MultiQuadrotorCSPointmass N quadrotors, shared point-mass payload
MultiQuadRigidbody N quadrotors, shared rigid-body payload
QuadrotorFleet N independent quadrotors for controller comparison

Manifold Library (udaan.manif)

Class/Function Description
SO3 Rotation matrix with exponential map stepping
S2 Unit sphere with geodesic stepping, config error
hat / vee Skew-symmetric matrix operators
rodrigues_expm Rodrigues rotation formula
expm_taylor_expansion Matrix exponential Taylor approximation

Utilities (udaan.utils)

Module Description
trajectory Smooth, polynomial, circular, and Lissajous trajectory generators
flat2state Differential flatness maps for quadrotor and payload systems
assets MuJoCo XML model generator
vfx VPython-based visualization (base models)

License

BSD 3-Clause License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

udaan-1.0.1.tar.gz (61.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

udaan-1.0.1-py3-none-any.whl (87.0 kB view details)

Uploaded Python 3

File details

Details for the file udaan-1.0.1.tar.gz.

File metadata

  • Download URL: udaan-1.0.1.tar.gz
  • Upload date:
  • Size: 61.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for udaan-1.0.1.tar.gz
Algorithm Hash digest
SHA256 89a5d2b4ce5946f282e45550210965636214d0972c05079b2a7e611cdcf4b353
MD5 a208fdeb24df9a76fb7fec1bda92059e
BLAKE2b-256 56f193182d488c9870d7fc6e3526589aee355f208d038ad648c1aea73eae837f

See more details on using hashes here.

File details

Details for the file udaan-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: udaan-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 87.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for udaan-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7466b48545f1e46e1a84b6ddfc29494419f42eb1e74fc9679c52b45a8b648516
MD5 a1e6808234021e2b4609437633c2f536
BLAKE2b-256 4e24f2f4131fd900c07f4201682fca089ffd7eec0c8e696052dc1a37350593be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page