STOMP Yaml file

- A basic configuration file is as follows:
- stomp_config_example.yaml Each "stomp/group_name" section is specific to that planning group. The group name must be a valid planning group in the SRDF file
stomp/manipulator: group_name: manipulator optimization: num_timesteps: 20 num_iterations: 50 num_iterations_after_valid: 0 num_rollouts: 10 max_rollouts: 100 initialization_method: 1 #[1 : LINEAR_INTERPOLATION, 2 : CUBIC_POLYNOMIAL, 3 : MININUM_CONTROL_COST control_cost_weight: 0.0 task: noise_generator: - class: stomp_moveit/NormalDistributionSampling stddev: [0.3, 1.0, 0.5, 0.4, 0.3, 0.3] cost_functions: - class: stomp_moveit/CollisionCheck collision_penalty: 1.0 cost_weight: 1.0 kernel_window_percentage: 0.4 noisy_filters: - class: stomp_moveit/JointLimits lock_start: True lock_goal: True update_filters: - class: stomp_moveit/ControlCostProjectionMatrix stomp/manipulator_rail: group_name: manipulator_rail optimization: num_timesteps: 40 num_iterations: 40 num_iterations_after_valid: 0 num_rollouts: 10 max_rollouts: 10 initialization_method: 3 #[1 : LINEAR_INTERPOLATION, 2 : CUBIC_POLYNOMIAL, 3 : MININUM_CONTROL_COST control_cost_weight: 0.0 task: noise_generator: - class: stomp_moveit/NormalDistributionSampling stddev: [0.05, 0.4, 1.2, 0.4, 0.4, 0.1, 0.1] cost_functions: - class: stomp_moveit/CollisionCheck collision_penalty: 1.0 cost_weight: 1.0 kernel_window_percentage: 0.2 longest_valid_joint_move: 0.05 noisy_filters: - class: stomp_moveit/JointLimits lock_start: True lock_goal: True - class: stomp_moveit/MultiTrajectoryVisualization line_width: 0.02 rgb: [255, 255, 0] marker_array_topic: stomp_trajectories marker_namespace: noisy update_filters: - class: stomp_moveit/ControlCostProjectionMatrix - class: stomp_moveit/UpdateLogger package: stomp_moveit directory: log filename: smoothed_update.txt

- stomp_config_example.yaml

All the parameters under the **optimization** field affect the behavior of the optimization process. These parameters are as follows:

- num_timesteps: The number of timesteps in the trajectory.
- num_iterations: How many times to iterate in order to find a valid trajectory. If the allowed number of iterations is reached before a solution is found then the trajectory is invalid.
- num_iterations_after_valid: How many times to iterate after success in order to further improve the trajectory.
- num_rollouts: Number of new noisy trajectories to generate at each iteration.
- max_rollouts: How many rollouts STOMP will store from previous iterations. When the maximum is reached, old rollouts with higher costs will be discarded in place of rollouts with less cost.
- initialization_method: An integer value indicated the method for creating the initial trajectory.
- Linear Interpolation (1): An interpolation from start to end.
- Cubic Polynomial(2): Uses a cubic spline.
- Minimum Control Cost(3): Builds a covariance matrix and uses it to generate an initial trajectory with low accelerations.

- control_cost_weight: Weighting factor applied to the acceleration costs, using zero is recommended.

At each iteration, STOMP invokes a StompTaks object. The taks object holds all of the active plugins and invokes them at specific stages of the optimization process. Thus each of the plugins is listed under a plugin specifier entry below the "task" field. Each plugin entry should at least have a "class" field which is used by pluginlib to identify and load the plugin. There are four types of plugins that can be loaded into the StompTask and these are:

- noise_generator: Adds random noise onto the trajectory in order to explore the workspace. Only one can be loaded
- cost_functions: Evaluate the state costs of each noisy trajectory.
- noisy_filters: Apply various filtering methods to the noisy trajectories.
- update_filters: Apply various filtering methods to the update values that will be used in improving the current trajectory.