Skip to main content

A GRU model that improves the performance of adaptive oscillators in stop-go and go-stop situations.

Project description

ao_compensation_model

CI PyPI Docker

A GRU-based compensation model that improves the performance of adaptive oscillators (AOs) during stop-go and go-stop gait transitions. The model learns the phase error between the AO output and the ground-truth gait phase, and applies a real-time correction on edge devices via TFLite.

Pipeline

  1. Data Preparation (prep) — Bandpass-filters raw IMU hip angles, extracts ground-truth gait phase via Hilbert-like analysis, and computes delta-phi training targets.
  2. Training (train) — Trains a GRU network on sliding windows of AO features, exports to an optimized TFLite model.
  3. Validation (validate) — Runs frame-by-frame TFLite inference on test data and visualises original AO phase vs. enhanced (AO + GRU) phase vs. ground truth.

Install

From PyPI:

pip install ao-compensation-model

From source:

git clone https://github.com/lhharry/ao_compensation_model.git
cd ao_compensation_model
uv sync

Development

  1. Install uv from Astral.
  2. git clone git@github.com:lhharry/ao_compensation_model.git
  3. make init — create virtual environment and install dependencies
  4. make format — format code and run type checks
  5. make test — run the test suite with coverage
  6. make clean — delete temporary files and directories

Usage

As a CLI

# Prepare ground-truth targets from raw CSVs
uv run python -m ao_compensation_model prep

# Train the GRU model
uv run python -m ao_compensation_model train

# Validate on test data
uv run python -m ao_compensation_model validate

As a library

from ao_compensation_model.training import build_gru_model, compute_sample_weights
from ao_compensation_model.utils import bandpass_filter, extract_true_phase
from ao_compensation_model.validation import validate

Publishing

Pushing a version tag triggers automatic publishing to PyPI via GitHub Actions (Trusted Publishing):

# Update version in pyproject.toml, then:
git tag v0.1.1
git push origin --tags

Structure

├── src
│   └── ao_compensation_model
│       ├── __init__.py
│       ├── __main__.py
│       ├── app.py
│       ├── definitions.py
│       ├── gt_dataprep.py
│       ├── training.py
│       ├── utils.py
│       ├── validation.py
│       ├── dataset/
│       └── model/
├── tests
│   ├── __init__.py
│   ├── conftest.py
│   ├── app_test.py
│   ├── gt_dataprep_test.py
│   ├── training_test.py
│   └── utils_test.py
├── .github/workflows/
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
└── pyproject.toml

Project details


Download files

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

Source Distribution

ao_compensation_model-0.1.1.tar.gz (10.5 MB view details)

Uploaded Source

Built Distribution

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

ao_compensation_model-0.1.1-py3-none-any.whl (10.6 MB view details)

Uploaded Python 3

File details

Details for the file ao_compensation_model-0.1.1.tar.gz.

File metadata

  • Download URL: ao_compensation_model-0.1.1.tar.gz
  • Upload date:
  • Size: 10.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ao_compensation_model-0.1.1.tar.gz
Algorithm Hash digest
SHA256 45dcc77920c4d449ec6d387cadb3e8cc789a82012568f4618f52a9e1f2e5ee58
MD5 421ce206bce681e0911a3a8044669480
BLAKE2b-256 266919da14b3a429520388594db0fc94d6f6d467817b81438ea54192e66a5381

See more details on using hashes here.

Provenance

The following attestation bundles were made for ao_compensation_model-0.1.1.tar.gz:

Publisher: pypi-publish.yml on lhharry/ao_compensation_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ao_compensation_model-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ao_compensation_model-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5065aa0c9cf71277f3f713c7fc5288adc672226fa7c8d45a48486a1cd298a26e
MD5 4f9e0fab9e05ca48f491988b86f9f3bd
BLAKE2b-256 6d7984a39da4a1cdaab8aea111d42a9e6c46bd99b40fbd18359147181201d4b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ao_compensation_model-0.1.1-py3-none-any.whl:

Publisher: pypi-publish.yml on lhharry/ao_compensation_model

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page