Skip to content

Repository files navigation

ObjSplat: Geometry-Aware Gaussian Surfels
for Active Object Reconstruction

Yuetao Li · Zhizhou Jia · Yu Zhang · Qun Hao · Shaohui Zhang

Beijing Institute of Technology

ObjSplat autonomously plans viewpoints and progressively reconstructs an unknown object into a high-fidelity Gaussian model and water-tight mesh, enabling direct use in physics simulations.

💡 News

  • [9 June 2026] 🚀 Initial public release of ObjSplat, including the Gazebo-based active object reconstruction pipeline.
  • [30 May 2026] 🎉 Our paper ObjSplat has been accepted to IEEE T-ASE 2026!

📌 TODO

  • Release the core ObjSplat framework and Gazebo simulation pipeline.
  • Release the robot arm and turntable control modules in the Gazebo-based environment.

🛠️ Installation

Clone Repository

mkdir -p ~/Workspace/objsplat_ws/src
git clone https://github.com/Li-Yuetao/ObjSplat.git ~/Workspace/objsplat_ws/src/objsplat && cd ~/Workspace/objsplat_ws/src/objsplat
git submodule update --init --progress
# objsplat_robot for Gazebo simulation
git clone https://github.com/Li-Yuetao/objsplat_robot.git ~/Workspace/objsplat_ws/src/objsplat_robot

Create Environment

conda create --name objsplat python==3.10
conda activate objsplat
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt

Install Submodules

Gaussian Surfels Renderer

# Gaussian surfels with confidence
pip install -e submodules/diff-gaussian-rasterization_2d --no-build-isolation
# simple-knn
pip install -e submodules/simple-knn --no-build-isolation

Grounded-SAM2

export CUDA_HOME=/usr/local/cuda-11.8/
pip install -e submodules/Grounded-SAM-2 --no-build-isolation
pip install -e submodules/Grounded-SAM-2/grounding_dino --no-build-isolation

Download the Grounded-SAM2 and GroundingDINO checkpoints following the official repository instructions, and place them into the corresponding folders, such as: checkpoints/sam2.1_hiera_large.pt, gdino_checkpoints/groundingdino_swint_ogc.pth.

Build

cd ~/Workspace/objsplat_ws/ && catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
echo "source ~/Workspace/objsplat_ws/devel/setup.bash" >> ~/.bashrc

📦 GSO Dataset

Download

We provide the processed 16-object subset used in our experiments: Google Drive Link. After downloading, extract the dataset into:

[Datasets folder structure (click to expand)]
  src/objsplat_robot/objsplat_robot_gazebo/object_models
    ├── GSO
    │   ├── BUNNY_RACER
    │   │   ├── model.sdf
    │   │   ├── meshes
    │   |   |   └── model.obj
    │   │   └── ...
    │   └── ...
    └── ...
# Add the GSO models to Gazebo model path
GSO_MODELS_DIR=~/Workspace/objsplat_ws/src/objsplat_robot/objsplat_robot_gazebo/object_models/GSO
echo "export GAZEBO_MODEL_PATH=\$GAZEBO_MODEL_PATH:$GSO_MODELS_DIR" >> ~/.bashrc

🚀 Run

1. Launch Gazebo Simulation

# Gazebo simulation with/without GUI
roslaunch objsplat_robot_gazebo objsplat_robot_scan_empty_world.launch gui:=true
# Segmentation (in objsplat conda environment)
roslaunch objsplat seg.launch config:="${PWD}/src/objsplat/config/datasets/simcam_gsmap.json"

2. Single object

# Add a single object into the Gazebo simulation (e.g. BUNNY_RACER, Sootheze_Cold_Therapy_Elephant etc.)
rosrun objsplat_robot_gazebo add_object_node.py --model_type GSO --model_name BUNNY_RACER --pose "0 0 0.01 0 0 0 1"
# If you want to save runtime data, you can add the `save_runtime_data:=1` flag, and `hide_mapper_windows:=1` flag for headless mode.
# e.g. BUNNY-RACER
roslaunch objsplat sim.launch object_id:=BUNNY-RACER
# e.g. Elephant
roslaunch objsplat sim.launch object_id:=Elephant hide_mapper_windows:=1 save_runtime_data:=1

3. Batch objects

# Add object service node
rosrun objsplat_robot_gazebo add_object_service_node.py
# Run all 16 objects
rosrun objsplat run_all.py

📊 Evaluation

rosrun objsplat eval_geometry.py --results_dir ./results --iteration -1

✏️ Acknowledgments

Our implementation is built upon ActiveSplat. We would also like to thank the authors of the following open-source repositories:

  • GaussianSurfels for the differentiable Gaussian rasterization.
  • MonoGS for the online gaussian map visualization.
  • ActiveGS for the confidence map visualization.
  • PB-NBV for Gazebo-based simulation environment.
  • Grounded-SAM-2 for object segmentation.

If you find these works helpful, please consider citing them as well.

🎓 Citation

If you find our code/work useful in your research, please consider citing the following:

@article{li2026objsplat,
    title={ObjSplat: Geometry-Aware Gaussian Surfels for Active Object Reconstruction},
    author={Li, Yuetao and Jia, Zhizhou and Zhang, Yu and Hao, Qun and Zhang, Shaohui},
    journal={IEEE Transactions on Automation Science and Engineering},
    year={2026},
    publisher={IEEE}
}

About

[T-ASE 2026] ObjSplat: Geometry-Aware Gaussian Surfels for Active Object Reconstruction

Resources

Stars

32 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages