概述

这篇文章介绍如何使用OpenSim 来评估步行助力装置的助力效果,以辅助其设计。其中会用到一个精简版的人体肌肉骨骼模型,通过肌肉驱动来使模型运动。我们分别在穿戴和不穿戴助行装置的条件下进行仿真,分析助行装置对人体步行过程中代谢值的影响。

一、导入模型

点击这里 进入下载页面,按要求填写信息后即可下载本教程所需模型资料,得到压缩包MetabolicsExample.zip,解压后将里面同名文件夹下的gait10dof18musc_32粘贴到Opensim 安装目录(如F:\OpenSim 3.3)下的Models文件夹中,方便后续操作。
打开OpenSim,点击File->Open Model…,选择Models\Gait10dof18musc_32下的subject01_metabolics.osim,载入后,我们便可在展示窗口中看到模型。这是一个身高1.8m、体重75kg、在跑步机上以1.2m/s行走的男性肌肉骨骼模型,另外它还带有代谢值探针/计算器。

二、无助力下行走模拟

在后面的实验中,我们使用OpenSim 的肌肉计算控制(Computed Muscle Control, CMC)工具来产生运动模拟。我们首先用残差缩减算法(Residual Reduction Algorithm, RRA)工具得到运动学数据,然后用CMC来找到一组肌肉刺激(muscle excitations)来尽可能复现这个运动轨迹。
1、在原先的模型上加载运动学文件。点击File->Load Motion…,选择gait10dof18musc_32\RRA\ResultsRRA\subject_adjusted_Kinematics_q.sto,接着就可以在运动控制栏控制模型“走起来”。

2、用CMC生成一个肌肉驱动的运动模拟。在菜单栏选择Tools->Computed Muscle Control…打开计算机肉控制工具进行设置。点击Load…,选择CMC\walk_Setup_CMC.xml,加载预设的配置文件,可以看到一些原先空缺的栏目被填充了。

其中Desired kinematics是CMC要复现的运动轨迹;Tracking tasks定义轨迹复现任务中要追踪的坐标;Time range to process设置一个步态周期的时期;
点击Run,当计算好后即可看到运行结果。
3、评估CMC得出的结果能否很好复现输入的运动轨迹。选择Tools->Plot…打开画图工具,在Y-Quantity…中选择Load file…,再选择CMC\ResultsCMC\walk_subject_Kinematics_q.sto,并在点选框中选pelvis_tilt, hip_flexion_r, knee_angle_rankle_angle_r ,点击OK;在X-Quantity…中选择time,然后点击Add将CMC计算的各关节角度随时间变化的曲线画出来。接着再在Y-Quantity…中选择RRA\ResultsRRA\subject_adjusted_Kinematics_q.sto,其余操作一样,在原图上添加RRA输出的运动学数据下各关节角度随时间变化的曲线。可以局部放大来观察两组曲线的匹配情况。

三、无助力行走下代谢值分析

OpenSim里有有代谢值计算器,可以计算模型中每块肌肉的代谢率和代谢值,同样也可以计算全身的代谢率和代谢值。上面所用人体模型中包含一组代谢探针(metabolic probes),当运行CMC时,探针分析器在后台计算步态周期中每块肌肉的代谢率和所有肌肉的能耗。
点击Tools->Plot…打开画图工具,在Y-Quantity…中点击Load File…,在CMC输出文件夹中找到walk_subject_MetabolicsReporter_probes.sto,并在点选框中点选metabolics_TOTAL, 然后点击OK。在X-Quantity…中选择time,最后点击Add画出一个步态周期中总代谢值曲线。

四、构建步行助力装置模型

这里我们在右脚脚踝上装一个扭力弹簧作为辅助行走的装置。事实上,我们不会真正添加一个扭簧,而是用OpenSimCoordinateLimitForce来模拟类似的效果,即在踝关节转动超过一定角度时起阻尼作用。在模型展示窗口下方的Scripting Shell Window命令行中依次输入以下语句,添加一个CoordinateLimitForce到模型中。

# Get a handle to the current model and create a new copy
baseModel = getCurrentModel()
ankleSpringModel = baseModel.clone()
ankleSpringModel.setName(baseModel.getName() + '_ankle_spring')# Create the spring we'll add to the model (a CoordinateLimitForce in OpenSim)
ankleSpring = modeling.CoordinateLimitForce()
ankleSpring.setName('AnkleLimitSpringDamper')# Set the coordinate for the spring
ankleSpring.set_coordinate('ankle_angle_r')# Add the spring to the model
ankleSpringModel.addForce(ankleSpring)# Load the model in the GUI
loadModel(ankleSpringModel)

导入新模型后,在导航栏找到添加进来的扭簧:Navigator>walk_subject01_ankle_spring>Forces>Other Forces,选择AnkleLimitSpringDamper,然后修改里面的属性值:
–upper_stiffness=10.0,踝背屈时弹簧的强度;
–upper_limit=5.0,踝背屈超过5度时弹簧开始受力;
–lower_stiffness=1.0,跖屈时弹簧的强度;
–lower_limit=-90.0,踝跖屈超过90度时弹簧开始受力;
–damping=0.01,阻尼系数;
–transition=2.0,当踝关节转角超过预设值2度后,弹簧强度从0升到固定值。
在导航栏中右击模型的名字(walk_subject01_ankle_spring),选择Save As…,命名为subject01_metabolics_spring.osim

五、助力下行走模拟与代谢值分析

