1. 程式人生 > 實用技巧 >Opensim教程3-縮放,逆運動學,逆動力學

Opensim教程3-縮放,逆運動學,逆動力學

【Ps: 以下教程用於opensim4.0及更高版本】
Tutorial 3 - Scaling, Inverse Kinematics, and Inverse Dynamics

I.目的

本教程的目的是演示OpenSim如何使用實驗資料解決逆運動學和動力學問題。為了診斷運動障礙並研究人類運動,生物力學專家經常要求人類受試者在運動捕捉實驗室中進行運動,並使用計算工具來分析這些運動。分析運動的常見步驟是計算運動過程中物件的關節角度和關節力矩。OpenSim具有用於計算以下數量的工具:

1、逆運動學IK用於計算關節角度。
2、逆動力學ID用於計算淨關節反作用力和淨關節力矩。
逆運動學可以計算出最能重現物件運動的肌肉骨骼模型的關節角度。然後,逆動力學使用模型的關節角度,角速度和角加速度,以及實驗的地面反作用力和力矩,來求解每個關節處的淨反作用力和淨力矩。下面的示意圖概述了逆運動學和逆動力學問題。 在這裡插入圖片描述


在本教程中,您將:
1、熟悉OpenSim的縮放scaling,逆運動學和逆動力學工具
2、使用實驗資料解決逆運動學和逆動力學問題
3、解釋逆動力學解決方案的結果
4、研究逆動態過程中出現的動態不一致

II. Generic Musculoskeletal Model普通肌肉骨骼模型

使用具有23個自由度並由名為3DGaitModel2354的54塊肌肉驅動的通用肌肉骨骼模型。
注意:關於模型的詳細資訊可以在Gait2392和2354模型頁面上找到
File-Open Model-D-opensim4.1-Gait2354_Simbody-gait2354_simbody.osim-open 在這裡插入圖片描述

III. Scaling A Musculoskeletal Model縮放肌肉骨骼模型

Scaling:修改通用的骨骼肌肉模型的人體測量學尺寸或物理尺寸,時期與特定受試者匹配。
Registering:放置在模型上用於匹配主體位置的標記。
兩者對於IK、ID很重要。
To scale the generic model and register the markers:
Tools-Scale Model-Load-Gait2354-subject01_Setup_Scale.xml-Open
在這裡插入圖片描述
關於縮放工具的詳細說明可以在文件的縮放頁面中找到。

1) Model Scaling

縮放步驟調整身體部分的尺寸the dimensions of the body segments,以及質量特性the mass properties(質量和慣性張量)(mass and inertia tensor)。可結合使用兩種方法執行擴充套件:

(1) Manual Scaling:允許使用者基於某種預定的比例因子來縮放一個部分。適用於沒有合適的資料,或者使用替代演算法確定尺度因子時。
(2) Measurement-based Scaling:通過比較模型上指定的地標(稱為模型標記)和相應的實驗標記位置之間的距離測量,確定身體段的尺度因子。

2) Marker Registration

調整模型標記的位置,以匹配標記在主體上的位置。
必須首先為模型估計一個姿勢,與靜態試驗static trial.中被試的姿勢非常相似。

3) complete the scale step:

Run-File-Save Model-gait2354_scaled.osim-Save
一個新的註冊名為subject01的縮放模型出現在Visualizer視窗中,周圍有粉色模型標記。
在這裡插入圖片描述
Q1: 從Scale Tool中得出通用肌肉骨骼模型的質量是75.1646kg,受試物件質量是72.6kg。
在這裡插入圖片描述
Q2: 實驗運動資料的捕獲頻率:60Hz
在這裡插入圖片描述
Q3:手動縮放的身體部位:
在這裡插入圖片描述

IV. Inverse Kinematics逆運動學

運動學Kinematics是對運動的研究,不考慮產生該運動的力和力矩。逆運動學(IK)的目的是根據實驗資料估算特定物件的關節角度。在本節中,通過使用物件比例模型和實驗收集的步行資料執行IK分析,來估計步行過程中物件的關節角度。
對於記錄的運動資料的每個時間步長,IK都會計算一組關節角度,這些角度將模型置於與實驗運動學“最匹配”的配置中。OpenSim通過解決加權最小二乘優化問題 a weighted least squares optimization problem來確定此“最佳匹配”,目的是使標記錯誤最小化。標記誤差定義為實驗標記 與 相應模型標記之間的距離。每個標記都有一個關聯的權重值,指定在最小二乘問題中應該最大程度地減小該標記的誤差項。對於每個時間步長,逆運動學工具求解廣義座標的向量(例如,關節角度)q,可將標記錯誤的加權總和最小化,表示為:
在這裡插入圖片描述
其中q為廣義座標(如關節角)的向量,xiexp為實驗標記i的位置,xi(q)是對應的模型標記i的位置(依賴於q),wi是與標記i相關的權重。

