Column Mapping
Column mapping connects your CSV data to the robot model. Tell Master Annotator which columns contain joint angles, end-effector positions, and which columns to display as graphs.
Overview
After selecting a robot type (generic arm or URDF model), you need to map your CSV columns to the robot's parameters. The mapping tells the system:
- Which columns drive each joint in the 3D viewer
- Which columns represent the end-effector position (optional)
- Which columns to display as line charts in the labeling interface
Joint Angle Mapping
For each joint in your robot, select the CSV column that contains its angle value.
- Required — You must map one column per joint (e.g., 6 columns for a 6-DOF arm)
- Order matters — Map columns from base joint to end-effector joint, matching the physical kinematic chain
- Units — Values must be in radians
- Type — Columns should contain numeric (floating-point) values
The column selector shows all available columns from your uploaded CSV files. You can select any column regardless of its name — the system uses the mapping, not column naming conventions.
End-Effector Mapping
Optionally map three columns for the end-effector (tool tip) position:
- X column — Horizontal position
- Y column — Depth position
- Z column — Vertical position
End-effector mapping is optional. When provided, the 3D viewer can display the end-effector trajectory path and verify that forward kinematics output matches your recorded positions.
Graph Columns
Select which columns to display as line charts in the labeling interface. These charts appear below the 3D viewer and show how values change across frames.
- You can select any number of columns for graph display
- Joint angle columns are commonly included by default
- Additional useful columns: gripper state, forces, velocities, timestamps
- Each selected column gets its own line in the chart
- The current frame position is highlighted on all graphs with a vertical marker
Graph columns are independent of the joint angle mapping — you can graph any column, even ones not used for 3D rendering.
Example Mapping
For a 6-DOF robot with a CSV containing these columns:
timestamp,shoulder_pan,shoulder_lift,elbow,wrist_1,wrist_2,wrist_3,ee_x,ee_y,ee_z,gripper_pos,force_zA typical mapping configuration would be:
| Mapping Type | Joint/Axis | CSV Column |
|---|---|---|
| Joint 1 | Base rotation | shoulder_pan |
| Joint 2 | Shoulder | shoulder_lift |
| Joint 3 | Elbow | elbow |
| Joint 4 | Wrist 1 | wrist_1 |
| Joint 5 | Wrist 2 | wrist_2 |
| Joint 6 | Wrist 3 | wrist_3 |
| End-Effector X | Horizontal | ee_x |
| End-Effector Y | Depth | ee_y |
| End-Effector Z | Vertical | ee_z |
| Graph Column | — | gripper_pos |
| Graph Column | — | force_z |
The timestamp column is not mapped but is preserved in the dataset. The gripper_pos and force_z columns are not used for 3D rendering but are displayed as interactive graphs in the labeling interface, helping annotators identify grasp events and contact forces.
Validation
When you upload a dataset, the system validates that the required mapped columns exist in the CSV:
- All mapped joint angle column names must be present in the CSV headers
- All mapped end-effector column names (if configured) must be present
- If a required column is missing, the dataset upload will show an error explaining which columns are expected
This validation ensures that every dataset in your project has the columns needed for visualization. If you upload a CSV that doesn't match the mapping, you'll be prompted to either update the CSV or adjust the robot configuration.
Changing Mappings
You can update column mappings at any time from the Robot Config tab:
- Changes apply to all datasets in the project
- Existing frame labels are not affected by mapping changes
- The 3D viewer will immediately reflect the new mapping when you open a dataset
- If a newly mapped column doesn't exist in an older dataset, that dataset will show a validation warning
Troubleshooting
| Problem | Likely Cause | Solution |
|---|---|---|
| Robot doesn't move | Wrong columns mapped to joints | Verify column names match your CSV headers exactly |
| Robot moves incorrectly | Joints mapped in wrong order | Re-order mappings from base to tip |
| Robot spins wildly | Values are in degrees, not radians | Convert your data to radians before upload |
| Upload rejected | CSV missing a mapped column | Check that CSV headers match the column mapping exactly |
| Graphs not showing | No graph columns selected | Add columns in the graph columns configuration |