This repository provides a single-GPIS Isaac Lab testbed for our paper
“Autonomous Exploration for Shape Reconstruction and Measurement via Informative Contact-Guided Planning (AESRM)”.
🔗 Project Page: https://aesrm.github.io
It implements a simplified version of the AMMH framework in simulation, focusing on tactile exploration and surface reconstruction with a simple contact points, and is mainly intended for testing and debugging the GPIS-based exploration pipeline.
Hand_Exploration/
├── Results/
├── Env/
│ ├── allegro_hand.py # Allegro Hand model definitions
│ ├── Explloration_env.py # Tactile exploration environment setup (Stage 1)
│ ├── Exploration_env_stage2.py # Advanced exploration environment (Stage 2)
│ ├── ....
├── utils/
│ ├── GPIS.py # Basic GPIS modeling
│ ├── HE_GPIS.py # Hand Exploration-specific GPIS extensions
│ ├── Pid_Controller.py # PID control for hand pose
│ ├── ....
├── README.md
-
Clone the repository:
git clone https://github.com/FerryRain/Hand_Exlporation.git cd Hand_Exploration -
Create the Conda environment:
Create a new environment using the provided
environment.yaml:conda env create -f environment.yaml conda activate hand_exploration
-
Install Isaac Sim and Isaac Lab dependencies manually:
-
Follow the official installation guides:
-
Typically, you need to:
-
Download and install Isaac Sim.
-
Set up environment variables (e.g.,
source setup_env.shinside Isaac Sim folder). -
Install Isaac Lab Python packages inside your environment:
cd /path/to/isaaclab pip install -e .
-
⚠️ Note:
Isaac Sim and Isaac Lab require specific versions of CUDA, GPU drivers, and system dependencies.
Make sure your machine meets their requirements. -
-
Env/
allegro_hand.py: Robot hand model and kinematics definition.Explloration_env.py: Basic tactile exploration simulation environment.Exploration_env_stage2.py: Extended environment for Stage 2 exploration tasks, incorporating surface reconstruction and path planning.
-
utils/
GPIS.py: Standard Gaussian Process Implicit Surface (GPIS) modeling.HE_GPIS.py: Hand Exploration-enhanced GPIS with uncertainty-guided exploration strategies.Pid_Controller.py: Proportional-Integral-Derivative (PID) controller for controlling hand position and orientation.
-
TEST/
- Reserved for test scripts and experimental trials.
-
Run the simple exploration demo:
conda activate hand_exploration
cd Env python Exploration_env_stage{x}.py
The project progresses through nine stages of tactile exploration and surface reconstruction:
-
Stage 1: Teleportation + Contact
- The hand is directly teleported to object surface to collect initial contact points.
-
Stage 2:
move_to+ Uncertainty- The hand moves toward regions of higher surface uncertainty using basic motion primitives.
-
Stage 3: Surface Constraint + Smoothness
- Hand motion is constrained on the object surface.
- Guided by both uncertainty gradient and contact smoothness (possibly using δ constraints).
-
Stage 4: Global Point Sampling as AS Input
- Actively samples next exploration targets from global surface uncertainty map.
-
Stage 5: Position Control Version
- Replaces high-level
move_towith low-level position control for trajectory execution.
- Replaces high-level
-
Stage 6: Continuous PID Control
- Employs PID-based continuous control to smoothly follow desired paths along surface.
-
Stage 7: New GPIS Initialization Function
- Improves initialization of the GPIS model with different spatial priors (e.g. spherical or conic).
-
Stage 8: Hybrid Force-Position Control
- Combines force feedback with position control to ensure compliant, stable contact.
Experimental data for each stage is stored in the Data/ directory with folders named accordingly. Some examples:
Results/
├── stage6_1/ # Continuous control (PID) for sphere (radius=0.5) (falied)
├── stage6_2/ # Continuous control (PID) for sphere (radius=0.15)
├── stage6_3(CONE)/ # Continuous control (PID) for cone (radius=0.15, height=0.3)
├── stage7_1_1(sphere)/ # Stage 7 for GPIS which initialized by double bb for sphere (radius=0.15)
├── stage7_1_2/ # Stage 7 for GPIS which initialized by double bb for sphere (radius=0.5) (success)
├── stage7_2_1/ # Stage 7 for GPIS which initialized by double bb for cone (radius=0.15, height=0.3)
├── stage7_2_2/ # Stage 7 for GPIS which initialized by double bb for cone (radius=0.15, height=0.3) with another type of the gaussian data preprocess
├── stage8_1/ # Stage 8 experiment with hybrid control for sphere
├── stage8_2_1/ # Stage 8 experiment with hybrid control for cone
To visualize saved 3D reconstruction results:
cd Results
python Vis_points.py