1) set up an inverse kinematics analysis:

Tools-Inverse Kinematics-Load-subject01_Setup_IK.xml-Open

2) Navigate to the Weights tab:

在這裡插入圖片描述
選中R.Knee.Lat變紅,run變灰是由於在subject_walk1.trc中沒有找到R.Knee.Lat的實驗資料。Weights-Run

3) To perform inverse kinematics:

關於逆運動學工具的詳細解釋可以在文件的逆運動學頁面上找到。
Navigator-Motions-IKResults-Associate Motion Data… -subject01_walk1.trc -Open
在這裡插入圖片描述
模型標記為粉色,實驗標記為藍色。
Motion-播放,隨著動畫進行,虛擬標記與實驗標記位置緊密對應。
Window-Messages
Messages視窗記錄執行的所有步驟的詳細資訊。然後,滾動到最底部,提供與運動的最後一幀相關的標記誤差和模型座標誤差(例如,關節角度誤差)。
注意:所有標記誤差的單位均為米,所有座標誤差的單位均為弧度。

步驟1:更新3DGaitModel2354模型標記
Updated markers in model 3DGaitModel2354
Loaded marker file D:\opensim-4.0Beta022518-win64\opensim 4.0\Models\Gait2354_Simbody\ subject01_static.trc (49 markers, 300 frames)

步驟2:縮放通用模型
Measurement 'torso’測量“軀幹”
pair 0 (V.Sacral, Top.Head): model = 0.701084, experimental = 0.756975
overall scale factor = 1.07972
Measurement 'pelvis’測量“骨盆”
pair 0 (R.ASIS, L.ASIS): model = 0.256, experimental = 0.262292
overall scale factor = 1.02458
Measurement 'thigh’測量“大腿”
pair 0 (R.ASIS, R.Knee.Lat): model = 0.508288, experimental = 0.538738
pair 1 (L.ASIS, L.Knee.Lat): model = 0.508288, experimental = 0.549642
overall scale factor = 1.07063
Measurement 'shank’測量“小腿”
pair 0 (R.Knee.Lat, R.Ankle.Lat): model = 0.401944, experimental = 0.458672
pair 1 (L.Knee.Lat, L.Ankle.Lat): model = 0.401944, experimental = 0.436842
overall scale factor = 1.11398
Measurement 'foot’測量“腳”
pair 0 (R.Heel, R.Toe.Tip): model = 0.280401, experimental = 0.291576(鞋跟、鞋尖)
pair 1 (L.Heel, L.Toe.Tip): model = 0.280401, experimental = 0.284416
overall scale factor = 1.02708
(鞋跟、鞋尖)

步驟3:在模型上放置標記Placing markers on model
MODEL: subject01
coordinates: 23
forces: 54
actuators: 54
muscles: 54
analyses: 2
probes: 0
bodies: 12
joints: 12
constraints: 0
markers: 39
controllers: 0
contact geometries: 0
misc modelcomponents: 0
Running tool subject01.
……
Frame 96 (t=1.6): total squared error = 0.0135755, marker error: RMS=0.0209265, max=0.079239 (R.Acromium)
InverseKinematicsTool completed 73 frames in 0.77s

Q4:權重值小於1?原因?提示:考慮尚未建模的關節
Q5:運動最後一幀所有標記的均方根誤差(RMS)是多少?(含單位),是否合理?
Q6:最後一幀最大標記誤差值是多少(含單位)?哪個標記?提示:考慮加權最小二乘問題。
在這裡插入圖片描述
在這裡插入圖片描述
Frame 96 (t=1.6): total squared error = 0.0135755, marker error: RMS=0.0209265, max=0.079239 (R.Acromium)

V. Inverse Dynamics逆動力學

動力學研究的是運動以及產生運動的力和力矩。逆動力學的目的是估計導致特定運動的力和力矩,其結果可用於推斷在該運動中如何利用肌肉。為了確定這些力和力矩,需要迭代求解系統的運動方程[3]。運動方程式是使用運動學描述和肌肉骨骼模型的質量特性得出的。然後,利用來自逆運動學的關節角度和實驗地面反作用力資料,計算每個關節的淨反作用力和淨力矩,從而滿足動態平衡條件和邊界條件[3]。

1) To setup an inverse dynamics analysis:

Tools-Inverse Dynamics-Load-subject01_Setup_InverseDynamics.xml-Open-Run
在這裡插入圖片描述
關於逆動力學工具的詳細解釋可以在文件的逆動力學頁面上找到。

2) To perform inverse dynamics:

Motions-right-click-IDResults-Associate Motion Data…-subject01_walk1_grf.mot-Open-Close
在這裡插入圖片描述

