GTSAM
4.0.2
C++ library for smoothing and mapping (SAM)
|
Public Types | |
using | Sparse = Eigen::SparseMatrix< double > |
using | Parameters = ShonanAveragingParameters< d > |
using | Rot = typename Parameters::Rot |
using | Measurements = std::vector< BinaryMeasurement< Rot > > |
Public Member Functions | |
ShonanAveraging3 (const Measurements &measurements, const Parameters ¶meters=Parameters()) | |
ShonanAveraging3 (std::string g2oFile, const Parameters ¶meters=Parameters()) | |
ShonanAveraging3 (const BetweenFactorPose3s &factors, const Parameters ¶meters=Parameters()) | |
std::vector< BinaryMeasurement< T > > | maybeRobust (const std::vector< BinaryMeasurement< T >> &measurements, bool useRobustModel=false) const |
Query properties | |
size_t | nrUnknowns () const |
Return number of unknowns. | |
size_t | numberMeasurements () const |
Return number of measurements. | |
const BinaryMeasurement< Rot > & | measurement (size_t k) const |
k^th binary measurement | |
Measurements | makeNoiseModelRobust (const Measurements &measurements, double k=1.345) const |
const Rot & | measured (size_t k) const |
k^th measurement, as a Rot. | |
const KeyVector & | keys (size_t k) const |
Keys for k^th measurement, as a vector of Key values. | |
Basic API | |
double | cost (const Values &values) const |
Values | initializeRandomly (std::mt19937 &rng) const |
Values | initializeRandomly () const |
Random initialization for wrapper, fixed random seed. | |
std::pair< Values, double > | run (const Values &initialEstimate, size_t pMin=d, size_t pMax=10) const |
Matrix API (advanced use, debugging) | |
Sparse | D () const |
Sparse version of D. | |
Matrix | denseD () const |
Dense version of D. | |
Sparse | Q () const |
Sparse version of Q. | |
Matrix | denseQ () const |
Dense version of Q. | |
Sparse | L () const |
Sparse version of L. | |
Matrix | denseL () const |
Dense version of L. | |
Sparse | computeLambda (const Matrix &S) const |
Version that takes pxdN Stiefel manifold elements. | |
Matrix | computeLambda_ (const Values &values) const |
Dense versions of computeLambda for wrapper/testing. | |
Matrix | computeLambda_ (const Matrix &S) const |
Dense versions of computeLambda for wrapper/testing. | |
Sparse | computeA (const Values &values) const |
Compute A matrix whose Eigenvalues we will examine. | |
Sparse | computeA (const Matrix &S) const |
Version that takes pxdN Stiefel manifold elements. | |
Matrix | computeA_ (const Values &values) const |
Dense version of computeA for wrapper/testing. | |
double | computeMinEigenValue (const Values &values, Vector *minEigenVector=nullptr) const |
double | computeMinEigenValueAP (const Values &values, Vector *minEigenVector=nullptr) const |
Values | roundSolutionS (const Matrix &S) const |
Project pxdN Stiefel manifold matrix S to Rot3^N. | |
Matrix | riemannianGradient (size_t p, const Values &values) const |
Calculate the riemannian gradient of F(values) at values. | |
Values | initializeWithDescent (size_t p, const Values &values, const Vector &minEigenVector, double minEigenValue, double gradienTolerance=1e-2, double preconditionedGradNormTolerance=1e-4) const |
static Matrix | StiefelElementMatrix (const Values &values) |
Project to pxdN Stiefel manifold. | |
static VectorValues | TangentVectorValues (size_t p, const Vector &v) |
Create a VectorValues with eigenvector v_i. | |
static Values | LiftwithDescent (size_t p, const Values &values, const Vector &minEigenVector) |
Advanced API | |
Sparse | computeLambda (const Values &values) const |
NonlinearFactorGraph | buildGraphAt (size_t p) const |
Values | initializeRandomlyAt (size_t p, std::mt19937 &rng) const |
Values | initializeRandomlyAt (size_t p) const |
Version of initializeRandomlyAt with fixed random seed. | |
double | costAt (size_t p, const Values &values) const |
std::pair< double, Vector > | computeMinEigenVector (const Values &values) const |
bool | checkOptimality (const Values &values) const |
std::shared_ptr< LevenbergMarquardtOptimizer > | createOptimizerAt (size_t p, const Values &initial) const |
Values | tryOptimizingAt (size_t p, const Values &initial) const |
Values | projectFrom (size_t p, const Values &values) const |
Values | roundSolution (const Values &values) const |
static Values | LiftTo (size_t p, const Values &values) |
Lift Values of type T to SO(p) | |
|
inherited |
Build graph for SO(p)
p | the dimensionality of the rotation manifold to optimize over |
|
inherited |
Check optimality
values | should be of type SOn |
|
inherited |
Given an estimated local minimum Yopt for the (possibly lifted) relaxation, this function computes and returns the block-diagonal elements of the corresponding Lagrange multiplier.
|
inherited |
Compute minimum eigenvalue for optimality check.
values | should be of type SOn |
|
inherited |
Compute minimum eigenvalue with accelerated power method.
values | should be of type SOn |
|
inherited |
Compute minimum eigenvalue for optimality check.
values | should be of type SOn |
|
inherited |
|
inherited |
Calculate cost for SO(p) Values should be of type SO(p)
|
inherited |
Try to create optimizer at SO(p)
p | the dimensionality of the rotation manifold to optimize over |
initial | initial SO(p) values |
|
inherited |
Initialize randomly at SO(d)
rng | random number generator Example: std::mt19937 rng(42); Values initial = initializeRandomly(rng, p); |
|
inherited |
Create initial Values of type SO(p)
p | the dimensionality of the rotation manifold |
rng | random number generator |
|
inherited |
Given some values at p-1, return new values at p, by doing a line search along the descent direction, computed from the minimum eigenvector at p-1.
values | should be of type SO(p-1) |
minEigenVector | corresponding to minEigenValue at level p-1 |
|
staticinherited |
Lift up the dimension of values in type SO(p-1) with descent direction provided by minEigenVector and return new values in type SO(p)
|
inlineinherited |
Update factors to use robust Huber loss.
measurements | Vector of BinaryMeasurements. |
k | Huber noise model threshold. |
|
inlineinherited |
Helper function to convert measurements to robust noise model if flag is set.
T | the type of measurement, e.g. Rot3. |
measurements | vector of BinaryMeasurements of type T. |
useRobustModel | flag indicating whether use robust noise model instead. |
|
inherited |
|
inherited |
Project from SO(p)^N to Rot2^N or Rot3^N Values should be of type SO(p)
|
inherited |
|
inherited |
Try to optimize at SO(p)
p | the dimensionality of the rotation manifold to optimize over |
initial | initial SO(p) values |