NASA Astrobee Robot Software  Astrobee Version:
Flight software for the Astrobee robots operating inside the International Space Station.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
essential.h
Go to the documentation of this file.
1 /* Copyright (c) 2017, United States Government, as represented by the
2  * Administrator of the National Aeronautics and Space Administration.
3  *
4  * All rights reserved.
5  *
6  * The Astrobee platform is licensed under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with the
8  * License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15  * License for the specific language governing permissions and limitations
16  * under the License.
17  */
18 #ifndef INTEREST_POINT_ESSENTIAL_H_
19 #define INTEREST_POINT_ESSENTIAL_H_
20 
21 #include <Eigen/Geometry>
22 
23 #include <vector>
24 #include <utility>
25 
26 namespace interest_point {
27 
28  // Performs a robust, ransac, solving for the essential matrix
29  // between interest point measurements in x1 and x2.
30 bool RobustEssential(Eigen::Matrix3d const& k1, Eigen::Matrix3d const& k2, Eigen::Matrix2Xd const& x1,
31  Eigen::Matrix2Xd const& x2, Eigen::Matrix3d* e, std::vector<size_t>* vec_inliers,
32  std::pair<size_t, size_t> const& size1, std::pair<size_t, size_t> const& size2, double* error_max,
33  double precision, const int ransac_iterations = 4096);
34 
35 // Solves for the RT (Rotation and Translation) from the essential
36 // matrix and x1 and x2. There are 4 possible, and this returns the
37 // best of the 4 solutions.
38 bool EstimateRTFromE(Eigen::Matrix3d const& k1, Eigen::Matrix3d const& k2, Eigen::Matrix2Xd const& x1,
39  Eigen::Matrix2Xd const& x2, Eigen::Matrix3d const& e, std::vector<size_t> const& vec_inliers,
40  Eigen::Matrix3d* r, Eigen::Vector3d* t);
41 
42 } // end namespace interest_point
43 
44 #endif // INTEREST_POINT_ESSENTIAL_H_
interest_point::EstimateRTFromE
bool EstimateRTFromE(Eigen::Matrix3d const &k1, Eigen::Matrix3d const &k2, Eigen::Matrix2Xd const &x1, Eigen::Matrix2Xd const &x2, Eigen::Matrix3d const &e, std::vector< size_t > const &vec_inliers, Eigen::Matrix3d *r, Eigen::Vector3d *t)
Definition: essential.cc:63
interest_point::RobustEssential
bool RobustEssential(Eigen::Matrix3d const &k1, Eigen::Matrix3d const &k2, Eigen::Matrix2Xd const &x1, Eigen::Matrix2Xd const &x2, Eigen::Matrix3d *e, std::vector< size_t > *vec_inliers, std::pair< size_t, size_t > const &size1, std::pair< size_t, size_t > const &size2, double *error_max, double precision, const int ransac_iterations=4096)
Definition: essential.cc:34
point_cloud_common::Vector3d
Eigen::Vector3d Vector3d(const PointType &point)
Definition: utilities.h:328
interest_point
Definition: brisk.h:25