当前位置: 移动技术网 > IT编程>开发语言>Java > 荐 [OpenSim]CMC Tool文件设置

荐 [OpenSim]CMC Tool文件设置

2020年07月13日  | 移动技术网IT编程  | 我要评论

[OpenSim]CMC Tool文件设置

关于本博客内容,为作者仿真模拟过程中的经验积累

示例文件:Arm26模型文件
所需要的文件路径:arm26_Setup_ComputedMuscleControl.xml
< pathOpenSim-Model >\Arm26\OutputReference\ComputedMuscleControl
其中< pathOpenSim-Model >为模型Model文件的保存路径

1.必要的设置

       在另一份博文(点击这里)里已经提到了subject01_Setup_CMC.xml文件。因此我希望通过OpenSim自带案例,学习CMCTool的文件设置。如图
      
你不要理会Desired Kinematics栏里的这个红色的背景标记。从上面两个图我们可以知道,Actuator constraints一栏可以不增加选择,而积分器设置也几乎不用修改。那么我们知道,必要的输入文件为:
1)期望的模型运动 - .mot 格式文件
2)Tracking tasks - ComputedMuscleControl_Task.xml 文件
3)Additional force files - xml文件,本例为arm26_Reserve_Actuators.xml
那么Reserve_Actuators.xml文件是否必要呢?作者认为,在一定程度上是必要的,否则会出现第三部分出现的崩溃。

2.文件内容

       这里列出文件的目的是,你可以根据这些设置文件,通过“复制-粘贴”的方式生成同类型文件,并在其中修改必要的设置,或适当删减,以匹配你自己的模型。

Desired Kinematics.mot文件

Coordinates
version=1
nRows=121
nColumns=3
inDegrees=yes

Units are S.I. units (second, meters, Newtons, ...)
Angles are in degrees.

endheader
time	r_shoulder_elev	r_elbow_flex
      0.00000000	     -0.03394423	     -0.05440752
      0.00833333	     -0.03657365	      0.01417949
      0.01666667	     -0.03908443	      0.08815700
      0.02500000	     -0.04126018	      0.17357577
      0.03333333	     -0.04302262	      0.27576038
      0.04166667	     -0.04431782	      0.39945264
      0.05000000	     -0.04510954	      0.54869991
      0.05833333	     -0.04537808	      0.72677247
      0.06666667	     -0.04512001	      0.93612489
      0.07500000	     -0.04434823	      1.17840384
      0.08333333	     -0.04309148	      1.45449954
      0.09166667	     -0.04139335	      1.76463436
      0.10000000	     -0.03931062	      2.10847927
      0.10833333	     -0.03691091	      2.48528740
      0.11666667	     -0.03427009	      2.89403350
      0.12500000	     -0.03146918	      3.33354847
      0.13333333	     -0.02859119	      3.80263942
      ////////////没有列完//////////

