Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
gtsam::OptionalJacobian< Rows, Cols > Class Template Reference

#include <OptionalJacobian.h>

Public Types

typedef Eigen::Matrix< double, Rows, ColsJacobian
 

Public Member Functions

template<int N>
OptionalJacobian< Rows, Ncols (int startCol)
 
 operator bool () const
 Return true if allocated, false if default constructor was used. More...
 
Eigen::Map< Jacobian > & operator* ()
 De-reference, like boost optional. More...
 
Eigen::Map< Jacobian > * operator-> ()
 operator->() More...
 
 OptionalJacobian ()
 Default constructor. More...
 
 OptionalJacobian (std::nullptr_t)
 
 OptionalJacobian (Jacobian &fixed)
 Constructor that will usurp data of a fixed-size matrix. More...
 
 OptionalJacobian (Jacobian *fixedPtr)
 Constructor that will usurp data of a fixed-size matrix, pointer version. More...
 
 OptionalJacobian (Eigen::MatrixXd &dynamic)
 Constructor that will resize a dynamic matrix (unless already correct) More...
 
 OptionalJacobian (Eigen::MatrixXd *dynamic)
 Constructor that will resize a dynamic matrix (unless already correct) More...
 
template<class MATRIX >
 OptionalJacobian (Eigen::Ref< MATRIX > dynamic_ref)
 Constructor from an Eigen::Ref value. Will not usurp if dimension is wrong. More...
 
 OptionalJacobian (std::nullopt_t)
 Constructor with std::nullopt just makes empty. More...
 
 OptionalJacobian (const std::optional< std::reference_wrapper< Eigen::MatrixXd >> optional)
 Constructor compatible with old-style derivatives. More...
 

Private Member Functions

 OptionalJacobian (double *data)
 
void usurp (double *data)
 View on constructor argument, if given. More...
 

Private Attributes

Eigen::Map< Jacobianmap_
 

Friends

template<int M, int N>
class OptionalJacobian
 

Detailed Description

template<int Rows, int Cols>
class gtsam::OptionalJacobian< Rows, Cols >

OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size or dynamic Eigen matrix. In the latter case, the dynamic matrix will be resized. Below this class, a dynamic version is also implemented.

Definition at line 38 of file OptionalJacobian.h.

Member Typedef Documentation

◆ Jacobian

template<int Rows, int Cols>
typedef Eigen::Matrix<double, Rows, Cols> gtsam::OptionalJacobian< Rows, Cols >::Jacobian

Jacobian size type TODO(frank): how to enforce RowMajor? Or better, make it work with any storage order?

Definition at line 44 of file OptionalJacobian.h.

Constructor & Destructor Documentation

◆ OptionalJacobian() [1/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( double *  data)
inlineprivate

Definition at line 57 of file OptionalJacobian.h.

◆ OptionalJacobian() [2/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( )
inline

Default constructor.

Definition at line 67 of file OptionalJacobian.h.

◆ OptionalJacobian() [3/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( std::nullptr_t  )
inline

Default constructor with nullptr_t To guide the compiler when nullptr is passed to args of the type OptionalJacobian

Definition at line 74 of file OptionalJacobian.h.

◆ OptionalJacobian() [4/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( Jacobian fixed)
inline

Constructor that will usurp data of a fixed-size matrix.

Definition at line 79 of file OptionalJacobian.h.

◆ OptionalJacobian() [5/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( Jacobian fixedPtr)
inline

Constructor that will usurp data of a fixed-size matrix, pointer version.

Definition at line 85 of file OptionalJacobian.h.

◆ OptionalJacobian() [6/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( Eigen::MatrixXd &  dynamic)
inline

Constructor that will resize a dynamic matrix (unless already correct)

Definition at line 92 of file OptionalJacobian.h.

◆ OptionalJacobian() [7/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( Eigen::MatrixXd *  dynamic)
inline

Constructor that will resize a dynamic matrix (unless already correct)

Definition at line 99 of file OptionalJacobian.h.

◆ OptionalJacobian() [8/10]

template<int Rows, int Cols>
template<class MATRIX >
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( Eigen::Ref< MATRIX >  dynamic_ref)
inline

Constructor from an Eigen::Ref value. Will not usurp if dimension is wrong.

Note
This is important so we don't overwrite someone else's memory!

Definition at line 112 of file OptionalJacobian.h.

◆ OptionalJacobian() [9/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( std::nullopt_t  )
inline

Constructor with std::nullopt just makes empty.

Definition at line 126 of file OptionalJacobian.h.

◆ OptionalJacobian() [10/10]

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::OptionalJacobian ( const std::optional< std::reference_wrapper< Eigen::MatrixXd >>  optional)
inline

Constructor compatible with old-style derivatives.

Definition at line 131 of file OptionalJacobian.h.

Member Function Documentation

◆ cols()

template<int Rows, int Cols>
template<int N>
OptionalJacobian<Rows, N> gtsam::OptionalJacobian< Rows, Cols >::cols ( int  startCol)
inline

Access M*N sub-block if we are allocated, otherwise none TODO(frank): this could work as is below if only constructor above worked Access Rows*N sub-block if we are allocated, otherwise return an empty OptionalJacobian The use case is functions with arguments that are dissected, e.g. Pose3 into Rot3, Point3 TODO(frank): ideally, we'd like full block functionality, but see note above.

Definition at line 172 of file OptionalJacobian.h.

◆ operator bool()

template<int Rows, int Cols>
gtsam::OptionalJacobian< Rows, Cols >::operator bool ( ) const
inline

Return true if allocated, false if default constructor was used.

Constructor that will usurp data of a block expression TODO(frank): unfortunately using a Map makes usurping non-contiguous memory impossible

Definition at line 144 of file OptionalJacobian.h.

◆ operator*()

template<int Rows, int Cols>
Eigen::Map<Jacobian>& gtsam::OptionalJacobian< Rows, Cols >::operator* ( )
inline

De-reference, like boost optional.

Definition at line 149 of file OptionalJacobian.h.

◆ operator->()

template<int Rows, int Cols>
Eigen::Map<Jacobian>* gtsam::OptionalJacobian< Rows, Cols >::operator-> ( )
inline

operator->()

Definition at line 154 of file OptionalJacobian.h.

◆ usurp()

template<int Rows, int Cols>
void gtsam::OptionalJacobian< Rows, Cols >::usurp ( double *  data)
inlineprivate

View on constructor argument, if given.

Definition at line 52 of file OptionalJacobian.h.

Friends And Related Function Documentation

◆ OptionalJacobian

template<int Rows, int Cols>
template<int M, int N>
friend class OptionalJacobian
friend

Definition at line 62 of file OptionalJacobian.h.

Member Data Documentation

◆ map_

template<int Rows, int Cols>
Eigen::Map<Jacobian> gtsam::OptionalJacobian< Rows, Cols >::map_
private

Definition at line 48 of file OptionalJacobian.h.


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


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:47:05