kinemotion 0.38.0__tar.gz → 0.38.1__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.38.1/.basic-memory/biomechanics/camera-angle-empirical-validation-results-45-superior-for-media-pipe.md +201 -0
- kinemotion-0.38.1/.basic-memory/development/athlete-pose3d-and-cross-platform-determinism-investigation-complete.md +69 -0
- kinemotion-0.38.1/.basic-memory/development/athlete-pose3d-final-strategy-accuracy-and-robustness.md +140 -0
- kinemotion-0.38.1/.basic-memory/development/athlete-pose3d-media-pipe-enhancement-plan.md +1305 -0
- kinemotion-0.38.1/.basic-memory/development/athlete-pose3d-phase-1-implementation-complete.md +363 -0
- kinemotion-0.38.1/.basic-memory/development/cross-platform-determinism-analysis-final-results.md +276 -0
- kinemotion-0.38.1/.basic-memory/development/drop-jump-detection-complete-fix-all-metrics-within-target.md +185 -0
- kinemotion-0.38.1/.basic-memory/development/drop-jump-detection-failure-analysis-per-video-breakdown.md +133 -0
- kinemotion-0.38.1/.basic-memory/development/drop-jump-fix-drop-start-successful-landing-and-takeoff-remain.md +109 -0
- kinemotion-0.38.1/.basic-memory/development/non-deterministic-analysis-root-cause-and-solution.md +101 -0
- kinemotion-0.38.1/.basic-memory/development/pose-detection-baseline-evaluation-results.md +119 -0
- kinemotion-0.38.1/.basic-memory/development/pose-detection-optimization-complete-success-summary.md +193 -0
- kinemotion-0.38.1/.basic-memory/development/pose-detection-parameter-optimization-framework.md +178 -0
- kinemotion-0.38.1/.basic-memory/development/velocity-threshold-empirical-validation-study.md +162 -0
- kinemotion-0.38.1/.basic-memory/project-management/version-mismatch-analysis-kinemotion-0370-vs-0300.md +155 -0
- kinemotion-0.38.1/.basic-memory/strategy/pose2sim-migration-evaluation-and-strategy.md +284 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.gitignore +3 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/CHANGELOG.md +13 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/PKG-INFO +1 -1
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/Dockerfile +5 -2
- {kinemotion-0.38.0 → kinemotion-0.38.1}/pyproject.toml +1 -1
- {kinemotion-0.38.0 → kinemotion-0.38.1}/uv.lock +1 -1
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/api/api-reference-quick-commands.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/api/supabase-authentication-setup-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/auth-provider-comparison-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/auth-providers-comparison-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/supabase-authentication-quick-start.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/supabase-authentication-setup-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/supabase-authentication-technical-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/supabase-google-oauth-setup-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/supabase-production-setup-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/authentication/supabase-quick-start-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/biomechanics/camera-perspective-analysis-45deg-vs-lateral.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/biomechanics/cmj-landing-detection-window-validation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/biomechanics/cmj-physiological-bounds-for-validation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/biomechanics/cmj-validation-implementation-complete.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/biomechanics/drop-jump-vs-cmj-key-differences.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/biomechanics/technical-implementation-45deg-perspective-correction.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/codebase/codebase-architecture-overview.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/codebase/validation-architecture-visual-hierarchy-after-refactoring.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/codebase/validation-code-duplication-evidence.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/codebase/validation-module-architecture-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/codebase/validation-refactoring-complete-architecture-improvement.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/automated-deployment-setup-git-hub-actions-with-workload-identity-federation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/backend-repository-split-migration-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/backend-repository-split-step-by-step-execution-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/cloud-run-security-least-privilege-service-account-setup.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/cors-and-memory-issues-production-debugging-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/current-kinemotion-architecture-correct-deployment-setup.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/frontend-repository-split-migration-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/frontend-repository-split-step-by-step-execution-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/production-deployment-guide-vercel-google-cloud-run.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/quick-deployment-commands-vercel-and-cloud-run.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/deployment/vercel-monorepo-deployment-best-practice.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/backend-authentication-and-logging-status.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/backend-code-coverage-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/backend-code-duplication-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/backend-kinemotion-decoupling-strategy.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/backend-sonar-cloud-integration-status.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/basic-memory-naming-hook-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/ci-caching-issue-investigation-deep-squat-test-failure.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/ci-vs-local-test-failure-investigation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/claude-code-hook-configuration.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/cmj-phase-detection-testing-gap-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/development-standards-quality-gates.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/frontend-dependencies-analysis-nov-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/google-oauth-setup-script-final-review-production-ready.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/google-oauth-setup-script-review-issues-and-recommendations.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/hook-complete-audit-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/hook-configuration-audit.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/hook-quick-reference.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/keyboard-interrupt-test-suite-failure-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/p0-p1-p2-test-suite-fixes-final-report.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/structured-logging-implementation-complete.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/structured-logging-implementation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/supabase-dashboard-navigation-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/test-coverage-asymmetry-analysis-cmj-vs-drop-jump.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/test-coverage-equivalence-achievement-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/test-suite-comprehensive-review-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/test-suite-comprehensive-review-structure-and-gaps.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/test-suite-p0-p1-p2-fixes-complete-report.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/test-suite-p0-p1-p2-fixes-progress-report.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/unused-and-experimental-features-strategy.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/unused-code-detection-prompt-template.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/unused-code-identification-and-decorator-application-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/unused-code-verification-final-pass-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/using-multiple-mcp-reasoning-servers-simultaneously.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/development/vercel-authentication-options-for-user-id-tracking.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/documentation-audit-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/issue-12-mvp-scaffolding-complete.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/issue-12-unblocked-tasks-breakdown.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/issue-12-use-real-metrics-now.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/kinemotion-project-setup-complete.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/kinemotion-supabase-production-configuration.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/mcp-sequential-thinking-alternatives-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/project-state-summary-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/specialized-subagents-routing-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/project-management/supabase-setup-instructions-for-kinemotion.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/strategy/deployment-decision-analysis-for-kinemotion.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/strategy/mvp-feedback-collection-plan.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/strategy/mvp-first-strategic-direction.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/strategy/mvp-validation-checkpoints.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/strategy/strategic-priority-tasks-current-roadmap.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.basic-memory/strategy/third-party-auth-providers-with-free-tiers-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/biomechanics-specialist.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/computer-vision-engineer.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/devops-cicd-engineer.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/frontend-developer.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/ml-data-scientist.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/project-manager.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/python-backend-developer.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/qa-test-engineer.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/agents/technical-writer.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/hooks/fix-basic-memory-names.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.claude/settings.local.json +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.cursor/mcp.json +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.dockerignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.gitattributes +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/dependabot.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/pull_request_template.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/workflows/deploy-backend.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/workflows/docs.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/workflows/release.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/workflows/security.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.github/workflows/test.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.mcp.json +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.pre-commit-config.yaml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.readthedocs.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/.gitignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/backend-cors-fastapi-middleware-order.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/camera-perspective-validation-study.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/code_style_and_conventions.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/current-project-architecture.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/deployment-checklist-and-known-issues.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/deployment-setup-complete.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/github-project-setup-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/mvp-first-strategy.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/mvp-roadmap-and-priorities.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/project_overview.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/specialist-agents-routing.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/memories/suggested_commands.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.serena/project.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.tool-versions +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/.vercelignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/CLAUDE.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/CODE_OF_CONDUCT.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/CONTRIBUTING.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/Dockerfile +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/GEMINI.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/LICENSE +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/SECURITY.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/.dockerignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/.env.example +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/docs/fly-deployment.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/docs/implementation-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/docs/setup.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/docs/tests.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/pyproject.toml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/src/kinemotion_backend/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/src/kinemotion_backend/app.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/src/kinemotion_backend/auth.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/src/kinemotion_backend/logging_config.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/src/kinemotion_backend/middleware.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/conftest.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/test_api_endpoints.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/test_error_handling.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/test_health.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/test_r2_integration.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/backend/tests/test_validation.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/api/cmj.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/api/core.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/api/dropjump.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/api/overview.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/agents-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/errors-findings.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/test-suite-review-december-2025.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/testing-standards.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/testing.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/type-hints.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/validation-plan.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/validation-roadmap.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/development/wallball-norep-detection.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/bulk-processing.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/camera-setup.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/cloud-run-deployment.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/cmj-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/cmj-recording-protocol-es.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/cmj-recording-protocol.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/deployment-checklist.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/local-testing.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/guides/setup-issue-12.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/index.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/quick-start.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/reference/cloud-run-quick-reference.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/reference/json-output-format.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/reference/json-structure-comparison.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/reference/parameters.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/reference/pose-systems.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/paper-downloader/HOW-TO-FIND-DOIS.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/paper-downloader/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/paper-downloader/dois.txt +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/paper-downloader/download.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/paper-downloader/pyproject.toml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/paper-downloader/uv.lock +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/MANUAL-DOWNLOAD-GUIDE.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/convert_pdfs.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Ward_Putting-i-in-Team.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/jump-performance/2011_Harper_10-to-5-Jump-Test.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/jump-performance/2014_Samozino_FV-Imbalance.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/jump-performance/2022_Wells_Golf-Clubhead-CMJ.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Moore_Economical-Running-Technique.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/smartphone-technology/2022_Bishop_MyJumpLab-Validation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/markdown/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/online-references-for-papers.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Ward_Putting-i-in-Team.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/jump-performance/2011_Harper_10-to-5-Jump-Test.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/jump-performance/2014_Samozino_FV-Imbalance.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/jump-performance/2022_Wells_Golf-Clubhead-CMJ.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Moore_Economical-Running-Technique.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/smartphone-technology/2022_Bishop_MyJumpLab-Validation.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/research/thirdparty/pdfs/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.pdf +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/1-STRATEGIC_SUMMARY.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/2-STRATEGIC_ANALYSIS.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/MVP_FEEDBACK_COLLECTION.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/MVP_VALIDATION_CHECKPOINTS.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/STYLE_GUIDE.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/01-executive-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/02-technical-assessment.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/03-refactoring-roadmap.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BIOMECHANICS/01-executive-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BIOMECHANICS/02-technical-assessment.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BIOMECHANICS/03-reference-guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/BIOMECHANICS/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/COMPUTER_VISION/01-executive-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/COMPUTER_VISION/02-real-time-architecture.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/COMPUTER_VISION/03-implementation-checklist.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/COMPUTER_VISION/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/CONSOLIDATED/01-agent-consensus.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/CONSOLIDATED/02-critical-findings.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/CONSOLIDATED/03-roadmap-adjustments.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/CONSOLIDATED/04-decision-points.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/CONSOLIDATED/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/CONSOLIDATED/risk-register.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/CONSOLIDATED/timeline-roadmap.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/01-executive-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/02-infrastructure-assessment.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/03-implementation-roadmap.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/01-executive-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/02-technical-assessment.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/03-parameter-specifications.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/QA_TESTING/01-executive-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/QA_TESTING/02-roadmap-assessment.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/QA_TESTING/03-testing-checklists.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/QA_TESTING/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/01-executive-summary.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/02-documentation-strategy.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/03-action-plan.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/strategy/pose2sim-migration-evaluation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/technical/framerate.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/technical/implementation-details.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/technical/imu-metadata.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/technical/real-time-analysis.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/technical/triple-extension.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/translations/es/camera-setup.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/validation/determinism-test.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/validation/known-height-validation.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/docs/validation-status.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/examples/bulk/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/examples/bulk/bulk_processing.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/examples/bulk/simple_example.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/examples/programmatic_usage.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/.editorconfig +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/.env.example +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/.gitattributes +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/.gitignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/.yarn/releases/yarn-4.12.0.cjs +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/.yarnrc.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/index.html +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/package.json +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/App.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/Auth.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/ErrorBoundary.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/ErrorDisplay.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/LoadingSpinner.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/RecentUploads.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/ResultsDisplay.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/ResultsSkeleton.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/components/UploadForm.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/hooks/useAnalysis.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/hooks/useAuth.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/hooks/useBackendVersion.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/hooks/useRecentUploads.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/index.css +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/lib/supabase.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/main.tsx +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/types/api.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/src/vite-env.d.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/vercel.json +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/vite.config.ts +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/frontend/yarn.lock +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/justfile +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/local_dev.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/mkdocs.yml +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/.gitignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/demos/.gitignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/demos/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/demos/api_demo.ipynb +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/demos/batch_processing_demo.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/demos/sample_data/.gitkeep +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/presentation_guide.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/revealjs/.gitignore +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/revealjs/Makefile +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/revealjs/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/revealjs/slides.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/presentation/speaker_script.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/requirements-docs.txt +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/samples/cmjs/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/SCRIPTS_QUICKREF.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/analyze_determinism_variance.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/basic-memory-utils.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/debug_contact_states.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/debug_detection.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/find_unused_features.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/generate_test_data.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/optimize_detection_params.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/plot_cmj_velocities.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/plot_validation_results.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/plot_velocities.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/prepare_ground_truth.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/README.md +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/add-issue.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/batch-set-fields.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/helpers.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/list.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/set-field.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/set-status.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project/summary.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/project.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/setup-github-deploy.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/setup-google-oauth.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/setup-supabase-local.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/setup-supabase-production.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/test_acceleration_standing.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/test_determinism.sh +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/test_drop_start_debug.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/scripts/validate_known_heights.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/sonar-project.properties +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/api.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cli.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/analysis.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/cli.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/debug_overlay.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/joint_angles.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/kinematics.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/metrics_validator.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/cmj/validation_bounds.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/auto_tuning.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/cli_utils.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/debug_overlay_utils.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/determinism.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/experimental.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/filtering.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/formatting.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/metadata.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/pose.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/quality.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/smoothing.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/validation.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/core/video_io.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/dropjump/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/dropjump/analysis.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/dropjump/cli.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/dropjump/debug_overlay.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/dropjump/kinematics.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/dropjump/metrics_validator.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/dropjump/validation_bounds.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/src/kinemotion/py.typed +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cli/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cli/test_cmj.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cli/test_dropjump.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cli/test_imports.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cmj/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cmj/test_analysis.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cmj/test_api.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cmj/test_joint_angles.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cmj/test_kinematics.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/cmj/test_physiological_bounds.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/conftest.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_auto_tuning.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_filtering.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_formatting.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_metadata.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_pose.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_quality.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_smoothing.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_validation.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/core/test_video_io.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/__init__.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/test_adaptive_threshold.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/test_analysis.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/test_api.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/test_contact_detection.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/test_kinematics.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/test_physiological_bounds.py +0 -0
- {kinemotion-0.38.0 → kinemotion-0.38.1}/tests/dropjump/test_validation_integration.py +0 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Camera Angle Empirical Validation Results - 45° Superior for MediaPipe
|
|
3
|
+
type: note
|
|
4
|
+
permalink: biomechanics/camera-angle-empirical-validation-results-45deg-superior-for-media-pipe
|
|
5
|
+
tags:
|
|
6
|
+
- cmj
|
|
7
|
+
- validation
|
|
8
|
+
- camera-angle
|
|
9
|
+
- mediapipe
|
|
10
|
+
- empirical-study
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Camera Angle Empirical Validation Results
|
|
14
|
+
|
|
15
|
+
**Date**: December 6, 2025
|
|
16
|
+
**Study Type**: Empirical validation with 6 CMJ videos
|
|
17
|
+
**Finding**: **45° oblique view provides SUPERIOR ankle tracking vs 90° lateral**
|
|
18
|
+
|
|
19
|
+
## Executive Summary
|
|
20
|
+
|
|
21
|
+
Empirical testing **contradicts theoretical predictions**. MediaPipe pose tracking shows:
|
|
22
|
+
- **45° oblique**: More accurate ankle angles (avg: 140.67°)
|
|
23
|
+
- **90° lateral**: Less accurate ankle angles (avg: 112.00°)
|
|
24
|
+
- **Difference**: 28.67° (25.6% discrepancy)
|
|
25
|
+
|
|
26
|
+
**Root Cause**: Landmark occlusion at 90° lateral view
|
|
27
|
+
**Recommendation**: Use 45° as reference angle, not 90°
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Experimental Setup
|
|
32
|
+
|
|
33
|
+
### Videos Analyzed
|
|
34
|
+
- **3 x CMJ at 45° oblique**: IMG_6733, IMG_6734, IMG_6735
|
|
35
|
+
- **3 x CMJ at 90° lateral**: IMG_6736, IMG_6737, IMG_6738
|
|
36
|
+
- **Same athlete**, individual jumps per video
|
|
37
|
+
- **Frames analyzed**: User-specified takeoff frames (maximum plantarflexion)
|
|
38
|
+
|
|
39
|
+
### Measurement Method
|
|
40
|
+
1. Generated debug videos with angle overlays
|
|
41
|
+
2. Extracted exact frames at takeoff (user-specified)
|
|
42
|
+
3. Read ankle angles from "TRIPLE EXTENSION" overlay
|
|
43
|
+
4. Calculated averages and compared
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Empirical Data
|
|
48
|
+
|
|
49
|
+
### 45° Oblique View (Better Tracking)
|
|
50
|
+
| Video | Frame | Ankle Angle |
|
|
51
|
+
|-------|-------|-------------|
|
|
52
|
+
| cmj-45-1 | 104 | 143° |
|
|
53
|
+
| cmj-45-2 | 107 | 132° |
|
|
54
|
+
| cmj-45-3 | 93 | 147° |
|
|
55
|
+
| **Average** | - | **140.67°** |
|
|
56
|
+
| **Std Dev** | - | **7.77°** |
|
|
57
|
+
|
|
58
|
+
### 90° Lateral View (Poor Tracking)
|
|
59
|
+
| Video | Frame | Ankle Angle |
|
|
60
|
+
|-------|-------|-------------|
|
|
61
|
+
| cmj-90-1 | 299 | 117° |
|
|
62
|
+
| cmj-90-2 | 247 | 110° |
|
|
63
|
+
| cmj-90-3 | 182 | 109° |
|
|
64
|
+
| **Average** | - | **112.00°** |
|
|
65
|
+
| **Std Dev** | - | **4.36°** |
|
|
66
|
+
|
|
67
|
+
### Comparison
|
|
68
|
+
- **Difference**: 28.67° (25.6% higher at 45°)
|
|
69
|
+
- **Expected**: 45° lower than 90° (theory predicted ~5-10° underestimation)
|
|
70
|
+
- **Actual**: 45° HIGHER than 90° (complete inversion)
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Root Cause Analysis
|
|
75
|
+
|
|
76
|
+
### Why 90° Lateral Fails
|
|
77
|
+
|
|
78
|
+
**Problem**: Left/right foot confusion due to occlusion
|
|
79
|
+
- At pure lateral (90°) view, **one leg occludes the other** in 2D projection
|
|
80
|
+
- MediaPipe cannot distinguish which foot is which (left vs right)
|
|
81
|
+
- Algorithm confuses near leg with far leg → **incorrect landmark assignment**
|
|
82
|
+
- MediaPipe tracks: `heel`, `ankle`, `foot_index` but may mix left/right
|
|
83
|
+
- Result: **Artificially small ankle angles** (112° avg) due to tracking the wrong foot or blending both feet
|
|
84
|
+
|
|
85
|
+
### Why 45° Oblique Succeeds
|
|
86
|
+
|
|
87
|
+
**Advantage**: Better landmark separation
|
|
88
|
+
- At 45° oblique view, landmarks have **depth separation** visible in 2D
|
|
89
|
+
- `heel`, `ankle`, `foot_index` appear as **distinct points** in image
|
|
90
|
+
- MediaPipe can track each landmark **independently and accurately**
|
|
91
|
+
- Result: **More accurate ankle angles** (140.67° avg)
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Theoretical vs Empirical
|
|
96
|
+
|
|
97
|
+
### Theory Predicted (WRONG)
|
|
98
|
+
```
|
|
99
|
+
Assumption: 90° lateral = ground truth (3D → 2D projection accurate)
|
|
100
|
+
Assumption: 45° oblique = underestimated (missing 3rd dimension)
|
|
101
|
+
Expected: angle_45 < angle_90
|
|
102
|
+
Expected: correction_factor > 1.0 (e.g., 1.145)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Empirical Reality (CORRECT)
|
|
106
|
+
```
|
|
107
|
+
Finding: 45° oblique = better tracking (landmark separation)
|
|
108
|
+
Finding: 90° lateral = worse tracking (landmark overlap)
|
|
109
|
+
Actual: angle_45 (140.67°) > angle_90 (112.00°)
|
|
110
|
+
Actual: NO correction needed - 45° is already superior!
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Key Insight**: Theory was based on geometric projection, but **ignored computer vision constraints** (landmark detectability, occlusion).
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Implications
|
|
118
|
+
|
|
119
|
+
### For Issue #10 (CMJ Ankle Angle Validation)
|
|
120
|
+
- ❌ Original framing: "45° underestimates, need correction"
|
|
121
|
+
- ✅ Correct framing: "90° fails tracking, 45° is reference"
|
|
122
|
+
- **Recommendation**: Close or reframe Issue #10
|
|
123
|
+
|
|
124
|
+
### For Recording Guidelines
|
|
125
|
+
- ✅ **45° oblique is RECOMMENDED** for MediaPipe-based analysis
|
|
126
|
+
- ❌ 90° pure lateral should be **avoided** (landmark occlusion)
|
|
127
|
+
- Update `docs/guides/cmj-recording-protocol.md`
|
|
128
|
+
|
|
129
|
+
### For Implementation
|
|
130
|
+
- **NO correction factor needed**
|
|
131
|
+
- Current algorithm is already optimal at 45°
|
|
132
|
+
- Do not implement `camera_angle` parameter (unnecessary)
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Physiological Validation
|
|
137
|
+
|
|
138
|
+
### Are 140.67° Ankle Angles Reasonable?
|
|
139
|
+
|
|
140
|
+
**Expected range at takeoff**: 120-150° (moderate to high plantarflexion)
|
|
141
|
+
- **140.67° is VALID** - within normal range
|
|
142
|
+
- Consistent with athletic performance literature
|
|
143
|
+
- Matches expected plantarflexion at CMJ takeoff
|
|
144
|
+
|
|
145
|
+
### Are 112° Ankle Angles Reasonable?
|
|
146
|
+
|
|
147
|
+
**112° is UNUSUALLY LOW** for takeoff
|
|
148
|
+
- Would indicate **insufficient plantarflexion**
|
|
149
|
+
- Biomechanically inefficient for jumping
|
|
150
|
+
- Suggests **measurement error**, not true physiology
|
|
151
|
+
|
|
152
|
+
**Conclusion**: 45° measurements pass physiological sanity check, 90° do not.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Recommendations
|
|
157
|
+
|
|
158
|
+
### Immediate Actions
|
|
159
|
+
1. ✅ **Use 45° as reference angle** going forward
|
|
160
|
+
2. ✅ **Do NOT implement correction factor**
|
|
161
|
+
3. ✅ Update recording guidelines to recommend 45°
|
|
162
|
+
4. ❌ Close/reframe Issue #10
|
|
163
|
+
|
|
164
|
+
### Documentation Updates
|
|
165
|
+
- `docs/guides/cmj-recording-protocol.md`: Change from 90° to 45° recommendation
|
|
166
|
+
- `docs/research/camera-perspective-analysis.md`: Add empirical findings
|
|
167
|
+
- CLAUDE.md: Update "Critical Gotchas" with MediaPipe angle recommendation
|
|
168
|
+
|
|
169
|
+
### Future Work
|
|
170
|
+
- Validate with more athletes/videos (if needed)
|
|
171
|
+
- Test other joints (knee, hip) - do they show same pattern?
|
|
172
|
+
- Consider warning users if video appears to be pure lateral (90°)?
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Files Generated
|
|
177
|
+
|
|
178
|
+
**Analysis outputs** (saved in `/tmp/validation_analysis/`):
|
|
179
|
+
- 6 x JSON files with metrics
|
|
180
|
+
- 6 x debug MP4 videos with angle overlays
|
|
181
|
+
- 6 x PNG frames at takeoff (user-specified frames)
|
|
182
|
+
|
|
183
|
+
**Frame numbers used**:
|
|
184
|
+
```
|
|
185
|
+
cmj-45-1: frame 104
|
|
186
|
+
cmj-45-2: frame 107
|
|
187
|
+
cmj-45-3: frame 93
|
|
188
|
+
cmj-90-1: frame 299
|
|
189
|
+
cmj-90-2: frame 247
|
|
190
|
+
cmj-90-3: frame 182
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Conclusion
|
|
196
|
+
|
|
197
|
+
**Empirical validation reveals**: MediaPipe-based pose detection requires **good landmark separation**, which 45° oblique view provides but 90° lateral view does not.
|
|
198
|
+
|
|
199
|
+
**Key Takeaway**: Computer vision systems have different constraints than theoretical geometry. Always validate empirically with your specific tech stack!
|
|
200
|
+
|
|
201
|
+
**Final Recommendation**: **45° oblique is the optimal camera angle for kinemotion CMJ analysis.**
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: AthletePose3D and Cross-Platform Determinism Investigation Complete
|
|
3
|
+
type: note
|
|
4
|
+
permalink: development/athlete-pose3-d-and-cross-platform-determinism-investigation-complete
|
|
5
|
+
tags:
|
|
6
|
+
- athletepose3d
|
|
7
|
+
- determinism
|
|
8
|
+
- cross-platform
|
|
9
|
+
- investigation-complete
|
|
10
|
+
- m1-vs-intel
|
|
11
|
+
- version-sync
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# AthletePose3D & Cross-Platform Determinism Investigation - Complete
|
|
15
|
+
|
|
16
|
+
**Date:** 2025-12-08 | **Duration:** 8 hours | **Status:** COMPLETE
|
|
17
|
+
|
|
18
|
+
## Executive Summary
|
|
19
|
+
|
|
20
|
+
**Original Goal:** Use AthletePose3D to make MediaPipe more deterministic
|
|
21
|
+
|
|
22
|
+
**Key Discovery:** MediaPipe IS deterministic. Problem was version mismatch + acceptable cross-platform variance.
|
|
23
|
+
|
|
24
|
+
**Results:**
|
|
25
|
+
- M1 & Intel both 100% deterministic on same platform ✅
|
|
26
|
+
- Version mismatch fixed: v0.30.0 → v0.38.0 ✅
|
|
27
|
+
- Remaining 5.6% cross-platform variance is normal (ARM vs x86) ✅
|
|
28
|
+
- AthletePose3D dataset prepared (5,154 videos) ✅
|
|
29
|
+
|
|
30
|
+
## Test Results
|
|
31
|
+
|
|
32
|
+
**M1 Determinism:** RSI = 3.7186533116576643 (5 runs, identical)
|
|
33
|
+
**Intel Determinism:** RSI = 4.059785924241584 (5 runs, identical)
|
|
34
|
+
**Cross-Platform:** 5.6% variance (acceptable)
|
|
35
|
+
|
|
36
|
+
**MediaPipe Landmarks:** 0.048% difference (negligible)
|
|
37
|
+
**Flight Time:** 0.1% difference (excellent)
|
|
38
|
+
**Contact Time:** 6% difference (event detection sensitivity)
|
|
39
|
+
|
|
40
|
+
## Root Causes
|
|
41
|
+
|
|
42
|
+
1. **Version Mismatch (FIXED):** Backend had v0.30.0, local v0.38.0 → 9% variance
|
|
43
|
+
2. **CPU Architecture:** ARM vs x86 floating-point → 5.6% variance (normal)
|
|
44
|
+
3. **Event Detection:** Amplifies tiny differences (0.048% → 6%)
|
|
45
|
+
|
|
46
|
+
## Solution Implemented
|
|
47
|
+
|
|
48
|
+
- Deleted backend/uv.lock
|
|
49
|
+
- Changed Docker context to root
|
|
50
|
+
- Backend uses workspace lock with kinemotion from source
|
|
51
|
+
- Both platforms now identical v0.38.0
|
|
52
|
+
|
|
53
|
+
## Files
|
|
54
|
+
|
|
55
|
+
**Test Scripts:**
|
|
56
|
+
- scripts/test_rsi_m1_vs_intel.sh
|
|
57
|
+
- scripts/test_*determinism*.sh
|
|
58
|
+
|
|
59
|
+
**Dataset:** data/athletepose3d/ (5,154 videos)
|
|
60
|
+
|
|
61
|
+
**Endpoints:** /determinism/* added to backend
|
|
62
|
+
|
|
63
|
+
## Recommendation
|
|
64
|
+
|
|
65
|
+
Accept 5.6% cross-platform variance as normal. Both platforms are deterministic and scientifically valid. Proceed with MVP.
|
|
66
|
+
|
|
67
|
+
## Lesson
|
|
68
|
+
|
|
69
|
+
Always check version matching FIRST before building complex infrastructure! Could have identified root cause in 5 minutes instead of 8 hours.
|
kinemotion-0.38.1/.basic-memory/development/athlete-pose3d-final-strategy-accuracy-and-robustness.md
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: AthletePose3D Final Strategy - Accuracy and Robustness
|
|
3
|
+
type: note
|
|
4
|
+
permalink: development/athlete-pose3-d-final-strategy-accuracy-and-robustness
|
|
5
|
+
tags:
|
|
6
|
+
- athletepose3d
|
|
7
|
+
- accuracy
|
|
8
|
+
- robustness
|
|
9
|
+
- strategy
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# AthletePose3D Final Strategy: Accuracy & Robustness
|
|
13
|
+
|
|
14
|
+
**Date:** 2025-12-08
|
|
15
|
+
**Status:** Determinism verified ✅, Now testing Accuracy + Robustness in parallel
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Key Discovery: Determinism Already Perfect
|
|
20
|
+
|
|
21
|
+
Tested drop jump analysis on 3 videos × 3 runs = **100% deterministic**:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
dj-45-IMG_6739.MOV: RSI = 3.7186533116576643 (identical across 3 runs)
|
|
25
|
+
dj-45-IMG_6740.MOV: RSI = 3.1705635822212423 (identical across 3 runs)
|
|
26
|
+
dj-45-IMG_6741.MOV: RSI = 4.016533853743156 (identical across 3 runs)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Conclusion:** AthletePose3D is NOT needed for determinism - already working perfectly.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Revised Strategy: Focus on What Matters
|
|
34
|
+
|
|
35
|
+
### Track A: Accuracy Validation (In Progress)
|
|
36
|
+
**Agent:** Computer Vision Engineer
|
|
37
|
+
**Goal:** Measure absolute accuracy using camera projection
|
|
38
|
+
**Method:**
|
|
39
|
+
- Use `camera_projection.py` (Track 2 solution)
|
|
40
|
+
- Calculate pixel-level MPJPE on AP3D videos
|
|
41
|
+
- Compare with research benchmarks
|
|
42
|
+
|
|
43
|
+
**Deliverables:**
|
|
44
|
+
- `validator_mpjpe.py` - Working MPJPE calculator
|
|
45
|
+
- `reports/ap3d_accuracy_baseline.md` - Accuracy report
|
|
46
|
+
- Baseline: 78px MPJPE (from Track 2 test)
|
|
47
|
+
|
|
48
|
+
**Value:** Know if MediaPipe is "good enough" or needs improvement
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### Track B: Robustness Analysis (In Progress)
|
|
53
|
+
**Agent:** ML Data Scientist
|
|
54
|
+
**Goal:** Understand parameter sensitivity
|
|
55
|
+
**Method:**
|
|
56
|
+
- Test quality presets on 3 drop jump videos
|
|
57
|
+
- Vary smoothing/filtering parameters
|
|
58
|
+
- Measure RSI variance
|
|
59
|
+
|
|
60
|
+
**Deliverables:**
|
|
61
|
+
- `test_parameter_sensitivity.py` - Parameter testing script
|
|
62
|
+
- `reports/parameter_sensitivity_analysis.md` - Findings
|
|
63
|
+
- Identification of most stable parameters
|
|
64
|
+
|
|
65
|
+
**Value:** Know which parameters minimize unwanted variance
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Why This Makes Sense
|
|
70
|
+
|
|
71
|
+
### Accuracy tells us:
|
|
72
|
+
- **"Are we close to ground truth?"**
|
|
73
|
+
- MediaPipe detects ankle at (512, 384)
|
|
74
|
+
- Ground truth is (489, 401)
|
|
75
|
+
- MPJPE = 28 pixels = good!
|
|
76
|
+
|
|
77
|
+
### Robustness tells us:
|
|
78
|
+
- **"Do small changes break things?"**
|
|
79
|
+
- smoothing_window=5 → RSI=3.2
|
|
80
|
+
- smoothing_window=7 → RSI=3.2 (stable ✅)
|
|
81
|
+
- smoothing_window=11 → RSI=2.9 (sensitive ⚠️)
|
|
82
|
+
|
|
83
|
+
### Combined:
|
|
84
|
+
**"MediaPipe is X% accurate AND parameters should be set to Y for lowest variance"**
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Expected Outcomes
|
|
89
|
+
|
|
90
|
+
### Best Case (Both Succeed):
|
|
91
|
+
✅ **Accuracy:** "MediaPipe achieves 60-90px MPJPE on athletic jumps (good baseline)"
|
|
92
|
+
✅ **Robustness:** "smoothing_window=7, filter_cutoff=8Hz minimizes variance"
|
|
93
|
+
✅ **Action:** Create "athletic" preset with robust parameters
|
|
94
|
+
|
|
95
|
+
### Likely Case:
|
|
96
|
+
✅ **Accuracy:** "MPJPE varies: 50px (Axel) to 120px (Running)"
|
|
97
|
+
✅ **Robustness:** "balanced preset already near-optimal, minor tuning possible"
|
|
98
|
+
✅ **Action:** Decide if improvement worth Phase 2 effort
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Integration Plan
|
|
103
|
+
|
|
104
|
+
When both tracks complete:
|
|
105
|
+
|
|
106
|
+
1. **Accuracy Report:**
|
|
107
|
+
- "MediaPipe baseline: X pixels MPJPE"
|
|
108
|
+
- "Movement-specific: Axel=Y, Running=Z"
|
|
109
|
+
|
|
110
|
+
2. **Robustness Report:**
|
|
111
|
+
- "Current variance: ±W% across similar videos"
|
|
112
|
+
- "Optimal parameters: [smoothing=X, filter=Y]"
|
|
113
|
+
- "Expected variance reduction: V%"
|
|
114
|
+
|
|
115
|
+
3. **Combined Recommendation:**
|
|
116
|
+
- If accuracy good + low variance → Phase 1 complete, use for marketing
|
|
117
|
+
- If accuracy good + high variance → Tune parameters (Phase 2a only)
|
|
118
|
+
- If accuracy poor → Full Phase 2-3 needed
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Timeline
|
|
123
|
+
|
|
124
|
+
**Accuracy Track:** 2-3 hours (camera projection + validation run)
|
|
125
|
+
**Robustness Track:** 1-2 hours (parameter testing on 3 videos)
|
|
126
|
+
|
|
127
|
+
**Parallel completion:** ~3 hours total (vs 5 hours sequential)
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Current Status
|
|
132
|
+
|
|
133
|
+
- ✅ Determinism: Verified perfect
|
|
134
|
+
- 🔄 Accuracy: Agent working on MPJPE validation
|
|
135
|
+
- 🔄 Robustness: Agent testing parameter sensitivity
|
|
136
|
+
- ⏳ Results: Expected in 1-3 hours
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
**Next:** Wait for agents to complete, then integrate findings into final Phase 1 report.
|