Merge branch 'draft' of https://github.com/perfanalytics/pose2sim into draft
This commit is contained in:
commit
f24f1515f4
13929
Pose2Sim/Demo/OpenSim_Setup/LSTM/LaiUhlrich2022.osim
Normal file
13929
Pose2Sim/Demo/OpenSim_Setup/LSTM/LaiUhlrich2022.osim
Normal file
File diff suppressed because it is too large
Load Diff
14331
Pose2Sim/Demo/OpenSim_Setup/LSTM/LaiUhlrich2022_shoulder.osim
Normal file
14331
Pose2Sim/Demo/OpenSim_Setup/LSTM/LaiUhlrich2022_shoulder.osim
Normal file
File diff suppressed because it is too large
Load Diff
352
Pose2Sim/Demo/OpenSim_Setup/LSTM/Marker_add.xml
Normal file
352
Pose2Sim/Demo/OpenSim_Setup/LSTM/Marker_add.xml
Normal file
@ -0,0 +1,352 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<OpenSimDocument Version="40000">
|
||||
<MarkerSet name="markerset">
|
||||
<objects>
|
||||
<Marker name="r.ASIS_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.028000000000000001 0.01 0.128</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L.ASIS_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.028000000000000001 0.01 -0.128</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r.PSIS_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.154 0.025000000000000001 0.050000000000000003</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L.PSIS_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.154 0.025000000000000001 -0.050000000000000003</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_knee_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0080000000000000002 -0.40400000000000003 0.055</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_mknee_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.010999999999999999 -0.40100000000000002 -0.055</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_ankle_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.02 -0.38500000000000001 0.052999999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_mankle_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0060000000000000001 -0.38 -0.037999999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_toe_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/calcn_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.18684400000000001 0.0083665300000000005 0.0052662100000000003</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_5meta_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/calcn_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.14000000000000001 0.0050000000000000001 0.065000000000000002</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_calc_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/calcn_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.032161500000000003 0.032569300000000002 -0.011169500000000001</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_knee_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0080000000000000002 -0.40400000000000003 -0.055</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_mknee_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.010999999999999999 -0.40100000000000002 0.055</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_ankle_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.02 -0.38500000000000001 -0.052999999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_mankle_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0060000000000000001 -0.38 0.037999999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_toe_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/calcn_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.18684400000000001 0.0083665300000000005 -0.00526621</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_calc_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/calcn_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.0321615 0.0325693 0.0111695</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_5meta_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/calcn_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.14000000000000001 0.0050000000000000001 -0.065000000000000002</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_shoulder_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/torso</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0 0.41799999999999998 0.14199999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_shoulder_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/torso</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0 0.41799999999999998 -0.14199999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="C7_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/torso</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.080000000000000002 0.41999999999999998 0.0030000000000000001</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_lelbow_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/humerus_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.014999999999999999 -0.28000000000000003 0.040000000000000001</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_melbow_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/humerus_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0022499999999999998 -0.28599999999999998 -0.050000000000000003</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_lwrist_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/radius_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.00050000000000000001 -0.22500000000000001 0.050000000000000003</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_mwrist_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/radius_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.021999999999999999 -0.22500000000000001 -0.021999999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_lelbow_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/humerus_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.014999999999999999 -0.28000000000000003 -0.040000000000000001</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_melbow_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/humerus_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0022499999999999998 -0.28599999999999998 0.050000000000000003</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_lwrist_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/radius_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.00050000000000000001 -0.22500000000000001 -0.050000000000000003</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_mwrist_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/radius_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.021999999999999999 -0.22500000000000001 0.021999999999999999</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>true</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_thigh1_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.09 -0.15 0.07</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_thigh2_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.055 -0.25 0.085</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_thigh3_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.02 -0.14 0.1</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_thigh1_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.09 -0.15 -0.07</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_thigh2_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.055 -0.25 -0.085</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_thigh3_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/femur_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.02 -0.14 -0.1</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_sh1_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0 -0.115 0.07</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_sh2_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.026 -0.23 0.08</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="r_sh3_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_r</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.05 -0.22 0.08</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_sh1_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.0 -0.115 -0.07</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_sh2_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>0.026 -0.23 -0.08</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="L_sh3_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/tibia_l</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.05 -0.22 -0.08</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="RHJC_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.056276 -0.078490000000000004 0.077259999999999995</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
<Marker name="LHJC_study">
|
||||
<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The frame to which this station is fixed.).-->
|
||||
<socket_parent_frame>/bodyset/pelvis</socket_parent_frame>
|
||||
<!--The fixed location of the station expressed in its parent frame.-->
|
||||
<location>-0.056276 -0.078490000000000004 -0.077259999999999995</location>
|
||||
<!--Flag (true or false) specifying whether the marker is fixed in its parent frame during the marker placement step of scaling. If false, the marker is free to move within its parent Frame to match its experimental counterpart.-->
|
||||
<fixed>false</fixed>
|
||||
</Marker>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerSet>
|
||||
</OpenSimDocument>
|
289
Pose2Sim/Demo/OpenSim_Setup/LSTM/Setup_IK.xml
Normal file
289
Pose2Sim/Demo/OpenSim_Setup/LSTM/Setup_IK.xml
Normal file
@ -0,0 +1,289 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<OpenSimDocument Version="40000">
|
||||
<InverseKinematicsTool name="generic">
|
||||
<!--Directory used for writing results.-->
|
||||
<results_directory>Unassigned</results_directory>
|
||||
<!--Name of the model file (.osim) to use for inverse kinematics.-->
|
||||
<model_file>Unassigned</model_file>
|
||||
<!--A positive scalar that weights the relative importance of satisfying constraints. A weighting of 'Infinity' (the default) results in the constraints being strictly enforced. Otherwise, the weighted-squared constraint errors are appended to the cost function.-->
|
||||
<constraint_weight>Inf</constraint_weight>
|
||||
<!--The accuracy of the solution in absolute terms. Default is 1e-5. It determines the number of significant digits to which the solution can be trusted.-->
|
||||
<accuracy>1.0000000000000001e-05</accuracy>
|
||||
<!--Markers and coordinates to be considered (tasks) and their weightings. The sum of weighted-squared task errors composes the cost function.-->
|
||||
<IKTaskSet>
|
||||
<objects>
|
||||
<IKMarkerTask name="C7_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_shoulder_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_shoulder_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r.ASIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L.ASIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r.PSIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L.PSIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_knee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mknee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_ankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_toe_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_5meta_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_calc_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>60</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_knee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mknee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_ankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_toe_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_calc_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>60</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_5meta_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_lelbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_lelbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_melbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_melbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_lwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_lwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_thigh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_thigh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_thigh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_thigh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_thigh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_thigh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_sh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_sh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_sh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_sh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_sh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_sh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="RHJC_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="LHJC_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
</objects>
|
||||
<groups />
|
||||
</IKTaskSet>
|
||||
<!--TRC file (.trc) containing the time history of observations of marker positions obtained during a motion capture experiment. Markers in this file that have a corresponding task and model marker are included.-->
|
||||
<marker_file>Unassigned</marker_file>
|
||||
<!--The name of the storage (.sto or .mot) file containing the time history of coordinate observations. Coordinate values from this file are included if there is a corresponding model coordinate and task. -->
|
||||
<coordinate_file>Unassigned</coordinate_file>
|
||||
<!--The desired time range over which inverse kinematics is solved. The closest start and final times from the provided observations are used to specify the actual time range to be processed.-->
|
||||
<time_range>-Inf Inf</time_range>
|
||||
<!--Flag (true or false) indicating whether or not to report marker errors from the inverse kinematics solution.-->
|
||||
<report_errors>true</report_errors>
|
||||
<!--Name of the resulting inverse kinematics motion (.mot) file.-->
|
||||
<output_motion_file>Unassigned</output_motion_file>
|
||||
<!--Flag indicating whether or not to report model marker locations. Note, model marker locations are expressed in Ground.-->
|
||||
<report_marker_locations>false</report_marker_locations>
|
||||
</InverseKinematicsTool>
|
||||
</OpenSimDocument>
|
369
Pose2Sim/Demo/OpenSim_Setup/LSTM/Setup_IK_shoulder.xml
Normal file
369
Pose2Sim/Demo/OpenSim_Setup/LSTM/Setup_IK_shoulder.xml
Normal file
@ -0,0 +1,369 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<OpenSimDocument Version="40000">
|
||||
<InverseKinematicsTool name="generic">
|
||||
<!--Directory used for writing results.-->
|
||||
<results_directory>Unassigned</results_directory>
|
||||
<!--Name of the model file (.osim) to use for inverse kinematics.-->
|
||||
<model_file>Unassigned</model_file>
|
||||
<!--A positive scalar that weights the relative importance of satisfying constraints. A weighting of 'Infinity' (the default) results in the constraints being strictly enforced. Otherwise, the weighted-squared constraint errors are appended to the cost function.-->
|
||||
<constraint_weight>Inf</constraint_weight>
|
||||
<!--The accuracy of the solution in absolute terms. Default is 1e-5. It determines the number of significant digits to which the solution can be trusted.-->
|
||||
<accuracy>1.0000000000000001e-05</accuracy>
|
||||
<!--Markers and coordinates to be considered (tasks) and their weightings. The sum of weighted-squared task errors composes the cost function.-->
|
||||
<IKTaskSet>
|
||||
<objects>
|
||||
<IKMarkerTask name="C7_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_shoulder_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_shoulder_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r.ASIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L.ASIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r.PSIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L.PSIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_knee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mknee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_ankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_toe_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_5meta_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_calc_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>60</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_knee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mknee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_ankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_toe_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_calc_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>60</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_5meta_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>30</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_lelbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_lelbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_melbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_melbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_lwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_lwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_thigh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_thigh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_thigh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_thigh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_thigh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_thigh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_sh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_sh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_sh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_sh1_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_sh2_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_sh3_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>4</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="RHJC_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="LHJC_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to a marker or coordinate for solving inverse kinematics problems.-->
|
||||
<weight>25</weight>
|
||||
</IKMarkerTask>
|
||||
<IKCoordinateTask name="sh_tx_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="sh_ty_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="sh_tz_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="sh_axial_rot_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.00005</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="sh_tx_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="sh_ty_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="sh_tz_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="sh_axial_rot_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.00005</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
</objects>
|
||||
<groups />
|
||||
</IKTaskSet>
|
||||
<!--TRC file (.trc) containing the time history of observations of marker positions obtained during a motion capture experiment. Markers in this file that have a corresponding task and model marker are included.-->
|
||||
<marker_file>Unassigned</marker_file>
|
||||
<!--The name of the storage (.sto or .mot) file containing the time history of coordinate observations. Coordinate values from this file are included if there is a corresponding model coordinate and task. -->
|
||||
<coordinate_file>Unassigned</coordinate_file>
|
||||
<!--The desired time range over which inverse kinematics is solved. The closest start and final times from the provided observations are used to specify the actual time range to be processed.-->
|
||||
<time_range>-Inf Inf</time_range>
|
||||
<!--Flag (true or false) indicating whether or not to report marker errors from the inverse kinematics solution.-->
|
||||
<report_errors>true</report_errors>
|
||||
<!--Name of the resulting inverse kinematics motion (.mot) file.-->
|
||||
<output_motion_file>Unassigned</output_motion_file>
|
||||
<!--Flag indicating whether or not to report model marker locations. Note, model marker locations are expressed in Ground.-->
|
||||
<report_marker_locations>false</report_marker_locations>
|
||||
</InverseKinematicsTool>
|
||||
</OpenSimDocument>
|
749
Pose2Sim/Demo/OpenSim_Setup/LSTM/Setup_scaling_LSTM.xml
Normal file
749
Pose2Sim/Demo/OpenSim_Setup/LSTM/Setup_scaling_LSTM.xml
Normal file
@ -0,0 +1,749 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<OpenSimDocument Version="40000">
|
||||
<ScaleTool name="RajagopalModified2016_withArms">
|
||||
<!--Mass of the subject in kg. Subject-specific model generated by scaling step will have this total mass.-->
|
||||
<mass>75.337</mass>
|
||||
<!--Height of the subject in mm. For informational purposes only (not used by scaling).-->
|
||||
<height>1.8899999999999999</height>
|
||||
<!--Age of the subject in years. For informational purposes only (not used by scaling).-->
|
||||
<age>-1</age>
|
||||
<!--Notes for the subject.-->
|
||||
<notes>Unassigned</notes>
|
||||
<!--Specifies the name of the unscaled model (.osim) and the marker set.-->
|
||||
<GenericModelMaker>
|
||||
<!--Model file (.osim) for the unscaled model.-->
|
||||
<model_file>Unassigned</model_file>
|
||||
<!--Set of model markers used to scale the model. Scaling is done based on distances between model markers compared to the same distances between the corresponding experimental markers.-->
|
||||
<marker_set_file>Unassigned</marker_set_file>
|
||||
</GenericModelMaker>
|
||||
<!--Specifies parameters for scaling the model.-->
|
||||
<ModelScaler>
|
||||
<!--Whether or not to use the model scaler during scale-->
|
||||
<apply>true</apply>
|
||||
<!--Specifies the scaling method and order. Valid options are 'measurements', 'manualScale', singly or both in any sequence.-->
|
||||
<scaling_order> measurements</scaling_order>
|
||||
<!--Specifies the measurements by which body segments are to be scaled.-->
|
||||
<MeasurementSet>
|
||||
<objects>
|
||||
<Measurement name="foot">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_calc_study r_toe_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_calc_study r_5meta_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_calc_study L_toe_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_calc_study L_5meta_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="talus_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="calcn_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="toes_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="talus_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="calcn_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="toes_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="tibia_r">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_knee_study r_ankle_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_mknee_study r_mankle_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="tibia_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="femur_r">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> RHJC_study r_knee_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="femur_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="patella_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="tibia_l">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_knee_study L_ankle_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_mknee_study L_mankle_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="tibia_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="femur_l">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> LHJC_study L_knee_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="femur_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="patella_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="pelvisXY">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r.ASIS_study r.PSIS_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L.ASIS_study L.PSIS_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="pelvis">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="pelvisZ">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> RHJC_study LHJC_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="pelvis">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="torsoXY">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_shoulder_study r.PSIS_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_shoulder_study L.PSIS_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> C7_study r.PSIS_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> C7_study L.PSIS_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="torso">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="scapulaPhantom_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="scapulaPhantom_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="torsoZ">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_shoulder_study L_shoulder_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="torso">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="scapulaPhantom_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="scapulaPhantom_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="humerus">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_shoulder_study r_lelbow_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_shoulder_study r_melbow_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_shoulder_study L_lelbow_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_shoulder_study L_melbow_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="humerus_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="humerus_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
<Measurement name="radius">
|
||||
<!--Flag to turn on and off scaling for this measurement.-->
|
||||
<apply>true</apply>
|
||||
<!--Set of marker pairs used to determine the scale factors.-->
|
||||
<MarkerPairSet>
|
||||
<objects>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_lwrist_study r_lelbow_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> r_mwrist_study r_melbow_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_lwrist_study L_lelbow_study</markers>
|
||||
</MarkerPair>
|
||||
<MarkerPair>
|
||||
<!--Names of two markers, the distance between which is used to compute a body scale factor.-->
|
||||
<markers> L_mwrist_study L_melbow_study</markers>
|
||||
</MarkerPair>
|
||||
</objects>
|
||||
<groups />
|
||||
</MarkerPairSet>
|
||||
<!--Set of bodies to be scaled by this measurement.-->
|
||||
<BodyScaleSet>
|
||||
<objects>
|
||||
<BodyScale name="ulna_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="radius_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="hand_r">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="ulna_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="radius_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
<BodyScale name="hand_l">
|
||||
<!--Axes (X Y Z) along which to scale a body. For example, 'X Y Z' scales along all three axes, and 'Y' scales just along the Y axis.-->
|
||||
<axes> X Y Z</axes>
|
||||
</BodyScale>
|
||||
</objects>
|
||||
<groups />
|
||||
</BodyScaleSet>
|
||||
</Measurement>
|
||||
</objects>
|
||||
<groups />
|
||||
</MeasurementSet>
|
||||
<!--Scale factors to be used for manual scaling.-->
|
||||
<ScaleSet>
|
||||
<objects />
|
||||
<groups />
|
||||
</ScaleSet>
|
||||
<!--TRC file (.trc) containing the marker positions used for measurement-based scaling. This is usually a static trial, but doesn't need to be. The marker-pair distances are computed for each time step in the TRC file and averaged across the time range.-->
|
||||
<marker_file>Unassigned</marker_file>
|
||||
<!--Time range over which to average marker-pair distances in the marker file (.trc) for measurement-based scaling.-->
|
||||
<time_range> 3.41 3.66</time_range>
|
||||
<!--Flag (true or false) indicating whether or not to preserve relative mass between segments.-->
|
||||
<preserve_mass_distribution>true</preserve_mass_distribution>
|
||||
<!--Name of OpenSim model file (.osim) to write when done scaling.-->
|
||||
<output_model_file />
|
||||
<!--Name of file to write containing the scale factors that were applied to the unscaled model (optional).-->
|
||||
<output_scale_file />
|
||||
</ModelScaler>
|
||||
<!--Specifies parameters for placing markers on the model once a model is scaled. -->
|
||||
<MarkerPlacer>
|
||||
<!--Whether or not to use the marker placer during scale-->
|
||||
<apply>true</apply>
|
||||
<!--Task set used to specify weights used in the IK computation of the static pose.-->
|
||||
<IKTaskSet>
|
||||
<objects>
|
||||
<IKMarkerTask name="r.ASIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L.ASIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r.PSIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L.PSIS_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="RHJC_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="LHJC_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_knee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mknee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_ankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_toe_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_5meta_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_calc_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_knee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mknee_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_ankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mankle_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_toe_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_calc_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_5meta_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>10</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_shoulder_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_shoulder_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="C7_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>20</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_lelbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>1</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_lwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="r_mwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_lelbow_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>1</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_lwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKMarkerTask name="L_mwrist_study">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>5</weight>
|
||||
</IKMarkerTask>
|
||||
<IKCoordinateTask name="hip_flexion_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="hip_rotation_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>false</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="knee_angle_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="ankle_angle_r">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0.087266462599716474</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="hip_flexion_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="hip_rotation_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>false</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="knee_angle_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="ankle_angle_l">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0.087266462599716474</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="lumbar_extension">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="lumbar_bending">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
<IKCoordinateTask name="lumbar_rotation">
|
||||
<!--Whether or not this task will be used during inverse kinematics solve, default is true.-->
|
||||
<apply>true</apply>
|
||||
<!--Weight given to the task when solving inverse kinematics problems, default is 0.-->
|
||||
<weight>0.10000000000000001</weight>
|
||||
<!--Indicates the source of the coordinate value for this task. Possible values are default_value (use default value of coordinate, as specified in the model file, as the fixed target value), manual_value (use the value specified in the value property of this task as the fixed target value), or from_file (use the coordinate values from the coordinate data specified by the coordinates_file property).-->
|
||||
<value_type>manual_value</value_type>
|
||||
<!--This value will be used as the desired (or prescribed) coordinate value if value_type is set to manual_value.-->
|
||||
<value>0</value>
|
||||
</IKCoordinateTask>
|
||||
</objects>
|
||||
<groups />
|
||||
</IKTaskSet>
|
||||
<!--TRC file (.trc) containing the time history of experimental marker positions (usually a static trial).-->
|
||||
<marker_file>Unassigned</marker_file>
|
||||
<!--Name of file containing the joint angles used to set the initial configuration of the model for the purpose of placing the markers. These coordinate values can also be included in the optimization problem used to place the markers. Before the model markers are placed, a single frame of an inverse kinematics (IK) problem is solved. The IK problem can be solved simply by matching marker positions, but if the model markers are not in the correct locations, the IK solution will not be very good and neither will marker placement. Alternatively, coordinate values (specified in this file) can be specified and used to influence the IK solution. This is valuable particularly if you have high confidence in the coordinate values. For example, you know for the static trial the subject was standing will all joint angles close to zero. If the coordinate set (see the CoordinateSet property) contains non-zero weights for coordinates, the IK solution will try to match not only the marker positions, but also the coordinates in this file. Least-squared error is used to solve the IK problem. -->
|
||||
<coordinate_file>Unassigned</coordinate_file>
|
||||
<!--Time range over which the marker positions are averaged.-->
|
||||
<time_range> 3.41 3.66</time_range>
|
||||
<!--Name of the motion file (.mot) written after marker relocation (optional).-->
|
||||
<output_motion_file />
|
||||
<!--Output OpenSim model file (.osim) after scaling and maker placement.-->
|
||||
<output_model_file />
|
||||
<!--Output marker set containing the new marker locations after markers have been placed.-->
|
||||
<output_marker_file />
|
||||
<!--Maximum amount of movement allowed in marker data when averaging frames of the static trial. A negative value means there is not limit.-->
|
||||
<max_marker_movement>-1</max_marker_movement>
|
||||
</MarkerPlacer>
|
||||
</ScaleTool>
|
||||
</OpenSimDocument>
|
@ -27,7 +27,7 @@ frame_range = [] # For example [10,300], or [] for all frames
|
||||
exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
## Only taken into account if want to use marker augmentation
|
||||
participant_height = 1.7 # m
|
||||
participant_mass = 70 # kg
|
||||
|
||||
@ -94,8 +94,7 @@ calibration_type = 'convert' # 'convert' or 'calculate'
|
||||
|
||||
[pose]
|
||||
pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII
|
||||
#With mediapipe: BLAZEPOSE.
|
||||
#With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
#With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
|
@ -27,7 +27,7 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
|
@ -9,8 +9,8 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
# [filtering.butterworth] and set cut_off_frequency = 10, etc.
|
||||
@ -27,7 +27,7 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
|
@ -9,8 +9,8 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
# [filtering.butterworth] and set cut_off_frequency = 10, etc.
|
||||
@ -27,7 +27,7 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -140,9 +139,9 @@
|
||||
# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
|
||||
|
||||
|
||||
[filtering]
|
||||
# [filtering]
|
||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||
display_figures = true # true or false (lowercase)
|
||||
# display_figures = true # true or false (lowercase)
|
||||
|
||||
# [filtering.butterworth]
|
||||
# order = 4
|
||||
|
@ -27,7 +27,7 @@ frame_range = [] # For example [10,300], or [] for all frames
|
||||
exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
## Only taken into account if want to use marker augmentation
|
||||
participant_height = 1.7 # m
|
||||
participant_mass = 70 # kg
|
||||
|
||||
@ -95,7 +95,6 @@ calibration_type = 'convert' # 'convert' or 'calculate'
|
||||
[pose]
|
||||
pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
#With mediapipe: BLAZEPOSE.
|
||||
#With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
#With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
|
@ -9,7 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -27,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -163,7 +162,7 @@
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P00_Participant0/S01_P00_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
@ -9,6 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -26,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -94,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -162,7 +162,7 @@
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P00_Participant0/S01_P00_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
@ -9,6 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -26,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -94,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -139,9 +139,9 @@
|
||||
# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
|
||||
|
||||
|
||||
[filtering]
|
||||
# [filtering]
|
||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||
display_figures = true # true or false (lowercase)
|
||||
# display_figures = true # true or false (lowercase)
|
||||
|
||||
# [filtering.butterworth]
|
||||
# order = 4
|
||||
@ -162,7 +162,7 @@ display_figures = true # true or false (lowercase)
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P00_Participant/0S01_P00_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
@ -9,6 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -26,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -94,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -139,9 +139,9 @@
|
||||
# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
|
||||
|
||||
|
||||
[filtering]
|
||||
# [filtering]
|
||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||
display_figures = true # true or false (lowercase)
|
||||
# display_figures = true # true or false (lowercase)
|
||||
|
||||
# [filtering.butterworth]
|
||||
# order = 4
|
||||
@ -162,7 +162,7 @@ display_figures = true # true or false (lowercase)
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P00_Participant0/S01_P00_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
@ -9,7 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -27,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -163,7 +162,7 @@
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P01_Participant1/S01_P01_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
@ -9,7 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -27,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -163,7 +162,7 @@
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P01_Participant1/S01_P01_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
@ -9,7 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -27,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -140,9 +139,9 @@
|
||||
# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
|
||||
|
||||
|
||||
[filtering]
|
||||
# [filtering]
|
||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||
display_figures = true # true or false (lowercase)
|
||||
# display_figures = true # true or false (lowercase)
|
||||
|
||||
# [filtering.butterworth]
|
||||
# order = 4
|
||||
@ -163,7 +162,7 @@ display_figures = true # true or false (lowercase)
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P01_Participant1/S01_P01_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
@ -9,7 +9,7 @@
|
||||
# If a parameter is not found here, Pose2Sim will look for its value in the
|
||||
# Config.toml file of the level above. This way, you can set global
|
||||
# instructions for the Session and alter them for specific Participants or Trials.
|
||||
#
|
||||
#
|
||||
# If you wish to overwrite a parameter for a specific trial or participant,
|
||||
# edit its Config.toml file by uncommenting its key (e.g., [project])
|
||||
# and editing its value (e.g., frame_range = [10,300]). Or else, uncomment
|
||||
@ -27,9 +27,9 @@
|
||||
# exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
|
||||
# e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
|
||||
|
||||
## Only taken into account if want to use marker augmentation
|
||||
# participant_height = 1.7 # m
|
||||
# participant_mass = 70 # kg
|
||||
## Only taken into account if pose_model is 'BODY_25_AUGMENTED' # Coming soon!
|
||||
|
||||
|
||||
## Take heart, calibration is not that complicated once you get the hang of it!
|
||||
@ -95,8 +95,7 @@
|
||||
|
||||
# [pose]
|
||||
# pose_framework = 'openpose' # 'openpose', 'mediapipe', 'alphapose', 'deeplabcut'
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# BODY_25_AUGMENTED # Coming soon!
|
||||
# pose_model = 'BODY_25B' #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII,
|
||||
# #With mediapipe: BLAZEPOSE.
|
||||
# #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133.
|
||||
# #With deeplabcut: CUSTOM. See example at the end of the file.
|
||||
@ -140,9 +139,9 @@
|
||||
# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon!
|
||||
|
||||
|
||||
[filtering]
|
||||
# [filtering]
|
||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||
display_figures = true # true or false (lowercase)
|
||||
# display_figures = true # true or false (lowercase)
|
||||
|
||||
# [filtering.butterworth]
|
||||
# order = 4
|
||||
@ -163,7 +162,7 @@ display_figures = true # true or false (lowercase)
|
||||
|
||||
|
||||
# [opensim]
|
||||
# static_trial = ['S01_P01_Participant1/S01_P01_T00_StaticTrial']
|
||||
# static_trial = ['S00_P00_Participant/S00_P00_T00_StaticTrial']
|
||||
# # If this Config.toml file is at the Trial level, set to true or false (lowercase);
|
||||
# # At the Participant level, specify the name of the static trial folder name, e.g. ['S00_P00_T00_StaticTrial'];
|
||||
# # At the Session level, add participant subdirectory, e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P01_Participant/S00_P00_T00_StaticTrial']
|
||||
|
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/mean.npy
Normal file
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/mean.npy
Normal file
Binary file not shown.
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/metadata.json
Normal file
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/metadata.json
Normal file
@ -0,0 +1 @@
|
||||
{"reference_marker": "midHip"}
|
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/model.json
Normal file
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/model.json
Normal file
@ -0,0 +1 @@
|
||||
{"class_name": "Sequential", "config": {"name": "sequential_2", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, null, 47], "dtype": "float32", "sparse": false, "ragged": false, "name": "lstm_8_input"}}, {"class_name": "LSTM", "config": {"name": "lstm_8", "trainable": true, "dtype": "float32", "batch_input_shape": [null, null, 47], "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "time_major": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}}, {"class_name": "LSTM", "config": {"name": "lstm_9", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "time_major": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}}, {"class_name": "LSTM", "config": {"name": "lstm_10", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "time_major": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}}, {"class_name": "LSTM", "config": {"name": "lstm_11", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "time_major": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}}, {"class_name": "TimeDistributed", "config": {"name": "time_distributed_2", "trainable": true, "dtype": "float32", "layer": {"class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "dtype": "float32", "units": 105, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}}}]}, "keras_version": "2.12.0", "backend": "tensorflow"}
|
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/std.npy
Normal file
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/std.npy
Normal file
Binary file not shown.
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/weights.h5
Normal file
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/weights.h5
Normal file
Binary file not shown.
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/mean.npy
Normal file
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/mean.npy
Normal file
Binary file not shown.
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/metadata.json
Normal file
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/metadata.json
Normal file
@ -0,0 +1 @@
|
||||
{"reference_marker": "midHip"}
|
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/model.json
Normal file
1
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/model.json
Normal file
File diff suppressed because one or more lines are too long
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/std.npy
Normal file
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/std.npy
Normal file
Binary file not shown.
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/weights.h5
Normal file
BIN
Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/weights.h5
Normal file
Binary file not shown.
@ -371,12 +371,12 @@ def triangulation(config=None):
|
||||
logging.info(f"Triangulation of 2D points for {seq_name}, for {frames}.")
|
||||
logging.info("---------------------------------------------------------------------")
|
||||
logging.info(f"\nProject directory: {project_dir}")
|
||||
|
||||
|
||||
triangulate_all(config_dict)
|
||||
|
||||
end = time.time()
|
||||
logging.info(f'Triangulation took {end-start:.2f} s.')
|
||||
|
||||
|
||||
|
||||
def filtering(config=None):
|
||||
'''
|
||||
@ -420,6 +420,37 @@ def filtering(config=None):
|
||||
|
||||
filter_all(config_dict)
|
||||
|
||||
def augmenter(config=None):
|
||||
from Pose2Sim.augmenter import augmentTRC
|
||||
level, config_dicts = read_config_files(config)
|
||||
|
||||
if type(config) == dict:
|
||||
config_dict = config_dicts[0]
|
||||
if config_dict.get('project').get('project_dir') is None:
|
||||
raise ValueError('Please specify the project directory in config_dict:\n \
|
||||
config_dict.get("project").update({"project_dir":"<YOUR_TRIAL_DIRECTORY>"})')
|
||||
|
||||
session_dir = os.path.realpath(os.path.join(config_dicts[0].get('project').get('project_dir'), '..', '..'))
|
||||
setup_logging(session_dir)
|
||||
|
||||
for config_dict in config_dicts:
|
||||
start = time.time()
|
||||
project_dir = os.path.realpath(config_dict.get('project').get('project_dir'))
|
||||
seq_name = os.path.basename(project_dir)
|
||||
frame_range = config_dict.get('project').get('frame_range')
|
||||
frames = ["all frames" if frame_range == [] else f"frames {frame_range[0]} to {frame_range[1]}"][0]
|
||||
|
||||
logging.info("\n\n---------------------------------------------------------------------")
|
||||
logging.info(f"Augmentation process for {seq_name}, for {frames}.")
|
||||
logging.info("---------------------------------------------------------------------")
|
||||
logging.info(f"\nProject directory: {project_dir}")
|
||||
|
||||
augmentTRC(config_dict)
|
||||
|
||||
end = time.time()
|
||||
logging.info(f'Augmentation took {end - start:.2f} s.')
|
||||
|
||||
|
||||
|
||||
def opensimProcessing(config=None):
|
||||
'''
|
||||
@ -469,4 +500,4 @@ def opensimProcessing(config=None):
|
||||
|
||||
# end = time.time()
|
||||
# logging.info(f'Model scaling took {end-start:.2f} s.')
|
||||
|
||||
|
||||
|
213
Pose2Sim/augmenter.py
Normal file
213
Pose2Sim/augmenter.py
Normal file
@ -0,0 +1,213 @@
|
||||
import os
|
||||
import numpy as np
|
||||
from . import utilsDataman
|
||||
import copy
|
||||
import tensorflow as tf
|
||||
from .utils import TRC2numpy
|
||||
import json
|
||||
import os
|
||||
import glob
|
||||
|
||||
|
||||
# subject_height must be in meters
|
||||
def get_midhip_data(trc_file):
|
||||
try:
|
||||
# Find MidHip data
|
||||
midhip_data = trc_file.marker("CHip")
|
||||
if midhip_data is None or len(midhip_data) == 0:
|
||||
raise ValueError("MidHip data is empty")
|
||||
except (KeyError, ValueError):
|
||||
# If MidHip data is not found, calculate it from RHip and LHip
|
||||
rhip_data = trc_file.marker("RHip")
|
||||
lhip_data = trc_file.marker("LHip")
|
||||
midhip_data = (rhip_data + lhip_data) / 2
|
||||
|
||||
return midhip_data
|
||||
|
||||
|
||||
def augmentTRC(config_dict):
|
||||
|
||||
# get parameters from Config.toml
|
||||
project_dir = config_dict.get('project').get('project_dir')
|
||||
session_dir = os.path.realpath(os.path.join(project_dir, '..', '..'))
|
||||
pathInputTRCFile = os.path.realpath(os.path.join(project_dir, 'pose-3d'))
|
||||
pathOutputTRCFile = os.path.realpath(os.path.join(project_dir, 'pose-3d'))
|
||||
subject_height = config_dict.get('project').get('participant_height')
|
||||
if subject_height is None or subject_height == 0:
|
||||
raise ValueError("Subject height is not set or invalid in the config file.")
|
||||
subject_mass = config_dict.get('project').get('participant_mass')
|
||||
augmenterDir = os.path.join(session_dir, '..', '..', 'MarkerAugmenter')
|
||||
augmenterModelName = 'LSTM'
|
||||
augmenter_model = 'v0.3'
|
||||
offset = True
|
||||
|
||||
# Apply all trc files
|
||||
trc_files = [f for f in glob.glob(os.path.join(pathInputTRCFile, '*.trc')) if '_LSTM' not in f]
|
||||
for pathInputTRCFile in trc_files:
|
||||
pathOutputTRCFile = os.path.splitext(pathInputTRCFile)[0] + "_LSTM.trc"
|
||||
|
||||
# This is by default - might need to be adjusted in the future.
|
||||
featureHeight = True
|
||||
featureWeight = True
|
||||
|
||||
# Augmenter types
|
||||
if augmenter_model == 'v0.0':
|
||||
from .utils import getOpenPoseMarkers_fullBody
|
||||
feature_markers_full, response_markers_full = getOpenPoseMarkers_fullBody()
|
||||
augmenterModelType_all = [augmenter_model]
|
||||
feature_markers_all = [feature_markers_full]
|
||||
response_markers_all = [response_markers_full]
|
||||
elif augmenter_model == 'v0.1' or augmenter_model == 'v0.2':
|
||||
# Lower body
|
||||
augmenterModelType_lower = '{}_lower'.format(augmenter_model)
|
||||
from .utils import getOpenPoseMarkers_lowerExtremity
|
||||
feature_markers_lower, response_markers_lower = getOpenPoseMarkers_lowerExtremity()
|
||||
# Upper body
|
||||
augmenterModelType_upper = '{}_upper'.format(augmenter_model)
|
||||
from .utils import getMarkers_upperExtremity_noPelvis
|
||||
feature_markers_upper, response_markers_upper = getMarkers_upperExtremity_noPelvis()
|
||||
augmenterModelType_all = [augmenterModelType_lower, augmenterModelType_upper]
|
||||
feature_markers_all = [feature_markers_lower, feature_markers_upper]
|
||||
response_markers_all = [response_markers_lower, response_markers_upper]
|
||||
else:
|
||||
# Lower body
|
||||
augmenterModelType_lower = '{}_lower'.format(augmenter_model)
|
||||
from .utils import getOpenPoseMarkers_lowerExtremity2
|
||||
feature_markers_lower, response_markers_lower = getOpenPoseMarkers_lowerExtremity2()
|
||||
# Upper body
|
||||
augmenterModelType_upper = '{}_upper'.format(augmenter_model)
|
||||
from .utils import getMarkers_upperExtremity_noPelvis2
|
||||
feature_markers_upper, response_markers_upper = getMarkers_upperExtremity_noPelvis2()
|
||||
augmenterModelType_all = [augmenterModelType_lower, augmenterModelType_upper]
|
||||
feature_markers_all = [feature_markers_lower, feature_markers_upper]
|
||||
response_markers_all = [response_markers_lower, response_markers_upper]
|
||||
print('Using augmenter model: {}'.format(augmenter_model))
|
||||
|
||||
# %% Process data.
|
||||
# Import TRC file
|
||||
trc_file = utilsDataman.TRCFile(pathInputTRCFile)
|
||||
|
||||
# Loop over augmenter types to handle separate augmenters for lower and
|
||||
# upper bodies.
|
||||
outputs_all = {}
|
||||
n_response_markers_all = 0
|
||||
for idx_augm, augmenterModelType in enumerate(augmenterModelType_all):
|
||||
outputs_all[idx_augm] = {}
|
||||
feature_markers = feature_markers_all[idx_augm]
|
||||
response_markers = response_markers_all[idx_augm]
|
||||
|
||||
augmenterModelDir = os.path.join(augmenterDir, augmenterModelName,
|
||||
augmenterModelType)
|
||||
|
||||
# %% Pre-process inputs.
|
||||
# Step 1: import .trc file with OpenPose marker trajectories.
|
||||
trc_data = TRC2numpy(pathInputTRCFile, feature_markers)
|
||||
|
||||
# # Add these lines to get RHip and LHip data and calculate midHip
|
||||
# rhip_data = trc_file.marker("RHip") # Replace "RHip" with the actual name in your trc file
|
||||
# lhip_data = trc_file.marker("LHip") # Replace "LHip" with the actual name in your trc file
|
||||
|
||||
# Calculate the midHip marker as the average of RHip and LHip
|
||||
midhip_data = get_midhip_data(trc_file)
|
||||
|
||||
trc_data_data = trc_data[:,1:]
|
||||
|
||||
# Step 2: Normalize with reference marker position.
|
||||
with open(os.path.join(augmenterModelDir, "metadata.json"), 'r') as f:
|
||||
metadata = json.load(f)
|
||||
|
||||
# Use midhip_data as the reference marker data
|
||||
referenceMarker_data = midhip_data # instead of trc_file.marker(referenceMarker)
|
||||
|
||||
norm_trc_data_data = np.zeros((trc_data_data.shape[0],
|
||||
trc_data_data.shape[1]))
|
||||
for i in range(0,trc_data_data.shape[1],3):
|
||||
norm_trc_data_data[:,i:i+3] = (trc_data_data[:,i:i+3] -
|
||||
referenceMarker_data)
|
||||
|
||||
|
||||
# Step 3: Normalize with subject's height.
|
||||
norm2_trc_data_data = copy.deepcopy(norm_trc_data_data)
|
||||
norm2_trc_data_data = norm2_trc_data_data / subject_height
|
||||
|
||||
# Step 4: Add remaining features.
|
||||
inputs = copy.deepcopy(norm2_trc_data_data)
|
||||
if featureHeight:
|
||||
inputs = np.concatenate(
|
||||
(inputs, subject_height*np.ones((inputs.shape[0],1))), axis=1)
|
||||
if featureWeight:
|
||||
inputs = np.concatenate(
|
||||
(inputs, subject_mass*np.ones((inputs.shape[0],1))), axis=1)
|
||||
|
||||
# Step 5: Pre-process data
|
||||
pathMean = os.path.join(augmenterModelDir, "mean.npy")
|
||||
pathSTD = os.path.join(augmenterModelDir, "std.npy")
|
||||
if os.path.isfile(pathMean):
|
||||
trainFeatures_mean = np.load(pathMean, allow_pickle=True)
|
||||
inputs -= trainFeatures_mean
|
||||
if os.path.isfile(pathSTD):
|
||||
trainFeatures_std = np.load(pathSTD, allow_pickle=True)
|
||||
inputs /= trainFeatures_std
|
||||
|
||||
# Step 6: Reshape inputs if necessary (eg, LSTM)
|
||||
if augmenterModelName == "LSTM":
|
||||
inputs = np.reshape(inputs, (1, inputs.shape[0], inputs.shape[1]))
|
||||
|
||||
# %% Load model and weights, and predict outputs.
|
||||
json_file = open(os.path.join(augmenterModelDir, "model.json"), 'r')
|
||||
pretrainedModel_json = json_file.read()
|
||||
json_file.close()
|
||||
model = tf.keras.models.model_from_json(pretrainedModel_json)
|
||||
model.load_weights(os.path.join(augmenterModelDir, "weights.h5"))
|
||||
outputs = model.predict(inputs)
|
||||
|
||||
# %% Post-process outputs.
|
||||
# Step 1: Reshape if necessary (eg, LSTM)
|
||||
if augmenterModelName == "LSTM":
|
||||
outputs = np.reshape(outputs, (outputs.shape[1], outputs.shape[2]))
|
||||
|
||||
# Step 2: Un-normalize with subject's height.
|
||||
unnorm_outputs = outputs * subject_height
|
||||
|
||||
# Step 2: Un-normalize with reference marker position.
|
||||
unnorm2_outputs = np.zeros((unnorm_outputs.shape[0],
|
||||
unnorm_outputs.shape[1]))
|
||||
for i in range(0,unnorm_outputs.shape[1],3):
|
||||
unnorm2_outputs[:,i:i+3] = (unnorm_outputs[:,i:i+3] +
|
||||
referenceMarker_data)
|
||||
|
||||
# %% Add markers to .trc file.
|
||||
for c, marker in enumerate(response_markers):
|
||||
x = unnorm2_outputs[:,c*3]
|
||||
y = unnorm2_outputs[:,c*3+1]
|
||||
z = unnorm2_outputs[:,c*3+2]
|
||||
trc_file.add_marker(marker, x, y, z)
|
||||
|
||||
# %% Gather data for computing minimum y-position.
|
||||
outputs_all[idx_augm]['response_markers'] = response_markers
|
||||
outputs_all[idx_augm]['response_data'] = unnorm2_outputs
|
||||
n_response_markers_all += len(response_markers)
|
||||
|
||||
# %% Extract minimum y-position across response markers. This is used
|
||||
# to align feet and floor when visualizing.
|
||||
responses_all_conc = np.zeros((unnorm2_outputs.shape[0],
|
||||
n_response_markers_all*3))
|
||||
idx_acc_res = 0
|
||||
for idx_augm in outputs_all:
|
||||
idx_acc_res_end = (idx_acc_res +
|
||||
(len(outputs_all[idx_augm]['response_markers']))*3)
|
||||
responses_all_conc[:,idx_acc_res:idx_acc_res_end] = (
|
||||
outputs_all[idx_augm]['response_data'])
|
||||
idx_acc_res = idx_acc_res_end
|
||||
# Minimum y-position across response markers.
|
||||
min_y_pos = np.min(responses_all_conc[:,1::3])
|
||||
|
||||
# %% If offset
|
||||
if offset:
|
||||
trc_file.offset('y', -(min_y_pos-0.01))
|
||||
|
||||
# %% Return augmented .trc file
|
||||
trc_file.write(pathOutputTRCFile)
|
||||
|
||||
return min_y_pos
|
||||
|
@ -464,9 +464,17 @@ def filter_all(config):
|
||||
|
||||
# Trc paths
|
||||
trc_f_in = f'{seq_name}_{f_range[0]}-{f_range[1]}.trc'
|
||||
trc_f_in_LSTM = f'{seq_name}_{f_range[0]}-{f_range[1]}_LSTM.trc'
|
||||
trc_f_out = f'{seq_name}_filt_{filter_type}_{f_range[0]}-{f_range[1]}.trc'
|
||||
trc_path_in = os.path.join(pose3d_dir, trc_f_in)
|
||||
trc_path_out = os.path.join(pose3d_dir, trc_f_out)
|
||||
trc_f_out_LSTM = f'{seq_name}_filt_{filter_type}_{f_range[0]}-{f_range[1]}_LSTM.trc'
|
||||
if os.path.exists(os.path.join(pose3d_dir, trc_f_in_LSTM)):
|
||||
trc_path_in = os.path.join(pose3d_dir, trc_f_in_LSTM)
|
||||
trc_path_out = os.path.join(pose3d_dir, trc_f_out_LSTM)
|
||||
elif os.path.exists(os.path.join(pose3d_dir, trc_f_in)):
|
||||
trc_path_in = os.path.join(pose3d_dir, trc_f_in)
|
||||
trc_path_out = os.path.join(pose3d_dir, trc_f_out)
|
||||
else:
|
||||
raise FileNotFoundError("Not found .trc file.")
|
||||
|
||||
# Read trc header
|
||||
with open(trc_path_in, 'r') as trc_file:
|
||||
|
@ -116,7 +116,6 @@ BODY_25 = Node("CHip", id=8, children=[
|
||||
]),
|
||||
])
|
||||
|
||||
|
||||
'''BODY_135 (full-body with hands and face, experimental, from OpenPose)
|
||||
https://github.com/CMU-Perceptual-Computing-Lab/openpose_train/blob/master/experimental_models/README.md)'''
|
||||
BODY_135 = Node("CHip", id=None, children=[
|
||||
|
190
Pose2Sim/utils.py
Normal file
190
Pose2Sim/utils.py
Normal file
@ -0,0 +1,190 @@
|
||||
from . import utilsDataman
|
||||
import numpy as np
|
||||
|
||||
def TRC2numpy(pathFile, markers,rotation=None):
|
||||
# rotation is a dict, eg. {'y':90} with axis, angle for rotation
|
||||
|
||||
trc_file = utilsDataman.TRCFile(pathFile)
|
||||
time = trc_file.time
|
||||
num_frames = time.shape[0]
|
||||
data = np.zeros((num_frames, len(markers)*3))
|
||||
|
||||
if rotation != None:
|
||||
for axis,angle in rotation.items():
|
||||
trc_file.rotate(axis,angle)
|
||||
for count, marker in enumerate(markers):
|
||||
data[:,3*count:3*count+3] = trc_file.marker(marker)
|
||||
this_dat = np.empty((num_frames, 1))
|
||||
this_dat[:, 0] = time
|
||||
data_out = np.concatenate((this_dat, data), axis=1)
|
||||
|
||||
return data_out
|
||||
|
||||
def numpy2TRC(f, data, headers, fc=50.0, t_start=0.0, units="m"):
|
||||
|
||||
header_mapping = {}
|
||||
for count, header in enumerate(headers):
|
||||
header_mapping[count+1] = header
|
||||
|
||||
# Line 1.
|
||||
f.write('PathFileType 4\t(X/Y/Z) %s\n' % os.getcwd())
|
||||
|
||||
# Line 2.
|
||||
f.write('DataRate\tCameraRate\tNumFrames\tNumMarkers\t'
|
||||
'Units\tOrigDataRate\tOrigDataStartFrame\tOrigNumFrames\n')
|
||||
|
||||
num_frames=data.shape[0]
|
||||
num_markers=len(header_mapping.keys())
|
||||
|
||||
# Line 3.
|
||||
f.write('%.1f\t%.1f\t%i\t%i\t%s\t%.1f\t%i\t%i\n' % (
|
||||
fc, fc, num_frames,
|
||||
num_markers, units, fc,
|
||||
1, num_frames))
|
||||
|
||||
# Line 4.
|
||||
f.write("Frame#\tTime\t")
|
||||
for key in sorted(header_mapping.keys()):
|
||||
f.write("%s\t\t\t" % format(header_mapping[key]))
|
||||
|
||||
# Line 5.
|
||||
f.write("\n\t\t")
|
||||
for imark in np.arange(num_markers) + 1:
|
||||
f.write('X%i\tY%s\tZ%s\t' % (imark, imark, imark))
|
||||
f.write('\n')
|
||||
|
||||
# Line 6.
|
||||
f.write('\n')
|
||||
|
||||
for frame in range(data.shape[0]):
|
||||
f.write("{}\t{:.8f}\t".format(frame+1,(frame)/fc+t_start)) # opensim frame labeling is 1 indexed
|
||||
|
||||
for key in sorted(header_mapping.keys()):
|
||||
f.write("{:.5f}\t{:.5f}\t{:.5f}\t".format(data[frame,0+(key-1)*3], data[frame,1+(key-1)*3], data[frame,2+(key-1)*3]))
|
||||
f.write("\n")
|
||||
|
||||
def getOpenPoseMarkerNames():
|
||||
|
||||
markerNames = ["Nose", "Neck", "RShoulder", "RElbow", "RWrist",
|
||||
"LShoulder", "LElbow", "LWrist", "midHip", "RHip",
|
||||
"RKnee", "RAnkle", "LHip", "LKnee", "LAnkle", "REye",
|
||||
"LEye", "REar", "LEar", "LBigToe", "LSmallToe",
|
||||
"LHeel", "RBigToe", "RSmallToe", "RHeel"]
|
||||
|
||||
return markerNames
|
||||
|
||||
def getOpenPoseFaceMarkers():
|
||||
|
||||
faceMarkerNames = ['Nose', 'REye', 'LEye', 'REar', 'LEar']
|
||||
markerNames = getOpenPoseMarkerNames()
|
||||
idxFaceMarkers = [markerNames.index(i) for i in faceMarkerNames]
|
||||
|
||||
return faceMarkerNames, idxFaceMarkers
|
||||
|
||||
def getOpenPoseMarkers_fullBody():
|
||||
|
||||
feature_markers = [
|
||||
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
|
||||
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
|
||||
"RBigToe", "LBigToe", "RElbow", "LElbow", "RWrist", "LWrist"]
|
||||
|
||||
response_markers = ["C7_study", "r_shoulder_study", "L_shoulder_study",
|
||||
"r.ASIS_study", "L.ASIS_study", "r.PSIS_study",
|
||||
"L.PSIS_study", "r_knee_study", "L_knee_study",
|
||||
"r_mknee_study", "L_mknee_study", "r_ankle_study",
|
||||
"L_ankle_study", "r_mankle_study", "L_mankle_study",
|
||||
"r_calc_study", "L_calc_study", "r_toe_study",
|
||||
"L_toe_study", "r_5meta_study", "L_5meta_study",
|
||||
"r_lelbow_study", "L_lelbow_study", "r_melbow_study",
|
||||
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
|
||||
"r_mwrist_study", "L_mwrist_study",
|
||||
"r_thigh1_study", "r_thigh2_study", "r_thigh3_study",
|
||||
"L_thigh1_study", "L_thigh2_study", "L_thigh3_study",
|
||||
"r_sh1_study", "r_sh2_study", "r_sh3_study",
|
||||
"L_sh1_study", "L_sh2_study", "L_sh3_study",
|
||||
"RHJC_study", "LHJC_study"]
|
||||
|
||||
return feature_markers, response_markers
|
||||
|
||||
def getOpenPoseMarkers_lowerExtremity():
|
||||
|
||||
feature_markers = [
|
||||
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
|
||||
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
|
||||
"RBigToe", "LBigToe"]
|
||||
|
||||
response_markers = ["C7_study", "r_shoulder_study", "L_shoulder_study",
|
||||
"r.ASIS_study", "L.ASIS_study", "r.PSIS_study",
|
||||
"L.PSIS_study", "r_knee_study", "L_knee_study",
|
||||
"r_mknee_study", "L_mknee_study", "r_ankle_study",
|
||||
"L_ankle_study", "r_mankle_study", "L_mankle_study",
|
||||
"r_calc_study", "L_calc_study", "r_toe_study",
|
||||
"L_toe_study", "r_5meta_study", "L_5meta_study",
|
||||
"r_thigh1_study", "r_thigh2_study", "r_thigh3_study",
|
||||
"L_thigh1_study", "L_thigh2_study", "L_thigh3_study",
|
||||
"r_sh1_study", "r_sh2_study", "r_sh3_study",
|
||||
"L_sh1_study", "L_sh2_study", "L_sh3_study",
|
||||
"RHJC_study", "LHJC_study"]
|
||||
|
||||
return feature_markers, response_markers
|
||||
|
||||
# Different order of markers compared to getOpenPoseMarkers_lowerExtremity
|
||||
def getOpenPoseMarkers_lowerExtremity2():
|
||||
|
||||
feature_markers = [
|
||||
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
|
||||
"RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
|
||||
"RBigToe", "LBigToe"]
|
||||
|
||||
response_markers = [
|
||||
'r.ASIS_study', 'L.ASIS_study', 'r.PSIS_study',
|
||||
'L.PSIS_study', 'r_knee_study', 'r_mknee_study',
|
||||
'r_ankle_study', 'r_mankle_study', 'r_toe_study',
|
||||
'r_5meta_study', 'r_calc_study', 'L_knee_study',
|
||||
'L_mknee_study', 'L_ankle_study', 'L_mankle_study',
|
||||
'L_toe_study', 'L_calc_study', 'L_5meta_study',
|
||||
'r_shoulder_study', 'L_shoulder_study', 'C7_study',
|
||||
'r_thigh1_study', 'r_thigh2_study', 'r_thigh3_study',
|
||||
'L_thigh1_study', 'L_thigh2_study', 'L_thigh3_study',
|
||||
'r_sh1_study', 'r_sh2_study', 'r_sh3_study', 'L_sh1_study',
|
||||
'L_sh2_study', 'L_sh3_study', 'RHJC_study', 'LHJC_study']
|
||||
|
||||
return feature_markers, response_markers
|
||||
|
||||
|
||||
def getMarkers_upperExtremity_pelvis():
|
||||
|
||||
feature_markers = [
|
||||
"Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RElbow", "LElbow",
|
||||
"RWrist", "LWrist"]
|
||||
|
||||
response_markers = ["r_lelbow_study", "L_lelbow_study", "r_melbow_study",
|
||||
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
|
||||
"r_mwrist_study", "L_mwrist_study"]
|
||||
|
||||
return feature_markers, response_markers
|
||||
|
||||
def getMarkers_upperExtremity_noPelvis():
|
||||
|
||||
feature_markers = [
|
||||
"Neck", "RShoulder", "LShoulder", "RElbow", "LElbow", "RWrist",
|
||||
"LWrist"]
|
||||
|
||||
response_markers = ["r_lelbow_study", "L_lelbow_study", "r_melbow_study",
|
||||
"L_melbow_study", "r_lwrist_study", "L_lwrist_study",
|
||||
"r_mwrist_study", "L_mwrist_study"]
|
||||
|
||||
return feature_markers, response_markers
|
||||
|
||||
# Different order of markers compared to getMarkers_upperExtremity_noPelvis.
|
||||
def getMarkers_upperExtremity_noPelvis2():
|
||||
|
||||
feature_markers = [
|
||||
"Neck", "RShoulder", "LShoulder", "RElbow", "LElbow", "RWrist",
|
||||
"LWrist"]
|
||||
|
||||
response_markers = ["r_lelbow_study", "r_melbow_study", "r_lwrist_study",
|
||||
"r_mwrist_study", "L_lelbow_study", "L_melbow_study",
|
||||
"L_lwrist_study", "L_mwrist_study"]
|
||||
|
||||
return feature_markers, response_markers
|
282
Pose2Sim/utilsDataman.py
Normal file
282
Pose2Sim/utilsDataman.py
Normal file
@ -0,0 +1,282 @@
|
||||
"""Manages the movement and use of data files."""
|
||||
|
||||
import os
|
||||
import warnings
|
||||
from scipy.spatial.transform import Rotation as R
|
||||
|
||||
import numpy as np
|
||||
from numpy.lib.recfunctions import append_fields
|
||||
|
||||
class TRCFile(object):
|
||||
"""A plain-text file format for storing motion capture marker trajectories.
|
||||
TRC stands for Track Row Column.
|
||||
|
||||
The metadata for the file is stored in attributes of this object.
|
||||
|
||||
See
|
||||
http://simtk-confluence.stanford.edu:8080/display/OpenSim/Marker+(.trc)+Files
|
||||
for more information.
|
||||
|
||||
"""
|
||||
def __init__(self, fpath=None, **kwargs):
|
||||
#path=None,
|
||||
#data_rate=None,
|
||||
#camera_rate=None,
|
||||
#num_frames=None,
|
||||
#num_markers=None,
|
||||
#units=None,
|
||||
#orig_data_rate=None,
|
||||
#orig_data_start_frame=None,
|
||||
#orig_num_frames=None,
|
||||
#marker_names=None,
|
||||
#time=None,
|
||||
#):
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
fpath : str
|
||||
Valid file path to a TRC (.trc) file.
|
||||
|
||||
"""
|
||||
self.marker_names = []
|
||||
if fpath != None:
|
||||
self.read_from_file(fpath)
|
||||
else:
|
||||
for k, v in kwargs.items():
|
||||
setattr(self, k, v)
|
||||
|
||||
def read_from_file(self, fpath):
|
||||
# Read the header lines / metadata.
|
||||
# ---------------------------------
|
||||
# Split by any whitespace.
|
||||
# TODO may cause issues with paths that have spaces in them.
|
||||
f = open(fpath)
|
||||
# These are lists of each entry on the first few lines.
|
||||
first_line = f.readline().split()
|
||||
# Skip the 2nd line.
|
||||
f.readline()
|
||||
third_line = f.readline().split()
|
||||
fourth_line = f.readline().split()
|
||||
f.close()
|
||||
|
||||
# First line.
|
||||
if len(first_line) > 3:
|
||||
self.path = first_line[3]
|
||||
else:
|
||||
self.path = ''
|
||||
|
||||
# Third line.
|
||||
self.data_rate = float(third_line[0])
|
||||
self.camera_rate = float(third_line[1])
|
||||
self.num_frames = int(third_line[2])
|
||||
self.num_markers = int(third_line[3])
|
||||
self.units = third_line[4]
|
||||
self.orig_data_rate = float(third_line[5])
|
||||
self.orig_data_start_frame = int(third_line[6])
|
||||
self.orig_num_frames = int(third_line[7])
|
||||
|
||||
# Marker names.
|
||||
# The first and second column names are 'Frame#' and 'Time'.
|
||||
self.marker_names = fourth_line[2:]
|
||||
|
||||
len_marker_names = len(self.marker_names)
|
||||
if len_marker_names != self.num_markers:
|
||||
warnings.warn('Header entry NumMarkers, %i, does not '
|
||||
'match actual number of markers, %i. Changing '
|
||||
'NumMarkers to match actual number.' % (
|
||||
self.num_markers, len_marker_names))
|
||||
self.num_markers = len_marker_names
|
||||
|
||||
# Load the actual data.
|
||||
# ---------------------
|
||||
col_names = ['frame_num', 'time']
|
||||
# This naming convention comes from OpenSim's Inverse Kinematics tool,
|
||||
# when it writes model marker locations.
|
||||
for mark in self.marker_names:
|
||||
col_names += [mark + '_tx', mark + '_ty', mark + '_tz']
|
||||
dtype = {'names': col_names,
|
||||
'formats': ['int'] + ['float64'] * (3 * self.num_markers + 1)}
|
||||
usecols = [i for i in range(3 * self.num_markers + 1 + 1)]
|
||||
self.data = np.loadtxt(fpath, delimiter='\t', skiprows=5, dtype=dtype,
|
||||
usecols=usecols)
|
||||
self.time = self.data['time']
|
||||
|
||||
# Check the number of rows.
|
||||
n_rows = self.time.shape[0]
|
||||
if n_rows != self.num_frames:
|
||||
warnings.warn('%s: Header entry NumFrames, %i, does not '
|
||||
'match actual number of frames, %i, Changing '
|
||||
'NumFrames to match actual number.' % (fpath,
|
||||
self.num_frames, n_rows))
|
||||
self.num_frames = n_rows
|
||||
|
||||
def __getitem__(self, key):
|
||||
"""See `marker()`.
|
||||
|
||||
"""
|
||||
return self.marker(key)
|
||||
|
||||
def units(self):
|
||||
return self.units
|
||||
|
||||
def time(self):
|
||||
this_dat = np.empty((self.num_frames, 1))
|
||||
this_dat[:, 0] = self.time
|
||||
return this_dat
|
||||
|
||||
def marker(self, name):
|
||||
"""The trajectory of marker `name`, given as a `self.num_frames` x 3
|
||||
array. The order of the columns is x, y, z.
|
||||
|
||||
"""
|
||||
this_dat = np.empty((self.num_frames, 3))
|
||||
this_dat[:, 0] = self.data[name + '_tx']
|
||||
this_dat[:, 1] = self.data[name + '_ty']
|
||||
this_dat[:, 2] = self.data[name + '_tz']
|
||||
return this_dat
|
||||
|
||||
def add_marker(self, name, x, y, z):
|
||||
"""Add a marker, with name `name` to the TRCFile.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Name of the marker; e.g., 'R.Hip'.
|
||||
x, y, z: array_like
|
||||
Coordinates of the marker trajectory. All 3 must have the same
|
||||
length.
|
||||
|
||||
"""
|
||||
if (len(x) != self.num_frames or len(y) != self.num_frames or len(z) !=
|
||||
self.num_frames):
|
||||
raise Exception('Length of data (%i, %i, %i) is not '
|
||||
'NumFrames (%i).', len(x), len(y), len(z), self.num_frames)
|
||||
self.marker_names += [name]
|
||||
self.num_markers += 1
|
||||
if not hasattr(self, 'data'):
|
||||
self.data = np.array(x, dtype=[('%s_tx' % name, 'float64')])
|
||||
self.data = append_fields(self.data,
|
||||
['%s_t%s' % (name, s) for s in 'yz'],
|
||||
[y, z], usemask=False)
|
||||
else:
|
||||
self.data = append_fields(self.data,
|
||||
['%s_t%s' % (name, s) for s in 'xyz'],
|
||||
[x, y, z], usemask=False)
|
||||
|
||||
def marker_at(self, name, time):
|
||||
x = np.interp(time, self.time, self.data[name + '_tx'])
|
||||
y = np.interp(time, self.time, self.data[name + '_ty'])
|
||||
z = np.interp(time, self.time, self.data[name + '_tz'])
|
||||
return [x, y, z]
|
||||
|
||||
def marker_exists(self, name):
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
exists : bool
|
||||
Is the marker in the TRCFile?
|
||||
|
||||
"""
|
||||
return name in self.marker_names
|
||||
|
||||
def write(self, fpath):
|
||||
"""Write this TRCFile object to a TRC file.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
fpath : str
|
||||
Valid file path to which this TRCFile is saved.
|
||||
|
||||
"""
|
||||
f = open(fpath, 'w')
|
||||
|
||||
# Line 1.
|
||||
f.write('PathFileType 4\t(X/Y/Z) %s\n' % os.path.split(fpath)[0])
|
||||
|
||||
# Line 2.
|
||||
f.write('DataRate\tCameraRate\tNumFrames\tNumMarkers\t'
|
||||
'Units\tOrigDataRate\tOrigDataStartFrame\tOrigNumFrames\n')
|
||||
|
||||
# Line 3.
|
||||
f.write('%.1f\t%.1f\t%i\t%i\t%s\t%.1f\t%i\t%i\n' % (
|
||||
self.data_rate, self.camera_rate, self.num_frames,
|
||||
self.num_markers, self.units, self.orig_data_rate,
|
||||
self.orig_data_start_frame, self.orig_num_frames))
|
||||
|
||||
# Line 4.
|
||||
f.write('Frame#\tTime\t')
|
||||
for imark in range(self.num_markers):
|
||||
f.write('%s\t\t\t' % self.marker_names[imark])
|
||||
f.write('\n')
|
||||
|
||||
# Line 5.
|
||||
f.write('\t\t')
|
||||
for imark in np.arange(self.num_markers) + 1:
|
||||
f.write('X%i\tY%s\tZ%s\t' % (imark, imark, imark))
|
||||
f.write('\n')
|
||||
|
||||
# Line 6.
|
||||
f.write('\n')
|
||||
|
||||
# Data.
|
||||
for iframe in range(self.num_frames):
|
||||
f.write('%i' % (iframe + 1))
|
||||
f.write('\t%.7f' % self.time[iframe])
|
||||
for mark in self.marker_names:
|
||||
idxs = [mark + '_tx', mark + '_ty', mark + '_tz']
|
||||
f.write('\t%.7f\t%.7f\t%.7f' % tuple(
|
||||
self.data[coln][iframe] for coln in idxs))
|
||||
f.write('\n')
|
||||
|
||||
f.close()
|
||||
|
||||
def add_noise(self, noise_width):
|
||||
""" add random noise to each component of the marker trajectory
|
||||
The noise mean will be zero, with the noise_width being the
|
||||
standard deviation.
|
||||
|
||||
noise_width : int
|
||||
"""
|
||||
for imarker in range(self.num_markers):
|
||||
components = ['_tx', '_ty', '_tz']
|
||||
for iComponent in range(3):
|
||||
# generate noise
|
||||
noise = np.random.normal(0, noise_width, self.num_frames)
|
||||
# add noise to each component of marker data.
|
||||
self.data[self.marker_names[imarker] + components[iComponent]] += noise
|
||||
|
||||
def rotate(self, axis, value):
|
||||
""" rotate the data.
|
||||
|
||||
axis : rotation axis
|
||||
value : angle in degree
|
||||
"""
|
||||
for imarker in range(self.num_markers):
|
||||
|
||||
temp = np.zeros((self.num_frames, 3))
|
||||
temp[:,0] = self.data[self.marker_names[imarker] + '_tx']
|
||||
temp[:,1] = self.data[self.marker_names[imarker] + '_ty']
|
||||
temp[:,2] = self.data[self.marker_names[imarker] + '_tz']
|
||||
|
||||
r = R.from_euler(axis, value, degrees=True)
|
||||
temp_rot = r.apply(temp)
|
||||
|
||||
self.data[self.marker_names[imarker] + '_tx'] = temp_rot[:,0]
|
||||
self.data[self.marker_names[imarker] + '_ty'] = temp_rot[:,1]
|
||||
self.data[self.marker_names[imarker] + '_tz'] = temp_rot[:,2]
|
||||
|
||||
def offset(self, axis, value):
|
||||
""" offset the data.
|
||||
|
||||
axis : rotation axis
|
||||
value : offset in m
|
||||
"""
|
||||
for imarker in range(self.num_markers):
|
||||
if axis.lower() == 'x':
|
||||
self.data[self.marker_names[imarker] + '_tx'] += value
|
||||
elif axis.lower() == 'y':
|
||||
self.data[self.marker_names[imarker] + '_ty'] += value
|
||||
elif axis.lower() == 'z':
|
||||
self.data[self.marker_names[imarker] + '_tz'] += value
|
||||
else:
|
||||
raise ValueError("Axis not recognized")
|
16
README.md
16
README.md
@ -415,6 +415,22 @@ Output:\
|
||||
|
||||
</br>
|
||||
|
||||
### Marker Augmentation (Test)
|
||||
Set parameters(height, mass) in [project] of Config.toml
|
||||
|
||||
Open a terminal, enter `pip show pose2sim`, report package location. \
|
||||
Copy this path and go to the Demo folder with `cd <path>\pose2sim\Demo\S00_Demo_Session`. \
|
||||
Type `ipython`, If you want to triangulate and marker augment without filtering, test the following code:
|
||||
``` python
|
||||
from Pose2Sim import Pose2Sim
|
||||
Pose2Sim.augmenter()
|
||||
```
|
||||
Recommand you augment markers after filtering.\
|
||||
The .trc file should be located in pose-3d folder.\
|
||||
If you enter inexact height, model'll be unstable.\
|
||||
If there is a Nan value in the .trc file, it will not work properly.\
|
||||
Should input Marker_add.xml in OpenSim when you scale your model.
|
||||
|
||||
## OpenSim kinematics
|
||||
> _**Obtain 3D joint angles.**_\
|
||||
> Your OpenSim .osim scaled model and .mot inverse kinematic results will be found in the OpenSim folder of your `Participant` directory.
|
||||
|
Loading…
Reference in New Issue
Block a user