Skip to main content

WiFi CSI pose estimation toolkit — signal utilities, skeleton ops, evaluation metrics, and bundle streaming

Project description

echopose-sdk

PyPI version Python 3.10+ License: MIT

WiFi CSI pose-estimation toolkit — the Python companion to the EchoPose system.

EchoPose turns commodity ESP32-S3 access points into a privacy-preserving human pose estimator that requires no cameras, no wearables, and works through walls. This SDK provides the tools you need to collect, process, evaluate, and replay CSI data and pose predictions.

Features

Module What it does
echopose_sdk.csi Subcarrier normalisation, Doppler feature extraction, pilot interpolation, human-presence detection
echopose_sdk.skeleton COCO-17 keypoint helpers, bone lengths, body-height normalisation, temporal smoothing
echopose_sdk.metrics MPJPE, PCK@t, body-normalised PCK, PA-MPJPE, per-joint error tables
echopose_sdk.streaming BundleReader/BundleWriter JSONL context managers, time-windowed filtering, train/test split
echopose_sdk.validation Bundle schema validation
echopose_sdk.quality Confidence summary statistics

Installation

pip install echopose-sdk

Development install (editable):

pip install -e echopose_sdk/

Quick start

Validate a bundle

from echopose_sdk import validate_bundle
ok, reason = validate_bundle(bundle_dict)

Compute pose metrics

import numpy as np
from echopose_sdk.metrics import summary_report

pred = np.load("pred_poses.npy")   # shape (N, 17, 3)
gt   = np.load("gt_poses.npy")

report = summary_report(pred, gt)
# {'mpjpe': 0.42, 'pck_01_abs': 0.31, 'body_pck_01': 0.68, 'pa_mpjpe': 0.29, ...}

Normalise CSI amplitudes

from echopose_sdk.csi import normalize_subcarriers
norm = normalize_subcarriers(raw_amplitudes, method="zscore")

Smooth a skeleton sequence

from echopose_sdk.skeleton import smooth_skeleton_sequence
smoothed = smooth_skeleton_sequence(seq, method="gaussian", window=7)

Stream a session file

from echopose_sdk.streaming import BundleReader

with BundleReader("session.jsonl") as reader:
    for bundle in reader:
        print(bundle["timestamp_ms"])

CLI

echopose-sdk validate  <bundle.json>
echopose-sdk inspect   <bundle.json> [--node NODE] [--pretty]
echopose-sdk metrics   --pred pred.npy --gt gt.npy [--per-joint] [--pretty]
echopose-sdk stream    <session.jsonl> [--fps 20] [--limit 100]

License

MIT © Muhammed Shazin Sadhik Kunhi Parambath

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

echopose_sdk-0.2.2.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

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

echopose_sdk-0.2.2-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file echopose_sdk-0.2.2.tar.gz.

File metadata

  • Download URL: echopose_sdk-0.2.2.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for echopose_sdk-0.2.2.tar.gz
Algorithm Hash digest
SHA256 8a0a148945308bd1a62505c224fd65b23c6f7acb3e61b591b8660cecd0794a0d
MD5 2838168e6617615e626650663dcfee34
BLAKE2b-256 f6d18fd05f095ecc62de4eb4b558420cd84ef4d246581f5a6fec0d0cca4e8843

See more details on using hashes here.

Provenance

The following attestation bundles were made for echopose_sdk-0.2.2.tar.gz:

Publisher: publish-python.yml on shaz-in-dev/EchoPose

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

File details

Details for the file echopose_sdk-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: echopose_sdk-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for echopose_sdk-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 212750ef84b76be56daa961ae8c58c9e72ecb64e54ab0f0eea0a1eae157d8bdf
MD5 b4dedc239a0d74ff8549059124311236
BLAKE2b-256 042983f8a76bfcc571ceb755d6f6e7bf5ae834ee43255a1e9c1bc6b756b96cdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for echopose_sdk-0.2.2-py3-none-any.whl:

Publisher: publish-python.yml on shaz-in-dev/EchoPose

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