バーチャルEMGを用いた筋活動量フィードバック型アクティブアシストデバイスのモデル化

バーチャルEMGを用いた筋活動量フィードバック型アクティブアシストデバイスのモデル化

本事例では、筋骨格モデル上に仮想的な筋電(以下、バーチャルEMG)を導入し、筋活動量に基づいてアシスト力を制御するアクティブアシストデバイスのモデル化手法を提案します。従来出来なかった、逆動力学プロセスで算出される結果(筋張力、筋活動など)をフィードバックする方法です。

具体的には対象筋の筋活動量をモデル内でモニタリングし、その値に応じてアシストデバイスの付加力を調整することで、高筋張力発生時における人体負担の低減を目的とします。例えば、筋活動量が所定の閾値を超過した場合にアシストが作動し、筋発揮力の増大に伴ってアシスト力が増加するような制御則を想定します。

※この解析手法の応用は、

【ターゲットとする人体部位における負荷、例えば、特定筋肉の発生筋活動量、筋張力、特定の関節の関節間反力・圧迫力、をある危険値(閾値)以内に留めるためには、どのくらいのアシスト力・どのようなプロファイルを設計すればよいのか? 】

という疑問に対し、明確な数値的指標を提供することになります。


<逆動力学解析で行えないこと>

一般に、AnyBody 筋骨格モデルにおける逆動力学解析(あるいは一般的な逆動力学解析)では、筋発揮力 Fm や筋活動量 Activity は解析結果として算出される量であり、これらを直接、アシストデバイスの発揮力( Fdev) に反映させるような

Fdev = function (Fm) あるいは Fdev = function (Activity)

といった定義を行うことはできません。これは、逆動力学解析においては、 Fdev が入力条件として事前に確定している必要があるためです。


<デバイスアシスト力の設定の方法>

【方法1】

一方、位置 pos、筋収縮速度 vel , 関節角度 deg、筋長 len…など、運動学的拘束段階で決定される量に依存したアシスト力の設定:

Fdev =function (pos, deg, len, vel)

については、解析上の問題は生じません。これらの変数は、逆動力学解析に先立つ運動学解析段階で一意に定まるためです。以下の図はアシストトルク(Trq)の設定の場合です。

 


筋発揮力に依存したアシスト力を導入するための既存アプローチとしては、以下の方法が考えられます。

【方法2】

アシストを付加しない条件で逆動力学解析を実行し、対象筋の筋活動量時刻歴activity_table(または筋発揮力時刻歴 Fm(t)) を取得します。その後、この時刻歴を入力として、

Fdev(t) =function (  activity_table(t)  )

と定義する方法です。ただしこの手法では、アシスト無し条件での解析結果を事前に取得する必要があり、逆動力学解析を二度実行する必要があります。


【方法3】

離散時間ステップ n−1 における筋活動量を保存し、次ステップ n においてアシスト力へ反映する方法が考えられます。

Fdev(n) = function (  activity(n−1)  )

しかし、この場合、アシスト付加と解除が時間遅れを伴って交互に発生し、筋発揮力が短時間で増減を繰り返す振動的挙動を示します。その結果、得られる筋発揮力の解釈には、時間平均などの追加処理が必要となります。

解析例 ⇒ アクティブ型のアシストデバイスの解析事例 │ AnyBody 筋骨格モデリングシミュレーション

いずれの手法においても、

既知の筋発揮力・筋活動量 → アシスト力への反映 → 筋発揮力低減結果

という一方向的な因果関係に基づく解析となり、筋発揮力とアシスト力の相互依存関係すなわちフィードバック構造は考慮されません。

このようなフィードバックを逆動力学解析内で実現するためには、反復計算を伴う枠組みが必要となります。


【FDKの反復計算を用いた筋活動量のフィードバックの方法】

本事例では、AnyBody に実装されている 『Force Dependent Kinematics(FDK)機能』を応用し、筋活動量をフィードバック入力とするアクティブアシストデバイスのモデル化を行います。

FDKとは、通常は剛拘束として扱われる関節や拘束点において、微小な並進・回旋変位を許容し、力の釣り合い条件に基づいて運動学的自由度を解く手法です。その基本原理は以下の通りです。

  • 逆動力学解析により、剛拘束条件下での拘束反力を算出
  • 拘束条件を、ばね定数等を有する受動要素に置換
  • 拘束反力と受動要素反力が釣り合うまで変位量を反復的に探索

本事例では、この原理を利用してバーチャルEMGを構成しそのモニタ量をアシストデバイスの出力制御に応用しました。具体的には、以下の通りです。

  • 極めて弱いアクチュエータ(人工筋)、変換器(可動セグメント)、および受動ばね要素からなるピックアップデバイスをモデル内に配置。
  • 対象筋の筋活動量と、ピックアップデバイス内アクチュエータの活動量を AnyMuscleActivityConstraint クラスにより拘束し同期させる。可動セグメントに対応する拘束点は FDK 設定とし、アクチュエータ発揮力に応じて、受動ばね要素の反力と釣り合うまで変位が生じる。
  • このときの可動セグメントの変位量を Pos_dev と定義し、これに基づいてアシストデバイスの発揮力を、Fdev = function (Pos_dev) として与える。

結果的にPos_devは筋活動量に依存して決定される量であるため、FDKによる変換器(可動セグメント)変位を媒介変数として用いることで、発揮力(筋活動量)とアシスト力の間にフィードバック関係を構築することが可能となりました。

以下に、本手法を適用した解析例を示します。


【解析例】

腰部負担を低減する外骨格型アシストデバイスにおいて、モノ(24㎏重量物)の持ち上げ時に主な活動筋となる脊柱起立筋の高活動量となる筋をモニタし、その筋活動量をデバイス側の伸展補助トルクに対し、にフィードバックします。

ここでは、筋活動量が閾値0.6を超えない間はデバイス機能は作動せず、0.6を超えた場合、その閾値超過量に応じてアシスト力を増加させるデバイスを想定しました。

AnyBodyでは、脊柱起立筋が複数の起始・停止箇所にまたがることから左右合わせて58本にモデル化されています。本例ではアシスト無しの解析の結果、胸椎T11から仙骨にかけてまたがる脊柱起立筋要素に高筋活動が生じました。この筋をフィードバックにおけるモニタ対象としました。

解析結果を以下に示します。対象とした筋については、ほぼ狙った通りの筋活動量(0.6)となり、またその他の脊柱起立筋も一様に低下しています。右図はこの時のアシストデバイスの伸展補助トルク(片側)です。

今回、1つの最も高い筋活動となる筋のみを抽出しましたが、複数の対象筋の筋活動量であっても、その平均値などを採りアクチュエータとの同期が可能です。

外骨格・アシストデバイスカテゴリの最新記事