utils.cpp
Go to the documentation of this file.
1 // Copyright 2022 Kell Ideas sp. z o.o.
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and associated documentation files (the "Software"), to deal
5 // in the Software without restriction, including without limitation the rights
6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 // copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 // THE SOFTWARE.
20 
21 #include "tf2/convert.h"
23 
24 #include "aruco_opencv/utils.hpp"
25 
26 namespace aruco_opencv {
27 
28 using cv::aruco::PREDEFINED_DICTIONARY_NAME;
29 
30 geometry_msgs::Pose convert_rvec_tvec(const cv::Vec3d &rvec, const cv::Vec3d &tvec) {
31  geometry_msgs::Pose pose_out;
32 
33  cv::Mat rot(3, 3, CV_64FC1);
34  cv::Rodrigues(rvec, rot);
35 
36  tf2::Matrix3x3 tf_rot(rot.at<double>(0, 0), rot.at<double>(0, 1), rot.at<double>(0, 2),
37  rot.at<double>(1, 0), rot.at<double>(1, 1), rot.at<double>(1, 2),
38  rot.at<double>(2, 0), rot.at<double>(2, 1), rot.at<double>(2, 2));
39  tf2::Quaternion tf_quat;
40  tf_rot.getRotation(tf_quat);
41 
42  pose_out.position.x = tvec[0];
43  pose_out.position.y = tvec[1];
44  pose_out.position.z = tvec[2];
45  tf2::convert(tf_quat, pose_out.orientation);
46 
47  return pose_out;
48 }
49 
50 const std::unordered_map<std::string, cv::aruco::PREDEFINED_DICTIONARY_NAME> ARUCO_DICT_MAP = {
51  {"4X4_50", PREDEFINED_DICTIONARY_NAME::DICT_4X4_50},
52  {"4X4_100", PREDEFINED_DICTIONARY_NAME::DICT_4X4_100},
53  {"4X4_250", PREDEFINED_DICTIONARY_NAME::DICT_4X4_250},
54  {"4X4_1000", PREDEFINED_DICTIONARY_NAME::DICT_4X4_1000},
55  {"5X5_50", PREDEFINED_DICTIONARY_NAME::DICT_5X5_50},
56  {"5X5_100", PREDEFINED_DICTIONARY_NAME::DICT_5X5_100},
57  {"5X5_250", PREDEFINED_DICTIONARY_NAME::DICT_5X5_250},
58  {"5X5_1000", PREDEFINED_DICTIONARY_NAME::DICT_5X5_1000},
59  {"6X6_50", PREDEFINED_DICTIONARY_NAME::DICT_6X6_50},
60  {"6X6_100", PREDEFINED_DICTIONARY_NAME::DICT_6X6_100},
61  {"6X6_250", PREDEFINED_DICTIONARY_NAME::DICT_6X6_250},
62  {"6X6_1000", PREDEFINED_DICTIONARY_NAME::DICT_6X6_1000},
63  {"7X7_50", PREDEFINED_DICTIONARY_NAME::DICT_7X7_50},
64  {"7X7_100", PREDEFINED_DICTIONARY_NAME::DICT_7X7_100},
65  {"7X7_250", PREDEFINED_DICTIONARY_NAME::DICT_7X7_250},
66  {"7X7_1000", PREDEFINED_DICTIONARY_NAME::DICT_7X7_1000},
67  {"ARUCO_ORIGINAL", PREDEFINED_DICTIONARY_NAME::DICT_ARUCO_ORIGINAL},
68 #if CV_VERSION_MAJOR >= 4
69  {"APRILTAG_16h5", PREDEFINED_DICTIONARY_NAME::DICT_APRILTAG_16h5},
70  {"APRILTAG_25h9", PREDEFINED_DICTIONARY_NAME::DICT_APRILTAG_25h9},
71  {"APRILTAG_36h10", PREDEFINED_DICTIONARY_NAME::DICT_APRILTAG_36h10},
72  {"APRILTAG_36h11", PREDEFINED_DICTIONARY_NAME::DICT_APRILTAG_36h11},
73 #endif
74 };
75 
76 } // namespace aruco_opencv
tf2::convert
void convert(const A &a, B &b)
utils.hpp
tf2::Matrix3x3::getRotation
void getRotation(Quaternion &q) const
aruco_opencv
Definition: utils.hpp:31
aruco_opencv::ARUCO_DICT_MAP
const std::unordered_map< std::string, cv::aruco::PREDEFINED_DICTIONARY_NAME > ARUCO_DICT_MAP
Definition: utils.cpp:50
aruco_opencv::convert_rvec_tvec
geometry_msgs::Pose convert_rvec_tvec(const cv::Vec3d &rvec, const cv::Vec3d &tvec)
Definition: utils.cpp:30
tf2::Quaternion
tf2_geometry_msgs.h
convert.h
tf2::Matrix3x3


aruco_opencv
Author(s): Błażej Sowa
autogenerated on Fri Aug 2 2024 08:38:24