32 template<
int M,
int N1,
int N2>
37 Key key2,
const Eigen::Matrix<double, M, N2>& A2,
38 const Eigen::Matrix<double, M, 1>& b,
39 const SharedDiagonal& model = SharedDiagonal()) :
43 inline Key key1()
const {
46 inline Key key2()
const {
53 gttic(updateHessian_BinaryJacobianFactor);
55 const SharedDiagonal& model =
get_model();
56 if (model && !model->isUnit()) {
57 if (model->isConstrained())
58 throw std::invalid_argument(
59 "BinaryJacobianFactor::updateHessian: cannot update information with " 60 "constrained noise model");
62 key2(), model->Whiten(
getA(
end())), model->whiten(
getb()));
70 const Matrix& Ab = Ab_.
matrix();
71 Eigen::Block<const Matrix, M, N1> A1(Ab, 0, 0);
72 Eigen::Block<const Matrix, M, N2> A2(Ab, 0, N1);
73 Eigen::Block<const Matrix, M, 1> b(Ab, 0, N1 + N2);
86 template<
int M,
int N1,
int N2>
88 BinaryJacobianFactor<M, N1, N2> > {
Access to matrices via blocks of pre-defined sizes. Used in GaussianFactor and GaussianConditional.
Definition: Testable.h:152
const Matrix & matrix() const
Definition: VerticalBlockMatrix.h:188
KeyVector keys_
The keys involved in this factor.
Definition: Factor.h:87
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:108
Definition: SymmetricBlockMatrix.h:53
const_iterator end() const
Definition: Factor.h:148
DenseIndex nBlocks() const
Block count.
Definition: SymmetricBlockMatrix.h:122
Definition: BinaryJacobianFactor.h:33
const constBVector getb() const
Definition: JacobianFactor.h:298
void updateDiagonalBlock(DenseIndex I, const XprType &xpr)
Increment the diagonal block by the values in xpr. Only reads the upper triangular part of xpr...
Definition: SymmetricBlockMatrix.h:214
Definition: JacobianFactor.h:91
Definition: chartTesting.h:28
void updateHessian(const KeyVector &infoKeys, SymmetricBlockMatrix *info) const override
Definition: BinaryJacobianFactor.h:51
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
constABlock getA() const
Definition: JacobianFactor.h:304
void updateOffDiagonalBlock(DenseIndex I, DenseIndex J, const XprType &xpr)
Definition: SymmetricBlockMatrix.h:230
BinaryJacobianFactor(Key key1, const Eigen::Matrix< double, M, N1 > &A1, Key key2, const Eigen::Matrix< double, M, N2 > &A2, const Eigen::Matrix< double, M, 1 > &b, const SharedDiagonal &model=SharedDiagonal())
Constructor.
Definition: BinaryJacobianFactor.h:36
Eigen::SelfAdjointView< Block, Eigen::Upper > diagonalBlock(DenseIndex J)
Return the J'th diagonal block as a self adjoint view.
Definition: SymmetricBlockMatrix.h:137
const_iterator begin() const
Definition: Factor.h:145
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
const SharedDiagonal & get_model() const
Definition: JacobianFactor.h:292