Yuhan Xie, Yixi Cai, Yinqiang Zhang, Lei Yang, and Jia Pan
Paper | arXiv | YouTube | bilibili
- 15 Jul. 2025: π³ Docker image released.
- 26 Jun. 2025: GauSS-MI Code Release! π
- 28 May. 2025: Submodule Differential Gaussian Rasterization with GauSS-MI released.
GauSS-MI is a real-time active view selection metric for 3D Gaussian Splatting, optimizing high-visual-quality 3D reconstruction.
If you find our code/work useful, please consider citing our work. Thank you!
@INPROCEEDINGS{YuhanRSS25,
AUTHOR = {Yuhan Xie AND Yixi Cai AND Yinqiang Zhang AND Lei Yang AND Jia Pan},
TITLE = {{GauSS-MI: Gaussian Splatting Shannon Mutual Information for Active 3D Reconstruction}},
BOOKTITLE = {Proceedings of Robotics: Science and Systems},
YEAR = {2025},
ADDRESS = {LosAngeles, CA, USA},
MONTH = {June},
DOI = {10.15607/RSS.2025.XXI.030}
}
This project builds heavily on MonoGS and 3D Gaussian Splatting. We thank the authors for their excellent work! If you use our code, please consider citing the papers as well.
- Most hardware and software requirements same as 3D Gaussian Splatting Optimizer.
- Conda (recommended for easy setup)
- CUDA Toolkit 11.8
- ROS1 Noetic + Ubuntu 20.04
mkdir -p ~/ws_gaussmi/src && cd ~/ws_gaussmi/src # ROS Workspace
git clone https://github.com/JohannaXie/GauSS-MI.git --recursive # https
# git clone git@github.com:JohannaXie/GauSS-MI.git --recursive # sshcd GauSS-MI
conda env create -f environment.yml
conda activate GauSS-MI3. Declare the Python path under your conda environment on the first line of scripts/gs_map.py, which could be #!/opt/conda/envs/GauSS-MI/bin/python or #!/home/{YourUserName}/anaconda3/envs/GauSS-MI/bin/python.
cd ~/ws_gaussmi
catkin build -DPYTHON_EXECUTABLE=/opt/conda/envs/GauSS-MI/bin/python # Your python path under conda# Pull Image
docker pull johanna17/gauss-mi:v1
# Run the Docker container
docker run -it -d --gpus all -e DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e QT_X11_NO_MITSHM=1 \
-e NVIDIA_DRIVER_CAPABILITIES=all \
--shm-size=32G \
--ipc=host \
--network=host \
--cap-add SYS_PTRACE \
--cap-add SYS_ADMIN \
--privileged \
-v /dev:/dev \
--name=GauSS-MI \
-v $HOME/docker_envs/GauSS-MI:/home/do \
-u do \
-w /home/do \
johanna17/gauss-mi:v1
# Go into the Container
docker exec -it GauSS-MI bash
# docker exec -itd GauSS-MI terminator # Or use terminatorsource /opt/ros/noetic/setup.zsh
source /opt/conda/bin/activate
/opt/conda/bin/conda init zsh# Clone the repo
mkdir -p ~/ws_gaussmi/src && cd ~/ws_gaussmi/src # ROS Workspace
git clone https://github.com/JohannaXie/GauSS-MI.git --recursive # https
# Build the ros package
cd ~/ws_gaussmi
catkin config --extend /opt/ros/noetic
catkin build -DPYTHON_EXECUTABLE=/opt/conda/envs/GauSS-MI/bin/python- Download the example robag here.
- Launch GauSS-MI
conda activate GauSS-MI cd ~/ws_gaussmi source devel/setup.zsh roslaunch gs_mapping gaussmi_rosbag_oildrum.launch
- Run rosbag in another terminal
# source /opt/ros/noetic/setup.zsh rosbag play GauSS-MI_example1_oildrum.bag
- Publish your collected RGB image, depth image, and camera pose at initialization viewpoints and the next-best-view on rostopic, respectively:
/camera/bgr /camera/depth /camera/pose - Subscribe to the next-best-view pose on rostopic:
/gaussmi/nbv_pose
To implement our code on your robot with the motion planner and controller. You may need to customize the code in scripts/active_recon/active_manage.py. Specifically:
- Robot Initialization
- Collision Check
- Robot Motion Planner & Waiting for Robot's Navigation.
You may need to customize the parameters for your reconstruction environment in the configuration file configs/eg_data_config/active.yaml.
- Launch GauSS-MI
conda activate GauSS-MI cd ~/ws_gaussmi source devel/setup.zsh roslaunch gs_mapping gaussmi_active.launch
- Launch Your Robot



