I've been thinking about how to create a wizard for this, so that people don't have to create/update lots of YAML files manually (which is also error-prone). In the mean-time, this ticket serves as somewhat of a brief HOW-TO to manually create the files.
Load and parse the URDF (from parameter server?)
User selects the "base_link" which is the frame into which all points will be projected during calibration step.
User defines the "chains" by:
Entering a name for each
Selecting set of active joints that constitute the chain
Selecting the follow_joint_trajectory action namespace (introspect options from running system?)
Selecting the planning_group to use with MoveIt (if any)
User defines the models by adding a model of a given type and then configuring the following:
For "chain" - select end effector frame.
For "camera3d" - select camera frame, select topic (introspect options from running system?)
User defines the finders by adding a finder of a given type and then configuring the following:
PlaneFinder
Select "camera_sensor_name" from available "models"
Select "topic" to subscribe to
Select "transform_frame" (defaults to base_link selected above)
Set min/max x/y/z
Set "points_max"
Select true/false for "debug"
CheckerboardFinder
Select "camera_sensor_name" from available "models"
Select "chain_sensor_name" from available "models"
Select "topic" to subscribe to
Set points_x, points_y, size
Select true/false for "debug"
LedFinder - probably not worth adding to wizard (just preserve if it exists)
User defines error_blocks by selecting/adding by type first:
chain3d_to_chain3d - Select model_a, model_b from models.
chain3d_to_plane - Select model_a from models. Set a, b, c, d and scale.
plane_to_plane - Select model_a, model_b from models. Set scale_normal, scale_offset.
outrageous - Select param from list of possible free params. Set joint_scale, position_scale, rotation_scale.
User selects free params through a series of checkboxes
Available names are each joint name, fx/fy/cx/cy/z_offset/z_scaling for each camera)
User selects free frames through a series of checkboxes
For each free frame, select x/y/z/r/p/y. Also do check that 0, 1, or 3 of r/p/y are set (setting two to true doesn't do what you think -- these are axis-magnitude internally).
Finally have user manually move arm while both capturing data for the first calibration and creating the bag file for export.
As with the MoveIt wizard, we would want to be able to reload the YAML files exported and edit them.
I've been thinking about how to create a wizard for this, so that people don't have to create/update lots of YAML files manually (which is also error-prone). In the mean-time, this ticket serves as somewhat of a brief HOW-TO to manually create the files.
As with the MoveIt wizard, we would want to be able to reload the YAML files exported and edit them.