NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
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