ComputedMuscleControl_Task.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<OpenSimDocument Version="30000">
	<CMC_TaskSet name="arm26">
		<objects>
			<CMC_Joint name="r_shoulder_elev">
				<!--Flag (true or false) indicating whether or not a task is enabled.-->
				<on>true</on>
				<!--Weight with which a task is tracked relative to other tasks. To track a task more tightly, make the weight larger.-->
				<weight> 1</weight>
				<!--Array of 3 flags (each true or false) specifying whether a component of a task is active.  For example, tracking the trajectory of a point in space could have three components (x,y,z).  This allows each of those to be made active (true) or inactive (false).  A task for tracking a joint coordinate only has one component.-->
				<active> true false false</active>
				<!--Position error feedback gain (stiffness). To achieve critical damping of errors, choose kv = 2*sqrt(kp).-->
				<kp> 100</kp>
				<!--Velocity error feedback gain (damping). To achieve critical damping of errors, choose kv = 2*sqrt(kp).-->
				<kv> 20</kv>
				<!--Feedforward acceleration gain.  This is normally set to 1.0, so no gain.-->
				<ka> 1</ka>
				<!--Name of the coordinate to be tracked.-->
				<coordinate>r_shoulder_elev</coordinate>
				<!--Error limit on the tracking accuracy for this coordinate. If the tracking errors approach this limit, the weighting for this coordinate is increased. -->
				<limit>0</limit>
			</CMC_Joint>
			<CMC_Joint name="r_elbow_flex">
				<!--Flag (true or false) indicating whether or not a task is enabled.-->
				<on>true</on>
				<!--Weight with which a task is tracked relative to other tasks. To track a task more tightly, make the weight larger.-->
				<weight> 1</weight>
				<!--Array of 3 flags (each true or false) specifying whether a component of a task is active.  For example, tracking the trajectory of a point in space could have three components (x,y,z).  This allows each of those to be made active (true) or inactive (false).  A task for tracking a joint coordinate only has one component.-->
				<active> true false false</active>
				<!--Position error feedback gain (stiffness). To achieve critical damping of errors, choose kv = 2*sqrt(kp).-->
				<kp> 100</kp>
				<!--Velocity error feedback gain (damping). To achieve critical damping of errors, choose kv = 2*sqrt(kp).-->
				<kv> 20</kv>
				<!--Feedforward acceleration gain.  This is normally set to 1.0, so no gain.-->
				<ka> 1</ka>
				<!--Name of the coordinate to be tracked.-->
				<coordinate>r_elbow_flex</coordinate>
				<!--Error limit on the tracking accuracy for this coordinate. If the tracking errors approach this limit, the weighting for this coordinate is increased. -->
				<limit>0</limit>
			</CMC_Joint>
		</objects>
		<groups />
	</CMC_TaskSet>
</OpenSimDocument>

arm26_Reserve_Actuators.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<OpenSimDocument Version="30000">
	<ForceSet name="arm26">
		<objects>
			<CoordinateActuator name="r_shoulder_elev_reserve">
				<!--Flag indicating whether the force is disabled or not. Disabled means that the force is not active in subsequent dynamics realizations.-->
				<isDisabled>false</isDisabled>
				<!--Minimum allowed value for control signal. Used primarily when solving for control values.-->
				<min_control>-Inf</min_control>
				<!--Maximum allowed value for control signal. Used primarily when solving for control values.-->
				<max_control>Inf</max_control>
				<!--Name of the generalized coordinate to which the actuator applies.-->
				<coordinate>r_shoulder_elev</coordinate>
				<!--The maximum generalized force produced by this actuator.-->
				<optimal_force>1</optimal_force>
			</CoordinateActuator>
			<CoordinateActuator name="r_elbow_flex_reserve">
				<!--Flag indicating whether the force is disabled or not. Disabled means that the force is not active in subsequent dynamics realizations.-->
				<isDisabled>false</isDisabled>
				<!--Minimum allowed value for control signal. Used primarily when solving for control values.-->
				<min_control>-Inf</min_control>
				<!--Maximum allowed value for control signal. Used primarily when solving for control values.-->
				<max_control>Inf</max_control>
				<!--Name of the generalized coordinate to which the actuator applies.-->
				<coordinate>r_elbow_flex</coordinate>
				<!--The maximum generalized force produced by this actuator.-->
				<optimal_force>1</optimal_force>
			</CoordinateActuator>
		</objects>
		<groups />
	</ForceSet>
</OpenSimDocument>
3.可能的崩溃

1)在第二部分的ComputedMuscleControl_Task.xml 文件当中,

<limit>0</limit>

可能会使得程序崩溃;此外,在该设置文件当中,若跟踪的CMC_Joint的名称,如

<CMC_Joint name="r_shoulder_elev">

与你的模型内该关节的名称不符,也会发生崩溃。
2)如第一部分所述,若arm26_Reserve_Actuators.xml文件不包含,大概率会导致OpenSim崩溃退出。对于该文件的功能,作者还不清楚。

本文地址:https://blog.csdn.net/qq_44207723/article/details/107288588

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网