pose_graph.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef _POSE_GRAPH_FUNCTION_H_
  2. #define _POSE_GRAPH_FUNCTION_H_
  3. #include <ceres/ceres.h>
  4. #include <Eigen/Dense>
  5. #include <Eigen/Cholesky>
  6. namespace hlzn_slam {
  7. namespace pose_graph {
  8. class TranslationLocalParameterization : public ceres::LocalParameterization
  9. {
  10. virtual bool Plus(const double *x, const double *delta, double *x_plus_delta) const;
  11. virtual bool ComputeJacobian(const double *x, double *jacobian) const;
  12. virtual int GlobalSize() const { return 3; };
  13. virtual int LocalSize() const { return 3; };
  14. };
  15. class QuaternionLocalParameterization : public ceres::LocalParameterization
  16. {
  17. virtual bool Plus(const double *x, const double *delta, double *x_plus_delta) const;
  18. virtual bool ComputeJacobian(const double *x, double *jacobian) const;
  19. virtual int GlobalSize() const { return 4; };
  20. virtual int LocalSize() const { return 3; };
  21. };
  22. class PoseGraphFunction : public ceres::SizedCostFunction<3, 3, 4, 3, 4, 3, 4>
  23. {
  24. public:
  25. PoseGraphFunction();
  26. virtual bool Evaluate(double const *const *parameters, double *residuals, double **jacobians) const;
  27. };
  28. }
  29. }
  30. #endif