Skip to content

Core

drone_controllers.core

Core functionalities for controller parametrization.

parametrize(fn, drone_model, xp=None, device=None)

Parametrize a controller function with the default controller parameters for a drone model.

Parameters:

Name Type Description Default
fn Callable[P, R]

The controller function to parametrize.

required
drone_model str

The drone model to use.

required
xp ModuleType | None

The array API module to use. If not provided, numpy is used.

None
device str | None

The device to use. If None, the device is inferred from the xp module.

None
Example
import numpy as np
from drone_controllers import parametrize
from drone_controllers.mellinger import state2attitude

ctrl = parametrize(state2attitude, "cf2x_L250")
pos = np.zeros(3)
quat = np.array([0.0, 0.0, 0.0, 1.0])
vel = np.zeros(3)
cmd = np.zeros(13)
rpyt, int_pos_err = ctrl(pos, quat, vel, cmd)

Returns:

Type Description
Callable[P, R]

The parametrized controller function with all keyword argument only parameters filled in.

load_params(fn, drone_model, xp=None, device=None)

Load and merge controller parameters for a specific function.

Reads drone_controllers/<controller>/params.toml and merges the [drone_model.core] section with the [drone_model.<fn_name>] section, with function-specific values taking precedence over core values.

Parameters:

Name Type Description Default
fn Callable

The controller function for which to load parameters.

required
drone_model str

Name of the drone configuration, e.g. "cf2x_L250".

required
xp ModuleType | None

The array API module to use. If not provided, numpy is used.

None
device str | None

The device to use. If None, the device is inferred from the xp module.

None

Returns:

Type Description
dict[str, Array]

A flat dict mapping parameter names to arrays in the requested array namespace.

Raises:

Type Description
KeyError

If drone_model is not found in the params.toml file.

load_core_params(mod, drone_model, xp=None, device=None)

Load core parameters for a given controller module and drone model.

See the Parametrize user guide for usage examples, available drone configurations, and backend switching.