WHACO (Warranted Hierarchical Autonomous Cooperative Operations) — resource-aware distributed autonomy governor for energy-constrained multi-agent drone systems
Project description
WHACO — Warranted Hierarchical Autonomous Cooperative Operations
Resource-aware distributed autonomy governor for energy-constrained multi-agent drone systems.
Developed by Blackridge Autonomy LLC.
Overview
WHACO is a bolt-on throttle governor that sits downstream of any route planner and selects from 8 discrete thrust modes based on wind alignment, fuel pressure, distance to goal, and look-ahead conditions.
Core Capabilities
| Capability | Description |
|---|---|
| 8-Mode Throttle Governor | State-dependent thrust selection for energy-constrained operations |
| 15 microsecond per-step budget | Real-time capable on embedded hardware |
| Online Adaptive Thresholds | Diagonal CMA-ES tunes 5 governor thresholds in-flight |
| 3D Wind-Aware | Full 3D wind alignment with gravity penalty modeling |
| PX4 Compatible | Designed for MAVLink companion integration at 50 Hz |
Mode Table
| ID | Mode | Thrust | Purpose |
|---|---|---|---|
| 0 | RIDE | 20% | Downwind glide |
| 1 | SPRINT | 85% | Aggressive push against headwind |
| 2 | CRUISE | 55% | Steady-state default |
| 3 | CONSERVE | 30% | Fuel preservation |
| 4 | PUNCH | 100% | Terminal/stall override |
| 5 | BOOST | 75% | Moderate push |
| 6 | BRAKE | 40% | Controlled deceleration |
| 7 | STABILIZE | 55% | Post-anomaly stabilization |
Installation
pip install blackridge-whaco
Optional dependency groups:
pip install blackridge-whaco[viz] # + matplotlib
pip install blackridge-whaco[dev] # + matplotlib, ruff, coverage
pip install blackridge-whaco[all] # everything
Quick Start
from blackridge_governor import Governor
gov = Governor(fuel_budget=4.0)
thrust, mode_id, mode_name = gov.step(
wind_x=-3.0, wind_y=0.5,
fuel_remaining=2.8, dist_to_goal=45.0,
groundspeed=6.2, throttle_pct=0.55,
)
print(f"Mode: {mode_name}, Thrust: {thrust:.0%}")
# Mode: SPRINT, Thrust: 85%
Adaptive Governor (Online Threshold Tuning)
from blackridge_governor import AdaptiveGovernor
agov = AdaptiveGovernor(fuel_budget=4.0, eval_window=50)
for step in range(1000):
metrics = {
"survival_rate": 0.95,
"fuel_efficiency": 0.7,
"connectivity": 0.5,
"mission_progress": step / 1000.0,
}
thrust, mode_id, mode_name = agov.step(
swarm_metrics=metrics,
wind_x=-2.0, fuel_remaining=3.0,
dist_to_goal=50.0, groundspeed=6.0,
)
Architecture
┌──────────────────────────────────┐
│ Governor (per-agent, 15us) │
│ 8-mode throttle selection │
│ Fuel pressure model │
│ Stall detection override │
│ 3D wind alignment │
└──────────────────────────────────┘
┌──────────────────────────────────┐
│ AdaptiveThresholdController │
│ Diagonal CMA-ES, eval_window │
│ Rate-limited, CDO-locked │
│ Safety revert on degradation │
└──────────────────────────────────┘
Testing
# SDK smoke test
python -m blackridge_governor.demo --quick
# Adaptive thresholds tests
python -m blackridge_governor.adaptive_thresholds
API Reference
Governor(fuel_budget=4.0, thresholds=None)
Core throttle governor. Call .step() each tick to get (thrust_frac, mode_id, mode_name).
Key parameters for .step():
wind_x,wind_y,wind_z— Wind vector (m/s)fuel_remaining— Current fuel leveldist_to_goal— Distance to goal (meters)groundspeed— Current ground speed (m/s)has_wind_cov—Truefor EKF2 wind,Falsefor groundspeed proxy
AdaptiveGovernor(fuel_budget=4.0, eval_window=50)
Governor wrapper with online CMA-ES threshold adaptation. Pass swarm_metrics dict to .step() for in-flight tuning.
AdaptiveThresholdController(eval_window=50, ...)
Standalone threshold controller using diagonal CMA-ES with safety constraints (rate limiting, CDO lock, degradation revert).
License
Proprietary. Copyright (c) 2026 Blackridge Autonomy LLC. All rights reserved.
See LICENSE for details. For licensing inquiries: contact@blackridgeautonomy.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blackridge_whaco-1.2.1.tar.gz.
File metadata
- Download URL: blackridge_whaco-1.2.1.tar.gz
- Upload date:
- Size: 15.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abba3702a76360f5534cc7b0692e186503d624a1729a58ca1e9c50b066f1e095
|
|
| MD5 |
23da61bf6164cbbfc3746bf48569b44d
|
|
| BLAKE2b-256 |
d4d00409718addb943bf85b89de935a0bba4d58ea6aef6bb6498e10400b9aba8
|
File details
Details for the file blackridge_whaco-1.2.1-py3-none-any.whl.
File metadata
- Download URL: blackridge_whaco-1.2.1-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ec8f61beb48ef573c9ba21f2b6af548c142a09f36d24c7cd4af31d24a4ad108
|
|
| MD5 |
8dc053f75f3cec4a730c9321697544ab
|
|
| BLAKE2b-256 |
8c0323ea80fe5c732b15b08d03e06080d7f58f05d0565272b4756ef7ad6cdc62
|