How It All Works Together: A Conceptual Workflow¶
A typical use case of the sgptools library follows a clean, four-step pipeline:
1. Ingest Data (Dataset) Start by instantiating a Dataset object. This class handles the ingestion and optional standardization of your environment data. You can load static maps (such as .tif images or NumPy arrays) or stream raw, real-time sensor data directly from an autonomous system.
2. Define Constraints & Sensor Models (Transform) [Optional] Tailor the problem geometry by applying a Transform object. This step maps your physical and operational reality to the optimizer. For instance, use an IPPTransform to enforce a travel distance budget for multi-robot path planning, or apply a specific footprint (like a SquareTransform) to accurately model the field of view.
3. Select an Optimization Strategy (methods) Choose the mathematical solver best suited to your objective from the methods module:
- Coverage with Guarantees: Use
GreedyCover,GCBCover, orHexCoverfor IPP with uncertainty guarantees, ensuring the maximum posterior variance remains below a specified threshold. - SGP-Based IPP: Use
ContinuousSGPfor fast, continuous-space IPP powered by Sparse Gaussian Processes. - Black-Box IPP: Use
BayesianOptorCMAfor derivative-free, continuous path optimization. - Greedy IPP: Use
GreedyObjectivefor discrete-space optimization via a greedy algorithm. This seamlessly integrates with any metric from theobjectivesmodule. - Differentiable IPP: Use
DifferentiableObjectivefor continuous-space optimization using gradient descent. Like the greedy approach, this is fully compatible with any metric from theobjectivesmodule.
4. Execute the Solver (optimize()) Finally, call the .optimize() method on your selected optimizer. This triggers the underlying algorithm—such as maximizing the ELBO—and returns the final optimized waypoints or sensing locations.