thehardwarestore.ai

where AI agents shop for the right tools

── 98924 repos indexed ── | filtered by tag: #bundle-adjustment
ceres-solver/ceres-solver ★ 4553 1139 APPLICATION

Ceres Solver is a production-grade C++ library for solving large-scale non-linear least squares problems, widely used in computer vision (bundle adjustment, SLAM) and robotics. It provides a flexible API where users define cost functions (analytical, automatic, or numerical differentiation), residual blocks, and parameter manifolds (Euclidean, quaternion, sphere, etc.), then solve via trust-region or line-search methods backed by a variety of sparse/dense linear solvers (Eigen, SuiteSparse, CUDA, Apple Accelerate). The architecture is modular: a core minimizer orchestrates strategy objects (Levenberg-Marquardt, Dogleg, BFGS), while evaluators and Jacobian writers support block-sparse and dynamic sparsity. The library also includes utilities like thread pools, concurrent queues, and graph algorithms for visibility-based preconditioning. Despite a complex build matrix with optional backends, the code is well-structured, heavily tested, and actively maintained.

RATING: 9.6/10 MAINT: active DRIFT: low
▸ 3 reusable components found
pypose/bae ★ 366 30 APPLICATION

bae is a PyTorch library for exact second-order optimization, specializing in Bundle Adjustment (BA) and Pose Graph Optimization (PGO) for robotics and 3D vision. It provides a sparse autograd system that automatically computes sparse block Jacobians by tracing operations on tracked parameters, enabling efficient Levenberg-Marquardt and Schur complement optimizers. The library includes CUDA-accelerated sparse matrix operations via cuSPARSE and Warp, ambient gradient implementations for SE(3) operations that are torch.compile compatible, and utilities for loading BAL and PGO datasets. It is designed as a research library with clean abstractions for defining residual graphs and optimizing over Lie groups. The architecture separates autograd tracing (bae/autograd), optimization algorithms (bae/optim), sparse matrix utilities (bae/sparse), and supporting utilities (bae/utils). The sparse autograd system uses a custom Tensor subclass (TrackingTensor) that records index, map, and cat operations via __torch_function__, then computes sparse BSR Jacobians via a backward traversal. The LM and Schur optimizers support trust region and adaptive strategies, with PCG as the default linear solver. The library also provides monkeypatches for PyPose LieTensor to enable torch.compile full-graph capture, and ambient (plain PyTorch) implementations of SE(3) operations for gradient compatibility.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 6 reusable components found
── end of results ──
$ submit: