updated documentation
This commit is contained in:
parent
4bf419aa5a
commit
642529b12e
34
README.md
34
README.md
@ -68,17 +68,17 @@ $ wget --recursive --no-parent --no-host-directories --relative --reject="index.
|
|||||||
### 🖥️ Simulation
|
### 🖥️ Simulation
|
||||||
To reproduce our simulation benchmark results, install our conda environment on a Linux machine with Nvidia GPU. On Ubuntu 20.04 you need to install the following apt packages for mujoco:
|
To reproduce our simulation benchmark results, install our conda environment on a Linux machine with Nvidia GPU. On Ubuntu 20.04 you need to install the following apt packages for mujoco:
|
||||||
```console
|
```console
|
||||||
sudo apt install -y libosmesa6-dev libgl1-mesa-glx libglfw3 patchelf
|
$ sudo apt install -y libosmesa6-dev libgl1-mesa-glx libglfw3 patchelf
|
||||||
```
|
```
|
||||||
|
|
||||||
We recommend [Mambaforge](https://github.com/conda-forge/miniforge#mambaforge) instead of the standard anaconda distribution for faster installation:
|
We recommend [Mambaforge](https://github.com/conda-forge/miniforge#mambaforge) instead of the standard anaconda distribution for faster installation:
|
||||||
```console
|
```console
|
||||||
mamba env create -f conda_environment.yaml
|
$ mamba env create -f conda_environment.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
but you can use conda as well:
|
but you can use conda as well:
|
||||||
```console
|
```console
|
||||||
conda env create -f conda_environment.yaml
|
$ conda env create -f conda_environment.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
The `conda_environment_macos.yaml` file is only for development on MacOS and does not have full support for benchmarks.
|
The `conda_environment_macos.yaml` file is only for development on MacOS and does not have full support for benchmarks.
|
||||||
@ -357,6 +357,20 @@ data/pusht_cchi_v7_replay.zarr
|
|||||||
|
|
||||||
Each array in `data` stores one data field from all episodes concatenated along the first dimension (time). The `meta/episode_ends` array stores the end index for each episode along the fist dimension.
|
Each array in `data` stores one data field from all episodes concatenated along the first dimension (time). The `meta/episode_ends` array stores the end index for each episode along the fist dimension.
|
||||||
|
|
||||||
|
### `SharedMemoryRingBuffer`
|
||||||
|
The [`SharedMemoryRingBuffer`](./diffusion_policy/shared_memory/shared_memory_ring_buffer.py) is a lock-free FILO data structure used extensively in our [real robot implementation](./diffusion_policy/real_world) to utilize multiple CPU cores while avoiding pickle serialization and locking overhead for `multiprocessing.Queue`.
|
||||||
|
|
||||||
|
As an example, we would like to get the most recent `To` frames from 5 RealSense cameras. We launch 1 realsense SDK/pipeline per process using [`SingleRealsense`](./diffusion_policy/real_world/single_realsense.py), each continuously writes the captured images into a `SharedMemoryRingBuffer` shared with the main process. We can very quickly get the last `To` frames in the main process due to the FILO nature of `SharedMemoryRingBuffer`.
|
||||||
|
|
||||||
|
We also implemented [`SharedMemoryQueue`](./diffusion_policy/shared_memory/shared_memory_queue.py) for FIFO, which is used in [`RTDEInterpolationController`](./diffusion_policy/real_world/rtde_interpolation_controller.py).
|
||||||
|
|
||||||
|
### `RealEnv`
|
||||||
|
In contrast to [OpenAI Gym](https://gymnasium.farama.org/), our polices interact with the environment asynchronously. In [`RealEnv`](./diffusion_policy/real_world/real_env.py), the `step` method in `gym` is split into two methods: `get_obs` and `exec_actions`.
|
||||||
|
|
||||||
|
The `get_obs` method returns the latest observation from `SharedMemoryRingBuffer` as well as their corresponding timestamps. This method can be call at any time during an evaluation episode.
|
||||||
|
|
||||||
|
The `exec_actions` method accepts a sequence of actions and timestamps for the expected time of execution for each step. Once called, the actions are simply enqueued to the `RTDEInterpolationController`, and the method returns without blocking for execution.
|
||||||
|
|
||||||
## 🩹 Adding a Task
|
## 🩹 Adding a Task
|
||||||
Read and imitate:
|
Read and imitate:
|
||||||
* `diffusion_policy/dataset/pusht_image_dataset.py`
|
* `diffusion_policy/dataset/pusht_image_dataset.py`
|
||||||
@ -372,3 +386,17 @@ Read and imitate:
|
|||||||
* `diffusion_policy/config/train_diffusion_unet_image_workspace.yaml`
|
* `diffusion_policy/config/train_diffusion_unet_image_workspace.yaml`
|
||||||
|
|
||||||
Make sure your workspace yaml's `_target_` points to the new workspace class you created.
|
Make sure your workspace yaml's `_target_` points to the new workspace class you created.
|
||||||
|
|
||||||
|
## 🏷️ License
|
||||||
|
This repository is released under the MIT license. See [LICENSE](LICENSE) for additional details.
|
||||||
|
|
||||||
|
## 🙏 Acknowledgement
|
||||||
|
* Our [`ConditionalUnet1D`](./diffusion_policy/model/diffusion/conditional_unet1d.py) implementation is adapted from [Planning with Diffusion](https://github.com/jannerm/diffuser).
|
||||||
|
* Our [`TransformerForDiffusion`](./diffusion_policy/model/diffusion/transformer_for_diffusion.py) implementation is adapted from [MinGPT](https://github.com/karpathy/minGPT).
|
||||||
|
* The [BET](./diffusion_policy/model/bet) baseline is adapted from [its original repo](https://github.com/notmahi/bet).
|
||||||
|
* The [IBC](./diffusion_policy/policy/ibc_dfo_lowdim_policy.py) baseline is adapted from [Kevin Zakka's reimplementation](https://github.com/kevinzakka/ibc).
|
||||||
|
* The [Robomimic](https://github.com/ARISE-Initiative/robomimic) tasks and [`ObservationEncoder`](https://github.com/ARISE-Initiative/robomimic/blob/master/robomimic/models/obs_nets.py) are used extensively in this project.
|
||||||
|
* The [Push-T](./diffusion_policy/env/pusht) task is adapted from [IBC](https://github.com/google-research/ibc).
|
||||||
|
* The [Block Pushing](./diffusion_policy/env/block_pushing) task is adapted from [BET](https://github.com/notmahi/bet) and [IBC](https://github.com/google-research/ibc).
|
||||||
|
* The [Kitchen](./diffusion_policy/env/kitchen) task is adapted from [BET](https://github.com/notmahi/bet) and [Relay Policy Learning](https://github.com/google-research/relay-policy-learning).
|
||||||
|
* Our [shared_memory](./diffusion_policy/shared_memory) data structures are heavily inspired by [shared-ndarray2](https://gitlab.com/osu-nrsg/shared-ndarray2).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user