Workspace Analyzer Samplers#
The samplers module provides various sampling strategies for workspace analysis, from uniform grids to quasi-random sequences.
Table of Contents#
Quick Start#
import torch
from embodichain.lab.devices.workspace_analyzer.samplers import UniformSampler
# Define sampling bounds
bounds = torch.tensor([[0.0, 1.0], # x-axis range
[0.0, 1.0]]) # y-axis range
# Create uniform sampler and generate 1000 samples
sampler = UniformSampler(samples_per_dim=10)
samples = sampler.sample(1000, bounds) # Note: (num_samples, bounds) order
Overview#
Available sampling strategies:
UniformSampler: Grid-based regular sampling ✅
RandomSampler: Pure random sampling ✅
GaussianSampler: Normal distribution sampling ✅
Basic Usage#
import torch
import numpy as np
from embodichain.lab.sim.utility.workspace_analyzer.samplers import (
UniformSampler, RandomSampler, GaussianSampler
)
# Define bounds: [[min, max], [min, max], ...]
bounds = torch.tensor([[-1, 1], [-1, 1], [0, 2]], dtype=torch.float32)
# Generate samples with implemented samplers
samples = UniformSampler(samples_per_dim=10).sample(1000, bounds)
print(f"Generated {samples.shape[0]} samples")
Available Samplers#
1. UniformSampler#
Grid-based sampling with regular spacing.
import torch
from embodichain.lab.sim.utility.workspace_analyzer.samplers import UniformSampler
bounds = torch.tensor([[-1, 1], [-1, 1], [0, 2]], dtype=torch.float32)
# Create uniform sampler
uniform_sampler = UniformSampler(seed=42, samples_per_dim=10)
samples = uniform_sampler.sample(1000, bounds)
Best for: Low-dimensional spaces (2-4D), systematic exploration
2. RandomSampler#
Pure random sampling with uniform distribution.
from embodichain.lab.sim.utility.workspace_analyzer.samplers import RandomSampler
random_sampler = RandomSampler(seed=42)
samples = random_sampler.sample(1000, bounds)
Best for: High-dimensional spaces, baseline comparisons
3. GaussianSampler ✅#
Gaussian distribution sampling around specified mean.
from embodichain.lab.sim.utility.workspace_analyzer.samplers import GaussianSampler
gaussian_sampler = GaussianSampler(seed=42, std=0.2)
samples = gaussian_sampler.sample(1000, bounds)
Best for: Uncertainty analysis, robustness studies around workspace center
Factory Pattern Usage#
Use the factory to create samplers by strategy (only implemented samplers):
from embodichain.lab.sim.utility.workspace_analyzer.samplers import create_sampler
from embodichain.lab.sim.utility.workspace_analyzer.configs import SamplingStrategy
# Create implemented samplers by strategy
uniform_sampler = create_sampler(
SamplingStrategy.UNIFORM,
seed=42,
samples_per_dim=10
)
random_sampler = create_sampler(
SamplingStrategy.RANDOM,
seed=42
)
gaussian_sampler = create_sampler(
SamplingStrategy.GAUSSIAN,
seed=42,
std=0.2
)
Integration with Workspace Analyzer#
from embodichain.lab.sim.utility.workspace_analyzer.configs import SamplingConfig, SamplingStrategy
# Configure sampling in analyzer
sampling_config = SamplingConfig(
strategy=SamplingStrategy.UNIFORM,
num_samples=1000,
seed=42
)
# Analyzer will use the specified sampler automatically
Quick Reference#
Available Samplers:
UniformSampler: Use for 2-4D systematic exploration
RandomSampler: Baseline for any dimensional spaces
GaussianSampler: Uncertainty and robustness analysis
Sample Size Guidelines:
Uniform:
samples_per_dim^n_dims(exponential growth)Random: Any size (flexible)
Gaussian: Any size (flexible)