OpenSim教程 1--肌肉骨骼建模入门

intro1-2.png

I. 目标

OpenSim 介绍

骨骼肌肉模型使我们可以去学习神经肌肉协调,分析运动员表笑和估计骨骼肌肉负荷。OpenSim是一款开源软件,它允许用户开发、分析和可视化模型并生成动作的动力学模拟1。在OpenSim中,骨骼肌肉模型由关节链接的环节刚体构成。肌肉跨过关节产生力并驱使关节运动。一旦骨骼肌肉模型创建,OpenSim用户可以在其中进行研究,包括调查骨骼肌肉的几何学影响、关节运动学、肌肉-肌腱在作用力下的性质以及在肌力作用下关节的运动。在OpenSim中,我们的目标是提供一个允许生物力学团体去创造、分享、扩展模型库以及动力学仿真工具的框架来用于研究和量化人体与动物的动作。

目标

本教程的目标是通过展示图形化骨骼肌肉模型框架工具调查下肢肌肉-肌腱长度和动量矩变化来向用户介绍OpenSim。在本教程中:

  • 熟悉OpenSim的操作图形界面
  • 发现一些骨骼肌肉模型的局限
  • 探索单关节与双关节肌肉的不同
  • 使用OpenSim接触重要的临床问题

格式

教程的每一个部分都会通过确定的OpenSim GUI工具指导你和回答你的一些问题。菜单的名称、选项名称、需要选择的命令以及在OpenSim中的输入都会粗体显示。问题会被基于OpenSim的人体肌肉骨骼模型系统的基本知识来回答。当你完成所有部分的教程你可以自由探索OpenSim和下肢模型。根据你所做的探索,本教程可能耗时1-2小时完成。

OpenSim GUI 简介

这里有OpenSim GUI的主要组成。下表将介绍GUI。

注意:打开OpenSim时具有如下显示,但并没有载入模型。

GUI_components.png

关于GUI的文档可以在用户手册中找到--> Graphical User Interface

II. 下肢骨骼肌肉模型

在这个部分,你将载入一个下肢模型2到OpenSim中然后使它“行走”。这个模型代表一位身高约1.8m、体重约75KG的成人受试者。模型包含13个刚体环节和92条代表肌肉的直线(43条位于下肢和6条位于躯干)。

加载模型

第一个分析的模型为gait2392.osim。加载这个模型到OpenSim中。

  • 点击File菜单选择OpenModel
  • 在你的文件夹Documents/OpenSim/4.0中找到Models文件夹(Windows用,根据安装位置路径可能不同)。可能还有其他的模型文件,教程中所有的模型(Model)和动作(Motion)文件都在Models文件夹下
  • 打开Gait2392_simbody文件夹,选择gait2392_simbody.osim双击打开

打开模型后导航窗口将会显示模型的名称,如果你有多个模型你你可以修改每个模型的名称。导航窗口会提供模型的身体(bodies)、肌肉(muscles)、关机(joints)的特殊信息。如果导航窗口不可见,点击Window菜单再选择导航(Navigator)。使用左键来打开。

注意:如果已经打开,也可以点击标题栏看到导航窗口

gait2392_Navigator40.png

观察模型

OpenSim允许使用鼠标定位模型。

Camera Action
摄像机动作
Windows Mac
Rotate 旋转 left-click and hold (PC or mouse)
左键点击再保持
single-finger click and hold (Mac trackpad)
单指点击再保持
Translate 平移 right-click and hold (PC or mouse)
右键点击再保持
two-finger click and hold (Mac trackpad)
双指点击再保持
Zoom 缩放 scroll up or down (PC or mouse)
滚轮上下
pinch or expand (Mac trackpad).
双指张开或回收

另外,有6个定位图标在可视化窗口中。

  • 改变摄像头视角于X方向,单击worddavd0fb176a5d7ca390fefafaed1f4dc686.png图标。

  • 相似的,点击其他按钮来观察另外的方向

  • 双击使身体位于屏幕中间

view40.png

在继续之前,请点击worddavd0fb176a5d7ca390fefafaed1f4dc686.png图标重制你的视角。

