GTSAM
4.0.2
C++ library for smoothing and mapping (SAM)
|
#include <OptionalJacobian.h>
Public Types | |
typedef Eigen::Matrix< double, Rows, Cols > | Jacobian |
Public Member Functions | |
OptionalJacobian () | |
Default constructor. | |
OptionalJacobian (std::nullptr_t) | |
OptionalJacobian (Jacobian &fixed) | |
Constructor that will usurp data of a fixed-size matrix. | |
OptionalJacobian (Jacobian *fixedPtr) | |
Constructor that will usurp data of a fixed-size matrix, pointer version. | |
OptionalJacobian (Eigen::MatrixXd &dynamic) | |
Constructor that will resize a dynamic matrix (unless already correct) | |
OptionalJacobian (Eigen::MatrixXd *dynamic) | |
Constructor that will resize a dynamic matrix (unless already correct) | |
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. | |
OptionalJacobian (const std::optional< std::reference_wrapper< Eigen::MatrixXd >> optional) | |
Constructor compatible with old-style derivatives. | |
operator bool () const | |
Return true if allocated, false if default constructor was used. More... | |
Eigen::Map< Jacobian > & | operator* () |
De-reference, like boost optional. | |
Eigen::Map< Jacobian > * | operator-> () |
operator->() | |
template<int N> | |
OptionalJacobian< Rows, N > | cols (int startCol) |
Friends | |
template<int M, int N> | |
class | OptionalJacobian |
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.
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?
|
inline |
Default constructor with nullptr_t To guide the compiler when nullptr is passed to args of the type OptionalJacobian
|
inline |
Constructor from an Eigen::Ref value. Will not usurp if dimension is wrong.
|
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.
|
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