Streaming dataloader for robotics trajectory datasets
Project description
Traceplane
Python SDK for the Traceplane trajectory data platform.
Installation
pip install traceplane
With framework extras:
pip install traceplane[torch] # PyTorch DataLoader
pip install traceplane[jax] # JAX support
pip install traceplane[training] # Diffusion policy training
pip install traceplane[sim] # Isaac Sim rollout writer
pip install traceplane[all] # Everything
Quick Start
from traceplane import TraceplaneClient
client = TraceplaneClient("https://api.traceplane.ai", api_key="tp_live_...")
# Register a dataset
client.register("my_data", "/path/to/dataset", include_data=True)
# Query with SQL
rows = client.sql_rows("SELECT * FROM my_data WHERE frame_count > 100")
# Upload data
client.upload_dataset("my_data", "/path/to/parquet/files/")
# Vector search
results = client.search_similar("my_data", episode_index=0, k=5)
Features
- SQL query engine -- register datasets and query with full SQL, including vector UDFs (
vec_mean,vec_norm,vec_cosine_sim, etc.) - Streaming dataloaders -- PyTorch, JAX, and TensorFlow adapters with windowed sampling
- LeRobot format -- native reader and writer for LeRobot v2/v3 datasets (Parquet + MP4)
- Embodiment registry -- 8 built-in robot profiles (Franka, ALOHA, Unitree G1/H1, UR5e, KUKA iiwa, xArm 7, Stretch 3) with joint-limit + action-space validation, shared verbatim with the Rust backend
- Similarity search -- find related episodes via embedding-based vector search
- Dataset upload -- push local Parquet files to the platform
- Retargeting -- XR hand poses to robot action space via calibration bridge
- Training -- built-in diffusion policy training with
traceplane-trainCLI - Isaac Sim round-trip -- capture headless rollouts as canonical LeRobot v2 episodes via
SimEpisodeWriter
Training Integration
from traceplane import LeRobotReader
from traceplane.torch import TorchEpisodeLoader
reader = LeRobotReader("/path/to/lerobot/dataset")
loader = TorchEpisodeLoader(reader, batch_size=32, window_size=16)
for batch in loader:
observations = batch["observation"]
actions = batch["action"]
# ... your training loop
Embodiment Profiles
Built-in kinematic profiles for 8 robots, each with joint-limit + action-space validation. The same YAML files drive both this SDK and the Rust backend, so cross-embodiment queries and retargeting validation stay consistent end-to-end.
from traceplane.embodiments import get_profile, list_profiles
print(list_profiles())
# ['franka_panda', 'aloha_v2', 'unitree_g1', 'unitree_h1',
# 'ur5e', 'kuka_iiwa', 'xarm7', 'stretch3']
g1 = get_profile("unitree_g1")
print(g1.total_dof()) # 23
print(g1.group_names()) # ['left_arm', 'right_arm', 'waist', ...]
arm_action = g1.project_action(full_action_23d, "left_arm") # 7-dim subvector
Sim Rollout Round-trip
SimEpisodeWriter turns Isaac Sim rollouts (or any simulator's per-step
actions/states) into canonical LeRobot v2 datasets, ready to be re-ingested
by Traceplane or consumed by any LeRobot-compatible tool.
from traceplane.embodiments import get_profile
from traceplane.sim.writer import SimEpisodeWriter
profile = get_profile("franka_panda")
with SimEpisodeWriter("./rollouts", profile, fps=30.0, task="pick-cube") as w:
for ep in rollouts:
w.add_episode(
actions=ep.actions, # (T, profile.action_dim)
states=ep.joint_positions, # (T, profile.state_dim)
timestamps=ep.timestamps, # optional; defaults to 1/fps spacing
metadata={"success": ep.success, "seed": ep.seed},
)
API Reference
Full documentation: docs.traceplane.ai
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file traceplane-0.3.0-py3-none-any.whl.
File metadata
- Download URL: traceplane-0.3.0-py3-none-any.whl
- Upload date:
- Size: 102.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4570f99992e074a2f24e65dc4494f8c300d502bbfeef9e14cb5a421a179438e6
|
|
| MD5 |
ecf1749bdf102b027e66f526750d5ba7
|
|
| BLAKE2b-256 |
d62164c005e4f56477f936e286961dea22db12b578aff6166979fda2faf85b5f
|