28 using cv::aruco::PREDEFINED_DICTIONARY_NAME;
31 geometry_msgs::Pose pose_out;
33 cv::Mat rot(3, 3, CV_64FC1);
34 cv::Rodrigues(rvec, rot);
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));
42 pose_out.position.x = tvec[0];
43 pose_out.position.y = tvec[1];
44 pose_out.position.z = tvec[2];
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},