GTSAM  4.0.2
C++ library for smoothing and mapping (SAM)
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
gtsam::Basis< DERIVED >::ManifoldEvaluationFunctor< T > Class Template Reference

#include <Basis.h>

Inheritance diagram for gtsam::Basis< DERIVED >::ManifoldEvaluationFunctor< T >:
Inheritance graph
[legend]
Collaboration diagram for gtsam::Basis< DERIVED >::ManifoldEvaluationFunctor< T >:
Collaboration graph
[legend]

Public Member Functions

 ManifoldEvaluationFunctor ()
 For serialization.
 
 ManifoldEvaluationFunctor (size_t N, double x)
 Default Constructor.
 
 ManifoldEvaluationFunctor (size_t N, double x, double a, double b)
 Constructor, with interval [a,b].
 
apply (const ParameterMatrix< M > &P, OptionalJacobian< -1, -1 > H={}) const
 Manifold evaluation.
 
operator() (const ParameterMatrix< M > &P, OptionalJacobian< -1, -1 > H={}) const
 c++ sugar
 
double apply (const typename DERIVED::Parameters &p, OptionalJacobian<-1, -1 > H={}) const
 Regular 1D evaluation.
 
double operator() (const typename DERIVED::Parameters &p, OptionalJacobian<-1, -1 > H={}) const
 c++ sugar
 

Protected Types

using VectorM = Eigen::Matrix< double, M, 1 >
 
using Jacobian = Eigen::Matrix< double, M, -1 >
 

Protected Member Functions

void calculateJacobian ()
 
void print (const std::string &s="") const
 

Protected Attributes

Jacobian H_
 
Weights weights_
 

Detailed Description

template<typename DERIVED>
template<class T>
class gtsam::Basis< DERIVED >::ManifoldEvaluationFunctor< T >

Manifold EvaluationFunctor at a given x, applied to ParameterMatrix<M>. This functor is used to evaluate a parameterized function at a given scalar value x. When given a specific M*N parameters, returns an M-vector the M corresponding functions at x, possibly with Jacobians wrpt the parameters.

The difference with the VectorEvaluationFunctor is that after computing the M*1 vector xi=F(x;P), with x a scalar and P the M*N parameter vector, we also retract xi back to the T manifold. For example, if T==Rot3, then we first compute a 3-vector xi using x and P, and then map that 3-vector xi back to the Rot3 manifold, yielding a valid 3D rotation.

Member Function Documentation

◆ calculateJacobian()

void gtsam::Basis< DERIVED >::VectorEvaluationFunctor< M >::calculateJacobian ( )
inlineprotectedinherited

Calculate the M*(M*N) Jacobian of this functor with respect to the M*N parameter matrix P. We flatten assuming column-major order, e.g., if N=3 and M=2, we have H =[ w(0) 0 w(1) 0 w(2) 0 0 w(0) 0 w(1) 0 w(2) ] i.e., the Kronecker product of weights_ with the MxM identity matrix.


The documentation for this class was generated from the following file: