kinemotion 0.12.3__tar.gz → 0.14.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kinemotion might be problematic. Click here for more details.
- kinemotion-0.14.0/.github/workflows/docs.yml +65 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.gitignore +3 -0
- kinemotion-0.14.0/.readthedocs.yml +29 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/CHANGELOG.md +24 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/CLAUDE.md +41 -2
- {kinemotion-0.12.3 → kinemotion-0.14.0}/PKG-INFO +2 -2
- {kinemotion-0.12.3 → kinemotion-0.14.0}/README.md +1 -1
- kinemotion-0.14.0/docs/README.md +103 -0
- kinemotion-0.14.0/docs/api/cmj.md +87 -0
- kinemotion-0.14.0/docs/api/core.md +81 -0
- kinemotion-0.14.0/docs/api/dropjump.md +81 -0
- kinemotion-0.14.0/docs/api/overview.md +73 -0
- kinemotion-0.14.0/docs/guides/camera-setup.md +966 -0
- kinemotion-0.14.0/docs/index.md +54 -0
- kinemotion-0.14.0/docs/reference/pose-systems.md +257 -0
- kinemotion-0.14.0/docs/research/sports-biomechanics-pose-estimation.md +1028 -0
- kinemotion-0.14.0/docs/translations/es/camera-setup.md +966 -0
- kinemotion-0.14.0/mkdocs.yml +99 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/pyproject.toml +4 -1
- {kinemotion-0.12.3 → kinemotion-0.14.0}/uv.lock +253 -1
- kinemotion-0.12.3/docs/CAMERA_SETUP.md +0 -440
- kinemotion-0.12.3/docs/CAMERA_SETUP_ES.md +0 -440
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.dockerignore +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.github/pull_request_template.md +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.github/workflows/release.yml +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.pre-commit-config.yaml +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/.tool-versions +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/CODE_OF_CONDUCT.md +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/CONTRIBUTING.md +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/Dockerfile +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/GEMINI.md +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/LICENSE +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/SECURITY.md +0 -0
- /kinemotion-0.12.3/docs/ERRORS_FINDINGS.md → /kinemotion-0.14.0/docs/development/errors-findings.md +0 -0
- /kinemotion-0.12.3/docs/VALIDATION_PLAN.md → /kinemotion-0.14.0/docs/development/validation-plan.md +0 -0
- /kinemotion-0.12.3/docs/BULK_PROCESSING.md → /kinemotion-0.14.0/docs/guides/bulk-processing.md +0 -0
- /kinemotion-0.12.3/docs/CMJ_GUIDE.md → /kinemotion-0.14.0/docs/guides/cmj-guide.md +0 -0
- /kinemotion-0.12.3/docs/PARAMETERS.md → /kinemotion-0.14.0/docs/reference/parameters.md +0 -0
- /kinemotion-0.12.3/docs/FRAMERATE.md → /kinemotion-0.14.0/docs/technical/framerate.md +0 -0
- /kinemotion-0.12.3/docs/IMU_METADATA_PRESERVATION.md → /kinemotion-0.14.0/docs/technical/imu-metadata.md +0 -0
- /kinemotion-0.12.3/docs/REAL_TIME_ANALYSIS.md → /kinemotion-0.14.0/docs/technical/real-time-analysis.md +0 -0
- /kinemotion-0.12.3/docs/TRIPLE_EXTENSION.md → /kinemotion-0.14.0/docs/technical/triple-extension.md +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/examples/bulk/README.md +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/examples/bulk/bulk_processing.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/examples/bulk/simple_example.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/examples/programmatic_usage.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/samples/cmjs/README.md +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/__init__.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/api.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/cli.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/cmj/__init__.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/cmj/analysis.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/cmj/cli.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/cmj/debug_overlay.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/cmj/joint_angles.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/cmj/kinematics.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/__init__.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/auto_tuning.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/cli_utils.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/debug_overlay_utils.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/filtering.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/pose.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/smoothing.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/core/video_io.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/dropjump/__init__.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/dropjump/analysis.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/dropjump/cli.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/dropjump/debug_overlay.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/dropjump/kinematics.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/src/kinemotion/py.typed +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/__init__.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_adaptive_threshold.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_api.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_aspect_ratio.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_cmj_analysis.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_cmj_kinematics.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_com_estimation.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_contact_detection.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_filtering.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_kinematics.py +0 -0
- {kinemotion-0.12.3 → kinemotion-0.14.0}/tests/test_polyorder.py +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: Documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
release:
|
|
9
|
+
types: [published]
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@v3
|
|
25
|
+
with:
|
|
26
|
+
enable-cache: true
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: |
|
|
30
|
+
uv sync --frozen
|
|
31
|
+
|
|
32
|
+
- name: Build documentation
|
|
33
|
+
run: |
|
|
34
|
+
uv run mkdocs build --strict
|
|
35
|
+
|
|
36
|
+
- name: Upload docs artifact
|
|
37
|
+
uses: actions/upload-artifact@v4
|
|
38
|
+
with:
|
|
39
|
+
name: docs
|
|
40
|
+
path: site/
|
|
41
|
+
|
|
42
|
+
deploy:
|
|
43
|
+
if: github.event_name == 'release'
|
|
44
|
+
needs: build
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
permissions:
|
|
47
|
+
contents: write
|
|
48
|
+
steps:
|
|
49
|
+
- uses: actions/checkout@v4
|
|
50
|
+
|
|
51
|
+
- name: Set up Python
|
|
52
|
+
uses: actions/setup-python@v5
|
|
53
|
+
with:
|
|
54
|
+
python-version: "3.12"
|
|
55
|
+
|
|
56
|
+
- name: Install uv
|
|
57
|
+
uses: astral-sh/setup-uv@v3
|
|
58
|
+
|
|
59
|
+
- name: Install dependencies
|
|
60
|
+
run: |
|
|
61
|
+
uv sync --frozen
|
|
62
|
+
|
|
63
|
+
- name: Deploy to GitHub Pages
|
|
64
|
+
run: |
|
|
65
|
+
uv run mkdocs gh-deploy --force
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Read the Docs configuration file
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
3
|
+
|
|
4
|
+
version: 2
|
|
5
|
+
|
|
6
|
+
# Build documentation with MkDocs
|
|
7
|
+
mkdocs:
|
|
8
|
+
configuration: mkdocs.yml
|
|
9
|
+
fail_on_warning: false
|
|
10
|
+
|
|
11
|
+
# Build environment
|
|
12
|
+
build:
|
|
13
|
+
os: ubuntu-22.04
|
|
14
|
+
tools:
|
|
15
|
+
python: "3.12"
|
|
16
|
+
jobs:
|
|
17
|
+
post_install:
|
|
18
|
+
# Install uv for faster dependency resolution
|
|
19
|
+
- pip install uv
|
|
20
|
+
# Install project dependencies including mkdocs
|
|
21
|
+
- uv sync --frozen
|
|
22
|
+
|
|
23
|
+
# Python configuration
|
|
24
|
+
python:
|
|
25
|
+
install:
|
|
26
|
+
- method: pip
|
|
27
|
+
path: .
|
|
28
|
+
extra_requirements:
|
|
29
|
+
- dev
|
|
@@ -7,6 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
<!-- version list -->
|
|
9
9
|
|
|
10
|
+
## v0.14.0 (2025-11-06)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **docs**: Add MkDocs documentation with auto-generated API reference
|
|
15
|
+
([`cb5cd31`](https://github.com/feniix/kinemotion/commit/cb5cd313e43c6ba0c95c8e77b5651e7c86c73902))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## v0.13.0 (2025-11-06)
|
|
19
|
+
|
|
20
|
+
### Documentation
|
|
21
|
+
|
|
22
|
+
- Add sports biomechanics pose estimation research documentation
|
|
23
|
+
([`745d273`](https://github.com/feniix/kinemotion/commit/745d273da294d49dd83f8fe488f5ede38189361a))
|
|
24
|
+
|
|
25
|
+
- Update camera setup guides for 45° angle and dual iPhone configuration
|
|
26
|
+
([`373a858`](https://github.com/feniix/kinemotion/commit/373a858e81c74da6a85be8c00d7fc0c20ac42e85))
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
- **docs**: Reorganize documentation and add 45° camera setup guidance
|
|
31
|
+
([`0e8f992`](https://github.com/feniix/kinemotion/commit/0e8f992a7854a662b65574f589306bc13529cd5e))
|
|
32
|
+
|
|
33
|
+
|
|
10
34
|
## v0.12.3 (2025-11-06)
|
|
11
35
|
|
|
12
36
|
### Bug Fixes
|
|
@@ -224,8 +224,47 @@ metrics = process_cmj_video("video.mp4")
|
|
|
224
224
|
|
|
225
225
|
## Documentation
|
|
226
226
|
|
|
227
|
-
**User guides:** docs/
|
|
228
|
-
**
|
|
227
|
+
**User guides:** docs/guides/cmj-guide.md, docs/guides/camera-setup.md, docs/guides/bulk-processing.md
|
|
228
|
+
**Reference:** docs/reference/parameters.md, docs/reference/pose-systems.md
|
|
229
|
+
**Technical:** docs/technical/triple-extension.md, docs/technical/real-time-analysis.md
|
|
230
|
+
**Research:** docs/research/sports-biomechanics-pose-estimation.md
|
|
231
|
+
|
|
232
|
+
**See [docs/README.md](docs/README.md) for complete documentation navigation.**
|
|
233
|
+
|
|
234
|
+
### Documentation Organization
|
|
235
|
+
|
|
236
|
+
Documentation follows the [Diátaxis framework](https://diataxis.fr/) - a systematic approach that organizes content by user needs:
|
|
237
|
+
|
|
238
|
+
**Framework categories:**
|
|
239
|
+
1. **Tutorials/Guides** (learning-oriented) → `docs/guides/`
|
|
240
|
+
- Goal: Help users accomplish specific tasks
|
|
241
|
+
- Examples: Camera setup, CMJ analysis, bulk processing
|
|
242
|
+
- Characteristic: Step-by-step instructions
|
|
243
|
+
|
|
244
|
+
2. **Reference** (information-oriented) → `docs/reference/`
|
|
245
|
+
- Goal: Provide technical descriptions and specifications
|
|
246
|
+
- Examples: CLI parameters, pose system comparisons
|
|
247
|
+
- Characteristic: Structured for quick lookup
|
|
248
|
+
|
|
249
|
+
3. **Explanation** (understanding-oriented) → `docs/technical/`, `docs/research/`
|
|
250
|
+
- Goal: Clarify and illuminate topics
|
|
251
|
+
- Examples: Triple extension biomechanics, pose estimation research
|
|
252
|
+
- Characteristic: Background knowledge, theory
|
|
253
|
+
|
|
254
|
+
4. **Development** (contributor-oriented) → `docs/development/`
|
|
255
|
+
- Goal: Support project contributors
|
|
256
|
+
- Examples: Validation plans, error findings
|
|
257
|
+
- Characteristic: Internal processes, debugging
|
|
258
|
+
|
|
259
|
+
**Additional categories:**
|
|
260
|
+
- `docs/translations/` - Non-English documentation (e.g., Spanish)
|
|
261
|
+
|
|
262
|
+
**When adding new documentation:**
|
|
263
|
+
- **How-to content?** → `guides/`
|
|
264
|
+
- **Parameter specs or quick lookups?** → `reference/`
|
|
265
|
+
- **Implementation details or theory?** → `technical/` or `research/`
|
|
266
|
+
- **Testing or debugging?** → `development/`
|
|
267
|
+
- **Translation?** → `translations/{language-code}/`
|
|
229
268
|
|
|
230
269
|
## Commit Format
|
|
231
270
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Video-based kinematic analysis for athletic performance
|
|
5
5
|
Project-URL: Homepage, https://github.com/feniix/kinemotion
|
|
6
6
|
Project-URL: Repository, https://github.com/feniix/kinemotion
|
|
@@ -323,7 +323,7 @@ For advanced users who need manual control:
|
|
|
323
323
|
- `--detection-confidence <float>`: Override MediaPipe detection confidence
|
|
324
324
|
- `--tracking-confidence <float>`: Override MediaPipe tracking confidence
|
|
325
325
|
|
|
326
|
-
> **📖 For detailed parameter explanations, see [docs/
|
|
326
|
+
> **📖 For detailed parameter explanations, see [docs/reference/parameters.md](docs/reference/parameters.md)**
|
|
327
327
|
>
|
|
328
328
|
> **Note:** Most users never need expert parameters - auto-tuning handles optimization automatically!
|
|
329
329
|
|
|
@@ -294,7 +294,7 @@ For advanced users who need manual control:
|
|
|
294
294
|
- `--detection-confidence <float>`: Override MediaPipe detection confidence
|
|
295
295
|
- `--tracking-confidence <float>`: Override MediaPipe tracking confidence
|
|
296
296
|
|
|
297
|
-
> **📖 For detailed parameter explanations, see [docs/
|
|
297
|
+
> **📖 For detailed parameter explanations, see [docs/reference/parameters.md](docs/reference/parameters.md)**
|
|
298
298
|
>
|
|
299
299
|
> **Note:** Most users never need expert parameters - auto-tuning handles optimization automatically!
|
|
300
300
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Kinemotion Documentation
|
|
2
|
+
|
|
3
|
+
Welcome to the kinemotion documentation. This directory contains guides, technical documentation, and research for video-based kinematic analysis of athletic jumps.
|
|
4
|
+
|
|
5
|
+
## Quick Navigation
|
|
6
|
+
|
|
7
|
+
### 🚀 Getting Started
|
|
8
|
+
|
|
9
|
+
- **[Camera Setup Guide](guides/camera-setup.md)** - How to position your camera for optimal analysis
|
|
10
|
+
- Single iPhone at 45° (standard setup)
|
|
11
|
+
- Dual iPhone stereo (advanced setup)
|
|
12
|
+
- [Versión en Español](translations/es/camera-setup.md)
|
|
13
|
+
|
|
14
|
+
### 📖 User Guides
|
|
15
|
+
|
|
16
|
+
- **[CMJ Guide](guides/cmj-guide.md)** - Counter-movement jump analysis guide
|
|
17
|
+
- **[Bulk Processing](guides/bulk-processing.md)** - Processing multiple videos efficiently
|
|
18
|
+
- **[Parameters Reference](reference/parameters.md)** - CLI parameters and options
|
|
19
|
+
|
|
20
|
+
### 📊 Reference
|
|
21
|
+
|
|
22
|
+
- **[Pose Systems Quick Reference](reference/pose-systems.md)** - Comparison of pose estimation systems
|
|
23
|
+
- **[Parameters](reference/parameters.md)** - Complete CLI parameter documentation
|
|
24
|
+
|
|
25
|
+
### 🔬 Research & Validation
|
|
26
|
+
|
|
27
|
+
- **[Sports Biomechanics Pose Estimation](research/sports-biomechanics-pose-estimation.md)** - Comprehensive research analysis on pose detection systems for sports biomechanics
|
|
28
|
+
- Pose2Sim validation (3-4° accuracy)
|
|
29
|
+
- Stereo MediaPipe validation (30.1mm RMSE)
|
|
30
|
+
- AthletePose3D dataset
|
|
31
|
+
- System comparisons and recommendations
|
|
32
|
+
|
|
33
|
+
### ⚙️ Technical Documentation
|
|
34
|
+
|
|
35
|
+
- **[Triple Extension](technical/triple-extension.md)** - Biomechanics of triple extension in jumps
|
|
36
|
+
- **[Framerate](technical/framerate.md)** - Frame rate considerations for analysis
|
|
37
|
+
- **[IMU Metadata](technical/imu-metadata.md)** - Video metadata preservation
|
|
38
|
+
- **[Real-Time Analysis](technical/real-time-analysis.md)** - Future real-time processing capabilities
|
|
39
|
+
|
|
40
|
+
### 👨💻 Development
|
|
41
|
+
|
|
42
|
+
- **[Validation Plan](development/validation-plan.md)** - Testing and validation strategy
|
|
43
|
+
- **[Errors & Findings](development/errors-findings.md)** - Known issues and debugging information
|
|
44
|
+
|
|
45
|
+
### 🌍 Translations
|
|
46
|
+
|
|
47
|
+
- **[Español (Spanish)](translations/es/)**
|
|
48
|
+
- [Guía de Configuración de Cámara](translations/es/camera-setup.md)
|
|
49
|
+
|
|
50
|
+
______________________________________________________________________
|
|
51
|
+
|
|
52
|
+
## Documentation Organization
|
|
53
|
+
|
|
54
|
+
This documentation follows a structured organization:
|
|
55
|
+
|
|
56
|
+
- **guides/** - User-facing how-to guides for setup and usage
|
|
57
|
+
- **reference/** - Quick lookup reference materials
|
|
58
|
+
- **technical/** - Implementation details and technical explanations
|
|
59
|
+
- **research/** - Academic research and validation studies
|
|
60
|
+
- **development/** - Developer and contributor resources
|
|
61
|
+
- **translations/** - Non-English documentation
|
|
62
|
+
|
|
63
|
+
## Quick Links by Audience
|
|
64
|
+
|
|
65
|
+
### For Athletes & Coaches
|
|
66
|
+
|
|
67
|
+
Start here:
|
|
68
|
+
|
|
69
|
+
1. [Camera Setup Guide](guides/camera-setup.md) - Critical first step
|
|
70
|
+
1. [CMJ Guide](guides/cmj-guide.md) - Understanding CMJ analysis
|
|
71
|
+
1. [Parameters Reference](reference/parameters.md) - Adjusting analysis settings
|
|
72
|
+
|
|
73
|
+
### For Researchers
|
|
74
|
+
|
|
75
|
+
1. [Sports Biomechanics Pose Estimation](research/sports-biomechanics-pose-estimation.md) - Research analysis
|
|
76
|
+
1. [Pose Systems Quick Reference](reference/pose-systems.md) - System comparisons
|
|
77
|
+
1. [Validation Plan](development/validation-plan.md) - Validation methodology
|
|
78
|
+
|
|
79
|
+
### For Developers
|
|
80
|
+
|
|
81
|
+
1. [Triple Extension](technical/triple-extension.md) - Biomechanics implementation
|
|
82
|
+
1. [IMU Metadata](technical/imu-metadata.md) - Video processing details
|
|
83
|
+
1. [Validation Plan](development/validation-plan.md) - Testing strategy
|
|
84
|
+
1. Main [CLAUDE.md](../CLAUDE.md) - Complete project documentation
|
|
85
|
+
|
|
86
|
+
______________________________________________________________________
|
|
87
|
+
|
|
88
|
+
## Contributing to Documentation
|
|
89
|
+
|
|
90
|
+
When adding new documentation:
|
|
91
|
+
|
|
92
|
+
- **User guides** → `guides/` (how-to content)
|
|
93
|
+
- **Reference materials** → `reference/` (quick lookups, parameters, specs)
|
|
94
|
+
- **Technical details** → `technical/` (implementation, algorithms, biomechanics)
|
|
95
|
+
- **Research** → `research/` (validation studies, academic content)
|
|
96
|
+
- **Development** → `development/` (testing, debugging, contributor info)
|
|
97
|
+
- **Translations** → `translations/{language-code}/`
|
|
98
|
+
|
|
99
|
+
Ensure cross-references use relative paths and follow conventional commits format when committing changes.
|
|
100
|
+
|
|
101
|
+
______________________________________________________________________
|
|
102
|
+
|
|
103
|
+
**Last Updated:** November 6, 2025
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# CMJ API
|
|
2
|
+
|
|
3
|
+
The CMJ API provides functions for analyzing counter movement jump videos and extracting kinematic metrics including triple extension analysis.
|
|
4
|
+
|
|
5
|
+
## Quick Example
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
from kinemotion import process_cmj_video
|
|
9
|
+
|
|
10
|
+
metrics = process_cmj_video(
|
|
11
|
+
video_path="cmj.mp4",
|
|
12
|
+
output_path="debug.mp4", # optional
|
|
13
|
+
smoothing=True
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
print(f"Jump height: {metrics.jump_height:.2f}m")
|
|
17
|
+
print(f"Flight time: {metrics.flight_time:.3f}s")
|
|
18
|
+
print(f"Countermovement depth: {metrics.countermovement_depth:.3f}m")
|
|
19
|
+
print(f"Triple extension: {metrics.triple_extension_percentage:.1f}%")
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Main Functions
|
|
23
|
+
|
|
24
|
+
::: kinemotion.api.process_cmj_video
|
|
25
|
+
options:
|
|
26
|
+
show_root_heading: true
|
|
27
|
+
show_source: false
|
|
28
|
+
|
|
29
|
+
::: kinemotion.api.process_cmj_videos_bulk
|
|
30
|
+
options:
|
|
31
|
+
show_root_heading: true
|
|
32
|
+
show_source: false
|
|
33
|
+
|
|
34
|
+
## Configuration
|
|
35
|
+
|
|
36
|
+
::: kinemotion.api.CMJVideoConfig
|
|
37
|
+
options:
|
|
38
|
+
show_root_heading: true
|
|
39
|
+
show_source: false
|
|
40
|
+
|
|
41
|
+
## Results
|
|
42
|
+
|
|
43
|
+
::: kinemotion.api.CMJVideoResult
|
|
44
|
+
options:
|
|
45
|
+
show_root_heading: true
|
|
46
|
+
show_source: false
|
|
47
|
+
|
|
48
|
+
## Metrics
|
|
49
|
+
|
|
50
|
+
::: kinemotion.cmj.kinematics.CMJMetrics
|
|
51
|
+
options:
|
|
52
|
+
show_root_heading: true
|
|
53
|
+
show_source: false
|
|
54
|
+
|
|
55
|
+
## Key Differences from Drop Jump
|
|
56
|
+
|
|
57
|
+
### No Calibration Required
|
|
58
|
+
|
|
59
|
+
Unlike drop jumps, CMJ analysis doesn't require a `drop_height` parameter. All measurements are relative to the starting position.
|
|
60
|
+
|
|
61
|
+
### Backward Search Algorithm
|
|
62
|
+
|
|
63
|
+
CMJ detection uses a backward search algorithm starting from the peak height, making it more robust than forward search.
|
|
64
|
+
|
|
65
|
+
### Signed Velocity
|
|
66
|
+
|
|
67
|
+
CMJ analysis uses signed velocity (direction matters) to distinguish upward vs downward motion phases.
|
|
68
|
+
|
|
69
|
+
### Lateral View Required
|
|
70
|
+
|
|
71
|
+
CMJ analysis requires a lateral (side) view for accurate depth and triple extension measurements. Front view will not work due to parallax errors.
|
|
72
|
+
|
|
73
|
+
## Triple Extension Analysis
|
|
74
|
+
|
|
75
|
+
The CMJ API includes detailed triple extension analysis:
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
metrics = process_cmj_video("cmj.mp4")
|
|
79
|
+
|
|
80
|
+
# Triple extension metrics
|
|
81
|
+
print(f"Hip extension: {metrics.hip_extension_angle:.1f}°")
|
|
82
|
+
print(f"Knee extension: {metrics.knee_extension_angle:.1f}°")
|
|
83
|
+
print(f"Ankle plantar flexion: {metrics.ankle_plantar_flexion_angle:.1f}°")
|
|
84
|
+
print(f"Overall triple extension: {metrics.triple_extension_percentage:.1f}%")
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
See [Triple Extension Technical Documentation](../technical/triple-extension.md) for biomechanics details.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Core Utilities
|
|
2
|
+
|
|
3
|
+
Lower-level utilities for advanced usage and custom analysis pipelines.
|
|
4
|
+
|
|
5
|
+
## Pose Detection
|
|
6
|
+
|
|
7
|
+
::: kinemotion.core.pose.PoseTracker
|
|
8
|
+
options:
|
|
9
|
+
show_root_heading: true
|
|
10
|
+
show_source: false
|
|
11
|
+
|
|
12
|
+
::: kinemotion.core.pose.compute_center_of_mass
|
|
13
|
+
options:
|
|
14
|
+
show_root_heading: true
|
|
15
|
+
show_source: false
|
|
16
|
+
|
|
17
|
+
## Smoothing & Filtering
|
|
18
|
+
|
|
19
|
+
::: kinemotion.core.smoothing.smooth_landmarks
|
|
20
|
+
options:
|
|
21
|
+
show_root_heading: true
|
|
22
|
+
show_source: false
|
|
23
|
+
|
|
24
|
+
::: kinemotion.core.smoothing.smooth_landmarks_advanced
|
|
25
|
+
options:
|
|
26
|
+
show_root_heading: true
|
|
27
|
+
show_source: false
|
|
28
|
+
|
|
29
|
+
## Video Processing
|
|
30
|
+
|
|
31
|
+
::: kinemotion.core.video_io.VideoProcessor
|
|
32
|
+
options:
|
|
33
|
+
show_root_heading: true
|
|
34
|
+
show_source: false
|
|
35
|
+
|
|
36
|
+
## Auto-Tuning
|
|
37
|
+
|
|
38
|
+
::: kinemotion.core.auto_tuning.auto_tune_parameters
|
|
39
|
+
options:
|
|
40
|
+
show_root_heading: true
|
|
41
|
+
show_source: false
|
|
42
|
+
|
|
43
|
+
::: kinemotion.core.auto_tuning.analyze_video_sample
|
|
44
|
+
options:
|
|
45
|
+
show_root_heading: true
|
|
46
|
+
show_source: false
|
|
47
|
+
|
|
48
|
+
::: kinemotion.core.auto_tuning.QualityPreset
|
|
49
|
+
options:
|
|
50
|
+
show_root_heading: true
|
|
51
|
+
show_source: false
|
|
52
|
+
|
|
53
|
+
## Usage Example
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
from kinemotion.core.pose import PoseTracker
|
|
57
|
+
from kinemotion.core.smoothing import smooth_landmarks
|
|
58
|
+
from kinemotion.core.video_io import VideoProcessor
|
|
59
|
+
|
|
60
|
+
# Initialize pose tracker
|
|
61
|
+
tracker = PoseTracker(
|
|
62
|
+
min_detection_confidence=0.5,
|
|
63
|
+
min_tracking_confidence=0.5
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Process video
|
|
67
|
+
video = VideoProcessor("video.mp4")
|
|
68
|
+
landmarks = []
|
|
69
|
+
|
|
70
|
+
for frame in video:
|
|
71
|
+
result = tracker.process_frame(frame)
|
|
72
|
+
if result:
|
|
73
|
+
landmarks.append(result)
|
|
74
|
+
|
|
75
|
+
# Apply smoothing
|
|
76
|
+
smoothed = smooth_landmarks(
|
|
77
|
+
landmarks,
|
|
78
|
+
window_length=13,
|
|
79
|
+
polyorder=3
|
|
80
|
+
)
|
|
81
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Drop Jump API
|
|
2
|
+
|
|
3
|
+
The drop jump API provides functions for analyzing drop jump videos and extracting kinematic metrics.
|
|
4
|
+
|
|
5
|
+
## Quick Example
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
from kinemotion import process_video
|
|
9
|
+
|
|
10
|
+
metrics = process_video(
|
|
11
|
+
video_path="dropjump.mp4",
|
|
12
|
+
drop_height=0.40, # meters
|
|
13
|
+
output_path="debug.mp4", # optional
|
|
14
|
+
smoothing=True
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
print(f"Ground contact time: {metrics.ground_contact_time:.3f}s")
|
|
18
|
+
print(f"Flight time: {metrics.flight_time:.3f}s")
|
|
19
|
+
print(f"RSI: {metrics.reactive_strength_index:.2f}")
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Main Functions
|
|
23
|
+
|
|
24
|
+
::: kinemotion.api.process_video
|
|
25
|
+
options:
|
|
26
|
+
show_root_heading: true
|
|
27
|
+
show_source: false
|
|
28
|
+
|
|
29
|
+
::: kinemotion.api.process_videos_bulk
|
|
30
|
+
options:
|
|
31
|
+
show_root_heading: true
|
|
32
|
+
show_source: false
|
|
33
|
+
|
|
34
|
+
## Configuration
|
|
35
|
+
|
|
36
|
+
::: kinemotion.api.VideoConfig
|
|
37
|
+
options:
|
|
38
|
+
show_root_heading: true
|
|
39
|
+
show_source: false
|
|
40
|
+
|
|
41
|
+
## Results
|
|
42
|
+
|
|
43
|
+
::: kinemotion.api.VideoResult
|
|
44
|
+
options:
|
|
45
|
+
show_root_heading: true
|
|
46
|
+
show_source: false
|
|
47
|
+
|
|
48
|
+
## Metrics
|
|
49
|
+
|
|
50
|
+
::: kinemotion.dropjump.kinematics.DropJumpMetrics
|
|
51
|
+
options:
|
|
52
|
+
show_root_heading: true
|
|
53
|
+
show_source: false
|
|
54
|
+
|
|
55
|
+
## Key Parameters
|
|
56
|
+
|
|
57
|
+
### drop_height
|
|
58
|
+
|
|
59
|
+
**Required.** The height of the drop box in meters. This is critical for accurate velocity calculations.
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
metrics = process_video("video.mp4", drop_height=0.40) # 40cm box
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### smoothing
|
|
66
|
+
|
|
67
|
+
Apply Savitzky-Golay smoothing to landmark positions before analysis. Reduces noise but may slightly delay event detection.
|
|
68
|
+
|
|
69
|
+
Default: `True`
|
|
70
|
+
|
|
71
|
+
### output_path
|
|
72
|
+
|
|
73
|
+
Path to write debug video with overlay visualization. If not provided, no debug video is created.
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
metrics = process_video(
|
|
77
|
+
"video.mp4",
|
|
78
|
+
drop_height=0.40,
|
|
79
|
+
output_path="debug.mp4"
|
|
80
|
+
)
|
|
81
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# API Overview
|
|
2
|
+
|
|
3
|
+
Kinemotion provides a Python API for video-based kinematic analysis. The API is organized around two main jump types:
|
|
4
|
+
|
|
5
|
+
## Main Functions
|
|
6
|
+
|
|
7
|
+
### Drop Jump Analysis
|
|
8
|
+
|
|
9
|
+
Process drop jump videos and extract kinematic metrics:
|
|
10
|
+
|
|
11
|
+
- `process_video()` - Analyze a single drop jump video
|
|
12
|
+
- `process_videos_bulk()` - Batch process multiple drop jump videos
|
|
13
|
+
- `VideoConfig` - Configuration for drop jump analysis
|
|
14
|
+
- `VideoResult` - Results from drop jump analysis
|
|
15
|
+
- `DropJumpMetrics` - Kinematic metrics for drop jumps
|
|
16
|
+
|
|
17
|
+
See [Drop Jump API](dropjump.md) for detailed documentation.
|
|
18
|
+
|
|
19
|
+
### CMJ Analysis
|
|
20
|
+
|
|
21
|
+
Process counter movement jump videos and extract kinematic metrics:
|
|
22
|
+
|
|
23
|
+
- `process_cmj_video()` - Analyze a single CMJ video
|
|
24
|
+
- `process_cmj_videos_bulk()` - Batch process multiple CMJ videos
|
|
25
|
+
- `CMJVideoConfig` - Configuration for CMJ analysis
|
|
26
|
+
- `CMJVideoResult` - Results from CMJ analysis
|
|
27
|
+
- `CMJMetrics` - Kinematic metrics for CMJs
|
|
28
|
+
|
|
29
|
+
See [CMJ API](cmj.md) for detailed documentation.
|
|
30
|
+
|
|
31
|
+
## Basic Usage
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from kinemotion import process_video, process_cmj_video
|
|
35
|
+
|
|
36
|
+
# Drop jump analysis
|
|
37
|
+
drop_metrics = process_video("dropjump.mp4", drop_height=0.40)
|
|
38
|
+
|
|
39
|
+
# CMJ analysis
|
|
40
|
+
cmj_metrics = process_cmj_video("cmj.mp4")
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Batch Processing
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from kinemotion import process_videos_bulk, process_cmj_videos_bulk
|
|
47
|
+
|
|
48
|
+
# Batch drop jump analysis
|
|
49
|
+
results = process_videos_bulk(
|
|
50
|
+
video_paths=["video1.mp4", "video2.mp4"],
|
|
51
|
+
drop_height=0.40,
|
|
52
|
+
output_dir="results/",
|
|
53
|
+
workers=4
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
# Batch CMJ analysis
|
|
57
|
+
cmj_results = process_cmj_videos_bulk(
|
|
58
|
+
video_paths=["cmj1.mp4", "cmj2.mp4"],
|
|
59
|
+
output_dir="results/",
|
|
60
|
+
workers=4
|
|
61
|
+
)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Core Utilities
|
|
65
|
+
|
|
66
|
+
For advanced usage, you can access lower-level utilities:
|
|
67
|
+
|
|
68
|
+
- Pose detection and tracking
|
|
69
|
+
- Velocity computation
|
|
70
|
+
- Smoothing and filtering
|
|
71
|
+
- Video I/O with rotation handling
|
|
72
|
+
|
|
73
|
+
See [Core Utilities](core.md) for detailed documentation.
|