27template <
int D,
typename T>
28BaseVertex<D, T>::BaseVertex()
29 : OptimizableGraph::Vertex(), _hessian(nullptr, D, D) {
33template <
int D,
typename T>
34double BaseVertex<D, T>::solveDirect(
double lambda) {
35 Eigen::Matrix<double, D, D, Eigen::ColMajor> tempA =
36 _hessian + Eigen::Matrix<double, D, D, Eigen::ColMajor>::Identity(
39 double det = tempA.determinant();
40 if (
g2o_isnan(det) || det < std::numeric_limits<double>::epsilon())
42 Eigen::Matrix<double, D, 1, Eigen::ColMajor> dx = tempA.llt().solve(_b);
47template <
int D,
typename T>
48void BaseVertex<D, T>::clearQuadraticForm() {
52template <
int D,
typename T>
53void BaseVertex<D, T>::mapHessianMemory(
double* d) {
55 new (&_hessian) HessianBlockType(d, vertexDim, vertexDim);