|
template<int N, int ND> |
static SymmetricBlockMatrix | SchurComplement (const std::vector< Eigen::Matrix< double, ZDim, ND >, Eigen::aligned_allocator< Eigen::Matrix< double, ZDim, ND > > > &Fs, const Matrix &E, const Eigen::Matrix< double, N, N > &P, const Vector &b) |
| Do Schur complement, given Jacobian as Fs,E,P, return SymmetricBlockMatrix G = F' * F - F' * E * P * E' * F g = F' * (b - E * P * E' * b) Fixed size version.
|
|
template<int N, int ND, int NDD> |
static SymmetricBlockMatrix | SchurComplementAndRearrangeBlocks (const std::vector< Eigen::Matrix< double, ZDim, ND >, Eigen::aligned_allocator< Eigen::Matrix< double, ZDim, ND > > > &Fs, const Matrix &E, const Eigen::Matrix< double, N, N > &P, const Vector &b, const KeyVector &jacobianKeys, const KeyVector &hessianKeys) |
| Do Schur complement, given Jacobian as Fs,E,P, return SymmetricBlockMatrix G = F' * F - F' * E * P * E' * F g = F' * (b - E * P * E' * b) In this version, we allow for the case where the keys in the Jacobian are organized differently from the keys in the output SymmetricBlockMatrix In particular: each diagonal block of the Jacobian F captures 2 poses (useful for rolling shutter and extrinsic calibration) such that F keeps the block structure that makes the Schur complement trick fast. More...
|
|
template<int N> |
static SymmetricBlockMatrix | SchurComplement (const FBlocks &Fs, const Matrix &E, const Eigen::Matrix< double, N, N > &P, const Vector &b) |
| Do Schur complement, given Jacobian as Fs,E,P, return SymmetricBlockMatrix G = F' * F - F' * E * P * E' * F g = F' * (b - E * P * E' * b) Fixed size version.
|
|
template<int N> |
static void | ComputePointCovariance (Eigen::Matrix< double, N, N > &P, const Matrix &E, double lambda, bool diagonalDamping=false) |
| Computes Point Covariance P, with lambda parameter.
|
|
static Matrix | PointCov (const Matrix &E, const double lambda=0.0, bool diagonalDamping=false) |
| Computes Point Covariance P, with lambda parameter, dynamic version.
|
|
static SymmetricBlockMatrix | SchurComplement (const FBlocks &Fblocks, const Matrix &E, const Vector &b, const double lambda=0.0, bool diagonalDamping=false) |
| Do Schur complement, given Jacobian as Fs,E,P, return SymmetricBlockMatrix Dynamic version.
|
|
template<int N> |
static void | UpdateSchurComplement (const FBlocks &Fs, const Matrix &E, const Eigen::Matrix< double, N, N > &P, const Vector &b, const KeyVector &allKeys, const KeyVector &keys, SymmetricBlockMatrix &augmentedHessian) |
| Applies Schur complement (exploiting block structure) to get a smart factor on cameras, and adds the contribution of the smart factor to a pre-allocated augmented Hessian.
|
|
using | MatrixZD = Eigen::Matrix< double, ZDim, D > |
| Definitions for blocks of F.
|
|
using | FBlocks = std::vector< MatrixZD, Eigen::aligned_allocator< MatrixZD > > |
|
typedef CAMERA::Measurement | Z |
| 2D measurement and noise model for each of the m views The order is kept the same as the keys that we use to create the factor.
|
|
typedef CAMERA::MeasurementVector | ZVector |
|
static Vector | ErrorVector (const ZVector &predicted, const ZVector &measured) |
| Make a vector of re-projection errors.
|
|
static const int | D = traits<CAMERA>::dimension |
| Camera dimension.
|
|
static const int | ZDim = traits<Z>::dimension |
| Measurement dimension.
|
|