模型坐标

坐标窗口(Coordinates window)包含模型关节对应的坐标、自由度的滑块。点击窗口(Window)菜单选择坐标(Coordinates)来显示坐标窗口。在当前模型下,盆骨的方向相对于模型,模型的方向相对于地面。

*注意:如果已经打开,可以点击标题栏显示坐标窗口。

coordinates_in_gui.png
  • 前三个滑块--骨盆倾斜(tilt)、侧倾(list)和旋转(rotation)与 “骨盆” 的Z轴、X轴和Y轴的旋转相对应。要使盆骨绕z轴旋转,可拖动盆骨倾斜滑块。同样地,若要将盆骨绕另外两个轴旋转,可拖动相应的滑块。

  • 接下来的三个滑块--骨盆tx,ty和tz--对应于骨盆沿 “地面” 参考系的X,Y和Z轴的平移。

    注意:以这种方式旋转和平移模型会更改模型相对于地面的方向和位置,这与在可视化器中旋转或平移模型视图不同。

  • 其余滑块对应于关节旋转并控制单个自由度。要旋转关节,请拖动滑块或在相邻的文本框中键入所需的关节角度。

  • 使用姿势(Poses)菜单中的工具,你可以恢复模型的默认姿势,保存当前姿势或将当前姿势设置为模型的新默认姿势。

    • 现在,通过单击姿势(Poses)按钮并选择默认(Default)来恢复默认坐标。
    • 在本教程的后面,您将保存一个新的姿势。为此,在设置好模型姿势后,在Poses菜单中选择新建(New),输入姿势的名称,然后单击OK。单击姿势(Poses)时,要保存的姿势将保存在默认(Default)下。
    • 若要设置新的模型默认姿势,请在根据需要设置好模型后,在姿势(Poses)菜单中选择默认设置(Set Default)。您需要保存模型以保存新的默认姿势。

模型中的肌肉

肌肉--肌腱的路径在OpenSim中由线段连接的一系列点表示。要查看所有肌肉的列表:

