gtsam
4.0.0
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. Finally, there is a constructor that takes boost::none, the default constructor acts like boost::none, and boost::optional<Eigen::MatrixXd&> is also supported for backwards compatibility. Below this class, a dynamic version is also implemented.
Public Member Functions | |
OptionalJacobian () | |
Default constructor acts like boost::none. | |
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 (boost::none_t) | |
Constructor with boost::none just makes empty. | |
OptionalJacobian (const boost::optional< 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. More... | |
Eigen::Map< Jacobian > & | operator * () |
De-reference, like boost optional. | |
Eigen::Map< Jacobian > * | 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. More... | |
Public Types | |
typedef Eigen::Matrix< double, Rows, Cols > | Jacobian |
Jacobian size type TODO(frank): how to enforce RowMajor? Or better, make it work with any storage order? | |
Friends | |
template<int M, int N> | |
class | OptionalJacobian |
|
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 is allocated, false if default constructor was used