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

I.目的

本教程的目的是演示OpenSim如何使用实验数据解决逆运动学和动力学问题。为了诊断运动障碍并研究人类运动,生物力学专家经常要求人类受试者在运动捕捉实验室中进行运动,并使用计算工具来分析这些运动。分析运动的常见步骤是计算运动过程中对象的关节角度和关节力矩。OpenSim具有用于计算以下数量的工具:

1、逆运动学IK用于计算关节角度。
2、逆动力学ID用于计算净关节反作用力和净关节力矩。
逆运动学可以计算出最能重现对象运动的肌肉骨骼模型的关节角度。然后,逆动力学使用模型的关节角度,角速度和角加速度,以及实验的地面反作用力和力矩,来求解每个关节处的净反作用力和净力矩。下面的示意图概述了逆运动学和逆动力学问题。 Opensim教程3-缩放,逆运动学,逆动力学
在本教程中,您将:
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 Opensim教程3-缩放,逆运动学,逆动力学

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
Opensim教程3-缩放,逆运动学,逆动力学
关于缩放工具的详细说明可以在文档的缩放页面中找到。

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窗口中,周围有粉色模型标记。
Opensim教程3-缩放,逆运动学,逆动力学
Q1: 从Scale Tool中得出通用肌肉骨骼模型的质量是75.1646kg,受试对象质量是72.6kg。
Opensim教程3-缩放,逆运动学,逆动力学
Q2: 实验运动数据的捕获频率:60Hz
Opensim教程3-缩放,逆运动学,逆动力学
Q3:手动缩放的身体部位:
Opensim教程3-缩放,逆运动学,逆动力学

IV. Inverse Kinematics逆运动学

运动学Kinematics是对运动的研究,不考虑产生该运动的力和力矩。逆运动学(IK)的目的是根据实验数据估算特定对象的关节角度。在本节中,通过使用对象比例模型和实验收集的步行数据执行IK分析,来估计步行过程中对象的关节角度。
对于记录的运动数据的每个时间步长,IK都会计算一组关节角度,这些角度将模型置于与实验运动学“最匹配”的配置中。OpenSim通过解决加权最小二乘优化问题 a weighted least squares optimization problem来确定此“最佳匹配”,目的是使标记错误最小化。标记误差定义为实验标记 与 相应模型标记之间的距离。每个标记都有一个关联的权重值,指定在最小二乘问题中应该最大程度地减小该标记的误差项。对于每个时间步长,逆运动学工具求解广义坐标的矢量(例如,关节角度)q,可将标记错误的加权总和最小化,表示为:
Opensim教程3-缩放,逆运动学,逆动力学
其中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:

Opensim教程3-缩放,逆运动学,逆动力学
选中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
Opensim教程3-缩放,逆运动学,逆动力学
模型标记为粉色,实验标记为蓝色。
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:最后一帧最大标记误差值是多少(含单位)?哪个标记?提示:考虑加权最小二乘问题。
Opensim教程3-缩放,逆运动学,逆动力学
Opensim教程3-缩放,逆运动学,逆动力学
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
Opensim教程3-缩放,逆运动学,逆动力学
关于逆动力学工具的详细解释可以在文档的逆动力学页面上找到。

2) To perform inverse dynamics:

Motions-right-click-IDResults-Associate Motion Data…-subject01_walk1_grf.mot-Open-Close
Opensim教程3-缩放,逆运动学,逆动力学

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
Opensim教程3-缩放,逆运动学,逆动力学
Q7:
右腿:脚跟撞击(0.67),站立(),膝盖开始弯曲(1.3),脚趾离开(1.412),摆动()
左腿:脚跟撞击(1.25),站立(),膝盖开始弯曲(0.675),脚趾离开(0.820),摆动()
Q8:脚趾离开地面前,踝关节的变化
Opensim教程3-缩放,逆运动学,逆动力学

4) over-determined problem

在求解逆动力学问题时,同时使用了运动学数据和力板数据,使其成为一个过定问题over-determined problem。换句话说,这个问题的方程多于未知数(即自由度)。由于实验运动数据的误差和肌肉骨骼模型的不准确性,违反了牛顿第二定律[3].Opensim教程3-缩放,逆运动学,逆动力学
处理这种不一致性的一种方法是计算并施加模型中某一特定体段的剩余力和力矩,使牛顿第二定律变为:Opensim教程3-缩放,逆运动学,逆动力学
这是一个从Opensim教程3-缩放,逆运动学,逆动力学
到剩余时刻Opensim教程3-缩放,逆运动学,逆动力学
与地面反应力矩相关的方程式。在这个肌肉骨骼模型中,残差用于骨盆节段。

5) the residuals from the inverse dynamics solution(从逆动力学查看残差)

为了查看逆动力学解决方案的剩余值,在一个新的plot窗口中,观察plot pelvis_tx_force、pelvis_ty_force和pelvis_tz_force与时间的关系。用这个图,回答问题9。
Opensim教程3-缩放,逆运动学,逆动力学
当应用剩余力和力矩使模型的运动动态地与外力一致,即Opensim教程3-缩放,逆运动学,逆动力学
时,这种策略是不可取的,因为剩余可能很大。为了解决残差和动态不一致性问题,已经开发了更先进的策略,如最小二乘优化 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.

相关文章: