JMP XML Reference
<NMSMPipelineDocument Version="1.5.0">
<JointModelPersonalizationTool>
<!--Name of the directory where results are written. Be default this is the directory in which the setup file is be executed.-->
<results_directory>JMPResults</results_directory>
<!--Directory for input files.-->
<input_directory>JMPInputsDir</input_directory>
<!--Name of file containing input model, if using the application this has no effect as current model is used.-->
<input_model_file>model.osim</input_model_file>
<!--Name of file containing output model after tool executaion.-->
<output_model_file>model_jmp.osim</output_model_file>
<!--The accuracy to compare against, depends on model/data units (0.01 == 1cm for data in units meters).-->
<allowable_error>0.005</allowable_error>
<!--List of tasks to be completed by the tool, each Task is a separate optimization.-->
<JMPTaskList>
<JMPTask>
<!--Indicate whether the task is enabled or not.-->
<is_enabled>true</is_enabled>
<!--Integer to indicate the order that this task should be completed-->
<index>1</index>
<!--Name of marker file with required data for this JMP task.-->
<marker_file_name>marker_file.trc</marker_file_name>
<!--Space separated list of marker names to be included in this task-->
<marker_names>marker_1 marker_2 marker_3</marker_names>
<!--Time range from marker file to be used to optimize joint personalization.-->
<time_range>0 1</time_range>
<!--Joints that will be optimized in this task.-->
<JMPJointSet>
<!--A joint that will be personalized in this task. Add a joint by changing the name of the <JMPJoint> element-->
<JMPJoint name="JointName">
<!--Joint Parent Frame.-->
<parent_frame_transformation>
<!--Three boolean values (separated by spaces) for if the joint translation parameter is to be optimized.-->
<translation>true true false</translation>
<!--Three boolean values (separated by spaces) for if the joint orientation parameter is to be optimized.-->
<orientation>true true false</orientation>
<!--Translation bounds set the upper and lower limits of the search range around the initial value.-->
<translation_bounds>0.05</translation_bounds>
<!--Orientation bounds set the upper and lower limits of the search range around the initial value.-->
<orientation_bounds>0.5</orientation_bounds>
</parent_frame_transformation>
<!--Joint Child Frame.-->
<child_frame_transformation>
<!--Three boolean values (separated by spaces) for if the joint translation parameter is to be optimized.-->
<translation>false false false</translation>
<!--Three boolean values (separated by spaces) for if the joint orientation parameter is to be optimized.-->
<orientation>false false false</orientation>
<!--Translation bounds set the upper and lower limits of the search range around the initial value.-->
<translation_bounds>0.05</translation_bounds>
<!--Orientation bounds set the upper and lower limits of the search range around the initial value.-->
<orientation_bounds>0.5</orientation_bounds>
</child_frame_transformation>
</JMPJoint>
</JMPJointSet>
<JMPBodySet>
<JMPBody name="BodyName">
<!--Boolean value for whether the body, with task name, is to be scaled.-->
<scale_body>true</scale_body>
<!--Three boolean values (separated by spaces) for which axes the markers should be free to move in (x, y, z) order.-->
<move_markers>false true true</move_markers>
</JMPBody>
</JMPBodySet>
</JMPTask>
</JMPTaskList>
<!--*Optional* The accuracy of the IKSolver solution in absolute terms. Default is 1e-5. It determines the number of significant digits to which the solution can be trusted.-->
<accuracy>1e-06</accuracy>
<!--*Optional* The minimum step of the least squares algorithm. Default is 1e-4 which means the solution will be optimized to 0.1 mm resolution-->
<diff_min_change>1e-04</diff_min_change>
<!--*Optional* The step tolerance determines when the lsqnonlin algorithm stops. The larger it is, the earlier the algorithm stops, but with lower accuracy-->
<step_tolerance>1e-06</step_tolerance>
<!--*Optional* The optimality tolerance determines when the lsqnonlin algorithm stops. The larger it is, the earlier the algorithm stops, but with lower accuracy-->
<optimality_tolerance>1e-6</optimality_tolerance>
<!--*Optional* The function tolerance determines when the lsqnonlin algorithm stops. The larger it is, the earlier the algorithm stops, but with lower accuracy-->
<function_tolerance>1e-6</function_tolerance>
<!--*Optional* The number of allowed iterations for the lsqnonlin, setting this lower can help cancel an optimization that won't converge-->
<max_function_evaluations>5000</max_function_evaluations>
</JointModelPersonalizationTool>
</NMSMPipelineDocument>