| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| ROOT="${1:-/workspace}" |
| MINIFORGE_DIR="${ROOT}/miniforge3" |
| ENV_PREFIX="${MINIFORGE_DIR}/envs/rlbench" |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" |
| EXTERNAL_ROOT="${REPO_ROOT}/external" |
|
|
| echo "[1/6] optional system packages" |
| echo "Install these on Ubuntu 22.04 if they are missing:" |
| echo " sudo apt-get update" |
| echo " sudo apt-get install -y git wget curl xvfb git-lfs libgl1 libglib2.0-0 libsm6 libxext6 libxrender1 libxrandr2 libxi6 libxcursor1 libxinerama1 libxxf86vm1 libfontconfig1 libfreetype6" |
|
|
| echo "[2/6] install Miniforge if needed" |
| if [[ ! -x "${MINIFORGE_DIR}/bin/conda" ]]; then |
| wget -O "${ROOT}/Miniforge3-Linux-x86_64.sh" \ |
| "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh" |
| bash "${ROOT}/Miniforge3-Linux-x86_64.sh" -b -p "${MINIFORGE_DIR}" |
| fi |
|
|
| source "${MINIFORGE_DIR}/etc/profile.d/conda.sh" |
|
|
| echo "[3/6] create or update rlbench environment" |
| if [[ ! -d "${ENV_PREFIX}" ]]; then |
| conda env create -p "${ENV_PREFIX}" -f "${SCRIPT_DIR}/conda_env_rlbench.yml" |
| else |
| conda env update -p "${ENV_PREFIX}" -f "${SCRIPT_DIR}/conda_env_rlbench.yml" --prune |
| fi |
| conda activate "${ENV_PREFIX}" |
|
|
| echo "[4/6] install benchmark source trees" |
| mkdir -p "${ROOT}" |
| if [[ -d "${EXTERNAL_ROOT}/rlbench" ]]; then |
| rsync -a "${EXTERNAL_ROOT}/rlbench/" "${ROOT}/rlbench/" |
| rsync -a "${EXTERNAL_ROOT}/pyrep/" "${ROOT}/pyrep/" |
| rsync -a "${EXTERNAL_ROOT}/peract_bimanual/" "${ROOT}/peract_bimanual/" |
| rsync -a "${EXTERNAL_ROOT}/yarr/" "${ROOT}/yarr/" |
| else |
| if [[ ! -d "${ROOT}/rlbench/.git" ]]; then |
| git clone https://github.com/markusgrotz/RLBench.git "${ROOT}/rlbench" |
| fi |
| if [[ ! -d "${ROOT}/pyrep/.git" ]]; then |
| git clone https://github.com/markusgrotz/PyRep.git "${ROOT}/pyrep" |
| fi |
| if [[ ! -d "${ROOT}/peract_bimanual/.git" ]]; then |
| git clone https://github.com/markusgrotz/peract_bimanual.git "${ROOT}/peract_bimanual" |
| fi |
| if [[ ! -d "${ROOT}/yarr/.git" ]]; then |
| git clone https://github.com/markusgrotz/YARR.git "${ROOT}/yarr" |
| fi |
|
|
| git -C "${ROOT}/rlbench" checkout 8af748c51287989294e00c9c670e3330a0e35ed5 |
| git -C "${ROOT}/pyrep" checkout b8bd1d7a3182adcd570d001649c0849047ebf197 |
| git -C "${ROOT}/peract_bimanual" checkout bb0232a6ba3fe116566e9568f0c7af980ed6703d |
| git -C "${ROOT}/yarr" checkout 6822ff78602c77878b27d4cfe759ce029c67bffb |
| fi |
|
|
| echo "[5/6] install editable repos used by the rlbench env" |
| python -m pip install -e "${ROOT}/pyrep" |
| python -m pip install -e "${ROOT}/rlbench" |
|
|
| echo "[6/6] CoppeliaSim and dataset" |
| echo "If the repo includes runtime asset archives, extract them first via:" |
| echo " ${SCRIPT_DIR}/extract_runtime_assets.sh ${ROOT}" |
| echo "Provide a CoppeliaSim extraction at ${ROOT}/coppelia_sim." |
| echo "Provide the benchmark dataset at ${ROOT}/data/bimanual_take_tray_out_of_oven_train_128." |
| echo "Then source: ${SCRIPT_DIR}/activate_rlbench_runtime.sh ${ROOT}" |
|
|