Point Cloud Library (PCL)  1.3.1
poses_from_matches.h
Go to the documentation of this file.
00001 /*
00002  * Software License Agreement (BSD License)
00003  *
00004  *  Copyright (c) 2010, Willow Garage, Inc.
00005  *  All rights reserved.
00006  *
00007  *  Redistribution and use in source and binary forms, with or without
00008  *  modification, are permitted provided that the following conditions
00009  *  are met:
00010  *
00011  *   * Redistributions of source code must retain the above copyright
00012  *     notice, this list of conditions and the following disclaimer.
00013  *   * Redistributions in binary form must reproduce the above
00014  *     copyright notice, this list of conditions and the following
00015  *     disclaimer in the documentation and/or other materials provided
00016  *     with the distribution.
00017  *   * Neither the name of Willow Garage, Inc. nor the names of its
00018  *     contributors may be used to endorse or promote products derived
00019  *     from this software without specific prior written permission.
00020  *
00021  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00022  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00023  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00024  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00025  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00026  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00027  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00028  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029  *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00030  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00031  *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00032  *  POSSIBILITY OF SUCH DAMAGE.
00033  *
00034  */
00035 
00036 #ifndef PCL_POSES_FROM_MATCHES_H_
00037 #define PCL_POSES_FROM_MATCHES_H_
00038 
00039 #include <pcl/pcl_macros.h>
00040 #include <pcl/common/point_correspondence.h>
00041 
00042 namespace pcl
00043 {
00049   class PCL_EXPORTS PosesFromMatches
00050   {
00051     public:
00052       // =====CONSTRUCTOR & DESTRUCTOR=====
00054       PosesFromMatches();
00056       ~PosesFromMatches();
00057       
00058       // =====STRUCTS=====
00060       struct Parameters
00061       {
00062         Parameters() : max_correspondence_distance_error(0.2f) {}
00063         float max_correspondence_distance_error;  // As a fraction
00064       };
00065 
00067       struct PoseEstimate
00068       {
00069         Eigen::Affine3f transformation;   
00070         float score;                         
00071         std::vector<int> correspondence_indices;  
00072         struct IsBetter {
00073           bool operator()(const PoseEstimate& pe1, const PoseEstimate& pe2) const { return pe1.score>pe2.score;}
00074         };
00075         public:
00076           EIGEN_MAKE_ALIGNED_OPERATOR_NEW
00077       };
00078       
00079       // =====TYPEDEFS=====
00080       typedef std::vector<PoseEstimate, Eigen::aligned_allocator<PoseEstimate> > PoseEstimatesVector;
00081 
00082       
00083       // =====STATIC METHODS=====
00084       
00085       // =====PUBLIC METHODS=====
00089       void 
00090       estimatePosesUsing1Correspondence (
00091           const PointCorrespondences6DVector& correspondences,
00092           int max_no_of_results, PoseEstimatesVector& pose_estimates) const;
00093 
00096       void 
00097       estimatePosesUsing2Correspondences (
00098           const PointCorrespondences6DVector& correspondences,
00099           int max_no_of_tested_combinations, int max_no_of_results,
00100           PoseEstimatesVector& pose_estimates) const;
00101       
00104       void 
00105       estimatePosesUsing3Correspondences (
00106           const PointCorrespondences6DVector& correspondences,
00107           int max_no_of_tested_combinations, int max_no_of_results,
00108           PoseEstimatesVector& pose_estimates) const;
00109 
00111       Parameters& 
00112       getParameters () { return parameters_; }
00113 
00114     protected:
00115       // =====PROTECTED MEMBER VARIABLES=====
00116       Parameters parameters_;
00117 
00118   };
00119 
00120 }  // end namespace pcl
00121 
00122 #endif  //#ifndef PCL_POSES_FROM_MATCHES_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines