Skip to content

thisisRMak/FiGS-Standalone

 
 

Repository files navigation

FiGS: Flying in Gaussian Splats

FiGS is a framework for trajectory optimization and control in Gaussian Splatting environments.

Installation

Prerequisites

  • NVIDIA GPU with drivers installed
  • Docker Engine (install guide)
  • NVIDIA Container Toolkit (for GPU access inside containers):
# Add the NVIDIA container toolkit repository
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
  | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
  | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

# Configure Docker to use the NVIDIA runtime and restart
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Docker (Recommended)

The easiest way to get started is with Docker:

git clone https://github.com/madang6/FiGS-Standalone.git
cd FiGS-Standalone
git submodule update --init gemsplat

# Detect your GPU's compute capability and build (may need to be run as sudo depending on Docker install)
CUDA_ARCHITECTURES=$(nvidia-smi --query-gpu=compute_cap --format=csv,noheader | head -1 | tr -d '.') docker compose build

docker compose run --rm figs      # starts a shell with everything ready

CUDA_ARCHITECTURES must be set to your GPU's compute capability (e.g., 89 for L40S, 86 for A6000/RTX 3090). The build will fail with instructions if it is not set.

Editable packages (figs, gemsplat, coverage_view_selection) are installed automatically on startup. Source code is bind-mounted, so edits on the host are immediately visible in the container and vice versa.

If you don't have coverage_view_selection, use the base config:

docker compose -f docker-compose.base.yml run --rm figs

See DOCKER_SETUP.md for full details, configuration options, and troubleshooting.

For downstream projects

FiGS serves as the base environment for other projects like SINGER. Those projects include their own docker-compose.yml that references the figs:latest image built here.

If you want to remove and restart

docker rmi figs:latest
rm -rf FiGS-Standalone # remember to move FiGS-Standalone/3dgs/ out to preserve any data!

Manual Installation (Alternative)

If you prefer not to use Docker:

git clone https://github.com/madang6/FiGS-Standalone.git
  1. Update Submodules
cd FiGS-Standalone
git submodule update --recursive --init
  1. Run the install.sh
bash install.sh

If using a server:

bash install-serverside.sh

What's Included

  • Python 3.10 with numpy 1.26.4
  • PyTorch 2.1.2 with CUDA support
  • All core dependencies (nerfstudio, gsplat, etc.)
  • FiGS package in editable mode

Usage Examples

Data Storage

  • Videos go in 3dgs/captures/
  • Images go in 3dgs/workspace/
  • Update the capture_examples variable in notebooks/figs_generate_3dgs_example.py with your directory names

Nerfstudio Commands

Process video data:

cd 3dgs/captures
ns-process-data video --data <data-directory-name> --output-dir ../workspace

Train a splatfacto model:

cd 3dgs/workspace
ns-train splatfacto --data <data-directory-name> \
  --pipeline.model.camera-optimizer.mode SO3xR3 \
  --pipeline.model.rasterize-mode antialiased

Export the Gaussian splat:

ns-export gaussian-splat \
  --load-config outputs/<data-directory-name>/splatfacto/<timestamp>/config.yml \
  --output-dir outputs/<data-directory-name>/splatfacto/<timestamp>/exports

FiGS Notebooks

Process all videos in capture_examples (colmap, 3dgs, export):

cd notebooks
python figs_generate_3dgs_example.py

Additional notebooks:

python figs_capture_calibration.py
python figs_simulate_flight_example.py

About

Handle gsplat/nerf extra_channels in `src/figs/simulator.py`

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 94.3%
  • Shell 3.7%
  • Jupyter Notebook 2.0%