3) examine the results of the inverse dynamics solution by plotting the net moments at the left and right ankles:左右踝關節淨力矩

Tools-Plot-Y Quantity-Load File-ResultsInverseDynamics folder-inverse_dynamics.sto-Open-select ankle_angle_r_moment and ankle_angle_l_moment by clicking the corresponding checkboxes-OK「Note: To quickly find these quantities, type ankle into the pattern text box」
X-Quantity-time-OK-Add-Export Image
在這裡插入圖片描述
Q7:
右腿:腳跟撞擊(0.67),站立(),膝蓋開始彎曲(1.3),腳趾離開(1.412),擺動()
左腿:腳跟撞擊(1.25),站立(),膝蓋開始彎曲(0.675),腳趾離開(0.820),擺動()
Q8:腳趾離開地面前,踝關節的變化
在這裡插入圖片描述

4) over-determined problem

在求解逆動力學問題時,同時使用了運動學資料和力板資料,使其成為一個過定問題over-determined problem。換句話說,這個問題的方程多於未知數(即自由度)。由於實驗運動資料的誤差和肌肉骨骼模型的不準確性,違反了牛頓第二定律[3].,
處理這種不一致性的一種方法是計算並施加模型中某一特定體段的剩餘力和力矩,使牛頓第二定律變為:在這裡插入圖片描述
這是一個從在這裡插入圖片描述
到剩餘時刻在這裡插入圖片描述
與地面反應力矩相關的方程式。在這個肌肉骨骼模型中,殘差用於骨盆節段。

5) the residuals from the inverse dynamics solution(從逆動力學檢視殘差)

為了檢視逆動力學解決方案的剩餘值,在一個新的plot視窗中,觀察plot pelvis_tx_force、pelvis_ty_force和pelvis_tz_force與時間的關係。用這個圖,回答問題9。
在這裡插入圖片描述
當應用剩餘力和力矩使模型的運動動態地與外力一致,即在這裡插入圖片描述
時,這種策略是不可取的,因為剩餘可能很大。為了解決殘差和動態不一致性問題,已經開發了更先進的策略,如最小二乘優化 least-squares optimization[3]、殘差消除演算法the Residual Elimination Algorithm (REA)[5]和殘差減少演算法the Residual Reduction Algorithm(RRA)[6]。OpenSim實現了一個殘差減少演算法,作為其生成肌肉驅動模擬[6]的工作流程的一部分。關於殘差約簡演算法(RRA)的詳細說明可以在文件的殘差約簡演算法頁面上找到。有關這些策略的更多資訊,請參見[3]、[5]、[6]和[7]。

Q9:殘餘力的最大強度是多少?使用問題1中受試者的質量,最大剩餘力佔體重的多少比例?

References

[1] Delp, S.L., Loan, J.P., Hoy, M.G., Zajac, F.E., Topp E.L., Rosen, J.M. An interactive graphics-based model of the lower extremity to study orthopaedic surgical procedures. IEEE Transactions on Biomedical Engineering, vol. 37, pp. 757-767, 1990.
[2] Anderson, F.C., Pandy, M.G. A dynamic optimization solution for vertical jumping in three dimensions. Computer Methods in Biomechanical and Biomedical Engineering, vol. 2, pp. 201-231, 1999.
[3] Kuo, A.D. A least squares estimation approach to improving the precision of inverse dynamics computations, Journal of Biomechanical Engineering, vol. 120, pp. 148-159, 1998.
[4] Winter, D.A. Biomechanics and Motor Control of Human Movement, Wiley and Sons, pp. 77-79, 1990.
[5] Thelen, D.G., Anderson, F.C. Using computed muscle control to generate forward dynamic simulations of human walking from experimental data, Journal of Biomechanics, vol. 39, pp. 1107-1115, 2006.
[6] John, C.T., Anderson, F.C., Guendelman, E., Arnold, A.S., Delp, S.L. An algorithm for generating muscle-actuated simulations of long-duration movements, Biomedical Computation at Stanford (BCATS) Symposium, Stanford University, 21 October 2006, Poster Presentation.
[7] Delp, S.L., Anderson, F.C., Arnold, A.S., Loan, P., Habib, A., John, C.T., Guendelman, E., Thelen, D.G. OpenSim: Open-source software to create and analyze dynamic simulations of movement. IEEE Transactions on Biomedical Engineering, vol. 55, pp. 1940-1950, 2007.
[8] Chand T. John, Frank C. Anderson, Jill S. Higginson & Scott L. Delp (2012): Stabilisation of walking by intrinsic muscle properties revealed in a three-dimensional muscle-driven simulation, Computer Methods in Biomechanics and Biomedical Engineering.