motion_in_muscles.png
  • 在导航中,展开3DGaitModel2392(模型名称)中的力(Forces),肌肉(Muscles)以及所有标题。
  • 要展示单个肌肉,右键单击指定肌肉名称下的所有组别,如 glut_med1_r,然后从弹出菜单中选择显示>只显示Display>Show Olny
  • 要切换所有肌肉的显示,请右键单击肌肉(Muscles)或所有(all)标题,然后选择显示>显示 或 显示>隐藏(Display > Show or Display > Hide
  • 某些肌肉可以用多条线代表,而不是单一的作用线。在这个模型中,臀中肌是由多个作用线代表的肌肉的一个例子(如, glut_med1_r, glut_med2_r, glut_med3_r)

对于某些肌肉,肌肉起点与止点的两点足以描述肌肉路径。对于那些包裹了骨或者被筋膜包裹的肌肉,中间包裹(intermediate wrapping)或者通过点(via points)。要查看这些包装点:

  • 通过单击姿势(Poses)按钮并选择默认(Default)来恢复默认模型姿势。然后放大右膝关节
  • 右键单击R_knee_ext 肌肉组,然后选择仅显示(Show only
  • 使用knee_angle_r 坐标滑块完全弯曲右膝盖
  • 注意,一定的膝角时包裹点在某些膝盖伸直器中以引入,从而使肌肉路径发展为扭结然后出现在骨骼周围并将其包裹
  • 下肢模型中的某些肌肉会在极限运动范围内穿过骨骼或深层肌肉

问题

  1. 自由度

    1. 使用坐标面板(Coordinates panel )查看模型的自由度。该模型总共有多少个自由度?列出右腿的自由度。

    2. 所有模型均为近似值。将模型中的自由度与下肢中的自由度进行比较。举例说明已简化的关节运动。举例说明该模型未包含的动作

  2. 肌肉

    1. 模型中有多少肌肉?这与模型中的自由度数相比如何?完全驱动模型所需的最少肌肉数量是多少?

    提示:例如完全驱动膝,意味着膝关节的屈和伸

    1. 在模型中命名两条肌肉(臀肌以外),这些肌肉由多条线代表其行动。为什么认为这些肌肉以这种方式代表?

    提示:具有多个作用线的其他肌肉使用与臀中肌相同的命名约定。

    1. 哪些膝盖伸肌有包裹点?每个膝伸肌器的包裹点在什么角度出现?一块肌肉可能有多个包裹点。
  3. 建模限制

    1. 放大右髋部,仅显示glut_max3_r肌肉(右臀部伸肌群)。检查此肌肉的整个髋关节屈曲角度。在运动范围内看到glut_max3_r的路径有什么问题?肌肉路径的点对点表示以什么方式简化了骨骼肌肉的几何结构?

III. 关节角度,肌腱长度和力臂

在此部分,你将何根据肢体配置(limb configuration)来调查肌肉--肌腱以及力臂。骨骼肌肉的几何形态对于肌肉的功能和发展骨骼肌肉模型非常重要。肌肉--肌腱力量取决于肌肉--肌腱的长度,而关节的动量取决于肌肉--肌腱力量和力臂。因此,在开发用于预测肌肉肌腱力和关节力矩的精确模型时,准确确定肌肉骨骼的几何形状至关重要。

使用绘图

OpenSim的绘图允许你绘制肌肉--肌腱属性,如长度,力臂,力和关节动量。生成骨直肌和股中间肌的纤维长度与膝关节角度图:

PlotterTutorial1_40.png
  • 点击坐标窗口姿势>默认(Poses>Default)回到模型的初始姿势

    注意:绘图是基于当前模型配置而生成的。你的绘图将以默认的姿势生成

  • 要打开一个新的绘图,请点击工具(Tools)菜单然后选择绘图(Plot)。在绘图窗口,点击Y-Quantity按钮然后选择fiber-length。这个变量将在Y轴显示

  • 在选择万Y-Quantity后,如果想生成曲线还需要选择Muscles变量。点击Muscles按钮将出现一个菜单。

  • 为更快的找到肌肉,你可以筛选肌肉组中的肌肉。选择model选项然后使用Group下拉菜单来选择R_knee_ext。现在的肌肉列表中只会显示右膝伸肌器组。

  • 从列表中点击选择框(checkbox)中的rect_fem_r vas_int_r标签来选择骨直肌(recus femoris)和骨中间肌(vastus intermedius

    注意:在绘图窗口打开的时候不必去关掉肌肉窗口,你的选择会立刻在肌肉文字框中更新。这有助于在图中创建多条曲线,下一步会做。

  • 点击X-Quantity然后选择knee_angle_r。此变量将出现在x轴中。

  • 为给图增加一个标题,点击属性(properties)按钮然后在标题下的文字框中输入Fiber-Length vs. Knee Angle。点击OK。

  • 为增加一条曲线,点击增加(Add

    *注意:图将使用以下单位:米(长度)、牛顿(力)、牛米(动量)。

  • 不要关闭绘图窗口,你将会在后面增加更多的图

问题

  1. 肌纤维长度 vs 关节角度

    1. 研究肌纤维长度与膝关节角度的关系图。对于股直肌和中间股直肌,如果右髋屈曲,您是否期望纤维长度曲线不同?为什么或者为什么不?

    2. 在坐标窗口中,将模型的右髋屈曲调整至45度(将姿势保存为r_hip_flex_45),添加股直肌和中间股肌的纤维长度曲线以使髋屈曲45°。将模型的肌肉曲线与您先前绘制的未弯曲臀部的曲线与刚刚绘制的模型的曲线进行比较。曲线如何变化?解释您的发现。双关节肌肉如何使复杂化分析?

    注意:要选择多个曲线名称,请在选择时按住Ctrl(PC)或Command(Mac)。要打印或保存绘图,请在绘图上单击鼠标右键,然后选择“打印或导出图像”。

  2. 肌肉力矩臂 vs 关节角度

    将模型恢复到初始位置且不屈曲髋(单击姿势>默认,Poses>Default)。现在绘制右股直肌和股中间肌肉的膝盖伸展力臂与膝关节角度的关系图。

    • 新建一个绘图窗口,点击Y-Quantity > moment arm > knee_angle_r 然后点击X-Quantity > knee_angle_r
    • 与之前相同,选择右股直肌(rect_fem_r)和股中间肌(vas_int_r
    • 设定图的名称为Knee Extension Moment Arm vs. Knee Angle
    • 加入曲线到图中
  1. 每个肌肉的峰值力臂是什么,它们出现在什么膝关节角度?

注意:如果将光标悬停在曲线上,工具提示将给出该特定点的坐标。

  1. 膝关节角度多少时力臂曲线不平滑(导数不连续的点)?你认为什么原因造成的?

提示:看问题2.c

随意绘制其他肢体位置,肌肉和/或关节的图。当您准备继续学习本教程时,请关闭绘图窗口并通过单击文件(File)菜单并选择关闭模型(Close Model)来关闭3DGaitModel2392模型。不要将模型设置保存到文件中,我们关闭模型以确保在浏览时进行的任何先前修改不会影响本教程的其余部分。

IV. 蹲伏步态腘绳肌长度的评估

在教程的最后部分,你将使用OpenSim调查蹲伏步态形成的原因,一种脑瘫患者中最常见的行走异常步态。它的特征是在站立阶段膝过度屈曲,通常伴随着屈曲过度和髋关节内部旋转。造成蹲伏步态原因的一种假设是腘绳肌过短,骨科医生有时会为改善病人的姿态和步态来增加腘绳肌的长度。然而,其他导致膝过度屈的原因也有可能(如足屈肌薄弱),增加腘绳肌长度会降低肌肉产生力量的能力3。外科医生如何确定是否需要进行腘绳肌的增长呢?

判别病人的腘绳肌是否比“正常”短的一种可能的方法是开发一个骨骼肌肉模型来比较正常步态的腘绳肌长度和病人的蹲伏步态腘绳肌长度。假设骨科医生已经给你一些病人的蹲伏步态运动学数据。医生考虑是否手术需要你的意见。

加载模型

重新打开gait2392.osim模型。在动画模式,你需要加载一个动作文件(motion file)到OpenSim中。

gait2392_Normal40_side.png
  • 点击文件(File)菜单然后选择加载动作(Load Motion),确保你在Gait2392 路径,选择normal.mot文件,点击打开(Open)。此文件包含了一个正常步态的运动学数据。在打开的模型中右键点击导航,弹出窗口选择重命名(Rename),为模型命名为Normal

    注意:导航中重命名模型只会改变显示的名称,而不会修改模型文件的名称

载入模型后,它的名称将会显示在工具栏中。另外,导航栏会出现一个名为动作(Motion)的分支。展开此分支可看到特定模型中加载的动作。模型加载成功后肌肉的颜色将变为蓝色。

动作滑块

动作滑块对应当前的动作文件。拖动动作滑块来播放当前动作。在动画模式下,使用视频控制(video control)按钮,例如点击worddavd88b5fae75ecfddb6389263e1d251e5f.png来播放(play),worddava5ed57bb58373fb4d13ea6067383680c.png按钮来循环(loop),worddavf305a09a00c14e6014eb454b9af8ac62.png按钮来暂停(pause),控制速度(speed)。

多个模型和动作

OpenSim可以对多个模型进行模拟。跟随一下步骤打开第二个模型和加载动作。

  • 导航中已经包含一个Normal模型,同样再打开一个gait2392.osim模型文件,在导航中重命名为Crouch。第二个加载的文件会自动变为Crouch模型。其他如加载动作等,将会应用到crouch模型中。从路径Gait2392 加载动作文件crouch1.mot

    *注意:如果没有看到两个模型被加载,请缩放视角。在教程的后续中,两个模型将会被称作NormalCrouch

  • OpenSim能同步多个动作,允许同时播放多个动画。为此,在导航中展开每个模型的动作分支,按住Ctrl (Windows) 或Command (Mac),再选择两个模型的名称使其高亮。右键点击每个模型名称,再选择同步(Sync)。弹出的动作(Motions)将会显示。

问题

  1. 动作的范围

    1. 同步播放normal步态和crouch步态。确认是在循环播放,调整播放速度和旋转角度。观察比较两模型。根据你的观察,用数量描述两个模型的一般运动学区别(关节坐标)。

    现在在数量上比较normal步态和crouch步态膝关节伸角度的区别。

    • 打开一个新的绘图(plot)窗口
    • 导航窗口中双击Normal模型的名称,使其变为粗体。
    • 在绘图窗口中,点击Y-Quantity,选择normal_gait(Deg.) ,再选择knee_angle_r. ,点击OK
    • 点击X-Quantity再选择normal_gait. ,点击OK
    • 在曲线名称(Curve Name)文本框中编辑文字来读取正常步态(Normal Gait
    • 要增加一条右膝关节角度vs步态周期的曲线,点击增加(Add
    • 双击选中导航窗口已存在的模型Crouch,使其变为粗体
    • 在同一个绘图窗口中点击Y-Quantity,选择normal_gait(Deg.) ,再选择knee_angle_r. ,点击OK
    • 点击X-Quantity再选择normal_gait. ,点击OK
    • 在曲线名称(Curve Name)文本框中编辑文字来读取正常步态(Crouch Gait
    1. 从正常步态周期中画出膝关节角度曲线。标注后跟着地和脚尖离地的时间点以及站立和摆动的间隔。

    2. 什么是正常步态站立时相的膝关节伸范围?

    3. 如何让蹲伏步态的膝关节伸范围和正常步态相比较?

  2. 腘绳肌长度

    骨外科医生相信病人可以从增长腘绳肌长度中受益。你可以做一个病人蹲伏步态周期和正常步态周期中腘绳肌(半腱肌)长度的比较。

    画一个半腱肌肌肉--肌腱长度在蹲伏步态周期中的图

    • 为删除之前的曲线,选择所有曲线名称列表然后点击删除(Delete

    • 在模型(Model)下拉菜单中选择normal模型

    • 点击Y-Quantity然后选择肌肉--肌腱长度(muscle-tendon length

    • 点击肌肉(Muscles)在列表中选择semiten_r 。点击关闭(Close

      注意:要快速选择semiten_r,在Pattern文本栏输入semi

    • 点击X-Quantity然后选择normal_gait (Deg.)

    • 在曲线名称(Curve Name)文本框中编辑文字来读取正常步态(Normal Gait

    • 要增加一条腘绳肌长度vs步态周期的曲线,点击增加(Add

    • 为做一个与蹲伏步态相似的曲线,请使蹲伏模型为当前模型。然后点击Y-Quantity并重新选择肌肉--肌腱长度(muscle-tendon length

    • 点击肌肉(Muscles)选择semiten_r

    • 点击X-Quantity然后选择crouch1_gait (Deg.)

    • 在曲线名称(Curve Name)文本框中编辑文字来读取正常步态(Crouch Gait),然后点击增加(Add

    1. 研究这些曲线。基于绘图,正常步态和蹲伏步态腘绳肌长度的峰值有何不同?对于病人,你是否建议腘绳肌增长手术?

    2. 你分析的局限在哪里?

  3. 其他蹲伏步态文件(可选)

    骨科医生治疗其他三名有蹲伏步态的病人。重复分析动作文件 crouch2.mot, crouch3.mot,crouch4.mot。注意你现在能用一个模型关联不止一种动作。对于这些病人你是否会建议手术会有一些区别?如果你想了解更多此类型的分析,请阅读文献3

原文地址:点击这里跳转到原文(速度较慢)

参考


  1. 1.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. ↩︎
  2. 2.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. ↩︎
  3. 3.Arnold, A.S., Liu, M., Ounpuu, S., Swartz, M., Delp, S.L., The role of estimating hamstrings lengths and velocities in planning treatments for crouch gait, Gait and Posture, vol. 23, pp. 273-281, 2006. ↩︎
坚持原创技术分享,您扫一扫将鼓励我继续写作!