fix environment seeding

add fixes for reproducibility

only try to start env if it is closed

revision

fix normalization and data type

Improve README

Improve README

Tests are passing, Eval pretrained model works, Add gif

Update gif

Update gif

Update gif

Update gif

Update README

Update README

update minor

Update README.md

Co-authored-by: Simon Alibert <75076266+aliberts@users.noreply.github.com>

Update README.md

Co-authored-by: Simon Alibert <75076266+aliberts@users.noreply.github.com>

Address suggestions

Update thumbnail + stats

Update thumbnail + stats

Update README.md

Co-authored-by: Alexander Soare <alexander.soare159@gmail.com>

Add more comments

Add test_examples.py
This commit is contained in:
Alexander Soare
2024-03-22 13:25:23 +00:00
committed by Cadene
parent 203bcd7ca5
commit 1a1308d62f
32 changed files with 686 additions and 282 deletions

64
tests/test_available.py Normal file
View File

@@ -0,0 +1,64 @@
"""
This test verifies that all environments, datasets, policies listed in `lerobot/__init__.py` can be sucessfully
imported and that their class attributes (eg. `available_datasets`, `name`, `available_tasks`) corresponds.
Note:
When implementing a concrete class (e.g. `AlohaDataset`, `PushtEnv`, `DiffusionPolicy`), you need to:
1. set the required class attributes:
- for classes inheriting from `AbstractDataset`: `available_datasets`
- for classes inheriting from `AbstractEnv`: `name`, `available_tasks`
- for classes inheriting from `AbstractPolicy`: `name`
2. update variables in `lerobot/__init__.py` (e.g. `available_envs`, `available_datasets_per_envs`, `available_policies`)
3. update variables in `tests/test_available.py` by importing your new class
"""
import pytest
import lerobot
from lerobot.common.envs.aloha.env import AlohaEnv
from lerobot.common.envs.pusht.env import PushtEnv
from lerobot.common.envs.simxarm import SimxarmEnv
from lerobot.common.datasets.simxarm import SimxarmDataset
from lerobot.common.datasets.aloha import AlohaDataset
from lerobot.common.datasets.pusht import PushtDataset
from lerobot.common.policies.act.policy import ActionChunkingTransformerPolicy
from lerobot.common.policies.diffusion.policy import DiffusionPolicy
from lerobot.common.policies.tdmpc.policy import TDMPCPolicy
def test_available():
pol_classes = [
ActionChunkingTransformerPolicy,
DiffusionPolicy,
TDMPCPolicy,
]
env_classes = [
AlohaEnv,
PushtEnv,
SimxarmEnv,
]
dat_classes = [
AlohaDataset,
PushtDataset,
SimxarmDataset,
]
policies = [pol_cls.name for pol_cls in pol_classes]
assert set(policies) == set(lerobot.available_policies)
envs = [env_cls.name for env_cls in env_classes]
assert set(envs) == set(lerobot.available_envs)
tasks_per_env = {env_cls.name: env_cls.available_tasks for env_cls in env_classes}
for env in envs:
assert set(tasks_per_env[env]) == set(lerobot.available_tasks_per_env[env])
datasets_per_env = {env_cls.name: dat_cls.available_datasets for env_cls, dat_cls in zip(env_classes, dat_classes)}
for env in envs:
assert set(datasets_per_env[env]) == set(lerobot.available_datasets_per_env[env])

View File

@@ -1,4 +1,3 @@
import os
import pytest
from tensordict import TensorDict
import torch

18
tests/test_examples.py Normal file
View File

@@ -0,0 +1,18 @@
import pytest
from pathlib import Path
@pytest.mark.parametrize(
"path",
[
"examples/1_visualize_dataset.py",
"examples/2_evaluate_pretrained_policy.py",
"examples/3_train_policy.py",
],
)
def test_example(path):
with open(path, 'r') as file:
file_contents = file.read()
exec(file_contents)
assert Path("outputs/visualize_dataset/example/episode_0.mp4").exists()

View File

@@ -13,17 +13,16 @@ from lerobot.common.policies.abstract import AbstractPolicy
from .utils import DEVICE, init_config
@pytest.mark.parametrize(
"env_name,policy_name,extra_overrides",
[
("simxarm", "tdmpc", ["policy.mpc=true"]),
("pusht", "tdmpc", ["policy.mpc=false"]),
("pusht", "diffusion", []),
("aloha", "act", ["env.task=sim_insertion_scripted"]),
("aloha", "act", ["env.task=sim_insertion_human"]),
("aloha", "act", ["env.task=sim_transfer_cube_scripted"]),
("aloha", "act", ["env.task=sim_transfer_cube_human"]),
("aloha", "act", ["env.task=sim_insertion", "dataset_id=aloha_sim_insertion_human"]),
("aloha", "act", ["env.task=sim_insertion", "dataset_id=aloha_sim_insertion_scripted"]),
("aloha", "act", ["env.task=sim_transfer_cube", "dataset_id=aloha_sim_transfer_cube_human"]),
("aloha", "act", ["env.task=sim_transfer_cube", "dataset_id=aloha_sim_transfer_cube_scripted"]),
# TODO(aliberts): simxarm not working with diffusion
# ("simxarm", "diffusion", []),
],
@@ -106,6 +105,8 @@ def test_abstract_policy_forward():
return
class StubPolicy(AbstractPolicy):
name = "stub"
def __init__(self):
super().__init__(n_action_steps)
self.n_policy_invocations = 0