Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef CARTOGRAPHER_MAPPING_INTERNAL_2D_SCAN_MATCHING_CERES_SCAN_MATCHER_2D_H_
00018 #define CARTOGRAPHER_MAPPING_INTERNAL_2D_SCAN_MATCHING_CERES_SCAN_MATCHER_2D_H_
00019
00020 #include <memory>
00021 #include <vector>
00022
00023 #include "Eigen/Core"
00024 #include "cartographer/common/lua_parameter_dictionary.h"
00025 #include "cartographer/mapping/2d/grid_2d.h"
00026 #include "cartographer/mapping/proto/scan_matching/ceres_scan_matcher_options_2d.pb.h"
00027 #include "cartographer/sensor/point_cloud.h"
00028 #include "ceres/ceres.h"
00029
00030 namespace cartographer {
00031 namespace mapping {
00032 namespace scan_matching {
00033
00034 proto::CeresScanMatcherOptions2D CreateCeresScanMatcherOptions2D(
00035 common::LuaParameterDictionary* parameter_dictionary);
00036
00037
00038 class CeresScanMatcher2D {
00039 public:
00040 explicit CeresScanMatcher2D(const proto::CeresScanMatcherOptions2D& options);
00041 virtual ~CeresScanMatcher2D();
00042
00043 CeresScanMatcher2D(const CeresScanMatcher2D&) = delete;
00044 CeresScanMatcher2D& operator=(const CeresScanMatcher2D&) = delete;
00045
00046
00047
00048
00049 void Match(const Eigen::Vector2d& target_translation,
00050 const transform::Rigid2d& initial_pose_estimate,
00051 const sensor::PointCloud& point_cloud, const Grid2D& grid,
00052 transform::Rigid2d* pose_estimate,
00053 ceres::Solver::Summary* summary) const;
00054
00055 private:
00056 const proto::CeresScanMatcherOptions2D options_;
00057 ceres::Solver::Options ceres_solver_options_;
00058 };
00059
00060 }
00061 }
00062 }
00063
00064 #endif // CARTOGRAPHER_MAPPING_INTERNAL_2D_SCAN_MATCHING_CERES_SCAN_MATCHER_2D_H_