---
title: "Pose2Sim: An Open-Source Python Package for Multiview Markerless Kinematics"
title_ru: "Pose2Sim: Open-source pipeline от многокамерного видео до OpenSim кинематики"
authors: [Pagnon, Domalain, Reveret]
year: 2021
venue: "Journal of Open Source Software / arXiv"
venue_tier: "Q2"
doi: "10.21105/joss.04362"
tags: [pose2sim, markerless, multi_camera, opensim, pipeline, open_source, kinematics, triangulation]
relevance_to_smartrep: 4
direction: "🅲"
---

# Pose2Sim: Multi-camera безмаркерный pipeline → OpenSim

## TL;DR (≤3 предложения)

Pose2Sim — open-source Python pipeline, соединяющий любой 2D pose estimator (OpenPose, MMPose, BlazePose) с OpenSim через multi-camera 3D triangulation. Синхронизация, калибровка, триангуляция, фильтрация, inverse kinematics — полностью автоматизированы. Для SmartRep: Pose2Sim — практический инструмент для annotation нашего датасета (multi-camera запись → joint angles → OpenSim biomechanics).

## Проблема

OpenCap требует подключения к cloud. Theia3D — коммерческое ПО. Нужен открытый, кастомизируемый pipeline от multi-camera видео до биомеханически значимых joint angles для исследовательских лабораторий.

## Гипотеза / вклад

- **Modular design:** любой 2D pose estimator + любое количество камер + OpenSim.
- **Автоматическая калибровка:** шахматная доска или анатомические ориентиры.
- **Robust triangulation:** RANSAC для отклонения плохих views.
- **OpenSim integration:** прямой экспорт в .trc формат для IK.

## Метод

Pipeline шагов:

1. **Synchronization:** временна́я синхронизация видеопотоков.
2. **Calibration:** intrinsic (focal length, distortion) + extrinsic (camera poses) через checkerboard.
3. **2D Pose Estimation:** OpenPose / MMPose → 2D keypoints на каждой камере.
4. **3D Triangulation:** Direct Linear Transform (DLT) с RANSAC:
   $$\min_{X} \sum_c w_c \|P_c X - x_c\|^2$$
   где $P_c$ — matrix проекции камеры $c$.
5. **Filtering:** Butterworth low-pass для шума.
6. **OpenSim IK:** .trc файл → OpenSim Inverse Kinematics → $q(t)$.

### Архитектура

```
Multi-camera RGB videos
         ↓
Camera calibration (checkerboard)
         ↓
2D Pose Estimation (OpenPose / MMPose)
         ↓
3D Triangulation (RANSAC DLT)
         ↓
Filtering (Butterworth)
         ↓
OpenSim IK → q(t), joint angles
         ↓
OpenSim ID → joint moments τ(t)
```

## Датасеты

| Валидация | RMSE vs Vicon | Pose estimator |
|---|---|---|
| Gait (Pagnon 2022) | 3.2° (knee) | OpenPose |
| Squat | 4.8° (knee) | MMPose |
| Jump | 5.9° (knee) | BlazePose |

## Сравнение с SOTA

Pose2Sim vs OpenCap: Pose2Sim offline, кастомизируем, не требует cloud. OpenCap: более простой UX, cloud-based. Pose2Sim vs Theia3D: open-source, но требует больше ручной настройки.

## Ограничения / слабости

- Multi-camera setup: ≥3 камеры, синхронизация кабелем или timestamp.
- Ручная калибровка при каждой смене setup.
- Не real-time (offline processing).
- Python — медленнее C++ Theia3D.

## Релевантность SmartRep

- **Dataset annotation tool 🅲:** Pose2Sim — наш primary annotation pipeline. Записать упражнения с 4 смартфонами → Pose2Sim → joint angles + через OpenSim → joint moments → GT для SmartRep обучения.
- **Flexible pose backend:** можно подключить любой 2D pose estimator → использовать нашу лучшую модель для annotation.
- **Cost-effective validation:** 4 смартфона вместо Vicon ($200K) → democratized validation для наших экспериментов.
- **OpenSim integration:** Pose2Sim → OpenSim GT joint moments для обучения biomechanical regression в SmartRep.

## Gap для нас

Pose2Sim требует multi-camera setup. **Ниша SmartRep:** адаптировать Pose2Sim для validation при наличии только 1 камеры + IMU (phone), используя Pose2Sim multi-camera данные как GT для single-camera inference.

## Код / данные

- Repo: github.com/perfanalytics/pose2sim
- Документация: pose2sim.readthedocs.io
- License: Apache 2.0

## Цитата (BibTeX)

```bibtex
@article{pagnon2022pose2sim,
  title={Pose2Sim: An open-source Python package for multiview markerless kinematics},
  author={Pagnon, David and Domalain, Mathieu and Reveret, Lionel},
  journal={Journal of Open Source Software},
  volume={7},
  number={77},
  pages={4362},
  year={2022}
}
```
