OpenPose と 3D再構成 – Part 5: キネティクスシミュレーション

OpenPose で人の動きを取得し3D再構成するシリーズの最終回です。OpenPose の導入(Part 1)、カメラ校正(Part 2)、3D再構成(Part 3)、OpenSim でのキネマティクス(Part 4)と進めてきました。今回はさらに一歩踏み込み、キネティクス(動力学)シミュレーション——筋活動と地面反力の推定——を行います。

OpenSim Moco のフレームワーク: 目標(努力最小化、マーカー追従、関節負荷最小化)、モデルとデータから、動きと筋の挙動という解を得る
動力学シミュレーションは OpenSim Moco が基盤。出典: S. D. Uhlrich (2022)(動画内の表示に準拠)。

内部では、OpenCap は OpenSim Moco(最適制御ライブラリ)と自動微分を用います。Part 4 でスケーリングした筋骨格モデルとキネマティクスを融合し、その動きを生み出すために筋がどう働いたか、そしてどんな地面反力が生じたかを解きます。

動力学シミュレーションの設定

該当するPythonは、OpenCap の UtilsDynamicSimulations と自動微分コード(OpenSimAD)にあります。OpenCap のリポジトリをクローンし、それらのパスを追加して、必要な2つの関数をインポートします。あとはスケーリング済みモデルと Part 4 のモーション/キネマティクスファイルを指定します。

Pythonの設定: overground か treadmill、motion type(squat / sit-to-stand / jump / walking)、repetition か time_window
シミュレーションの設定: 動作タイプと、repetition(スクワット、立ち座り)または time_window(ジャンプ、歩行)。

OpenCap にはいくつかの設定があります: 動作が地面上(overground)かトレッドミル上か、そして動作タイプ(スクワット、立ち座り、ジャンプ、歩行、走行…)。ここではスクワットなので motion_type = 'squats'trial name はモーションファイル名と一致させます。変数を入れて tracking 関数を実行します。

時間窓(time window)に注意。 反復動作(スクワット、立ち座り)は1回分(repetition)で扱います。連続動作(歩行、走行)では時間窓を指定しますが、約2秒以内にする必要があります。それより長いと収束せず(反復回数が多すぎる)失敗しがちなので、短く保ちます。

実行するとパイプラインは時間がかかります: モデルのダウンロード/調整、筋のラッピング面や足–地面接触の追加、自動微分用の外部関数の生成、ヤコビアンの計算、そして求解。完了すると、キネティクスデータが用意できます。

筋活動(Muscle activation)

結果は自動生成される Dynamics フォルダ(動作名のサブフォルダ)に入ります。OpenSim の GUI でスケーリング済みモデルを開き、activations のモーションファイルを読み込みます。再生すると、各筋が活動度に応じて色付けされ、動作中にどの筋が働いているかが分かります。

スクワットを行うOpenSim筋骨格モデルと筋活動の色付け
スクワット中の筋活動をモデル上に可視化。

地面反力(Ground reaction force)

地面反力(GRF)も可視化できます。「associate motion data」で合成GRF(x・y・zを合成)を読み込むと、矢印として表示され、スクワットらしく上向きを指します。必要なら成分ごとに分けて読み込むこともできます。

合成地面反力のモーションを読み込んだOpenSimモデル
動作に対応づけた合成地面反力。

これまでと同様、校正の不完全さでスクワットは少し歪んでいますが、結果は十分に使えます。そしてこれが要点です——動画と OpenPose(あるいは任意の姿勢推定器)だけから始めて、OpenCap と OpenSim のおかげで完全な動力学まで推定できます。マーカーレス・モーションキャプチャの可能性を実感できます。


シリーズ全体

  1. Part 1 — OpenPose セットアップ
  2. Part 2 — カメラキャリブレーション
  3. Part 3 — 3D再構成
  4. Part 4 — キネマティクスシミュレーション
  5. Part 5 — キネティクスシミュレーション(本記事)

シリーズを最後までご覧いただきありがとうございました。ご質問は YouTube のコメント、またはお問い合わせフォームからどうぞ。


著者について

Takashi Fukushima — スポーツ・運動科学 × Human Pose Estimation × Computer Vision × XR を横断して研究・開発しています。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール