Skip to content

Commit ef38f58

Browse files
author
Rainer Kuemmerle
committedMay 11, 2014
replace constants by static class members
1 parent 67d5fa7 commit ef38f58

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed
 

‎g2o/examples/bal/bal_example.cpp

+14-8
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class VertexCameraBAL : public BaseVertex<9, Eigen::VectorXd>
8888

8989
virtual void oplusImpl(const double* update)
9090
{
91-
Eigen::VectorXd::ConstMapType v(update, 9);
91+
Eigen::VectorXd::ConstMapType v(update, VertexCameraBAL::Dimension);
9292
_estimate += v;
9393
}
9494
};
@@ -258,18 +258,24 @@ class EdgeObservationBAL : public BaseBinaryEdge<2, Vector2d, VertexCameraBAL, V
258258

259259
const VertexCameraBAL* cam = static_cast<const VertexCameraBAL*>(vertex(0));
260260
const VertexPointBAL* point = static_cast<const VertexPointBAL*>(vertex(1));
261-
typedef ceres::internal::AutoDiff<EdgeObservationBAL, double, 9, 3> BalAutoDiff;
261+
typedef ceres::internal::AutoDiff<EdgeObservationBAL, double, VertexCameraBAL::Dimension, VertexPointBAL::Dimension> BalAutoDiff;
262262

263-
Matrix<double, 2 , 9, Eigen::RowMajor> dError_dCamera;
264-
Matrix<double, 2 , 3, Eigen::RowMajor> dError_dPoint;
263+
Matrix<double, Dimension, VertexCameraBAL::Dimension, Eigen::RowMajor> dError_dCamera;
264+
Matrix<double, Dimension, VertexPointBAL::Dimension, Eigen::RowMajor> dError_dPoint;
265265
double *parameters[] = { const_cast<double*>(cam->estimate().data()), const_cast<double*>(point->estimate().data()) };
266266
double *jacobians[] = { dError_dCamera.data(), dError_dPoint.data() };
267-
double value[2];
268-
BalAutoDiff::Differentiate(*this, parameters, 2, value, jacobians);
267+
double value[Dimension];
268+
bool diffState = BalAutoDiff::Differentiate(*this, parameters, Dimension, value, jacobians);
269269

270270
// copy over the Jacobians (convert row-major -> column-major)
271-
_jacobianOplusXi = dError_dCamera;
272-
_jacobianOplusXj = dError_dPoint;
271+
if (diffState) {
272+
_jacobianOplusXi = dError_dCamera;
273+
_jacobianOplusXj = dError_dPoint;
274+
} else {
275+
assert(0 && "Error while differentiating");
276+
_jacobianOplusXi.setZero();
277+
_jacobianOplusXi.setZero();
278+
}
273279
}
274280
};
275281

0 commit comments

Comments
 (0)