OpenPose で人の動きを取得し3D再構成するシリーズの第4回です。ここまでで OpenPose の導入(Part 1)、カメラ校正(Part 2)、3D再構成(Part 3)を行いました。今回は、その動きで生体力学モデルを駆動します——OpenSim によるキネマティクスシミュレーションです。

今回は OpenCap(2台のiOS端末で撮影し、OpenPoseで解析、3D再構成、さらにキネマティクス/キネティクスまで行うオープンソースプロジェクト)を参考に、そのコードを流用します。パイプラインがオープンソースのPythonで、しかも Part 3 で自前の3Dデータが既にあるため、OpenCapの関数を借りてシミュレーション部分から始められます。手順は4つ:
- 3D姿勢データを
.trcファイルに変換 - LSTMモデルでマーカーを拡張
- OpenSimモデルをスケーリング
- 逆運動学(Inverse Kinematics)を実行
1. 3Dデータを .trc ファイルに変換
OpenSim はマーカー軌跡を .trc ファイルから読み込みます(数行のヘッダ→各フレームで各マーカーのx/y/z+フレーム番号・時刻)。まず再構成した3Dキーポイントをこの形式にします。(Part 3 のとおり、生データは先にクリーニング: 欠損を線形補間で埋め、残差分析で平滑化します。)
OpenCap のヘルパー関数(writeTRCfrom3DKeypoints)に、3Dデータ・出力パス・フレームレート・回転角(任意。データが回転している場合のみ辞書で指定。ここでは回転済みなので none)を渡すと .trc を書き出します。
動画での率直な補足: 再構成したスクワットは少し傾いて見えます(カメラ校正やOpenPoseの精度が原因と思われる)。ただ動き自体は明確なので、このまま進めています。
2. LSTMモデルによるマーカー拡張
OpenPose の出力には生体力学上2つの弱点があります。(1) 各フレームを独立に検出しフレーム間の関係がないため、滑らかな動きの復元が難しい。(2) 身体キーポイントが25点しかなく、肩や股関節の回転を計算するには不十分。

OpenCap はこれを LSTMモデルで解決します。光学式モーションキャプチャのマーカーセットと、対応する OpenPose の3D出力をペアにして学習させています。LSTM は時系列を扱うため滑らかな動きを復元し、さらに OpenPose には無い解剖学的マーカー(肘周りや股関節の複数点、C7 や ASIS/PSIS など)を拡張します。これらの追加マーカーがあることで、骨盤回転・腕の回転・屈曲/伸展が計算可能になります。

コードでは augmentTRC に、入力 .trc・体重・身長・拡張モデルのパス(複数バージョンあり。既定は v0.2)を渡します。内部でデータを正規化→LSTM実行→逆正規化し、拡張済みの新しい .trc を書き出します。テキストエディタで開くと、元の関節点に加えて推定された解剖学的マーカーが入っています。

3. OpenSimモデルのスケーリング
次に、汎用の OpenSim 筋骨格モデルを、体重・身長・静止姿勢(static pose)で被験者に合わせてスケーリングします。まず OpenSim(公式サイト)と、そのPythonパッケージを conda 環境に入れます。スケーリング用の設定XMLとベースモデルはどちらも OpenCap のリポジトリから入手できます。トラッキングデータ・モデル・体重・身長・静止姿勢を含む時間範囲を渡すと、スケーリング済みモデルが書き出されます。
率直な補足: 理想的な静止姿勢はきれいな立位です(OpenCapのドキュメント参照)。著者は撮り忘れたため、スクワット前の立っている最初の約1秒を代用しました。進めるには十分ですが理想的ではなく、後で影響が出ます。
4. 逆運動学(Inverse Kinematics)
最後に逆運動学を実行します。スケーリング済みモデルと拡張済み .trc を OpenSim に渡すと、マーカーに最もよく合う関節角度を解き、.mot(モーション)ファイルに保存します。OpenSim の GUI でモデルとモーションを開けば再生できます。

スクワットとして認識できますが、やや不自然で右側が少し沈みます。著者はこれを、不十分な静止姿勢と不完全な再構成データのためと説明し、改善方法(より良いOpenPoseデータ、丁寧な3D再構成、適切な静止姿勢)も率直に述べています。
次回
関節キネマティクスが得られたら、最終回はキネティクスシミュレーション——力・地面反力・筋活動の推定です。見逃さないよう、YouTube のチャンネル登録をぜひ。
著者について
Takashi Fukushima — スポーツ・運動科学 × Human Pose Estimation × Computer Vision × XR を横断して研究・開発しています。
- YouTube(登録): Takashi Fukushima|Sports Science & Pose Estimation
- 研究(ORCID): orcid.org/0000-0002-7318-3384
- ウェブサイト: takashifukushima.com
- お問い合わせ: お問い合わせフォーム