Skip to main content

Crate apex_solver

Crate apex_solver 

Source
Expand description

§Apex Solver

A comprehensive Rust library for nonlinear least squares optimization, specifically designed for computer vision applications such as bundle adjustment, graph-based pose optimization, and SLAM.

§Features

  • Multiple Optimization Algorithms: Gauss-Newton, Levenberg-Marquardt, and Dog Leg solvers
  • Flexible Linear Algebra Backend: Support for both Sparse Cholesky and Sparse QR decomposition
  • Configurable Solver System: Easy-to-use configuration system for algorithm and backend selection
  • High Performance: Built on the faer linear algebra library for optimal performance
  • Comprehensive Testing: Extensive test suite ensuring correctness and reliability

§Solver Types

  • Gauss-Newton: Fast convergence for well-conditioned problems
  • Levenberg-Marquardt: Robust algorithm with adaptive damping
  • Dog Leg: Trust region method combining Gauss-Newton and steepest descent

§Linear Algebra Backends

  • Sparse Cholesky: Efficient for positive definite systems
  • Sparse QR: More robust for rank-deficient or ill-conditioned systems

Re-exports§

pub use factors::BundleAdjustment;
pub use factors::LandmarksAndIntrinsics;
pub use factors::OnlyIntrinsics;
pub use factors::OnlyLandmarks;
pub use factors::OnlyPose;
pub use factors::OptimizeParams;
pub use factors::PoseAndIntrinsics;
pub use factors::SelfCalibration;
pub use core::variable::Variable;
pub use error::ApexSolverError;
pub use error::ApexSolverResult;
pub use factors::BetweenFactor;
pub use factors::Factor;
pub use factors::PriorFactor;
pub use factors::ProjectionFactor;
pub use linalg::LinearSolverType;
pub use linalg::SparseCholeskySolver;
pub use linalg::SparseLinearSolver;
pub use linalg::SparseQRSolver;
pub use logger::init_logger;
pub use logger::init_logger_with_level;
pub use optimizer::LevenbergMarquardt;
pub use optimizer::OptObserver;
pub use optimizer::OptObserverVec;
pub use optimizer::OptimizerType;
pub use optimizer::Solver;
pub use optimizer::levenberg_marquardt::LevenbergMarquardtConfig;
pub use apex_camera_models;
pub use apex_io;
pub use apex_manifolds;

Modules§

camera_models
core
Core optimization components for the apex-solver library
error
Error types for the apex-solver library
factors
Factor implementations for graph-based optimization problems.
linalg
logger
Centralized logging configuration for apex-solver binaries and examples
manifold
observers
Observer pattern for optimization monitoring.
optimizer
Optimization solvers for nonlinear least squares problems.

Structs§

BalLoader
Loader for BAL (Bundle Adjustment in the Large) dataset files.
DoubleSphereCamera
Double Sphere camera model with 6 parameters.
EucmCamera
Extended Unified Camera Model with 6 parameters.
FovCamera
FOV camera model with 5 parameters.
G2oLoader
High-performance G2O file loader
Graph
Main graph structure containing vertices and edges
KannalaBrandtCamera
Kannala-Brandt fisheye camera model with 8 parameters.
PinholeCamera
Pinhole camera model with 4 intrinsic parameters.
RadTanCamera
A Radial-Tangential camera model with 9 intrinsic parameters.
Rn
Rⁿ group element representing n-dimensional Euclidean vectors.
SE2
SE(2) group element representing rigid body transformations in 2D.
SE3
SE(3) group element representing rigid body transformations in 3D.
SO2
SO(2) group element representing rotations in 2D.
SO3
SO(3) group element representing rotations in 3D.
ToroLoader
TORO format loader
UcmCamera
Unified Camera Model with 5 parameters.

Enums§

ManifoldType

Traits§

CameraModel
Trait for camera projection models.
Interpolatable
Trait for Lie groups that support interpolation.
LieGroup
Core trait for Lie group operations.
Tangent
Trait for Lie algebra operations.