{ "cells": [ { "cell_type": "markdown", "id": "c950beef", "metadata": {}, "source": [ "# GTSAM GncOptimizer Class Documentation\n", "\n", "*Disclaimer: This documentation was generated by AI and requires human revision to ensure accuracy and completeness.*\n", "\n", "## Overview\n", "\n", "The `GncOptimizer` class in GTSAM is designed to perform robust optimization using Graduated Non-Convexity (GNC). This method is particularly useful in scenarios where the optimization problem is affected by outliers. The GNC approach gradually transitions from a convex approximation of the problem to the original non-convex problem, thereby improving robustness and convergence.\n", "\n", "## Key Features\n", "\n", "- **Robust Optimization**: The `GncOptimizer` is specifically tailored to handle optimization problems with outliers, using a robust cost function that can mitigate their effects.\n", "- **Graduated Non-Convexity**: This technique allows the optimizer to start with a convex problem and gradually transform it into the original non-convex problem, which helps in avoiding local minima.\n", "- **Customizable Parameters**: Users can adjust various parameters to control the behavior of the optimizer, such as the type of robust loss function and the parameters governing the GNC process.\n", "\n", "## Key Methods\n", "\n", "### Initialization and Setup\n", "\n", "- **Constructor**: The class constructor initializes the optimizer with a given nonlinear factor graph and initial estimate. It also accepts parameters specific to the GNC process.\n", "\n", "### Optimization Process\n", "\n", "- **optimize()**: This method performs the optimization process. It iteratively refines the solution by adjusting the influence of the robust cost function, following the principles of graduated non-convexity.\n", "\n", "### Configuration and Parameters\n", "\n", "- **setParams()**: Allows users to set the parameters for the GNC optimization process, including the type of robust loss function and other algorithm-specific settings.\n", "- **getParams()**: Retrieves the current parameters used by the optimizer, providing insight into the configuration of the optimization process.\n", "\n", "### Utility Functions\n", "\n", "- **cost()**: Computes the cost of the current estimate, which is useful for evaluating the progress of the optimization.\n", "- **error()**: Returns the error associated with the current estimate, offering a measure of how well the optimization is performing.\n", "\n", "## Mathematical Formulation\n", "\n", "The `GncOptimizer` leverages a robust cost function $\\rho(e)$, where $e$ is the error term. The goal is to minimize the sum of these robust costs over all measurements:\n", "\n", "$$\n", "\\min_x \\sum_i \\rho(e_i(x))\n", "$$\n", "\n", "In the context of GNC, the robust cost function is gradually transformed from a convex approximation to the original non-convex form. This transformation is controlled by a parameter $\\mu$, which is adjusted during the optimization process:\n", "\n", "$$\n", "\\rho_\\mu(e) = \\frac{1}{\\mu} \\rho(\\mu e)\n", "$$\n", "\n", "As $\\mu$ increases, the function $\\rho_\\mu(e)$ transitions from a convex to a non-convex shape, allowing the optimizer to handle outliers effectively.\n", "\n", "## Usage Considerations\n", "\n", "- **Outlier Rejection**: The `GncOptimizer` is particularly effective in scenarios with significant outlier presence, such as SLAM or bundle adjustment problems.\n", "- **Parameter Tuning**: Proper tuning of the GNC parameters is crucial for achieving optimal performance. Users should experiment with different settings to find the best configuration for their specific problem.\n", "\n", "This high-level overview provides a starting point for understanding and utilizing the `GncOptimizer` class in GTSAM. For detailed implementation and advanced usage, users should refer to the source code and additional GTSAM documentation." ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 5 }