[Opensim]CMC工具介绍
官网教程链接:点击这里
CMC工具全程:Computed Muscle Control(直译:计算肌肉控制)
CMC目的:计算一组在存在外力作用下(如果适用)能够驱动动态肌骨模型来跟踪一组输入的目标的运动学(Desired Kinematics)的肌肉激励(或更一般地说,执行器控制Actuator Controls)。
一、CMC工具输入输出文件
1.输入文件
设定文件(Setting file):subject01_Setup_CMC.xml 这是CMC工具的一个设置文件(setup file),它指定影响跟踪控制器行为的设置、输入和输出,以确定执行器(包括肌肉)控制。这些可以使用GUI或手动定义。设置文件(Setting file)识别执行器actuators(例如,动态一致性要求的残余执行机构)以及运动学跟踪任务。此外,可以指定执行机构的控制约束(以限制最大剩余力)。
1)gait2345_CMC_ControlConstraints.xml
包含模型执行器的限制,其中包括肌肉,储备和剩余执行器。控制约束文件指定每个执行器的最大和最小“激励excitation”(即控制信号)。当某些致动器“打开”或“关闭”以及它们可以工作的范围时,控制约束条件还可用于强制执行。
2)gait2345_CMC_Actuators.xml
包含剩余执行器和备用执行器,如在RRA中一样。
3)gait2345_CMC_Tasks.xml
跟踪任务文件,指定要跟踪的坐标和相应的跟踪权重(权重是相对的,并确定关节角度如何更好的跟踪从RRA指定的关节角度)。
4)subject01_walk1_RRA_Kinematics_q.sto
包含模型运动学的时间历史记录,包括RRA的关节角度和骨盆平移。
5)subject01_walk1_grf.xml
外部载荷数据(即,地面反作用力,力矩和压力中心位置)。
6)subject01_simbody_adjusted.osim
特定对象的OpenSim模型,该模型是通过使用“缩放工具”或其他方法缩放通用模型以及包含已调整的虚拟标记的关联标记集生成的。模型必须包括惯性参数。模型应具有经过调整的躯干质心,以减少残差。
2.输出文件
1)subject01_walk1_controls.xml:
包含对单个肌肉的激励以及对任何剩余和/或备用执行器的控制。
2)subject01_CMC_forces.sto (未显示):
肌肉力以及储备/残余力和扭矩。
3)subject01_walk1_states.sto (未显示):
模拟运动的模型状态和肌肉状态(即关节角度和速度,肌肉纤维长度和激活)。
CMC算法的最后一步是使用计算出的控件进行标准的前向动态仿真,将时间向前推进T。重复这些步骤:计算所需的加速度desired accelerations,静态优化static optimization和前向动态仿真forward dynamic simulation,直到时间提前到所需的运动间隔结束为止。当CMC完成执行,可以将计算出的肌肉兴奋模式与原型或测量的肌电图测量值进行比较,可以使用“ 肌肉激励编辑器Excitation Editor”查看CMC产生的激励。
二、CMC工具面板
工具面板即文件设置事例(图片来自官网)
如第一部分所提及的setup file文件,你可以点击load按钮将预设的设置导入到Main Settings中来。
Command-line Execution命令行执行
使用命令cmc -S <setup file>
运行Computed Muscle Control工具,如
cmc -S subject01_Setup_CMC.xml
三、CMC设置文件
本节的所有代码来自于官网:点击这里
关于XML file for the CMC setup file在本节中未列出,如需要请点击该链接跳转官网进行查询学习
1.CMC任务集文件Task Set File
<?xml version="1.0" encoding="UTF-8"?>
<CMC_TaskSet name="gait2354_CMC">
<objects>
<CMC_Joint name="pelvis_tz">
<on> true </on>
<active> true false false </active>
<weight> 1.0e0 </weight>
<kp> 100.0 </kp>
<kv> 20.0 </kv>
<coordinate> pelvis_tz </coordinate>
</CMC_Joint>
<CMC_Joint name="hip_flexion_r">
<on> true </on>
<active> true false false </active>
<weight> 1.0e2 </weight>
<kp> 100.0 </kp>
<kv> 20.0 </kv>
<coordinate> hip_flexion_r </coordinate>
</CMC_Joint>
</objects>
</CMC_TaskSet>
2.CMC控制约束文件Control Constraints File
<?xml version="1.0" encoding="UTF-8"?>
<ControlSet name="gait2354_CMC">
<defaults>
<ControlLinear name="default">
<is_model_control> true </is_model_control>
<extrapolate> true </extrapolate>
<default_min> 0.02 </default_min>
<default_max> 1.00 </default_max>
<use_steps> true </use_steps>
</ControlLinear>
</defaults>
<objects>
<!--Residual actuators -->
<ControlLinear name="FX.excitation">
<default_min> -1.0 </default_min>
<default_max> 1.0 </default_max>
<use_steps> false </use_steps>
</ControlLinear>
<!-- Reserve actuators -->
<ControlLinear name="hip_flexion_r_reserve.excitation">
<default_min> -1000 </default_min>
<default_max> 1000 </default_max>
</ControlLinear>
<!-- Muscles -->
<ControlLinear name="glut_med1_r.excitation" />
<ControlLinear name="glut_med2_r.excitation" />
<ControlLinear name="glut_med3_r.excitation" />
<ControlLinear name="bifemlh_r.excitation" />
<ControlLinear name="bifemsh_r.excitation" />
</objects>
</ControlSet>
3.使用控制约束文件来约束CMC激励以匹配EMG数据 Using control constraints file to constrain CMC excitations to match EMG data
在使用CMC时,有时优化器会选择在不应该被激活的运动过程中激活肌肉。例如,根据运行期间的肌电图记录,我们知道soleus在swing期间不应该有太多的活动。但有时CMC会选择激活肌肉,因为它不知道肌电数据。为了更好地匹配实验肌电图,我们可以在特定的运动时间限制CMC对soleus的激活。下面是一个约束示例,其中右soleus被指定为在0.7272和0.9945s之间。
控制约束显示在Excitation Editor GUI中。添加了一些线来说明节点是如何连接的。与节点关联的值在指定时间之前应用。换句话说,当解释一个控制或它的约束(最小值或最大值)时,应用的是t(i+1)处未来节点到t(i)处当前节点的值。
<ControlLinear name="soleus_r.excitation">
<min_nodes>
<ControlLinearNode>
<t>0.7272</t>
<value>0.02</value>
</ControlLinearNode>
<ControlLinearNode>
<t>0.9945</t>
<value>0.02</value>
</ControlLinearNode>
<ControlLinearNode>
<t>1.143</t>
<value>0.02</value>
</ControlLinearNode>
</min_nodes>
<max_nodes>
<ControlLinearNode>
<t>0.7272</t>
<value>1</value>
</ControlLinearNode>
<ControlLinearNode>
<t>0.9945</t>
<value>0.02</value>
</ControlLinearNode>
<ControlLinearNode>
<t>1.143</t>
<value>1</value>
</ControlLinearNode>
</max_nodes>
</ControlLinear>
今天的文章[Opensim]CMC工具介绍分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/59907.html