|
gtsam
|
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.
Public Member Functions | |
| OptionalJacobian () | |
| Default constructor. | |
| OptionalJacobian (std::nullptr_t) | |
| Default constructor with nullptr_t To guide the compiler when nullptr is passed to args of the type OptionalJacobian. | |
| 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. | |
| 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 | |
| Constructor that will usurp data of a block expression TODO(frank): unfortunately using a Map makes usurping non-contiguous memory impossible. | |
| Map & | operator* () |
| De-reference, like boost optional. | |
| Map * | operator-> () |
| operator->() | |
| template<int N> | |
| OptionalJacobian< Rows, N > | cols (int startCol) |
| Access M*N sub-block if we are allocated, otherwise none TODO(frank): this could work as is below if only constructor above worked. | |
Public Types | |
| typedef Eigen::Matrix< double, Rows, Cols > | Jacobian |
| Jacobian size type TODO(frank): how to enforce RowMajor? | |
| typedef Eigen::Stride< Eigen::Dynamic, 1 > | Stride |
| typedef Eigen::Map< Jacobian, 0, Stride > | Map |
| 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 |
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 |
Constructor that will usurp data of a block expression TODO(frank): unfortunately using a Map makes usurping non-contiguous memory impossible.
Return true if allocated, false if default constructor was used