我们之前已经进行过无辅助下行走的仿真, 下面我们来进行穿戴辅助设备下行走的仿真,看下踝关节助力设备能否真的降低人行走中的代谢值。
1、在当前模型(subject01_metabolics_spring.osim)下操作,打开CMC工具并加载CMC\walk_Setup_CMC.xml,将输出路径设为ResultsCMC_AnkleSpring,其它设置不变,点击Run运行,然后关闭CMC面板,观看模拟结果。
2、先画出无辅助行走时的代谢结果。在菜单栏中点击Scripts->Run…,选择scripts\plotBaselineResults.py,在跳出的提示框中选保存CMC结果的文件夹(CMC\ResultsCMC),然后就会生成一个步态周期中代谢总量变化曲线和各肌肉代谢率变化曲线。
3、添加助力行走的代谢结果。同样地,运行脚本addPlotDeviceResults.py,在跳出的提示框中选CMC\ResultsCMC_AnkleSpring,然后就会在原图上添加新的曲线。在Total Metabolic Enegy图中可以看到,助力行走下的代谢值曲线明显低于无助力行走下的代谢值曲线,说明踝关节助力装置确实能降低行走时的代谢值。

参考资料

【1】Uchida T K, Hicks J L, Dembia C L, et al. Stretching Your Energetic Budget: How Tendon Compliance Affects the Metabolic Cost of Running[J]. Plos One, 2016, 11(3):e0150378.链接
【2】Dembia C L, Silder A, Uchida T K, et al. Simulating ideal assistive devices to reduce the metabolic cost of walking with heavy loads.[J]. Plos One, 2017, 12(7):e0180320.链接
【3】官方教程

OpenSim教程三——使用OpenSim辅助开发减少行走代谢值的可穿戴式设备相关推荐

  1. Android学习教程三分钟学会安卓开发

    1.创建页面(activity_main是默认主页面) 可拖拽控件,点击下方text切换到代码 下图红框中的是控件的默认id 2.创建activity class(与layout一一对应) 在清单文件 ...

  2. 详细的辅助开发教程,从入门到精通

    大家玩游戏最烦的人应该是开挂的人了吧? 他们直接破坏了游戏的公平性和平衡性. 今天我们要给大家说的是辅助,不是外挂. 辅助的存在和外挂有一定的类似性,但是又是完全两样的. 比如,他们都是第三方软件/程 ...

  3. 植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(上)

    植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(上) 11.E语言第一课(基址+偏移的读写) 12.E语言第二课(字节集的写入) 13.E语言第三课(快捷键的使用) 14.E语言第四课(调 ...

  4. Opensim教程1-骨骼肌肉建模入门

    Opensim教程1-骨骼肌肉建模入门 [Ps: 以下教程用于opensim4.0及更高版本] 一个刚刚接触opensim的小白,从官网上扒的教程,乱七八糟的整理到一起,还有很多疑问. I. Obje ...

  5. MIP开发教程(三) 使用MIP-CLI工具调试组件

    一 . 在 mip-extensions 仓库中创建新的组件 二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发 ...

  6. 2019-2020浴血凤凰DNF自动化辅助开发教程

    2019-2020浴血凤凰DNF自动化辅助开发教程

  7. 最新浴血凤凰2020年DNF自动化辅助开发教程

    浴血凤凰2020dnf自动化辅助开发视频教程 百度网盘 [2020年最新浴血凤凰DNF自动化辅助开发教程]全自动FH开发组包检测点的找法与还原(1) [2020年最新浴血凤凰DNF自动化辅助开发教程] ...

  8. 植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(下)

    植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(下) 36.全屏秒杀 37.秒杀实现 37.PVZ聚怪 38.种植CALL的查找与调用 39.OpenProcess错误 40.错误:con ...

  9. Android游戏开发Android软件开发【教程三十篇】

    Android软件开发之发送短信与系统短信库解析(三十)  New Android软件开发之获取通讯录联系人信息(二十九)  New Android软件开发之PreferenceActivity中的组 ...

最新文章

  1. 文字加减前后缀lisp_华为笔试题---仿LISP算法
  2. VC++ MSXML创建XML文件以及对XML文档解析
  3. RSA, ACS5.X 集成配置
  4. CSS3——transform
  5. 2018 ACM-ICPC亚洲区域赛 北京赛区
  6. 工作流中切换数据库时---“禁止流转”
  7. Python中import和from......import的区别
  8. SpringMVC-DispatcherServlet配置(Spring-servlet.xml)
  9. 根据Ping(ICMP协议)得到TTL并分析
  10. java 限时线程_Java线程中的七种状态
  11. 新IT运维时代 | Docker运维之最佳实践-上篇
  12. Apache Hive-1.2.1 Manual Patch and Compile
  13. vivi开发笔记【专辑】
  14. Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法
  15. 教你一键如何更换证件照底色?
  16. bootstrap datepicker 在bootstrap modal中不显示问题
  17. 在虚拟机中安装Neokylin操作系统
  18. 从六个方面讲解抢购软件需要具备的条件
  19. Android Root
  20. 练习3-8 查询水果价格

热门文章

  1. 长期跑步需要买个运动耳机吗,跑步必备运动耳机推荐
  2. UnrealText: Synthesizing Realistic Scene Text Images from the Unreal World(译)
  3. 面试着装需要注意的点有哪些
  4. java程序员面试能穿束脚裤吗_程序员面试,应该怎么穿?
  5. java登录锁定_java做帐户登录失败锁定
  6. 如何成为一名优秀的游戏建模师?掌握这10个步骤,你可以出师了
  7. SecuritySpy for Mac(Mac视频监控软件)
  8. 用PC作为Mac的扩展屏
  9. SQL Server 数据库SQL语句
  10. 盘点:拼多多有哪些值得借鉴的用户引导