robo_orchard_sim is the simulation repository for RoboOrchard. It provides
the simulation-side building blocks used to assemble orchard manipulation
environments, launch Isaac-based applications, and evaluate policies against
task setups used in RoboOrchard workflows.
This repository focuses on orchard manipulation simulation on top of the Isaac Sim / Isaac Lab ecosystem. It packages reusable environment, task, and launch utilities into a Python package that can be used for local development, integration, and evaluation.
Key features:
- Environment and task assembly utilities for RoboOrchard simulation workflows
- Isaac application launch helpers for headless and scripted execution
- Example scripts for building orchard environments and running policy evaluation
- Development tooling for linting, type checking, and testing
Installation consists of four steps:
- Prepare assets — download simulation data from Hugging Face
- Set up environment — pull/build the Docker image, or install prerequisites locally
- Launch container — start with GPU and X11 forwarding, then register the Vulkan ICD
- Install package — install
robo_orchard_simin editable mode and pin the protobuf version
Download simulation assets from Hugging Face repository
HorizonRobotics/sim_task_suite_assets to a host directory:
export ASSETS_DIR=/absolute/path/to/sim_task_suite_assets
mkdir -p ${ASSETS_DIR}
python3 -m pip install -U "huggingface_hub[cli]"
# Login first
huggingface-cli login
huggingface-cli download HorizonRobotics/sim_task_suite_assets \
--repo-type dataset \
--local-dir ${ASSETS_DIR}Use either Prerequisites (local installation) or Docker depending on your environment.
- Python 3.10
- Access to the package sources required by
isaacsim,isaaclab, androbo_orchard_core
This directory contains the Dockerfile and usage notes for the
robo_orchard_sim image.
- Ubuntu 22.04
- CUDA 11.8
- Python 3.10
- GCC 11.4
- PyTorch 2.5.1 + cu118
- Isaac Sim 4.5.0
- Isaac Lab 2.0.2
- cuRobo
Pull the prebuilt image from Docker Hub:
docker pull horizonrobotics/robo_orchard_sim:cuda11.8-ubuntu22.04-py3.10-isaacsim4.5.0-isaaclab2.0.2-curobo-guiIf you receive a prebuilt TAR package, load it into the local Docker daemon:
docker load -i robo_orchard_sim_cuda11.8_ubuntu22.04_py3.10_isaacsim4.5.0_isaaclab2.0.2_curobo_gui.tarOn a machine with an NVIDIA driver and X11 display available:
Set the required environment variables and run the provided script:
export CONTAINER_NAME=<your_container_name>
export HOST_WORKSPACE=<path/to/your/workspace>
export ASSETS_DIR=<path/to/sim_task_suite_assets> # set in "Prepare Assets" above
bash run_container.shAfter entering the container, validate the environment. From this point onward, all commands in this section should be executed inside the container.
python3 -c "import isaacsim; print('isaacsim ok')"mkdir -p /usr/share/vulkan/icd.d
cat > /usr/share/vulkan/icd.d/nvidia_icd.json << 'EOF'
{
"file_format_version" : "1.0.0",
"ICD": {
"library_path": "libGLX_nvidia.so.0",
"api_version" : "1.3.194"
}
}
EOFIf you want to attach VSCode/Cursor to the running container, add these
compatibility fixes once inside the container as root:
ln -sf /usr/lib/os-release /etc/os-release
cat >/usr/local/bin/base64 <<'EOF'
#!/bin/sh
if [ "$1" = "-D" ]; then
shift
exec /usr/bin/base64 -d "$@"
fi
exec /usr/bin/base64 "$@"
EOF
chmod +x /usr/local/bin/base64- This image is intended for
robo_orchard_simdistribution, not as a generic public base image. - The image includes Isaac Sim, Isaac Lab, and cuRobo, so users must follow the applicable NVIDIA software terms.
After cloning the repository, install the package from the repository root:
git clone <your-repo-url> robo_orchard_sim
cd robo_orchard_sim
python3 -m pip install -e .You can also install it with the repository Makefile:
make install-editableReinstall protobuf with the compatible version:
pip install protobuf==5.29.5Install development dependencies and hooks:
make dev-envCommon local development commands:
make check-lint
make type-check
make testAdditional test entry point:
make test-clusterThe example below assembles a place_a2b orchard environment, serializes the
generated environment config, resets the runtime environment, and steps the
simulation for a few frames.
python3 examples/manipulation-app/scripts/simple_orchard_env_example.pyBy default, the script writes the generated config to:
configs/place_a2b_orchard_env_example.jsonYou can also override runtime parameters such as output path, number of environments, and simulation frequencies:
python3 examples/manipulation-app/scripts/simple_orchard_env_example.py \
--output configs/place_a2b_orchard_env_example.json \
--num_envs 1 \
--env_spacing 2.5 \
--physics_fps 600 \
--render_fps 30 \
--action_fps 30You can override the evaluation seed, number of episodes, maximum steps, and output path:
python3 examples/manipulation-app/scripts/eval_policy.py \
--task-name place_a2b \
--seed 0 \
--episode-num 3 \
--max-steps 10 \
--output eval_result/isaac_eval/eval_result.jsonThis project is licensed under the Apache License 2.0. See
LICENSE for the full license text.