Skip to content

Commit 981f509

Browse files
JiantongChenzhouyunsong
authored andcommitted
!43 [doc] review the InternManip docs and current code diff
* [doc] add iros challenge doc in InternManip * [doc] review the InternManip docs and code diff
1 parent 8ca1296 commit 981f509

File tree

5 files changed

+185
-157
lines changed

5 files changed

+185
-157
lines changed

source/en/user_guide/internmanip/index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ myst:
1111
```{toctree}
1212
:maxdepth: 2
1313
14+
iros_challenge
1415
quick_start/index
15-
contribute_guide
1616
tutorials/index
17+
contribute_guide
18+
troubleshooting
1719
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 🏆 IROS 2025 Challenge
2+
3+
4+
![track-badge](https://img.shields.io/badge/Track_1-Manipulation-blueviolet)
5+
6+
7+
Welcome to the **IROS 2025 Challenge of Multimodal Robot Learning in InternUtopia and Real World**!
8+
InternManip provides the **official baseline and evaluation toolkit** for **Track: Vision-Language Manipulation in Open Tabletop Environments**, featured at the *[IROS 2025 Workshop](https://internrobotics.shlab.org.cn/workshop/2025/)*.
9+
10+
## 🚀 Challenge Overview
11+
12+
In this challenge, participants will develop end-to-end policies that fuse vision and language to control robots in simulated physics-based environment.
13+
Models are trained using the **InternManip** framework and **GenManip** dataset, and evaluated in a closed-loop benchmark on unseen private scenes.
14+
15+
This repository serves as the **starter kit and evaluation toolkit**—you can use it to:
16+
- Implement your own policy models
17+
- Train them on GenManip public data
18+
- Submit them via Docker for final evaluation
19+
20+
## 📚 More information
21+
You can get information about the competition [here](https://github.com/InternRobotics/InternManip/blob/master/challenge/README.md), including resources, time and rewards, etc.
22+
23+
## 🛠️ guided tutorial
24+
25+
We've provided a concise [guided tutorial](https://github.com/InternRobotics/InternManip/blob/master/challenge/guidelines.md) for challengers, divided into three parts: Environment Setup, Local Development & Testing, and Packaging & Submission.
26+
27+
28+
> 😄 Good luck, and we look forward to your innovations!

source/en/user_guide/internmanip/quick_start/installation.md

Lines changed: 2 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ Since we install packages via `uv`, if there are network fluctuations causing so
316316

317317

318318
```{important}
319-
If you encounter any issues during the installation, please first check the [Troubleshooting](#troubleshooting) section.
319+
If you encounter any issues during the installation, please first check the <a href="../troubleshooting.html">Troubleshooting</a> section.
320320
```
321321

322322

@@ -374,161 +374,8 @@ If you prefer manual dataset preparation:
374374

375375
1. **Visit our platform:** [Dataset Platform](https://huggingface.co/InternRobotics)
376376
2. **Download datasets** based on your needs:
377+
- [IROS-2025-Challenge-Manip](https://huggingface.co/datasets/InternRobotics/IROS-2025-Challenge-Manip)
377378
- [GenManip-v1](https://huggingface.co/datasets/InternRobotics/InternData-GenmanipTest)
378379
- [CALVIN_ABC](https://huggingface.co/datasets/InternRobotics/InternData-Calvin_ABC)
379380
- [Google-Robot](https://huggingface.co/datasets/InternRobotics/InternData-fractal20220817_data)
380381
- [BridgeData-v2](https://huggingface.co/datasets/InternRobotics/InternData-BridgeV2)
381-
382-
383-
384-
## ⚠️ Troubleshooting
385-
386-
### 1. Conda Terms of Service Acceptance Error
387-
388-
If you encounter the following error during the genmanip installation:
389-
```bash
390-
CondaToNonInteractiveError: Terms of Service have not been accepted for the following channels:
391-
• https://repo.anaconda.com/pkgs/main
392-
• https://repo.anaconda.com/pkgs/r
393-
```
394-
Manually accept the Terms of Service for each affected channel by running these commands:
395-
```bash
396-
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
397-
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
398-
```
399-
400-
401-
### 2. Tips for Slow or Unstable Networks
402-
403-
If you encounter errors such as timeouts or incomplete downloads, especially in network-restricted or low-bandwidth environments, we recommend the following approaches.
404-
405-
- Step 1: By default, `uv pip` uses relatively short HTTP timeouts. To extend the timeout, set the following environment variable before installation:
406-
```bash
407-
export UV_HTTP_TIMEOUT=600 # Timeout in seconds (10 minutes)
408-
```
409-
410-
- Step 2: Locate the package that failed to install. When running the `install.sh` script, if a package fails to install, identify the failing line in the output. This usually indicates which package wasn't downloaded properly.
411-
- Step 3: Dry-run to preview packages and versions. Use uv pip install --dry-run` to preview which packages (and exact versions) are going to be installed. For example:
412-
```bash
413-
uv pip install "git+https://github.com/NVIDIA/Isaac-GR00T.git#egg=isaac-gr00t[base]" --dry-run
414-
```
415-
This will list all packages along with their resolved versions, including those that might fail due to slow download.
416-
- Step 4: Activate your environment. Before manually installing the package, make sure you're in the correct virtual environment.
417-
```bash
418-
source .venv/{your_env_name}/bin/activate
419-
```
420-
- Step 5: Manually install the problematic package. After identifying the package and version, install it manually:
421-
```bash
422-
uv pip install torch==2.5.1 # Replace with your actual package and version
423-
```
424-
425-
<!---
426-
- By default, `uv pip` uses relatively short HTTP timeouts. To extend the timeout, set the following environment variable before installation:
427-
```bash
428-
export UV_HTTP_TIMEOUT=600 # Timeout in seconds (10 minutes)
429-
```
430-
- To ensure successful installation without network interruptions, you can download some large packages first and then install them locally:
431-
```bash
432-
uv pip download -d ./wheelhouse "some-large-package"
433-
uv pip install --no-index --find-links=./wheelhouse "some-large-package"
434-
```
435-
--->
436-
437-
### 3. `import simpler_env` Fails Due to Missing Vulkan Library
438-
439-
If you encounter the following error when trying to import simpler_env:
440-
```bash
441-
>>> import simpler_env
442-
Traceback (most recent call last):
443-
...
444-
ImportError: libvulkan.so.1: cannot open shared object file: No such file or directory
445-
```
446-
You can resolve this issue by installing the Vulkan runtime library via `apt`:
447-
```bash
448-
sudo apt update
449-
sudo apt install libvulkan1
450-
sudo ldconfig
451-
```
452-
453-
454-
455-
456-
### 4. Failed to Install `pyzmq` When Building Model Dependency
457-
458-
459-
When installing the `model` environment and encountering the following error:
460-
```bash
461-
Resolved 162 packages in 4.80s
462-
× Failed to build `pyzmq==27.0.1`
463-
├─▶ The build backend returned an error
464-
╰─▶ Call to `scikit_build_core.build.build_wheel` failed (exit status: 1)
465-
```
466-
A recommended approach is to build from source by running:
467-
```bash
468-
./install.sh --model_bfs
469-
```
470-
If this fails with GCC-related errors, please refer to the troubleshooting advice below.
471-
472-
### 5. GCC Fails to Compile Due to Missing Dependencies
473-
474-
When compiling C++ components (e.g., `building ManiSkill2_real2sim` or `pyzmq`), you might encounter errors related to GCC or missing shared libraries. This guide walks you through how to resolve them without root/sudo permissions.
475-
476-
- Step 1: Use a modern GCC (recommended ≥ 9.3.0). Older system compilers (e.g., GCC 5.x or 7.x) may not support required C++ standards. It's recommended to switch to GCC 9.3.0 or newer:
477-
```bash
478-
export LD_LIBRARY_PATH=${PATH_TO}/gcc/gcc-9.3.0/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
479-
export PATH=${PATH_TO}/gcc/gcc-9.3.0/bin:$PATH
480-
```
481-
> ⚠️ Note: Simply using a newer compiler might not be enough — it may depend on shared libraries that are not available on your system.
482-
- Step 2: Manually install required libraries. If you encounter errors like: `error while loading shared libraries: libmpc.so.2 (libmpfr.so.1, libgmp.so.3)`. If you do have `sudo` privileges, the easiest way is to install the required libraries system-wide using your system package manager.
483-
```bash
484-
sudo apt update
485-
sudo apt install gcc-9 g++-9
486-
```
487-
Or, you need to manually compile and install the following dependencies locally:
488-
```bash
489-
INSTALL_DIR=$HOME/local
490-
mkdir -p "$INSTALL_DIR"
491-
cd "$INSTALL_DIR"
492-
493-
wget https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz
494-
tar -xf gmp-6.2.1.tar.xz && cd gmp-6.2.1
495-
./configure --prefix="$INSTALL_DIR"
496-
make -j$(nproc)
497-
make install
498-
cd "$INSTALL_DIR"
499-
500-
wget https://www.mpfr.org/mpfr-4.2.1/mpfr-4.2.1.tar.xz
501-
tar -xf mpfr-4.2.1.tar.xz && cd mpfr-4.2.1
502-
./configure --prefix="$INSTALL_DIR" --with-gmp="$INSTALL_DIR"
503-
make -j$(nproc)
504-
make install
505-
cd "$INSTALL_DIR"
506-
507-
echo "📦 Installing MPC..."
508-
wget https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz
509-
tar -xf mpc-1.3.1.tar.gz && cd mpc-1.3.1
510-
./configure --prefix="$INSTALL_DIR" --with-gmp="$INSTALL_DIR" --with-mpfr="$INSTALL_DIR"
511-
make -j$(nproc)
512-
make install
513-
```
514-
- Step 3 (Optional): Fix Missing `.so` Versions. Sometimes you have the correct library version (e.g., `libgmp.so.10`), but GCC expects an older symlink name (e.g., `libgmp.so.3`). You can fix missing library versions with symlinks.
515-
- Step 4: Export the Library Path. Make sure the compiler can find your locally installed shared libraries:
516-
```bash
517-
export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH
518-
```
519-
### 6. Handling `RuntimeError: vk::PhysicalDevice::createDeviceUnique: ErrorExtensionNotPresent` in SimplerEnv Benchmark
520-
521-
522-
This error is a tricky issue caused by a failed GPU driver installation when running the SimplerEnv benchmark. Many users have reported this problem in the [SimplerEnv GitHub issue #68](https://github.com/simpler-env/SimplerEnv/issues/68).
523-
524-
You may try the suggested solutions there, but they do not always work reliably. Therefore, we provide an alternative approach if you can use container images.
525-
526-
#### Alternative Solution Using Apptainer Container
527-
- Make sure you have installed `simpler_env`.
528-
- Install Apptainer on your system if you haven't already.
529-
- Download a prebuilt container image with SimplerEnv installed from our [Hugging Face repository](https://huggingface.co/InternRobotics/Manishill2/tree/main).
530-
- Run the evaluation inside the container using a command similar to the following:
531-
```bash
532-
apptainer exec --bind /mnt:/mnt --nv path_to_maniskill2.sif path_to_your_python scripts/eval/start_evaluator.py --config run_configs/examples/internmanip_demo.py --server
533-
```
534-
Replace path_to_maniskill2.sif with the actual path to the downloaded container image, and path_to_your_python with the Python interpreter you want to use inside the container.

source/en/user_guide/internmanip/quick_start/train_eval.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ python scripts/eval/start_evaluator.py \
271271
--config scripts/eval/config/pi0_on_genmanip.py
272272
``` -->
273273
274-
## Evaluation and Benchmarking
274+
## Evaluation and Benchmarking (WIP)
275275
276276
277277
The default evaluation setup adopts a client-server architecture where the policy (model) and the environment run in separate processes. This improves compatibility and modularity for large-scale benchmarks.
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# ⚠️ Troubleshooting
2+
3+
## 1. Conda Terms of Service Acceptance Error
4+
5+
If you encounter the following error during the genmanip installation:
6+
```bash
7+
CondaToNonInteractiveError: Terms of Service have not been accepted for the following channels:
8+
• https://repo.anaconda.com/pkgs/main
9+
• https://repo.anaconda.com/pkgs/r
10+
```
11+
Manually accept the Terms of Service for each affected channel by running these commands:
12+
```bash
13+
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
14+
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
15+
```
16+
17+
18+
## 2. Tips for Slow or Unstable Networks
19+
20+
If you encounter errors such as timeouts or incomplete downloads, especially in network-restricted or low-bandwidth environments, we recommend the following approaches.
21+
22+
- Step 1: By default, `uv pip` uses relatively short HTTP timeouts. To extend the timeout, set the following environment variable before installation:
23+
```bash
24+
export UV_HTTP_TIMEOUT=600 # Timeout in seconds (10 minutes)
25+
```
26+
27+
- Step 2: Locate the package that failed to install. When running the `install.sh` script, if a package fails to install, identify the failing line in the output. This usually indicates which package wasn't downloaded properly.
28+
- Step 3: Dry-run to preview packages and versions. Use uv pip install --dry-run` to preview which packages (and exact versions) are going to be installed. For example:
29+
```bash
30+
uv pip install "git+https://github.com/NVIDIA/Isaac-GR00T.git#egg=isaac-gr00t[base]" --dry-run
31+
```
32+
This will list all packages along with their resolved versions, including those that might fail due to slow download.
33+
- Step 4: Activate your environment. Before manually installing the package, make sure you're in the correct virtual environment.
34+
```bash
35+
source .venv/{your_env_name}/bin/activate
36+
```
37+
- Step 5: Manually install the problematic package. After identifying the package and version, install it manually:
38+
```bash
39+
uv pip install torch==2.5.1 # Replace with your actual package and version
40+
```
41+
42+
<!---
43+
- By default, `uv pip` uses relatively short HTTP timeouts. To extend the timeout, set the following environment variable before installation:
44+
```bash
45+
export UV_HTTP_TIMEOUT=600 # Timeout in seconds (10 minutes)
46+
```
47+
- To ensure successful installation without network interruptions, you can download some large packages first and then install them locally:
48+
```bash
49+
uv pip download -d ./wheelhouse "some-large-package"
50+
uv pip install --no-index --find-links=./wheelhouse "some-large-package"
51+
```
52+
--->
53+
54+
## 3. `import simpler_env` Fails Due to Missing Vulkan Library
55+
56+
If you encounter the following error when trying to import simpler_env:
57+
```bash
58+
>>> import simpler_env
59+
Traceback (most recent call last):
60+
...
61+
ImportError: libvulkan.so.1: cannot open shared object file: No such file or directory
62+
```
63+
You can resolve this issue by installing the Vulkan runtime library via `apt`:
64+
```bash
65+
sudo apt update
66+
sudo apt install libvulkan1
67+
sudo ldconfig
68+
```
69+
70+
71+
72+
73+
## 4. Failed to Install `pyzmq` When Building Model Dependency
74+
75+
76+
When installing the `model` environment and encountering the following error:
77+
```bash
78+
Resolved 162 packages in 4.80s
79+
× Failed to build `pyzmq==27.0.1`
80+
├─▶ The build backend returned an error
81+
╰─▶ Call to `scikit_build_core.build.build_wheel` failed (exit status: 1)
82+
```
83+
A recommended approach is to build from source by running:
84+
```bash
85+
./install.sh --model_bfs
86+
```
87+
If this fails with GCC-related errors, please refer to the troubleshooting advice below.
88+
89+
## 5. GCC Fails to Compile Due to Missing Dependencies
90+
91+
When compiling C++ components (e.g., `building ManiSkill2_real2sim` or `pyzmq`), you might encounter errors related to GCC or missing shared libraries. This guide walks you through how to resolve them without root/sudo permissions.
92+
93+
- Step 1: Use a modern GCC (recommended ≥ 9.3.0). Older system compilers (e.g., GCC 5.x or 7.x) may not support required C++ standards. It's recommended to switch to GCC 9.3.0 or newer:
94+
```bash
95+
export LD_LIBRARY_PATH=${PATH_TO}/gcc/gcc-9.3.0/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
96+
export PATH=${PATH_TO}/gcc/gcc-9.3.0/bin:$PATH
97+
```
98+
> ⚠️ Note: Simply using a newer compiler might not be enough — it may depend on shared libraries that are not available on your system.
99+
- Step 2: Manually install required libraries. If you encounter errors like: `error while loading shared libraries: libmpc.so.2 (libmpfr.so.1, libgmp.so.3)`. If you do have `sudo` privileges, the easiest way is to install the required libraries system-wide using your system package manager.
100+
```bash
101+
sudo apt update
102+
sudo apt install gcc-9 g++-9
103+
```
104+
Or, you need to manually compile and install the following dependencies locally:
105+
```bash
106+
INSTALL_DIR=$HOME/local
107+
mkdir -p "$INSTALL_DIR"
108+
cd "$INSTALL_DIR"
109+
110+
wget https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz
111+
tar -xf gmp-6.2.1.tar.xz && cd gmp-6.2.1
112+
./configure --prefix="$INSTALL_DIR"
113+
make -j$(nproc)
114+
make install
115+
cd "$INSTALL_DIR"
116+
117+
wget https://www.mpfr.org/mpfr-4.2.1/mpfr-4.2.1.tar.xz
118+
tar -xf mpfr-4.2.1.tar.xz && cd mpfr-4.2.1
119+
./configure --prefix="$INSTALL_DIR" --with-gmp="$INSTALL_DIR"
120+
make -j$(nproc)
121+
make install
122+
cd "$INSTALL_DIR"
123+
124+
echo "📦 Installing MPC..."
125+
wget https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz
126+
tar -xf mpc-1.3.1.tar.gz && cd mpc-1.3.1
127+
./configure --prefix="$INSTALL_DIR" --with-gmp="$INSTALL_DIR" --with-mpfr="$INSTALL_DIR"
128+
make -j$(nproc)
129+
make install
130+
```
131+
- Step 3 (Optional): Fix Missing `.so` Versions. Sometimes you have the correct library version (e.g., `libgmp.so.10`), but GCC expects an older symlink name (e.g., `libgmp.so.3`). You can fix missing library versions with symlinks.
132+
- Step 4: Export the Library Path. Make sure the compiler can find your locally installed shared libraries:
133+
```bash
134+
export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH
135+
```
136+
## 6. Handling `RuntimeError: vk::PhysicalDevice::createDeviceUnique: ErrorExtensionNotPresent` in SimplerEnv Benchmark
137+
138+
139+
This error is a tricky issue caused by a failed GPU driver installation when running the SimplerEnv benchmark. Many users have reported this problem in the [SimplerEnv GitHub issue #68](https://github.com/simpler-env/SimplerEnv/issues/68).
140+
141+
You may try the suggested solutions there, but they do not always work reliably. Therefore, we provide an alternative approach if you can use container images.
142+
143+
**Alternative Solution Using Apptainer Container**
144+
- Make sure you have installed `simpler_env`.
145+
- Install Apptainer on your system if you haven't already.
146+
- Download a prebuilt container image with SimplerEnv installed from our [Hugging Face repository](https://huggingface.co/InternRobotics/Manishill2/tree/main).
147+
- Run the evaluation inside the container using a command similar to the following:
148+
```bash
149+
apptainer exec --bind /mnt:/mnt --nv path_to_maniskill2.sif path_to_your_python scripts/eval/start_evaluator.py --config run_configs/examples/internmanip_demo.py --server
150+
```
151+
Replace path_to_maniskill2.sif with the actual path to the downloaded container image, and path_to_your_python with the Python interpreter you want to use inside the container.

0 commit comments

Comments
 (0)