PerturbationSampler
SUMMARY
PerturbationSampler generates a structured sweep of robot poses around one or more home poses: single-axis rotations, combined multi-axis rotations, single-axis translations, and mixed translation+rotation moves, built for good SO(3) coverage during hand-eye data collection.
Feed it to DataCollector to drive the sweep automatically.
The Skill
python
from telekinesis.axon import PerturbationSamplerThe Code
python
sampler = PerturbationSampler(
home_poses_deg, # [x, y, z, rx, ry, rz], or a list of them
rotation_deg=10.0,
translation_m=0.05,
rotation_steps=2,
translation_steps=1,
)Initialization
| Parameter | Type | Description |
|---|---|---|
home_poses_deg | list[float] | list[list[float]] | One or more [x, y, z, rx, ry, rz] home poses. A single flat list is treated as one home. |
rotation_deg | float | Maximum rotation per axis, in degrees. Default 10.0. |
translation_m | float | Maximum translation per axis, in meters. Default 0.05. |
rotation_steps | int | Discrete levels between 0 and rotation_deg. 2 samples at 50% and 100% (e.g. +/-5 deg and +/-10 deg). Default 2. |
translation_steps | int | Same, for translation. 1 samples +/-max only. Default 1. |
Iteration
Iterating a PerturbationSampler yields (home_pose_deg, [capture_pose_deg, ...]) groups, DataCollector drives to home via joint space at the start of each group and returns there after every capture.