|
| virtual | ~PinholeSet () |
| |
|
TriangulationResult | triangulateSafe (const typename CAMERA::MeasurementVector &measured, const TriangulationParameters ¶ms) const |
| | triangulateSafe
|
| |
|
bool | equals (const CameraSet &p, double tol=1e-9) const |
| | equals
|
| |
| template<class POINT > |
| ZVector | project2 (const POINT &point, FBlocks *Fs=nullptr, Matrix *E=nullptr) const |
| |
| template<class POINT , class... OptArgs> |
| ZVector | project2 (const POINT &point, OptArgs &... args) const |
| |
|
template<class POINT > |
| Vector | reprojectionError (const POINT &point, const ZVector &measured, FBlocks *Fs=nullptr, Matrix *E=nullptr) const |
| | Calculate vector [project2(point)-z] of re-projection errors.
|
| |
| template<class POINT , class... OptArgs, typename = std::enable_if_t<sizeof...(OptArgs)!=0>> |
| Vector | reprojectionError (const POINT &point, const ZVector &measured, OptArgs &... args) const |
| |
|
|
void | print (const std::string &s="") const override |
| | print
|
| |
|
bool | equals (const PinholeSet &p, double tol=1e-9) const |
| | equals
|
| |
|
| 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) |
| |
| template<int N> |
| static SymmetricBlockMatrix | SchurComplement (const FBlocks &Fs, const Matrix &E, const Eigen::Matrix< double, N, N > &P, const Vector &b) |
| |
| static SymmetricBlockMatrix | SchurComplement (const FBlocks &Fblocks, const Matrix &E, const Vector &b, const double lambda=0.0, bool diagonalDamping=false) |
| |
| 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) |
| |
|
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.
|
| |
| 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) |
| |
template<class CAMERA>
class gtsam::PinholeSet< CAMERA >
PinholeSet: triangulates point and keeps an estimate of it around.
template<class CAMERA>
template<int N, int ND, int NDD>
| static SymmetricBlockMatrix gtsam::CameraSet< CAMERA >::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 |
|
) |
| |
|
inlinestaticinherited |
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.
N = 2 or 3 (point dimension), ND is the Jacobian block dimension, NDD is the Hessian block dimension