unilab.tasks.motion_tracking.common.motion_loader¶
Shared motion loading and sampling for motion-tracking tasks.
Functions
|
Compute frame indices and blend weights for interpolation. |
|
Numerically differentiate a trajectory into base/dof velocities. |
|
Resample a root+joint trajectory from |
|
Spherical linear interpolation between two quaternions (wxyz format). |
Classes
Root/joint trajectory resampled to the output frame rate. |
|
Container for motion data at specific frame(s). |
|
Loads and provides access to motion data from NPZ files. |
|
Handles motion frame sampling with different strategies. |
- class unilab.tasks.motion_tracking.common.motion_loader.MotionData[source]¶
Bases:
objectContainer for motion data at specific frame(s).
- Parameters:
- unilab.tasks.motion_tracking.common.motion_loader.quat_slerp(q1, q2, t)[source]¶
Spherical linear interpolation between two quaternions (wxyz format).
The computation runs in the input dtype; pass float64 arrays for a float64 interpolation path.
- class unilab.tasks.motion_tracking.common.motion_loader.InterpolatedMotion[source]¶
Bases:
objectRoot/joint trajectory resampled to the output frame rate.
- Parameters:
- unilab.tasks.motion_tracking.common.motion_loader.compute_motion_velocities(base_poss, base_rots, dof_poss, dt)[source]¶
Numerically differentiate a trajectory into base/dof velocities.
- unilab.tasks.motion_tracking.common.motion_loader.compute_frame_blend(times, duration, input_frames)[source]¶
Compute frame indices and blend weights for interpolation.
- unilab.tasks.motion_tracking.common.motion_loader.interpolate_motion(base_poss_input, base_rots_input, dof_poss_input, *, input_fps, output_fps)[source]¶
Resample a root+joint trajectory from
input_fpstooutput_fps.Positions and joint angles are linearly interpolated, root quaternions (wxyz) use slerp, and velocities are computed by numerical differentiation at the output rate.
- class unilab.tasks.motion_tracking.common.motion_loader.MotionLoader[source]¶
Bases:
objectLoads and provides access to motion data from NPZ files.
- make_motion_data_buffer(num_frames)[source]¶
Allocate a reusable
MotionDatabuffer for frame-index gathers.- Parameters:
num_frames (
int)- Return type:
- get_motion_at_frame(frame_idx, out=None)[source]¶
Get motion data at specified frame indices.
- Parameters:
frame_idx (
ndarray) – Frame indices (N,)out (
MotionData|None) – Optional reusable output buffer.
- Return type:
- Returns:
MotionData at specified frames
- class unilab.tasks.motion_tracking.common.motion_loader.MotionSampler[source]¶
Bases:
objectHandles motion frame sampling with different strategies.
- Parameters:
- __init__(motion_loader, mode, num_envs, bin_count=None, adaptive_lambda=0.8, adaptive_kernel_size=1, adaptive_uniform_ratio=0.1, adaptive_alpha=0.001, start_ratio=0.0, rng=None)[source]¶
Initialize motion sampler.
- Parameters:
motion_loader (
MotionLoader) – Motion loader instancemode (
Literal['start','clip_start','uniform','adaptive','mixed']) – Sampling mode (“start”, “clip_start”, “uniform”, “adaptive”, “mixed”)num_envs (
int) – Number of parallel environmentsbin_count (
int|None) – Number of bins for adaptive sampling (auto if None)adaptive_lambda (
float) – Decay factor for adaptive kerneladaptive_kernel_size (
int) – Kernel size for adaptive samplingadaptive_uniform_ratio (
float) – Uniform sampling ratio for adaptive modeadaptive_alpha (
float) – EMA alpha for failure count updatesstart_ratio (
float) – Fraction of envs forced to frame 0 in “mixed” mode (remaining envs are uniformly sampled). Lets buffer concentrate launch-transition samples while keeping motion-clip coverage.
- update_failure_stats(terminated, current_frames=None)[source]¶
Update failure statistics for adaptive sampling.
- get_current_motion(out=None)[source]¶
Get motion data at current frames for all environments.
- Parameters:
out (
MotionData|None)- Return type: