47 lines
1.7 KiB
Markdown
47 lines
1.7 KiB
Markdown
# FedCatOpt
|
|
|
|
FedCatOpt is a Python SDK for federated, offline-first coordination of heterogeneous robotic fleets.
|
|
|
|
It provides:
|
|
|
|
- Typed DSL primitives for local optimization, shared state, deltas, dual variables, privacy budgets, audit logs, and policy blocks
|
|
- A deterministic Graph-of-Contracts registry for contract wiring and islanded execution
|
|
- Starter adapters for `rover_planner` and `drone_controller`
|
|
- A category-theory-inspired canonical IR that normalizes robotics-specific control payloads
|
|
- An ADMM-lite consensus solver with deterministic delta generation and optional privacy budget consumption
|
|
- A governance ledger and short-lived certificate skeleton for Phase 1 identity flows
|
|
|
|
## Project Layout
|
|
|
|
- `src/idea177_fedcatopt_federated_category/models.py`
|
|
- `src/idea177_fedcatopt_federated_category/solver.py`
|
|
- `src/idea177_fedcatopt_federated_category/registry.py`
|
|
- `src/idea177_fedcatopt_federated_category/adapters.py`
|
|
- `src/idea177_fedcatopt_federated_category/identity.py`
|
|
- `src/idea177_fedcatopt_federated_category/sdk.py`
|
|
|
|
## Example
|
|
|
|
```python
|
|
from idea177_fedcatopt_federated_category import (
|
|
ADMMliteSolver,
|
|
DRONE_CONTROLLER_ADAPTER,
|
|
ROVER_PLANNER_ADAPTER,
|
|
SharedVariables,
|
|
)
|
|
|
|
rover = ROVER_PLANNER_ADAPTER.to_local_problem({"agent_id": "rover-1", "desired_speed": 3.0, "desired_heading": 1.0})
|
|
drone = DRONE_CONTROLLER_ADAPTER.to_local_problem({"agent_id": "drone-1", "desired_thrust": 0.8, "desired_yaw_rate": 0.2})
|
|
|
|
solver = ADMMliteSolver()
|
|
result = solver.solve([rover, drone], SharedVariables(variables={"speed": 0.0, "heading": 0.0, "thrust": 0.0, "yaw_rate": 0.0}))
|
|
```
|
|
|
|
## Testing
|
|
|
|
`bash test.sh`
|
|
|
|
## Packaging
|
|
|
|
The package name is `idea177-fedcatopt-federated-category` and the source distribution metadata points to this README.
|