Metadata-Version: 2.4
Name: drone_estimators
Version: 0.1.0b0
Summary: State estimators for drones.
Author: Marcel Rath, Martin Schuck
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Description-Content-Type: text/markdown
Requires-Dist: jax
Requires-Dist: numpy>=2.0
Requires-Dist: scipy>=1.17.0rc1
Requires-Dist: drone-models>=0.1.0b0
Requires-Dist: munch
Requires-Dist: transforms3d
Requires-Dist: flax
Requires-Dist: array-api-compat
Requires-Dist: array-api-extra
Provides-Extra: dev
Requires-Dist: drone-models; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest>=8.0.0; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-timeout; extra == "test"
Requires-Dist: torch; extra == "test"

$$
\huge \displaystyle \hat{\boldsymbol{\mu}}_{x,k+1} = \check{\boldsymbol{\mu}}_{x,k+1} + \mathbf{K}_{k+1} \mathbf{z}_{k+1} \\
\hat{\boldsymbol{\Sigma}}_{xx, k+1} = ( \mathbf{I}-\mathbf{K}_{k+1} \mathbf{C}_k+1) \check{\boldsymbol{\Sigma}}_{xx, k+1}
$$

---

Drone state estimators @ LSY. Contains model free (smoothing) and model based (EKF, UKF) state estimators for drones.

[![Python Version]][Python Version URL] [![Ruff Check]][Ruff Check URL] [![Tests]][Tests URL]

[Python Version]: https://img.shields.io/badge/python-3.11+-blue.svg
[Python Version URL]: https://www.python.org

[Ruff Check]: https://github.com/utiasDSL/drone-estimators/actions/workflows/ruff.yml/badge.svg?style=flat-square
[Ruff Check URL]: https://github.com/utiasDSL/drone-estimators/actions/workflows/ruff.yml

[Tests]: https://github.com/utiasDSL/drone-estimators/actions/workflows/testing.yml/badge.svg
[Tests URL]: https://github.com/utiasDSL/drone-estimators/actions/workflows/testing.yml

## Installation
### Normal 
Simply install with pip
```bash
pip install drone-estimators
```

### Development
Clone repository and install repository:

```bash
git clone git@github.com:utiasDSL/drone-estimators.git
cd drone-estimators
pixi install
```

Now activate the `jazzy` environment and install the package in editable mode
```bash
pixi shell -e jazzy
uv pip install -e .
```

If you want to have the `drone-models` in editable mode, simply install them too with pip, i.e.,
```bash
cd ../drone-models
uv pip install -e .
```

## Usage
Either use the estimators directly:

```bash
from drone_estimators.estimator import KalmanFilter
```

or run the `ROS2` node with:
```bash
python -m drone_estimators.ros_nodes.ros2_node
```

For the latter, you can either add your specific drone to be estimated with default settings or add all drones to the `estimators.toml` file (editable mode), which can be passed as an argument
```bash
python -m drone_estimators.ros_nodes.ros2_node --drone <your_drone>
python -m drone_estimators.ros_nodes.ros2_node --settings <path/to/your/estimators.toml>
```
