Skip to content

Commit

Permalink
Update readme & remove example 1 (#108)
Browse files Browse the repository at this point in the history
Co-authored-by: Remi <[email protected]>
- Update instructions for installing the library
- Remove deprecated example 1 (as we are now only using `LeRobotDataset` since #91)
  • Loading branch information
aliberts authored Apr 27, 2024
1 parent fe2b9af commit bf2eebb
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 93 deletions.
24 changes: 16 additions & 8 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,26 +129,34 @@ Follow these steps to start contributing:

🚨 **Do not** work on the `main` branch.

4. Instead of using `pip` directly, we use `poetry` for development purposes to easily track our dependencies.
4. for development, we use `poetry` instead of just `pip` to easily track our dependencies.
If you don't have it already, follow the [instructions](https://python-poetry.org/docs/#installation) to install it.
Set up a development environment by running the following command in a conda or a virtual environment you've created for working on this library:
Install the project with dev dependencies and all environments:

Set up a development environment with conda or miniconda:
```bash
conda create -y -n lerobot-dev python=3.10 && conda activate lerobot-dev
```

To develop on 🤗 LeRobot, you will at least need to install the `dev` and `test` extras dependencies along with the core library:
```bash
poetry install --sync --with dev --all-extras
poetry install --sync --extras "dev test"
```
This command should be run when pulling code with and updated version of `pyproject.toml` and `poetry.lock` in order to synchronize your virtual environment with the dependencies.

To selectively install environments (for example aloha and pusht) use:
You can also install the project with all its dependencies (including environments):
```bash
poetry install --sync --with dev --extras "aloha pusht"
poetry install --sync --all-extras
```

> **Note:** If you don't install simulation environments with `--all-extras`, the tests that require them will be skipped when running the pytest suite locally. However, they *will* be tested in the CI. In general, we advise you to install everything and test locally before pushing.
Whichever command you chose to install the project (e.g. `poetry install --sync --all-extras`), you should run it again when pulling code with an updated version of `pyproject.toml` and `poetry.lock` in order to synchronize your virtual environment with the new dependencies.

The equivalent of `pip install some-package`, would just be:
```bash
poetry add some-package
```

When changes are made to the poetry sections of the `pyproject.toml`, you should run the following command to lock dependencies.
When making changes to the poetry sections of the `pyproject.toml`, you should run the following command to lock dependencies.
```bash
poetry lock --no-update
```
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<div align="center">

[![Tests](https://github.com/huggingface/lerobot/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/huggingface/lerobot/actions/workflows/test.yml?query=branch%3Amain)
[![Tests](https://github.com/huggingface/lerobot/actions/workflows/nightly-tests.yml/badge.svg?branch=main)](https://github.com/huggingface/lerobot/actions/workflows/nightly-tests.yml?query=branch%3Amain)
[![Coverage](https://codecov.io/gh/huggingface/lerobot/branch/main/graph/badge.svg?token=TODO)](https://codecov.io/gh/huggingface/lerobot)
[![Python versions](https://img.shields.io/pypi/pyversions/lerobot)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/huggingface/lerobot/blob/main/LICENSE)
Expand Down Expand Up @@ -73,7 +73,7 @@ conda create -y -n lerobot python=3.10 && conda activate lerobot

Install 🤗 LeRobot:
```bash
python -m pip install .
pip install .
```

For simulations, 🤗 LeRobot comes with gymnasium environments that can be installed as extras:
Expand All @@ -83,7 +83,7 @@ For simulations, 🤗 LeRobot comes with gymnasium environments that can be inst

For instance, to install 🤗 LeRobot with aloha and pusht, use:
```bash
python -m pip install ".[aloha, pusht]"
pip install ".[aloha, pusht]"
```

To use [Weights and Biases](https://docs.wandb.ai/quickstart) for experiments tracking, log in with
Expand Down
69 changes: 0 additions & 69 deletions examples/1_load_hugging_face_dataset.py

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@
frames = [frame.permute((1, 2, 0)).numpy() for frame in frames]

# and finally save them to a mp4 video
Path("outputs/examples/2_load_lerobot_dataset").mkdir(parents=True, exist_ok=True)
imageio.mimsave("outputs/examples/2_load_lerobot_dataset/episode_5.mp4", frames, fps=dataset.fps)
Path("outputs/examples/1_load_lerobot_dataset").mkdir(parents=True, exist_ok=True)
imageio.mimsave("outputs/examples/1_load_lerobot_dataset/episode_5.mp4", frames, fps=dataset.fps)

# For many machine learning applications we need to load histories of past observations, or trajectorys of future actions. Our datasets can load previous and future frames for each key/modality,
# using timestamps differences with the current loaded frame. For instance:
Expand Down
File renamed without changes.
File renamed without changes.
16 changes: 5 additions & 11 deletions tests/test_examples.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,18 @@ def _run_script(path):


def test_example_1():
path = "examples/1_load_hugging_face_dataset.py"
path = "examples/1_load_lerobot_dataset.py"
_run_script(path)
assert Path("outputs/examples/1_load_hugging_face_dataset/episode_5.mp4").exists()
assert Path("outputs/examples/1_load_lerobot_dataset/episode_5.mp4").exists()


def test_example_2():
path = "examples/2_load_lerobot_dataset.py"
_run_script(path)
assert Path("outputs/examples/2_load_lerobot_dataset/episode_5.mp4").exists()


def test_examples_4_and_3():
def test_examples_3_and_2():
"""
Train a model with example 3, check the outputs.
Evaluate the trained model with example 2, check the outputs.
"""

path = "examples/4_train_policy.py"
path = "examples/3_train_policy.py"

with open(path) as file:
file_contents = file.read()
Expand All @@ -55,7 +49,7 @@ def test_examples_4_and_3():
for file_name in ["model.pt", "config.yaml"]:
assert Path(f"outputs/train/example_pusht_diffusion/{file_name}").exists()

path = "examples/3_evaluate_pretrained_policy.py"
path = "examples/2_evaluate_pretrained_policy.py"

with open(path) as file:
file_contents = file.read()
Expand Down

0 comments on commit bf2eebb

Please sign in to comment.