Skip to main content

aerial-kit

A control stack for aerial robots covering multirotors and fixed-wing aircraft: airframe capabilities, actuator allocation/trim, 6-DOF and point-mass dynamics models, controllers (PID/LQR/MPC, and an L1 + TECS fixed-wing autopilot), and lateral/longitudinal guidance laws -- all pure numpy/scipy, no ROS and no matplotlib dependency.

It's the aerial_kit package inside the aerial-kit repo, a quadcopter-to-general-aerial-robotics control stack -- there, it's the shared layer imported by both a standalone Python simulator and ROS 2 flight nodes so they don't duplicate control code.

What's in it

  • aerial_kit.types -- SimState, ControlTarget, Capabilities, Wrench, CommandKind, Waypoint
  • aerial_kit.interfaces -- Controller, DynamicsBackend, Planner ABCs
  • aerial_kit.registry -- a pluggable component registry (register_airframe/register_controller/etc., create_* factories)
  • aerial_kit.airframes -- Airframe ABC, MultirotorAirframe (mixer-driven quad/hex/ octo), TwinWingAirframe (elevon + differential-thrust allocation, trim)
  • aerial_kit.dynamics -- 6-DOF multirotor dynamics, point-mass dynamics, and a hand-rolled 6-DOF fixed-wing model with a flat-plate-blended lift curve, drag polar, and moment derivatives
  • aerial_kit.controllers -- PID/LQR/MPC position controllers, and FixedWingL1TECSController (L1 lateral guidance + TECS-lite longitudinal control + coordinated-turn attitude PID)
  • aerial_kit.guidance -- l1_bank_command, tecs_command as standalone functions

Quick start

from aerial_kit.registry import register_builtin_components, create_airframe, create_controller

register_builtin_components()
airframe = create_airframe("quad")
controller = create_controller("pid")
print(airframe.capabilities)

register_builtin_components() here registers only what lives inside aerial_kit itself (airframes, controllers) -- it has no ROS or matplotlib dependency and does not know about any host application's own dynamics backends or planners. A host application (like sim_py in the parent repo) registers its own backends/planners into the same registry alongside this.

Status

Early and actively developed. Be clear-eyed about what's actually verified:

  • Multirotor (quad/hex/octo airframes, PID/LQR/MPC): verified, working. This is the path flying on real hardware in the parent project.
  • Twin-motor wing (TwinWingAirframe, FixedWingL1TECSController, L1/TECS guidance): under development, simulation-only. Not flown on any hardware. Its 6-DOF aero model uses plausible placeholder coefficients, not a fitted model of any specific real airframe, and its guidance gains are validated only in the specific simulated scenarios its own test suite covers -- treat it as a research/simulation component, not something to fly as-is.

License

MIT

Download files

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

Source Distribution

aerial_kit-0.1.3.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

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

aerial_kit-0.1.3-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file aerial_kit-0.1.3.tar.gz.

File metadata

  • Download URL: aerial_kit-0.1.3.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for aerial_kit-0.1.3.tar.gz
Algorithm Hash digest
SHA256 cc2ccb2bfc9c879d72ed9c7242da28ff8d79212b402f03ca21b9a0e5317c6c61
MD5 47a6babf62090feb58590fbe8cbb050b
BLAKE2b-256 3c7d794ed0feb492083e87a6ef936555781735e49ef2b1abb12bb9907518ecbb

See more details on using hashes here.

File details

Details for the file aerial_kit-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: aerial_kit-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 27.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for aerial_kit-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 41dedec89ae18296d6a788ae68aab04b36d57d52ae6cec7feef242a8fae54db1
MD5 3374b6b77e338b3860f460857b2f684f
BLAKE2b-256 418c62dd9bb07887153b7b3623dde86e8512ba1ea76b3e4c038533d209a905fe

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.1

2 files

0.2.0

2 files

0.1.4

2 files

This release

0.1.3 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page