diff --git a/README.md b/README.md index 31f71353..15966b93 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,8 @@ Some heuristics for when to choose other tag families: 1. If you need more tags, use tagStandard52h13 2. If you need to maximize the use of space on a small circular object, use tagCircle49h12 (or tagCircle21h7). 3. If you want to make a recursive tag use tagCustom48h12. -4. If you want compatibility with the ArUcO detector use tag36h11 +4. If you need ArUco support, use the native ArUco families (e.g., `tagAruco4x4_50`, `tagAruco5x5_100`, `tagAruco6x6_250`, `tagAruco7x7_1000`, etc.). These are now fully integrated and optimized. +4. If you want compatibility with the legacy ArUco detector use tag36h11 If none of these fit your needs, generate your own custom tag family [here](https://github.com/AprilRobotics/apriltag-generation). @@ -193,6 +194,28 @@ Note: The tag size should not be measured from the outside of the tag. The tag s ### Coordinate System The coordinate system has the origin at the camera center. The z-axis points from the camera center out the camera lens. The x-axis is to the right in the image taken by the camera, and y is down. The tag's coordinate frame is centered at the center of the tag. From the viewer's perspective, the x-axis is to the right, y-axis down, and z-axis is into the tag. +### Handling Pose Ambiguity +Planar targets often result in two possible pose solutions with similar errors (the "ambiguity" problem). To retrieve the alternative solution, you can use: + +```c +apriltag_pose_t pose1, pose2; +double err1 = estimate_tag_pose(&info, &pose1); +double err2; + +// v and p are the object and image points used during the iteration +get_second_solution(v, p, &pose1, &pose2, nIters, &err2); +``` + +This is particularly useful when temporal filtering or additional constraints are used to disambiguate the tag's orientation. + +Utility Functions +================= +AprilTag 3 now includes helper functions for deep-copying structures, which is essential for multi-threaded applications or when you need to store detections beyond the detector's lifecycle. + +* `apriltag_detector_copy(td)`: Creates a clone of the detector configuration. +* `apriltag_detections_copy(detections)`: Returns a new `zarray_t` with deep copies of all `apriltag_detection_t` objects. +* `apriltag_detection_copy(src, dst)`: Performs a deep copy of a single detection into an existing structure. + Debugging ========= diff --git a/apriltag.c b/apriltag.c index 58993ff0..3b087f75 100644 --- a/apriltag.c +++ b/apriltag.c @@ -1469,6 +1469,69 @@ void apriltag_detections_destroy(zarray_t *detections) zarray_destroy(detections); } +void apriltag_detection_copy(apriltag_detection_t* src, apriltag_detection_t* dst) +{ + assert(src != NULL); + assert(dst != NULL); + + if (dst->H) { + matd_destroy(dst->H); + } + dst->H = matd_copy(src->H); + + dst->c[0] = src->c[0]; + dst->c[1] = src->c[1]; + + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 2; j++) { + dst->p[i][j] = src->p[i][j]; + } + } + + dst->id = src->id; + dst->family = src->family; + dst->hamming = src->hamming; + dst->decision_margin = src->decision_margin; +} + +zarray_t* apriltag_detections_copy(zarray_t* detections) +{ + zarray_t* detections_copy = zarray_create(sizeof(apriltag_detection_t*)); + for (int i = 0; i < zarray_size(detections); i++) { + apriltag_detection_t* det; + zarray_get(detections, i, &det); + + apriltag_detection_t* det_copy = (apriltag_detection_t*)calloc(1, sizeof(apriltag_detection_t)); + apriltag_detection_copy(det, det_copy); + zarray_add(detections_copy, &det_copy); + } + + return detections_copy; +} + +apriltag_detector_t *apriltag_detector_copy(apriltag_detector_t *td) +{ + apriltag_detector_t *td_copy = apriltag_detector_create(); + + td_copy->nthreads = td->nthreads; + td_copy->quad_decimate = td->quad_decimate; + td_copy->quad_sigma = td->quad_sigma; + + td_copy->qtp.max_nmaxima = td->qtp.max_nmaxima ; + td_copy->qtp.min_cluster_pixels = td->qtp.min_cluster_pixels; + + td_copy->qtp.max_line_fit_mse = td->qtp.max_line_fit_mse; + td_copy->qtp.cos_critical_rad = td->qtp.cos_critical_rad; + td_copy->qtp.deglitch = td->qtp.deglitch; + td_copy->qtp.min_white_black_diff = td->qtp.min_white_black_diff; + + td_copy->refine_edges = td->refine_edges; + td_copy->decode_sharpening = td->decode_sharpening; + td_copy->debug = td->debug; + + return td_copy; +} + image_u8_t *apriltag_to_image(apriltag_family_t *fam, uint32_t idx) { assert(fam != NULL); diff --git a/apriltag.h b/apriltag.h index 164ad861..dcce88ad 100644 --- a/apriltag.h +++ b/apriltag.h @@ -267,6 +267,15 @@ void apriltag_detection_destroy(apriltag_detection_t *det); // destroys the array AND the detections within it. void apriltag_detections_destroy(zarray_t *detections); +// Performs a deep copy of an AprilTag detection structure from a source to a destination. +void apriltag_detection_copy(apriltag_detection_t* src, apriltag_detection_t* dst); + +// Creates a complete deep copy of a list of AprilTag detections. +zarray_t* apriltag_detections_copy(zarray_t* detections); + +// Clones an AprilTag detector configuration into a new instance. +apriltag_detector_t *apriltag_detector_copy(apriltag_detector_t *td); + // Renders the apriltag. // Caller is responsible for calling image_u8_destroy on the image image_u8_t *apriltag_to_image(apriltag_family_t *fam, uint32_t idx); diff --git a/apriltag_pose.c b/apriltag_pose.c index 6043cb85..73ee246c 100644 --- a/apriltag_pose.c +++ b/apriltag_pose.c @@ -545,3 +545,15 @@ double estimate_tag_pose(apriltag_detection_info_t* info, apriltag_pose_t* pose) return err2; } } + +void get_second_solution(matd_t* v[4], matd_t* p[4], apriltag_pose_t* solution1, apriltag_pose_t* solution2, int nIters, double* err2) +{ + solution2->R = fix_pose_ambiguities(v, p, solution1->t, solution1->R, 4); + if (solution2->R) { + solution2->t = matd_create(3, 1); + *err2 = orthogonal_iteration(v, p, &solution2->t, &solution2->R, 4, nIters); + } + else { + *err2 = HUGE_VAL; + } +} \ No newline at end of file diff --git a/apriltag_pose.h b/apriltag_pose.h index 8120502f..38a397d7 100644 --- a/apriltag_pose.h +++ b/apriltag_pose.h @@ -74,6 +74,8 @@ void estimate_tag_pose_orthogonal_iteration( */ double estimate_tag_pose(apriltag_detection_info_t* info, apriltag_pose_t* pose); +void get_second_solution(matd_t* v[4], matd_t* p[4], apriltag_pose_t* solution1, apriltag_pose_t* solution2, int nIters, double* err2); + #ifdef __cplusplus } #endif diff --git a/apriltag_py_type.docstring b/apriltag_py_type.docstring index 4ae1ff01..9641f6e9 100644 --- a/apriltag_py_type.docstring +++ b/apriltag_py_type.docstring @@ -51,6 +51,24 @@ The constructor takes a number of arguments: - "tagStandard41h12" - "tagStandard52h13" - "tagCustom48h12" + - "tagAruco4x4_50" + - "tagAruco4x4_100" + - "tagAruco4x4_250" + - "tagAruco4x4_1000" + - "tagAruco5x5_50" + - "tagAruco5x5_100" + - "tagAruco5x5_250" + - "tagAruco5x5_1000" + - "tagAruco6x6_50" + - "tagAruco6x6_100" + - "tagAruco6x6_250" + - "tagAruco6x6_1000" + - "tagAruco7x7_50" + - "tagAruco7x7_100" + - "tagAruco7x7_250" + - "tagAruco7x7_1000" + - "tagArucoMIP36h12" + All the other arguments are optional: diff --git a/apriltag_pywrap.c b/apriltag_pywrap.c index 975cea4e..edeb44a8 100644 --- a/apriltag_pywrap.c +++ b/apriltag_pywrap.c @@ -20,6 +20,23 @@ #include "tagCustom48h12.h" #include "tagStandard41h12.h" #include "tagStandard52h13.h" +#include "tagAruco4x4_50.h" +#include "tagAruco4x4_100.h" +#include "tagAruco4x4_250.h" +#include "tagAruco4x4_1000.h" +#include "tagAruco5x5_50.h" +#include "tagAruco5x5_100.h" +#include "tagAruco5x5_250.h" +#include "tagAruco5x5_1000.h" +#include "tagAruco6x6_50.h" +#include "tagAruco6x6_100.h" +#include "tagAruco6x6_250.h" +#include "tagAruco6x6_1000.h" +#include "tagAruco7x7_50.h" +#include "tagAruco7x7_100.h" +#include "tagAruco7x7_250.h" +#include "tagAruco7x7_1000.h" +#include "tagArucoMIP36h12.h" #define SUPPORTED_TAG_FAMILIES(_) \ @@ -31,7 +48,24 @@ _(tagCircle49h12) \ _(tagStandard41h12) \ _(tagStandard52h13) \ - _(tagCustom48h12) + _(tagCustom48h12) \ + _(tagAruco4x4_50) \ + _(tagAruco4x4_100) \ + _(tagAruco4x4_250) \ + _(tagAruco4x4_1000) \ + _(tagAruco5x5_50) \ + _(tagAruco5x5_100) \ + _(tagAruco5x5_250) \ + _(tagAruco5x5_1000) \ + _(tagAruco6x6_50) \ + _(tagAruco6x6_100) \ + _(tagAruco6x6_250) \ + _(tagAruco6x6_1000) \ + _(tagAruco7x7_50) \ + _(tagAruco7x7_100) \ + _(tagAruco7x7_250) \ + _(tagAruco7x7_1000) \ + _(tagArucoMIP36h12) #define TAG_CREATE_FAMILY(name) \ else if (0 == strcmp(family, #name)) self->tf = name ## _create(); diff --git a/example/apriltag_demo.c b/example/apriltag_demo.c index 6de90540..e6fb39d1 100644 --- a/example/apriltag_demo.c +++ b/example/apriltag_demo.c @@ -50,6 +50,23 @@ either expressed or implied, of the Regents of The University of Michigan. #include "tagCustom48h12.h" #include "tagStandard41h12.h" #include "tagStandard52h13.h" +#include "tagAruco4x4_50.h" +#include "tagAruco4x4_100.h" +#include "tagAruco4x4_250.h" +#include "tagAruco4x4_1000.h" +#include "tagAruco5x5_50.h" +#include "tagAruco5x5_100.h" +#include "tagAruco5x5_250.h" +#include "tagAruco5x5_1000.h" +#include "tagAruco6x6_50.h" +#include "tagAruco6x6_100.h" +#include "tagAruco6x6_250.h" +#include "tagAruco6x6_1000.h" +#include "tagAruco7x7_50.h" +#include "tagAruco7x7_100.h" +#include "tagAruco7x7_250.h" +#include "tagAruco7x7_1000.h" +#include "tagArucoMIP36h12.h" #include "common/getopt.h" #include "common/image_u8.h" @@ -99,6 +116,40 @@ int main(int argc, char *argv[]) tf = tagStandard52h13_create(); } else if (!strcmp(famname, "tagCustom48h12")) { tf = tagCustom48h12_create(); + } else if (!strcmp(famname, "tagAruco4x4_50")) { + tf = tagAruco4x4_50_create(); + } else if (!strcmp(famname, "tagAruco4x4_100")) { + tf = tagAruco4x4_100_create(); + } else if (!strcmp(famname, "tagAruco4x4_250")) { + tf = tagAruco4x4_250_create(); + } else if (!strcmp(famname, "tagAruco4x4_1000")) { + tf = tagAruco4x4_1000_create(); + } else if (!strcmp(famname, "tagAruco5x5_50")) { + tf = tagAruco5x5_50_create(); + } else if (!strcmp(famname, "tagAruco5x5_100")) { + tf = tagAruco5x5_100_create(); + } else if (!strcmp(famname, "tagAruco5x5_250")) { + tf = tagAruco5x5_250_create(); + } else if (!strcmp(famname, "tagAruco5x5_1000")) { + tf = tagAruco5x5_1000_create(); + } else if (!strcmp(famname, "tagAruco6x6_50")) { + tf = tagAruco6x6_50_create(); + } else if (!strcmp(famname, "tagAruco6x6_100")) { + tf = tagAruco6x6_100_create(); + } else if (!strcmp(famname, "tagAruco6x6_250")) { + tf = tagAruco6x6_250_create(); + } else if (!strcmp(famname, "tagAruco6x6_1000")) { + tf = tagAruco6x6_1000_create(); + } else if (!strcmp(famname, "tagAruco7x7_50")) { + tf = tagAruco7x7_50_create(); + } else if (!strcmp(famname, "tagAruco7x7_100")) { + tf = tagAruco7x7_100_create(); + } else if (!strcmp(famname, "tagAruco7x7_250")) { + tf = tagAruco7x7_250_create(); + } else if (!strcmp(famname, "tagAruco7x7_1000")) { + tf = tagAruco7x7_1000_create(); + } else if (!strcmp(famname, "tagArucoMIP36h12")) { + tf = tagArucoMIP36h12_create(); } else { printf("Unrecognized tag family name. Use e.g. \"tag36h11\".\n"); exit(-1); @@ -276,6 +327,40 @@ int main(int argc, char *argv[]) tagStandard52h13_destroy(tf); } else if (!strcmp(famname, "tagCustom48h12")) { tagCustom48h12_destroy(tf); + }else if (!strcmp(famname, "tagAruco4x4_50")) { + tagAruco4x4_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco4x4_100")) { + tagAruco4x4_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco4x4_250")) { + tagAruco4x4_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco4x4_1000")) { + tagAruco4x4_1000_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_50")) { + tagAruco5x5_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_100")) { + tagAruco5x5_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_250")) { + tagAruco5x5_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_1000")) { + tagAruco5x5_1000_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_50")) { + tagAruco6x6_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_100")) { + tagAruco6x6_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_250")) { + tagAruco6x6_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_1000")) { + tagAruco6x6_1000_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_50")) { + tagAruco7x7_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_100")) { + tagAruco7x7_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_250")) { + tagAruco7x7_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_1000")) { + tagAruco7x7_1000_destroy(tf); + } else if (!strcmp(famname, "tagArucoMIP36h12")) { + tagArucoMIP36h12_destroy(tf); } getopt_destroy(getopt); diff --git a/example/opencv_demo.cc b/example/opencv_demo.cc index 4e166ae8..47b6b91c 100644 --- a/example/opencv_demo.cc +++ b/example/opencv_demo.cc @@ -40,6 +40,23 @@ extern "C" { #include "tagCustom48h12.h" #include "tagStandard41h12.h" #include "tagStandard52h13.h" +#include "tagAruco4x4_50.h" +#include "tagAruco4x4_100.h" +#include "tagAruco4x4_250.h" +#include "tagAruco4x4_1000.h" +#include "tagAruco5x5_50.h" +#include "tagAruco5x5_100.h" +#include "tagAruco5x5_250.h" +#include "tagAruco5x5_1000.h" +#include "tagAruco6x6_50.h" +#include "tagAruco6x6_100.h" +#include "tagAruco6x6_250.h" +#include "tagAruco6x6_1000.h" +#include "tagAruco7x7_50.h" +#include "tagAruco7x7_100.h" +#include "tagAruco7x7_250.h" +#include "tagAruco7x7_1000.h" +#include "tagArucoMIP36h12.h" #include "common/getopt.h" } @@ -99,6 +116,40 @@ int main(int argc, char *argv[]) tf = tagStandard52h13_create(); } else if (!strcmp(famname, "tagCustom48h12")) { tf = tagCustom48h12_create(); + } else if (!strcmp(famname, "tagAruco4x4_50")) { + tf = tagAruco4x4_50_create(); + } else if (!strcmp(famname, "tagAruco4x4_100")) { + tf = tagAruco4x4_100_create(); + } else if (!strcmp(famname, "tagAruco4x4_250")) { + tf = tagAruco4x4_250_create(); + } else if (!strcmp(famname, "tagAruco4x4_1000")) { + tf = tagAruco4x4_1000_create(); + } else if (!strcmp(famname, "tagAruco5x5_50")) { + tf = tagAruco5x5_50_create(); + } else if (!strcmp(famname, "tagAruco5x5_100")) { + tf = tagAruco5x5_100_create(); + } else if (!strcmp(famname, "tagAruco5x5_250")) { + tf = tagAruco5x5_250_create(); + } else if (!strcmp(famname, "tagAruco5x5_1000")) { + tf = tagAruco5x5_1000_create(); + } else if (!strcmp(famname, "tagAruco6x6_50")) { + tf = tagAruco6x6_50_create(); + } else if (!strcmp(famname, "tagAruco6x6_100")) { + tf = tagAruco6x6_100_create(); + } else if (!strcmp(famname, "tagAruco6x6_250")) { + tf = tagAruco6x6_250_create(); + } else if (!strcmp(famname, "tagAruco6x6_1000")) { + tf = tagAruco6x6_1000_create(); + } else if (!strcmp(famname, "tagAruco7x7_50")) { + tf = tagAruco7x7_50_create(); + } else if (!strcmp(famname, "tagAruco7x7_100")) { + tf = tagAruco7x7_100_create(); + } else if (!strcmp(famname, "tagAruco7x7_250")) { + tf = tagAruco7x7_250_create(); + } else if (!strcmp(famname, "tagAruco7x7_1000")) { + tf = tagAruco7x7_1000_create(); + } else if (!strcmp(famname, "tagArucoMIP36h12")) { + tf = tagArucoMIP36h12_create(); } else { printf("Unrecognized tag family name. Use e.g. \"tag36h11\".\n"); exit(-1); @@ -203,9 +254,42 @@ int main(int argc, char *argv[]) tagStandard52h13_destroy(tf); } else if (!strcmp(famname, "tagCustom48h12")) { tagCustom48h12_destroy(tf); + } else if (!strcmp(famname, "tagAruco4x4_50")) { + tagAruco4x4_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco4x4_100")) { + tagAruco4x4_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco4x4_250")) { + tagAruco4x4_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco4x4_1000")) { + tagAruco4x4_1000_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_50")) { + tagAruco5x5_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_100")) { + tagAruco5x5_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_250")) { + tagAruco5x5_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco5x5_1000")) { + tagAruco5x5_1000_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_50")) { + tagAruco6x6_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_100")) { + tagAruco6x6_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_250")) { + tagAruco6x6_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco6x6_1000")) { + tagAruco6x6_1000_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_50")) { + tagAruco7x7_50_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_100")) { + tagAruco7x7_100_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_250")) { + tagAruco7x7_250_destroy(tf); + } else if (!strcmp(famname, "tagAruco7x7_1000")) { + tagAruco7x7_1000_destroy(tf); + } else if (!strcmp(famname, "tagArucoMIP36h12")) { + tagArucoMIP36h12_destroy(tf); } - getopt_destroy(getopt); return 0; diff --git a/tagAruco4x4_100.c b/tagAruco4x4_100.c new file mode 100644 index 00000000..4046e3cd --- /dev/null +++ b/tagAruco4x4_100.c @@ -0,0 +1,204 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco4x4_100.h" + +static uint64_t codedata[100] = { + 0x000000000000be50UL, + 0x000000000000174eUL, + 0x0000000000002db8UL, + 0x0000000000008c63UL, + 0x0000000000005a6cUL, + 0x0000000000006cafUL, + 0x000000000000997aUL, + 0x000000000000d255UL, + 0x000000000000fb4fUL, + 0x000000000000d763UL, + 0x000000000000ee86UL, + 0x0000000000000cf4UL, + 0x00000000000013f6UL, + 0x00000000000021eaUL, + 0x0000000000003294UL, + 0x0000000000003378UL, + 0x00000000000051b1UL, + 0x0000000000007100UL, + 0x000000000000726bUL, + 0x00000000000079fcUL, + 0x00000000000091ccUL, + 0x000000000000a8d8UL, + 0x000000000000d2a7UL, + 0x000000000000dc46UL, + 0x000000000000f9e3UL, + 0x0000000000009a91UL, + 0x000000000000b037UL, + 0x000000000000b621UL, + 0x00000000000024d0UL, + 0x00000000000038f9UL, + 0x00000000000052a0UL, + 0x0000000000005f54UL, + 0x00000000000099efUL, + 0x000000000000e8cdUL, + 0x000000000000007eUL, + 0x000000000000049aUL, + 0x0000000000000ab3UL, + 0x00000000000012fdUL, + 0x0000000000001677UL, + 0x0000000000001a4bUL, + 0x0000000000001f08UL, + 0x000000000000211aUL, + 0x000000000000292cUL, + 0x0000000000002a56UL, + 0x000000000000301dUL, + 0x00000000000031dfUL, + 0x00000000000036faUL, + 0x0000000000004533UL, + 0x0000000000004878UL, + 0x0000000000004ac0UL, + 0x0000000000004e24UL, + 0x0000000000005c19UL, + 0x0000000000005c83UL, + 0x0000000000005fe6UL, + 0x0000000000006082UL, + 0x00000000000060f3UL, + 0x0000000000006430UL, + 0x000000000000649dUL, + 0x0000000000006742UL, + 0x00000000000075b7UL, + 0x00000000000077edUL, + 0x0000000000007bcaUL, + 0x0000000000008014UL, + 0x0000000000008521UL, + 0x0000000000008556UL, + 0x0000000000008f59UL, + 0x0000000000009039UL, + 0x0000000000009458UL, + 0x000000000000962cUL, + 0x000000000000988eUL, + 0x0000000000009d96UL, + 0x000000000000af3bUL, + 0x000000000000b822UL, + 0x000000000000bbc9UL, + 0x000000000000bd0fUL, + 0x000000000000bddcUL, + 0x000000000000c3eaUL, + 0x000000000000c453UL, + 0x000000000000ce0bUL, + 0x000000000000cfa5UL, + 0x000000000000d20eUL, + 0x000000000000d514UL, + 0x000000000000d6f0UL, + 0x000000000000e6abUL, + 0x000000000000ecb2UL, + 0x000000000000efdeUL, + 0x000000000000f15aUL, + 0x000000000000fda9UL, + 0x0000000000003eb1UL, + 0x00000000000081beUL, + 0x0000000000007be0UL, + 0x00000000000001efUL, + 0x00000000000011c9UL, + 0x0000000000003487UL, + 0x000000000000460fUL, + 0x0000000000004735UL, + 0x0000000000005772UL, + 0x00000000000057c7UL, + 0x0000000000006437UL, + 0x00000000000068e5UL, +}; +apriltag_family_t *tagAruco4x4_100_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco4x4_100"); + tf->h = 3; + tf->ncodes = 100; + tf->codes = codedata; + tf->nbits = 16; + tf->bit_x = calloc(16, sizeof(uint32_t)); + tf->bit_y = calloc(16, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 2; + tf->bit_y[3] = 2; + tf->bit_x[4] = 4; + tf->bit_y[4] = 1; + tf->bit_x[5] = 4; + tf->bit_y[5] = 2; + tf->bit_x[6] = 4; + tf->bit_y[6] = 3; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 4; + tf->bit_x[9] = 3; + tf->bit_y[9] = 4; + tf->bit_x[10] = 2; + tf->bit_y[10] = 4; + tf->bit_x[11] = 3; + tf->bit_y[11] = 3; + tf->bit_x[12] = 1; + tf->bit_y[12] = 4; + tf->bit_x[13] = 1; + tf->bit_y[13] = 3; + tf->bit_x[14] = 1; + tf->bit_y[14] = 2; + tf->bit_x[15] = 2; + tf->bit_y[15] = 3; + tf->width_at_border = 6; + tf->total_width = 8; + tf->reversed_border = false; + return tf; +} + +void tagAruco4x4_100_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco4x4_100.h b/tagAruco4x4_100.h new file mode 100644 index 00000000..53beec8d --- /dev/null +++ b/tagAruco4x4_100.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO4X4_100 +#define _TAGARUCO4X4_100 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco4x4_100_create(); +void tagAruco4x4_100_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco4x4_1000.c b/tagAruco4x4_1000.c new file mode 100644 index 00000000..9a4f58d7 --- /dev/null +++ b/tagAruco4x4_1000.c @@ -0,0 +1,1104 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco4x4_1000.h" + +static uint64_t codedata[1000] = { + 0x000000000000be50UL, + 0x000000000000174eUL, + 0x0000000000002db8UL, + 0x0000000000008c63UL, + 0x0000000000005a6cUL, + 0x0000000000006cafUL, + 0x000000000000997aUL, + 0x000000000000d255UL, + 0x000000000000fb4fUL, + 0x000000000000d763UL, + 0x000000000000ee86UL, + 0x0000000000000cf4UL, + 0x00000000000013f6UL, + 0x00000000000021eaUL, + 0x0000000000003294UL, + 0x0000000000003378UL, + 0x00000000000051b1UL, + 0x0000000000007100UL, + 0x000000000000726bUL, + 0x00000000000079fcUL, + 0x00000000000091ccUL, + 0x000000000000a8d8UL, + 0x000000000000d2a7UL, + 0x000000000000dc46UL, + 0x000000000000f9e3UL, + 0x0000000000009a91UL, + 0x000000000000b037UL, + 0x000000000000b621UL, + 0x00000000000024d0UL, + 0x00000000000038f9UL, + 0x00000000000052a0UL, + 0x0000000000005f54UL, + 0x00000000000099efUL, + 0x000000000000e8cdUL, + 0x000000000000007eUL, + 0x000000000000049aUL, + 0x0000000000000ab3UL, + 0x00000000000012fdUL, + 0x0000000000001677UL, + 0x0000000000001a4bUL, + 0x0000000000001f08UL, + 0x000000000000211aUL, + 0x000000000000292cUL, + 0x0000000000002a56UL, + 0x000000000000301dUL, + 0x00000000000031dfUL, + 0x00000000000036faUL, + 0x0000000000004533UL, + 0x0000000000004878UL, + 0x0000000000004ac0UL, + 0x0000000000004e24UL, + 0x0000000000005c19UL, + 0x0000000000005c83UL, + 0x0000000000005fe6UL, + 0x0000000000006082UL, + 0x00000000000060f3UL, + 0x0000000000006430UL, + 0x000000000000649dUL, + 0x0000000000006742UL, + 0x00000000000075b7UL, + 0x00000000000077edUL, + 0x0000000000007bcaUL, + 0x0000000000008014UL, + 0x0000000000008521UL, + 0x0000000000008556UL, + 0x0000000000008f59UL, + 0x0000000000009039UL, + 0x0000000000009458UL, + 0x000000000000962cUL, + 0x000000000000988eUL, + 0x0000000000009d96UL, + 0x000000000000af3bUL, + 0x000000000000b822UL, + 0x000000000000bbc9UL, + 0x000000000000bd0fUL, + 0x000000000000bddcUL, + 0x000000000000c3eaUL, + 0x000000000000c453UL, + 0x000000000000ce0bUL, + 0x000000000000cfa5UL, + 0x000000000000d20eUL, + 0x000000000000d514UL, + 0x000000000000d6f0UL, + 0x000000000000e6abUL, + 0x000000000000ecb2UL, + 0x000000000000efdeUL, + 0x000000000000f15aUL, + 0x000000000000fda9UL, + 0x0000000000003eb1UL, + 0x00000000000081beUL, + 0x0000000000007be0UL, + 0x00000000000001efUL, + 0x00000000000011c9UL, + 0x0000000000003487UL, + 0x000000000000460fUL, + 0x0000000000004735UL, + 0x0000000000005772UL, + 0x00000000000057c7UL, + 0x0000000000006437UL, + 0x00000000000068e5UL, + 0x000000000000697bUL, + 0x000000000000b85dUL, + 0x000000000000f4ebUL, + 0x000000000000f8f7UL, + 0x000000000000f976UL, + 0x00000000000000b0UL, + 0x00000000000000c1UL, + 0x000000000000010eUL, + 0x0000000000000166UL, + 0x00000000000001f9UL, + 0x0000000000000228UL, + 0x00000000000002e4UL, + 0x00000000000002f2UL, + 0x0000000000000392UL, + 0x0000000000000467UL, + 0x0000000000000582UL, + 0x00000000000006dfUL, + 0x000000000000070bUL, + 0x0000000000000844UL, + 0x00000000000008baUL, + 0x0000000000000a19UL, + 0x0000000000000ad1UL, + 0x0000000000000b31UL, + 0x0000000000000b94UL, + 0x0000000000000b9fUL, + 0x0000000000000d60UL, + 0x000000000000106aUL, + 0x0000000000001297UL, + 0x00000000000012d0UL, + 0x00000000000012eeUL, + 0x0000000000001357UL, + 0x00000000000013bfUL, + 0x0000000000001529UL, + 0x0000000000001536UL, + 0x00000000000015f8UL, + 0x00000000000016b4UL, + 0x0000000000001786UL, + 0x00000000000017cdUL, + 0x0000000000001937UL, + 0x0000000000001a98UL, + 0x0000000000001c06UL, + 0x0000000000001c0dUL, + 0x0000000000001dceUL, + 0x0000000000001e5cUL, + 0x0000000000001e96UL, + 0x0000000000002004UL, + 0x000000000000209fUL, + 0x0000000000002154UL, + 0x00000000000022c3UL, + 0x0000000000002317UL, + 0x00000000000023f5UL, + 0x0000000000002403UL, + 0x0000000000002461UL, + 0x000000000000269eUL, + 0x000000000000272eUL, + 0x0000000000002756UL, + 0x000000000000284fUL, + 0x000000000000287aUL, + 0x00000000000028e0UL, + 0x00000000000028f7UL, + 0x000000000000298bUL, + 0x00000000000029b3UL, + 0x0000000000002ba9UL, + 0x0000000000002d0eUL, + 0x0000000000002eaaUL, + 0x0000000000002fc7UL, + 0x00000000000031e1UL, + 0x0000000000003504UL, + 0x000000000000355eUL, + 0x0000000000003622UL, + 0x000000000000366dUL, + 0x00000000000036c1UL, + 0x00000000000037f3UL, + 0x0000000000003809UL, + 0x000000000000381eUL, + 0x0000000000003883UL, + 0x00000000000038a8UL, + 0x0000000000003addUL, + 0x0000000000003b4cUL, + 0x0000000000003c17UL, + 0x0000000000003c59UL, + 0x0000000000003c8aUL, + 0x0000000000003cbfUL, + 0x0000000000003d27UL, + 0x0000000000003d3bUL, + 0x0000000000003d6dUL, + 0x0000000000003e2bUL, + 0x0000000000003e73UL, + 0x0000000000003f14UL, + 0x0000000000003fe2UL, + 0x0000000000003fffUL, + 0x00000000000040b7UL, + 0x0000000000004119UL, + 0x00000000000041baUL, + 0x0000000000004411UL, + 0x0000000000004683UL, + 0x00000000000046adUL, + 0x00000000000047efUL, + 0x00000000000048ebUL, + 0x000000000000490bUL, + 0x0000000000004a62UL, + 0x0000000000004aa9UL, + 0x0000000000004b5fUL, + 0x0000000000004bb6UL, + 0x0000000000004cd0UL, + 0x0000000000004d4eUL, + 0x0000000000004e8aUL, + 0x0000000000004eb0UL, + 0x000000000000509bUL, + 0x0000000000005185UL, + 0x00000000000051caUL, + 0x00000000000052e9UL, + 0x000000000000538bUL, + 0x00000000000054c6UL, + 0x00000000000056bbUL, + 0x000000000000570dUL, + 0x00000000000057d1UL, + 0x00000000000058a6UL, + 0x0000000000005923UL, + 0x00000000000059d8UL, + 0x0000000000005adeUL, + 0x0000000000005cc5UL, + 0x0000000000005d7bUL, + 0x0000000000005ddfUL, + 0x0000000000005e42UL, + 0x0000000000005e69UL, + 0x0000000000006311UL, + 0x00000000000063a0UL, + 0x0000000000006445UL, + 0x0000000000006512UL, + 0x00000000000065a1UL, + 0x000000000000672bUL, + 0x00000000000067cbUL, + 0x000000000000682aUL, + 0x00000000000069efUL, + 0x0000000000006afbUL, + 0x0000000000006c06UL, + 0x0000000000006cb5UL, + 0x0000000000006e31UL, + 0x0000000000006e76UL, + 0x0000000000006ec5UL, + 0x0000000000006fd2UL, + 0x0000000000007059UL, + 0x000000000000711cUL, + 0x00000000000071f6UL, + 0x0000000000007386UL, + 0x0000000000007450UL, + 0x00000000000074cfUL, + 0x00000000000075acUL, + 0x0000000000007692UL, + 0x0000000000007906UL, + 0x0000000000007957UL, + 0x00000000000079aeUL, + 0x0000000000007a45UL, + 0x0000000000007a52UL, + 0x0000000000007bb2UL, + 0x0000000000007cdcUL, + 0x0000000000007da0UL, + 0x0000000000007ddaUL, + 0x0000000000007e4fUL, + 0x0000000000007f46UL, + 0x00000000000082b1UL, + 0x00000000000082d5UL, + 0x0000000000008474UL, + 0x00000000000084bfUL, + 0x000000000000863dUL, + 0x0000000000008876UL, + 0x0000000000008912UL, + 0x0000000000008cc1UL, + 0x0000000000008e9fUL, + 0x0000000000008ec4UL, + 0x0000000000008f27UL, + 0x0000000000009088UL, + 0x00000000000090d9UL, + 0x0000000000009125UL, + 0x0000000000009133UL, + 0x0000000000009348UL, + 0x0000000000009469UL, + 0x00000000000094cfUL, + 0x00000000000094f1UL, + 0x00000000000094fcUL, + 0x00000000000096e5UL, + 0x00000000000097d4UL, + 0x0000000000009897UL, + 0x0000000000009a57UL, + 0x0000000000009ae0UL, + 0x0000000000009c00UL, + 0x0000000000009c54UL, + 0x0000000000009cd2UL, + 0x0000000000009d53UL, + 0x0000000000009e43UL, + 0x0000000000009e4dUL, + 0x000000000000a0a5UL, + 0x000000000000a1afUL, + 0x000000000000a30dUL, + 0x000000000000a3e1UL, + 0x000000000000a6baUL, + 0x000000000000a6e3UL, + 0x000000000000a743UL, + 0x000000000000a770UL, + 0x000000000000a789UL, + 0x000000000000aa35UL, + 0x000000000000aa42UL, + 0x000000000000aafcUL, + 0x000000000000abacUL, + 0x000000000000adbfUL, + 0x000000000000ae53UL, + 0x000000000000ae66UL, + 0x000000000000b0c5UL, + 0x000000000000b247UL, + 0x000000000000b396UL, + 0x000000000000b444UL, + 0x000000000000b5b3UL, + 0x000000000000b6d9UL, + 0x000000000000b75fUL, + 0x000000000000b831UL, + 0x000000000000b853UL, + 0x000000000000b884UL, + 0x000000000000b914UL, + 0x000000000000b97fUL, + 0x000000000000b9aaUL, + 0x000000000000ba8fUL, + 0x000000000000bb1fUL, + 0x000000000000bc18UL, + 0x000000000000bd88UL, + 0x000000000000bf45UL, + 0x000000000000c05dUL, + 0x000000000000c288UL, + 0x000000000000c2bdUL, + 0x000000000000c2c7UL, + 0x000000000000c34bUL, + 0x000000000000c4a9UL, + 0x000000000000c636UL, + 0x000000000000c6e1UL, + 0x000000000000c70cUL, + 0x000000000000c7a8UL, + 0x000000000000c806UL, + 0x000000000000c8ffUL, + 0x000000000000c9daUL, + 0x000000000000ca68UL, + 0x000000000000cca0UL, + 0x000000000000cdbcUL, + 0x000000000000cdf6UL, + 0x000000000000d08dUL, + 0x000000000000d21bUL, + 0x000000000000d4a3UL, + 0x000000000000d4c8UL, + 0x000000000000d5efUL, + 0x000000000000d83eUL, + 0x000000000000d840UL, + 0x000000000000d8d3UL, + 0x000000000000d8f0UL, + 0x000000000000dab5UL, + 0x000000000000db19UL, + 0x000000000000db1eUL, + 0x000000000000dc77UL, + 0x000000000000dea9UL, + 0x000000000000debeUL, + 0x000000000000dfaaUL, + 0x000000000000e14dUL, + 0x000000000000e1dbUL, + 0x000000000000e234UL, + 0x000000000000e318UL, + 0x000000000000e325UL, + 0x000000000000e550UL, + 0x000000000000e60dUL, + 0x000000000000e8c0UL, + 0x000000000000e92dUL, + 0x000000000000ea77UL, + 0x000000000000ec89UL, + 0x000000000000ed5dUL, + 0x000000000000ee2cUL, + 0x000000000000eeb7UL, + 0x000000000000eed8UL, + 0x000000000000f0aeUL, + 0x000000000000f18fUL, + 0x000000000000f1e8UL, + 0x000000000000f2f5UL, + 0x000000000000f511UL, + 0x000000000000f51fUL, + 0x000000000000f656UL, + 0x000000000000f6a0UL, + 0x000000000000f787UL, + 0x000000000000f864UL, + 0x000000000000f882UL, + 0x000000000000f9c5UL, + 0x000000000000fa39UL, + 0x000000000000fac6UL, + 0x000000000000fc41UL, + 0x000000000000fe0eUL, + 0x000000000000feb8UL, + 0x00000000000003bcUL, + 0x0000000000000095UL, + 0x0000000000000155UL, + 0x000000000000017cUL, + 0x000000000000021bUL, + 0x0000000000000231UL, + 0x000000000000026eUL, + 0x0000000000000287UL, + 0x00000000000002bbUL, + 0x0000000000000352UL, + 0x000000000000036fUL, + 0x0000000000000381UL, + 0x0000000000000454UL, + 0x0000000000000504UL, + 0x00000000000005c6UL, + 0x00000000000005cbUL, + 0x00000000000005f2UL, + 0x00000000000005ffUL, + 0x0000000000000676UL, + 0x000000000000068bUL, + 0x00000000000006c6UL, + 0x000000000000071fUL, + 0x000000000000078dUL, + 0x0000000000000795UL, + 0x0000000000000825UL, + 0x00000000000008deUL, + 0x0000000000000916UL, + 0x0000000000000922UL, + 0x000000000000093bUL, + 0x000000000000097eUL, + 0x000000000000098cUL, + 0x0000000000000ae0UL, + 0x0000000000000bd7UL, + 0x0000000000000c03UL, + 0x0000000000000c40UL, + 0x0000000000000cd8UL, + 0x0000000000000cedUL, + 0x0000000000000d52UL, + 0x0000000000000d78UL, + 0x0000000000000ea0UL, + 0x0000000000000fdcUL, + 0x0000000000001012UL, + 0x000000000000108fUL, + 0x000000000000122fUL, + 0x0000000000001272UL, + 0x0000000000001320UL, + 0x0000000000001351UL, + 0x0000000000001493UL, + 0x00000000000014a8UL, + 0x00000000000014eeUL, + 0x0000000000001517UL, + 0x000000000000158bUL, + 0x00000000000015a4UL, + 0x0000000000001604UL, + 0x00000000000016d2UL, + 0x0000000000001766UL, + 0x0000000000001773UL, + 0x0000000000001811UL, + 0x00000000000018aeUL, + 0x0000000000001a4dUL, + 0x0000000000001ad3UL, + 0x0000000000001b26UL, + 0x0000000000001b5eUL, + 0x0000000000001b8dUL, + 0x0000000000001bbaUL, + 0x0000000000001bddUL, + 0x0000000000001c9fUL, + 0x0000000000001e7fUL, + 0x0000000000001feeUL, + 0x00000000000020ceUL, + 0x00000000000020fcUL, + 0x0000000000002168UL, + 0x000000000000219cUL, + 0x00000000000021aeUL, + 0x00000000000021d6UL, + 0x00000000000021ffUL, + 0x0000000000002206UL, + 0x00000000000022daUL, + 0x000000000000230bUL, + 0x00000000000023d0UL, + 0x0000000000002414UL, + 0x0000000000002440UL, + 0x00000000000024b4UL, + 0x00000000000024e5UL, + 0x00000000000025c2UL, + 0x00000000000025f1UL, + 0x0000000000002612UL, + 0x0000000000002647UL, + 0x000000000000278aUL, + 0x00000000000027ceUL, + 0x00000000000027e6UL, + 0x000000000000281aUL, + 0x00000000000028b6UL, + 0x0000000000002966UL, + 0x0000000000002980UL, + 0x0000000000002aeeUL, + 0x0000000000002b45UL, + 0x0000000000002b8eUL, + 0x0000000000002ba7UL, + 0x0000000000002c1fUL, + 0x0000000000002d87UL, + 0x0000000000002dc1UL, + 0x0000000000002df7UL, + 0x0000000000002e4cUL, + 0x0000000000002f04UL, + 0x0000000000002f6eUL, + 0x0000000000003025UL, + 0x000000000000304bUL, + 0x00000000000030beUL, + 0x00000000000030efUL, + 0x00000000000030f3UL, + 0x000000000000315dUL, + 0x00000000000031b7UL, + 0x0000000000003213UL, + 0x0000000000003342UL, + 0x0000000000003387UL, + 0x000000000000339aUL, + 0x0000000000003431UL, + 0x00000000000034f5UL, + 0x000000000000352fUL, + 0x000000000000363eUL, + 0x0000000000003693UL, + 0x00000000000036a5UL, + 0x00000000000036ccUL, + 0x0000000000003700UL, + 0x000000000000373bUL, + 0x0000000000003755UL, + 0x0000000000003758UL, + 0x0000000000003776UL, + 0x00000000000037c5UL, + 0x00000000000037d6UL, + 0x00000000000037e8UL, + 0x00000000000038cbUL, + 0x0000000000003905UL, + 0x000000000000397dUL, + 0x000000000000399fUL, + 0x0000000000003a1cUL, + 0x0000000000003a22UL, + 0x0000000000003a43UL, + 0x0000000000003a51UL, + 0x0000000000003a79UL, + 0x0000000000003afcUL, + 0x0000000000003b93UL, + 0x0000000000003bc3UL, + 0x0000000000003c2eUL, + 0x0000000000003c54UL, + 0x0000000000003c78UL, + 0x0000000000003cb8UL, + 0x0000000000003d3cUL, + 0x0000000000003e11UL, + 0x0000000000003f5dUL, + 0x0000000000003f97UL, + 0x0000000000003fcfUL, + 0x0000000000004027UL, + 0x000000000000409fUL, + 0x0000000000004147UL, + 0x0000000000004183UL, + 0x00000000000041ddUL, + 0x00000000000042c2UL, + 0x000000000000430fUL, + 0x00000000000043bdUL, + 0x00000000000043e2UL, + 0x00000000000044d3UL, + 0x0000000000004579UL, + 0x0000000000004658UL, + 0x0000000000004696UL, + 0x00000000000046b8UL, + 0x0000000000004746UL, + 0x00000000000047ceUL, + 0x00000000000047f8UL, + 0x0000000000004852UL, + 0x000000000000485cUL, + 0x00000000000048f2UL, + 0x000000000000490dUL, + 0x0000000000004924UL, + 0x0000000000004948UL, + 0x00000000000049eaUL, + 0x0000000000004a0eUL, + 0x0000000000004a2bUL, + 0x0000000000004acdUL, + 0x0000000000004af5UL, + 0x0000000000004b37UL, + 0x0000000000004c3dUL, + 0x0000000000004c41UL, + 0x0000000000004ca8UL, + 0x0000000000004dc2UL, + 0x0000000000004dddUL, + 0x0000000000004e71UL, + 0x0000000000004e93UL, + 0x0000000000004ec4UL, + 0x0000000000004f9dUL, + 0x0000000000004fd6UL, + 0x0000000000004fe4UL, + 0x000000000000502bUL, + 0x00000000000050c9UL, + 0x00000000000050d2UL, + 0x000000000000512cUL, + 0x00000000000051f2UL, + 0x0000000000005304UL, + 0x0000000000005327UL, + 0x000000000000546dUL, + 0x00000000000054b5UL, + 0x00000000000054f0UL, + 0x0000000000005587UL, + 0x00000000000055a0UL, + 0x0000000000005630UL, + 0x0000000000005651UL, + 0x000000000000580fUL, + 0x000000000000586aUL, + 0x00000000000058ddUL, + 0x000000000000598cUL, + 0x00000000000059c1UL, + 0x00000000000059f7UL, + 0x0000000000005a13UL, + 0x0000000000005a54UL, + 0x0000000000005b9bUL, + 0x0000000000005bd5UL, + 0x0000000000005cd6UL, + 0x0000000000005e57UL, + 0x0000000000005ea8UL, + 0x0000000000005eaeUL, + 0x0000000000005f3dUL, + 0x0000000000005f45UL, + 0x0000000000005fd3UL, + 0x00000000000060baUL, + 0x00000000000060c7UL, + 0x00000000000060e6UL, + 0x000000000000614bUL, + 0x0000000000006199UL, + 0x000000000000629cUL, + 0x00000000000062ffUL, + 0x000000000000632fUL, + 0x000000000000634fUL, + 0x000000000000637aUL, + 0x0000000000006383UL, + 0x0000000000006392UL, + 0x00000000000063e5UL, + 0x000000000000642dUL, + 0x0000000000006546UL, + 0x00000000000065d7UL, + 0x000000000000665aUL, + 0x000000000000666cUL, + 0x00000000000066a4UL, + 0x00000000000066b1UL, + 0x00000000000066ebUL, + 0x00000000000066f2UL, + 0x000000000000674dUL, + 0x0000000000006840UL, + 0x00000000000068d3UL, + 0x00000000000068e9UL, + 0x000000000000694dUL, + 0x00000000000069beUL, + 0x0000000000006ad9UL, + 0x0000000000006b22UL, + 0x0000000000006b9fUL, + 0x0000000000006bc7UL, + 0x0000000000006bdeUL, + 0x0000000000006c57UL, + 0x0000000000006c98UL, + 0x0000000000006df3UL, + 0x0000000000006e05UL, + 0x0000000000006e9aUL, + 0x0000000000006f10UL, + 0x0000000000006f9cUL, + 0x0000000000006fc1UL, + 0x0000000000006ffdUL, + 0x000000000000700eUL, + 0x0000000000007088UL, + 0x00000000000070c3UL, + 0x0000000000007160UL, + 0x00000000000071c4UL, + 0x0000000000007214UL, + 0x000000000000724dUL, + 0x00000000000073eeUL, + 0x000000000000750dUL, + 0x000000000000757fUL, + 0x00000000000076daUL, + 0x0000000000007747UL, + 0x0000000000007804UL, + 0x00000000000078deUL, + 0x000000000000791bUL, + 0x0000000000007942UL, + 0x0000000000007a2eUL, + 0x0000000000007a70UL, + 0x0000000000007a82UL, + 0x0000000000007b6fUL, + 0x0000000000007b76UL, + 0x0000000000007bcdUL, + 0x0000000000007c27UL, + 0x0000000000007c4eUL, + 0x0000000000007cb9UL, + 0x0000000000007d0cUL, + 0x0000000000007d10UL, + 0x0000000000007d81UL, + 0x0000000000007e18UL, + 0x0000000000007e7cUL, + 0x0000000000007eceUL, + 0x0000000000007fe1UL, + 0x000000000000801aUL, + 0x000000000000803cUL, + 0x00000000000080aaUL, + 0x00000000000080f3UL, + 0x0000000000008169UL, + 0x0000000000008196UL, + 0x00000000000081d8UL, + 0x0000000000008208UL, + 0x000000000000829fUL, + 0x00000000000082acUL, + 0x000000000000832eUL, + 0x0000000000008390UL, + 0x00000000000083b3UL, + 0x00000000000083e4UL, + 0x0000000000008488UL, + 0x00000000000084ddUL, + 0x00000000000084e0UL, + 0x000000000000851aUL, + 0x000000000000853eUL, + 0x0000000000008578UL, + 0x00000000000085b5UL, + 0x0000000000008601UL, + 0x0000000000008652UL, + 0x000000000000875bUL, + 0x0000000000008766UL, + 0x00000000000087b9UL, + 0x00000000000088e4UL, + 0x0000000000008b3fUL, + 0x0000000000008bb5UL, + 0x0000000000008c5cUL, + 0x0000000000008d81UL, + 0x0000000000008db0UL, + 0x0000000000008ddfUL, + 0x0000000000008e32UL, + 0x0000000000008ef5UL, + 0x0000000000008f4fUL, + 0x0000000000008f61UL, + 0x0000000000009041UL, + 0x0000000000009086UL, + 0x00000000000090ebUL, + 0x0000000000009109UL, + 0x0000000000009174UL, + 0x00000000000091c2UL, + 0x00000000000091d5UL, + 0x00000000000091f9UL, + 0x00000000000091feUL, + 0x0000000000009269UL, + 0x00000000000092f1UL, + 0x000000000000935dUL, + 0x000000000000936aUL, + 0x00000000000093f2UL, + 0x0000000000009548UL, + 0x000000000000954eUL, + 0x0000000000009572UL, + 0x0000000000009590UL, + 0x00000000000095a8UL, + 0x0000000000009651UL, + 0x0000000000009778UL, + 0x00000000000098c3UL, + 0x0000000000009993UL, + 0x0000000000009a09UL, + 0x0000000000009a1dUL, + 0x0000000000009a52UL, + 0x0000000000009a71UL, + 0x0000000000009a94UL, + 0x0000000000009aadUL, + 0x0000000000009accUL, + 0x0000000000009acfUL, + 0x0000000000009b2eUL, + 0x0000000000009b47UL, + 0x0000000000009b88UL, + 0x0000000000009b96UL, + 0x0000000000009c99UL, + 0x0000000000009dbbUL, + 0x0000000000009dd8UL, + 0x0000000000009e74UL, + 0x0000000000009e9cUL, + 0x0000000000009ebaUL, + 0x0000000000009ee3UL, + 0x000000000000a03fUL, + 0x000000000000a0b2UL, + 0x000000000000a13cUL, + 0x000000000000a140UL, + 0x000000000000a173UL, + 0x000000000000a1eeUL, + 0x000000000000a1f7UL, + 0x000000000000a212UL, + 0x000000000000a25bUL, + 0x000000000000a277UL, + 0x000000000000a2c6UL, + 0x000000000000a320UL, + 0x000000000000a332UL, + 0x000000000000a351UL, + 0x000000000000a357UL, + 0x000000000000a395UL, + 0x000000000000a401UL, + 0x000000000000a44aUL, + 0x000000000000a470UL, + 0x000000000000a4a7UL, + 0x000000000000a4efUL, + 0x000000000000a630UL, + 0x000000000000a642UL, + 0x000000000000a65dUL, + 0x000000000000a70eUL, + 0x000000000000a7f5UL, + 0x000000000000a860UL, + 0x000000000000a8a1UL, + 0x000000000000a8aeUL, + 0x000000000000a924UL, + 0x000000000000aa17UL, + 0x000000000000aaa3UL, + 0x000000000000ab71UL, + 0x000000000000ab86UL, + 0x000000000000ab91UL, + 0x000000000000ac07UL, + 0x000000000000ac43UL, + 0x000000000000ac5aUL, + 0x000000000000ad2cUL, + 0x000000000000ad4dUL, + 0x000000000000ad73UL, + 0x000000000000ade8UL, + 0x000000000000ae4dUL, + 0x000000000000af22UL, + 0x000000000000af77UL, + 0x000000000000afc0UL, + 0x000000000000b019UL, + 0x000000000000b03aUL, + 0x000000000000b096UL, + 0x000000000000b0dfUL, + 0x000000000000b0e7UL, + 0x000000000000b0f1UL, + 0x000000000000b105UL, + 0x000000000000b117UL, + 0x000000000000b1d0UL, + 0x000000000000b41fUL, + 0x000000000000b42dUL, + 0x000000000000b53dUL, + 0x000000000000b63bUL, + 0x000000000000b648UL, + 0x000000000000b684UL, + 0x000000000000b68aUL, + 0x000000000000b6e4UL, + 0x000000000000b8b9UL, + 0x000000000000b9cfUL, + 0x000000000000ba5aUL, + 0x000000000000bab7UL, + 0x000000000000bbbeUL, + 0x000000000000bbd7UL, + 0x000000000000bcb0UL, + 0x000000000000bcecUL, + 0x000000000000bd19UL, + 0x000000000000bd37UL, + 0x000000000000be7fUL, + 0x000000000000beaeUL, + 0x000000000000beb5UL, + 0x000000000000bed5UL, + 0x000000000000bf16UL, + 0x000000000000bf49UL, + 0x000000000000bf7aUL, + 0x000000000000bf98UL, + 0x000000000000bfa7UL, + 0x000000000000bfa8UL, + 0x000000000000bfb2UL, + 0x000000000000bff9UL, + 0x000000000000c082UL, + 0x000000000000c0b4UL, + 0x000000000000c144UL, + 0x000000000000c2beUL, + 0x000000000000c33dUL, + 0x000000000000c386UL, + 0x000000000000c3c9UL, + 0x000000000000c423UL, + 0x000000000000c458UL, + 0x000000000000c505UL, + 0x000000000000c65bUL, + 0x000000000000c69cUL, + 0x000000000000c6b3UL, + 0x000000000000c6f5UL, + 0x000000000000c796UL, + 0x000000000000c839UL, + 0x000000000000c8e6UL, + 0x000000000000c8fcUL, + 0x000000000000c927UL, + 0x000000000000c928UL, + 0x000000000000c98aUL, + 0x000000000000ca10UL, + 0x000000000000ca26UL, + 0x000000000000ca58UL, + 0x000000000000ca74UL, + 0x000000000000cab1UL, + 0x000000000000cb71UL, + 0x000000000000cbabUL, + 0x000000000000cbb2UL, + 0x000000000000cbe0UL, + 0x000000000000cc42UL, + 0x000000000000cd1dUL, + 0x000000000000cdb5UL, + 0x000000000000ce4cUL, + 0x000000000000ce75UL, + 0x000000000000ce81UL, + 0x000000000000cf22UL, + 0x000000000000cf78UL, + 0x000000000000cfc5UL, + 0x000000000000d011UL, + 0x000000000000d0f6UL, + 0x000000000000d141UL, + 0x000000000000d1e1UL, + 0x000000000000d1f7UL, + 0x000000000000d229UL, + 0x000000000000d2aaUL, + 0x000000000000d2b2UL, + 0x000000000000d33cUL, + 0x000000000000d41eUL, + 0x000000000000d428UL, + 0x000000000000d435UL, + 0x000000000000d445UL, + 0x000000000000d4baUL, + 0x000000000000d68bUL, + 0x000000000000d6a6UL, + 0x000000000000d6c4UL, + 0x000000000000d7e9UL, + 0x000000000000d8a5UL, + 0x000000000000d90eUL, + 0x000000000000d930UL, + 0x000000000000d93fUL, + 0x000000000000d955UL, + 0x000000000000d967UL, + 0x000000000000d9d2UL, + 0x000000000000da2fUL, + 0x000000000000da4aUL, + 0x000000000000da80UL, + 0x000000000000db23UL, + 0x000000000000db24UL, + 0x000000000000dbaeUL, + 0x000000000000dc86UL, + 0x000000000000dcb4UL, + 0x000000000000dd3cUL, + 0x000000000000dd71UL, + 0x000000000000dd9eUL, + 0x000000000000de2dUL, + 0x000000000000deeaUL, + 0x000000000000df17UL, + 0x000000000000e109UL, + 0x000000000000e11dUL, + 0x000000000000e1e0UL, + 0x000000000000e2a9UL, + 0x000000000000e3b7UL, + 0x000000000000e572UL, + 0x000000000000e5bfUL, + 0x000000000000e641UL, + 0x000000000000e679UL, + 0x000000000000e6cfUL, + 0x000000000000e862UL, + 0x000000000000e87dUL, + 0x000000000000e896UL, + 0x000000000000e902UL, + 0x000000000000e947UL, + 0x000000000000eaccUL, + 0x000000000000eb37UL, + 0x000000000000eb3aUL, + 0x000000000000eb3dUL, + 0x000000000000ebbcUL, + 0x000000000000ebc4UL, + 0x000000000000ec11UL, + 0x000000000000ec3fUL, + 0x000000000000ec61UL, + 0x000000000000ec97UL, + 0x000000000000ed09UL, + 0x000000000000ed7cUL, + 0x000000000000ed85UL, + 0x000000000000edccUL, + 0x000000000000edf4UL, + 0x000000000000eed1UL, + 0x000000000000eee4UL, + 0x000000000000ef35UL, + 0x000000000000ef52UL, + 0x000000000000f0e0UL, + 0x000000000000f1a9UL, + 0x000000000000f2a3UL, + 0x000000000000f407UL, + 0x000000000000f4a6UL, + 0x000000000000f556UL, + 0x000000000000f569UL, + 0x000000000000f6a5UL, + 0x000000000000f703UL, + 0x000000000000f850UL, + 0x000000000000f88cUL, + 0x000000000000f898UL, + 0x000000000000f959UL, + 0x000000000000f9caUL, + 0x000000000000f9fbUL, + 0x000000000000faa4UL, + 0x000000000000fab0UL, + 0x000000000000fae8UL, + 0x000000000000fb14UL, + 0x000000000000fc1dUL, + 0x000000000000fca5UL, + 0x000000000000fcd2UL, + 0x000000000000fd07UL, + 0x000000000000fd2dUL, + 0x000000000000fd9dUL, + 0x000000000000fe3cUL, + 0x000000000000fe77UL, + 0x000000000000fe8dUL, + 0x000000000000fee6UL, + 0x000000000000fefaUL, + 0x000000000000ff2eUL, + 0x000000000000ff4bUL, + 0x000000000000ff7dUL, + 0x000000000000ff82UL, + 0x000000000000fffcUL, +}; +apriltag_family_t *tagAruco4x4_1000_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco4x4_1000"); + tf->h = 2; + tf->ncodes = 1000; + tf->codes = codedata; + tf->nbits = 16; + tf->bit_x = calloc(16, sizeof(uint32_t)); + tf->bit_y = calloc(16, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 2; + tf->bit_y[3] = 2; + tf->bit_x[4] = 4; + tf->bit_y[4] = 1; + tf->bit_x[5] = 4; + tf->bit_y[5] = 2; + tf->bit_x[6] = 4; + tf->bit_y[6] = 3; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 4; + tf->bit_x[9] = 3; + tf->bit_y[9] = 4; + tf->bit_x[10] = 2; + tf->bit_y[10] = 4; + tf->bit_x[11] = 3; + tf->bit_y[11] = 3; + tf->bit_x[12] = 1; + tf->bit_y[12] = 4; + tf->bit_x[13] = 1; + tf->bit_y[13] = 3; + tf->bit_x[14] = 1; + tf->bit_y[14] = 2; + tf->bit_x[15] = 2; + tf->bit_y[15] = 3; + tf->width_at_border = 6; + tf->total_width = 8; + tf->reversed_border = false; + return tf; +} + +void tagAruco4x4_1000_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco4x4_1000.h b/tagAruco4x4_1000.h new file mode 100644 index 00000000..d54a004b --- /dev/null +++ b/tagAruco4x4_1000.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO4X4_1000 +#define _TAGARUCO4X4_1000 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco4x4_1000_create(); +void tagAruco4x4_1000_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco4x4_250.c b/tagAruco4x4_250.c new file mode 100644 index 00000000..e9c2e17c --- /dev/null +++ b/tagAruco4x4_250.c @@ -0,0 +1,354 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco4x4_250.h" + +static uint64_t codedata[250] = { + 0x000000000000be50UL, + 0x000000000000174eUL, + 0x0000000000002db8UL, + 0x0000000000008c63UL, + 0x0000000000005a6cUL, + 0x0000000000006cafUL, + 0x000000000000997aUL, + 0x000000000000d255UL, + 0x000000000000fb4fUL, + 0x000000000000d763UL, + 0x000000000000ee86UL, + 0x0000000000000cf4UL, + 0x00000000000013f6UL, + 0x00000000000021eaUL, + 0x0000000000003294UL, + 0x0000000000003378UL, + 0x00000000000051b1UL, + 0x0000000000007100UL, + 0x000000000000726bUL, + 0x00000000000079fcUL, + 0x00000000000091ccUL, + 0x000000000000a8d8UL, + 0x000000000000d2a7UL, + 0x000000000000dc46UL, + 0x000000000000f9e3UL, + 0x0000000000009a91UL, + 0x000000000000b037UL, + 0x000000000000b621UL, + 0x00000000000024d0UL, + 0x00000000000038f9UL, + 0x00000000000052a0UL, + 0x0000000000005f54UL, + 0x00000000000099efUL, + 0x000000000000e8cdUL, + 0x000000000000007eUL, + 0x000000000000049aUL, + 0x0000000000000ab3UL, + 0x00000000000012fdUL, + 0x0000000000001677UL, + 0x0000000000001a4bUL, + 0x0000000000001f08UL, + 0x000000000000211aUL, + 0x000000000000292cUL, + 0x0000000000002a56UL, + 0x000000000000301dUL, + 0x00000000000031dfUL, + 0x00000000000036faUL, + 0x0000000000004533UL, + 0x0000000000004878UL, + 0x0000000000004ac0UL, + 0x0000000000004e24UL, + 0x0000000000005c19UL, + 0x0000000000005c83UL, + 0x0000000000005fe6UL, + 0x0000000000006082UL, + 0x00000000000060f3UL, + 0x0000000000006430UL, + 0x000000000000649dUL, + 0x0000000000006742UL, + 0x00000000000075b7UL, + 0x00000000000077edUL, + 0x0000000000007bcaUL, + 0x0000000000008014UL, + 0x0000000000008521UL, + 0x0000000000008556UL, + 0x0000000000008f59UL, + 0x0000000000009039UL, + 0x0000000000009458UL, + 0x000000000000962cUL, + 0x000000000000988eUL, + 0x0000000000009d96UL, + 0x000000000000af3bUL, + 0x000000000000b822UL, + 0x000000000000bbc9UL, + 0x000000000000bd0fUL, + 0x000000000000bddcUL, + 0x000000000000c3eaUL, + 0x000000000000c453UL, + 0x000000000000ce0bUL, + 0x000000000000cfa5UL, + 0x000000000000d20eUL, + 0x000000000000d514UL, + 0x000000000000d6f0UL, + 0x000000000000e6abUL, + 0x000000000000ecb2UL, + 0x000000000000efdeUL, + 0x000000000000f15aUL, + 0x000000000000fda9UL, + 0x0000000000003eb1UL, + 0x00000000000081beUL, + 0x0000000000007be0UL, + 0x00000000000001efUL, + 0x00000000000011c9UL, + 0x0000000000003487UL, + 0x000000000000460fUL, + 0x0000000000004735UL, + 0x0000000000005772UL, + 0x00000000000057c7UL, + 0x0000000000006437UL, + 0x00000000000068e5UL, + 0x000000000000697bUL, + 0x000000000000b85dUL, + 0x000000000000f4ebUL, + 0x000000000000f8f7UL, + 0x000000000000f976UL, + 0x00000000000000b0UL, + 0x00000000000000c1UL, + 0x000000000000010eUL, + 0x0000000000000166UL, + 0x00000000000001f9UL, + 0x0000000000000228UL, + 0x00000000000002e4UL, + 0x00000000000002f2UL, + 0x0000000000000392UL, + 0x0000000000000467UL, + 0x0000000000000582UL, + 0x00000000000006dfUL, + 0x000000000000070bUL, + 0x0000000000000844UL, + 0x00000000000008baUL, + 0x0000000000000a19UL, + 0x0000000000000ad1UL, + 0x0000000000000b31UL, + 0x0000000000000b94UL, + 0x0000000000000b9fUL, + 0x0000000000000d60UL, + 0x000000000000106aUL, + 0x0000000000001297UL, + 0x00000000000012d0UL, + 0x00000000000012eeUL, + 0x0000000000001357UL, + 0x00000000000013bfUL, + 0x0000000000001529UL, + 0x0000000000001536UL, + 0x00000000000015f8UL, + 0x00000000000016b4UL, + 0x0000000000001786UL, + 0x00000000000017cdUL, + 0x0000000000001937UL, + 0x0000000000001a98UL, + 0x0000000000001c06UL, + 0x0000000000001c0dUL, + 0x0000000000001dceUL, + 0x0000000000001e5cUL, + 0x0000000000001e96UL, + 0x0000000000002004UL, + 0x000000000000209fUL, + 0x0000000000002154UL, + 0x00000000000022c3UL, + 0x0000000000002317UL, + 0x00000000000023f5UL, + 0x0000000000002403UL, + 0x0000000000002461UL, + 0x000000000000269eUL, + 0x000000000000272eUL, + 0x0000000000002756UL, + 0x000000000000284fUL, + 0x000000000000287aUL, + 0x00000000000028e0UL, + 0x00000000000028f7UL, + 0x000000000000298bUL, + 0x00000000000029b3UL, + 0x0000000000002ba9UL, + 0x0000000000002d0eUL, + 0x0000000000002eaaUL, + 0x0000000000002fc7UL, + 0x00000000000031e1UL, + 0x0000000000003504UL, + 0x000000000000355eUL, + 0x0000000000003622UL, + 0x000000000000366dUL, + 0x00000000000036c1UL, + 0x00000000000037f3UL, + 0x0000000000003809UL, + 0x000000000000381eUL, + 0x0000000000003883UL, + 0x00000000000038a8UL, + 0x0000000000003addUL, + 0x0000000000003b4cUL, + 0x0000000000003c17UL, + 0x0000000000003c59UL, + 0x0000000000003c8aUL, + 0x0000000000003cbfUL, + 0x0000000000003d27UL, + 0x0000000000003d3bUL, + 0x0000000000003d6dUL, + 0x0000000000003e2bUL, + 0x0000000000003e73UL, + 0x0000000000003f14UL, + 0x0000000000003fe2UL, + 0x0000000000003fffUL, + 0x00000000000040b7UL, + 0x0000000000004119UL, + 0x00000000000041baUL, + 0x0000000000004411UL, + 0x0000000000004683UL, + 0x00000000000046adUL, + 0x00000000000047efUL, + 0x00000000000048ebUL, + 0x000000000000490bUL, + 0x0000000000004a62UL, + 0x0000000000004aa9UL, + 0x0000000000004b5fUL, + 0x0000000000004bb6UL, + 0x0000000000004cd0UL, + 0x0000000000004d4eUL, + 0x0000000000004e8aUL, + 0x0000000000004eb0UL, + 0x000000000000509bUL, + 0x0000000000005185UL, + 0x00000000000051caUL, + 0x00000000000052e9UL, + 0x000000000000538bUL, + 0x00000000000054c6UL, + 0x00000000000056bbUL, + 0x000000000000570dUL, + 0x00000000000057d1UL, + 0x00000000000058a6UL, + 0x0000000000005923UL, + 0x00000000000059d8UL, + 0x0000000000005adeUL, + 0x0000000000005cc5UL, + 0x0000000000005d7bUL, + 0x0000000000005ddfUL, + 0x0000000000005e42UL, + 0x0000000000005e69UL, + 0x0000000000006311UL, + 0x00000000000063a0UL, + 0x0000000000006445UL, + 0x0000000000006512UL, + 0x00000000000065a1UL, + 0x000000000000672bUL, + 0x00000000000067cbUL, + 0x000000000000682aUL, + 0x00000000000069efUL, + 0x0000000000006afbUL, + 0x0000000000006c06UL, + 0x0000000000006cb5UL, + 0x0000000000006e31UL, + 0x0000000000006e76UL, + 0x0000000000006ec5UL, + 0x0000000000006fd2UL, + 0x0000000000007059UL, + 0x000000000000711cUL, + 0x00000000000071f6UL, + 0x0000000000007386UL, + 0x0000000000007450UL, + 0x00000000000074cfUL, + 0x00000000000075acUL, + 0x0000000000007692UL, +}; +apriltag_family_t *tagAruco4x4_250_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco4x4_250"); + tf->h = 3; + tf->ncodes = 250; + tf->codes = codedata; + tf->nbits = 16; + tf->bit_x = calloc(16, sizeof(uint32_t)); + tf->bit_y = calloc(16, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 2; + tf->bit_y[3] = 2; + tf->bit_x[4] = 4; + tf->bit_y[4] = 1; + tf->bit_x[5] = 4; + tf->bit_y[5] = 2; + tf->bit_x[6] = 4; + tf->bit_y[6] = 3; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 4; + tf->bit_x[9] = 3; + tf->bit_y[9] = 4; + tf->bit_x[10] = 2; + tf->bit_y[10] = 4; + tf->bit_x[11] = 3; + tf->bit_y[11] = 3; + tf->bit_x[12] = 1; + tf->bit_y[12] = 4; + tf->bit_x[13] = 1; + tf->bit_y[13] = 3; + tf->bit_x[14] = 1; + tf->bit_y[14] = 2; + tf->bit_x[15] = 2; + tf->bit_y[15] = 3; + tf->width_at_border = 6; + tf->total_width = 8; + tf->reversed_border = false; + return tf; +} + +void tagAruco4x4_250_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco4x4_250.h b/tagAruco4x4_250.h new file mode 100644 index 00000000..caf3b2d8 --- /dev/null +++ b/tagAruco4x4_250.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO4X4_250 +#define _TAGARUCO4X4_250 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco4x4_250_create(); +void tagAruco4x4_250_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco4x4_50.c b/tagAruco4x4_50.c new file mode 100644 index 00000000..72ea95c5 --- /dev/null +++ b/tagAruco4x4_50.c @@ -0,0 +1,154 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco4x4_50.h" + +static uint64_t codedata[50] = { + 0x000000000000be50UL, + 0x000000000000174eUL, + 0x0000000000002db8UL, + 0x0000000000008c63UL, + 0x0000000000005a6cUL, + 0x0000000000006cafUL, + 0x000000000000997aUL, + 0x000000000000d255UL, + 0x000000000000fb4fUL, + 0x000000000000d763UL, + 0x000000000000ee86UL, + 0x0000000000000cf4UL, + 0x00000000000013f6UL, + 0x00000000000021eaUL, + 0x0000000000003294UL, + 0x0000000000003378UL, + 0x00000000000051b1UL, + 0x0000000000007100UL, + 0x000000000000726bUL, + 0x00000000000079fcUL, + 0x00000000000091ccUL, + 0x000000000000a8d8UL, + 0x000000000000d2a7UL, + 0x000000000000dc46UL, + 0x000000000000f9e3UL, + 0x0000000000009a91UL, + 0x000000000000b037UL, + 0x000000000000b621UL, + 0x00000000000024d0UL, + 0x00000000000038f9UL, + 0x00000000000052a0UL, + 0x0000000000005f54UL, + 0x00000000000099efUL, + 0x000000000000e8cdUL, + 0x000000000000007eUL, + 0x000000000000049aUL, + 0x0000000000000ab3UL, + 0x00000000000012fdUL, + 0x0000000000001677UL, + 0x0000000000001a4bUL, + 0x0000000000001f08UL, + 0x000000000000211aUL, + 0x000000000000292cUL, + 0x0000000000002a56UL, + 0x000000000000301dUL, + 0x00000000000031dfUL, + 0x00000000000036faUL, + 0x0000000000004533UL, + 0x0000000000004878UL, + 0x0000000000004ac0UL, +}; +apriltag_family_t *tagAruco4x4_50_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco4x4_50"); + tf->h = 4; + tf->ncodes = 50; + tf->codes = codedata; + tf->nbits = 16; + tf->bit_x = calloc(16, sizeof(uint32_t)); + tf->bit_y = calloc(16, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 2; + tf->bit_y[3] = 2; + tf->bit_x[4] = 4; + tf->bit_y[4] = 1; + tf->bit_x[5] = 4; + tf->bit_y[5] = 2; + tf->bit_x[6] = 4; + tf->bit_y[6] = 3; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 4; + tf->bit_x[9] = 3; + tf->bit_y[9] = 4; + tf->bit_x[10] = 2; + tf->bit_y[10] = 4; + tf->bit_x[11] = 3; + tf->bit_y[11] = 3; + tf->bit_x[12] = 1; + tf->bit_y[12] = 4; + tf->bit_x[13] = 1; + tf->bit_y[13] = 3; + tf->bit_x[14] = 1; + tf->bit_y[14] = 2; + tf->bit_x[15] = 2; + tf->bit_y[15] = 3; + tf->width_at_border = 6; + tf->total_width = 8; + tf->reversed_border = false; + return tf; +} + +void tagAruco4x4_50_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco4x4_50.h b/tagAruco4x4_50.h new file mode 100644 index 00000000..e920a8ad --- /dev/null +++ b/tagAruco4x4_50.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO4X4_50 +#define _TAGARUCO4X4_50 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco4x4_50_create(); +void tagAruco4x4_50_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco5x5_100.c b/tagAruco5x5_100.c new file mode 100644 index 00000000..b2b1e39e --- /dev/null +++ b/tagAruco5x5_100.c @@ -0,0 +1,222 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco5x5_100.h" + +static uint64_t codedata[100] = { + 0x000000000152c6e3UL, + 0x0000000000158da8UL, + 0x0000000001b977e8UL, + 0x00000000010bddc5UL, + 0x0000000001bb840fUL, + 0x0000000001d4b600UL, + 0x0000000000cfc7b5UL, + 0x0000000000e99b01UL, + 0x000000000110c85eUL, + 0x000000000125f4a7UL, + 0x000000000137383aUL, + 0x0000000001aa21b1UL, + 0x0000000001f83066UL, + 0x00000000005c8d1fUL, + 0x0000000001f7a29bUL, + 0x000000000046df76UL, + 0x00000000009f4366UL, + 0x0000000000be9f2aUL, + 0x0000000000fd2594UL, + 0x000000000119a385UL, + 0x000000000132f579UL, + 0x0000000001470112UL, + 0x000000000169f088UL, + 0x0000000000ac0fe9UL, + 0x0000000001969819UL, + 0x0000000001b2e945UL, + 0x0000000001cb7ab0UL, + 0x0000000000280d30UL, + 0x00000000002fc969UL, + 0x0000000000309a62UL, + 0x000000000039cf27UL, + 0x00000000003eb940UL, + 0x0000000000420f91UL, + 0x00000000004a23aaUL, + 0x0000000000588af4UL, + 0x00000000006dabbeUL, + 0x000000000086e6a8UL, + 0x00000000008a1015UL, + 0x00000000008f364eUL, + 0x000000000099a943UL, + 0x0000000000b0f40aUL, + 0x0000000000b16ee6UL, + 0x0000000000c4bddcUL, + 0x0000000000c873c4UL, + 0x0000000000cdb07bUL, + 0x0000000000e0cb7aUL, + 0x0000000000e27ccfUL, + 0x0000000000e46c18UL, + 0x0000000000f6d405UL, + 0x0000000000ff1de7UL, + 0x00000000010ce599UL, + 0x00000000010e9379UL, + 0x00000000011c3a0bUL, + 0x00000000011f1501UL, + 0x00000000013a6b3fUL, + 0x00000000014636bcUL, + 0x000000000147c1ecUL, + 0x0000000001493fe6UL, + 0x0000000001589c29UL, + 0x00000000015fa835UL, + 0x00000000016ef1f5UL, + 0x000000000172a654UL, + 0x0000000001762cafUL, + 0x0000000001803ca8UL, + 0x00000000018557f4UL, + 0x0000000001922ab6UL, + 0x000000000193d68cUL, + 0x0000000001afb294UL, + 0x0000000001afb94fUL, + 0x0000000001e3c859UL, + 0x0000000001f9c216UL, + 0x0000000000f54a13UL, + 0x0000000001a47961UL, + 0x000000000007b538UL, + 0x00000000002a126bUL, + 0x000000000086309eUL, + 0x0000000000a10668UL, + 0x0000000001424346UL, + 0x0000000001904707UL, + 0x00000000019e8615UL, + 0x0000000001ee88bdUL, + 0x000000000000d4eaUL, + 0x000000000007e18bUL, + 0x000000000009c759UL, + 0x00000000000b9f34UL, + 0x00000000000c52a2UL, + 0x00000000000e9cb1UL, + 0x000000000010393cUL, + 0x00000000001835b7UL, + 0x00000000001a762aUL, + 0x00000000001d656dUL, + 0x000000000026b35aUL, + 0x00000000002cb827UL, + 0x0000000000311d2bUL, + 0x0000000000335a4eUL, + 0x00000000003b368dUL, + 0x00000000003bc914UL, + 0x00000000003fb5dfUL, + 0x00000000004da1a1UL, + 0x000000000053b7e0UL, +}; +apriltag_family_t *tagAruco5x5_100_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco5x5_100"); + tf->h = 7; + tf->ncodes = 100; + tf->codes = codedata; + tf->nbits = 25; + tf->bit_x = calloc(25, sizeof(uint32_t)); + tf->bit_y = calloc(25, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 2; + tf->bit_y[4] = 2; + tf->bit_x[5] = 3; + tf->bit_y[5] = 2; + tf->bit_x[6] = 5; + tf->bit_y[6] = 1; + tf->bit_x[7] = 5; + tf->bit_y[7] = 2; + tf->bit_x[8] = 5; + tf->bit_y[8] = 3; + tf->bit_x[9] = 5; + tf->bit_y[9] = 4; + tf->bit_x[10] = 4; + tf->bit_y[10] = 2; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + tf->bit_x[12] = 5; + tf->bit_y[12] = 5; + tf->bit_x[13] = 4; + tf->bit_y[13] = 5; + tf->bit_x[14] = 3; + tf->bit_y[14] = 5; + tf->bit_x[15] = 2; + tf->bit_y[15] = 5; + tf->bit_x[16] = 4; + tf->bit_y[16] = 4; + tf->bit_x[17] = 3; + tf->bit_y[17] = 4; + tf->bit_x[18] = 1; + tf->bit_y[18] = 5; + tf->bit_x[19] = 1; + tf->bit_y[19] = 4; + tf->bit_x[20] = 1; + tf->bit_y[20] = 3; + tf->bit_x[21] = 1; + tf->bit_y[21] = 2; + tf->bit_x[22] = 2; + tf->bit_y[22] = 4; + tf->bit_x[23] = 2; + tf->bit_y[23] = 3; + tf->bit_x[24] = 3; + tf->bit_y[24] = 3; + tf->width_at_border = 7; + tf->total_width = 9; + tf->reversed_border = false; + return tf; +} + +void tagAruco5x5_100_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco5x5_100.h b/tagAruco5x5_100.h new file mode 100644 index 00000000..ec9300bb --- /dev/null +++ b/tagAruco5x5_100.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO5X5_100 +#define _TAGARUCO5X5_100 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco5x5_100_create(); +void tagAruco5x5_100_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco5x5_1000.c b/tagAruco5x5_1000.c new file mode 100644 index 00000000..91bc9d1f --- /dev/null +++ b/tagAruco5x5_1000.c @@ -0,0 +1,1122 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco5x5_1000.h" + +static uint64_t codedata[1000] = { + 0x000000000152c6e3UL, + 0x0000000000158da8UL, + 0x0000000001b977e8UL, + 0x00000000010bddc5UL, + 0x0000000001bb840fUL, + 0x0000000001d4b600UL, + 0x0000000000cfc7b5UL, + 0x0000000000e99b01UL, + 0x000000000110c85eUL, + 0x000000000125f4a7UL, + 0x000000000137383aUL, + 0x0000000001aa21b1UL, + 0x0000000001f83066UL, + 0x00000000005c8d1fUL, + 0x0000000001f7a29bUL, + 0x000000000046df76UL, + 0x00000000009f4366UL, + 0x0000000000be9f2aUL, + 0x0000000000fd2594UL, + 0x000000000119a385UL, + 0x000000000132f579UL, + 0x0000000001470112UL, + 0x000000000169f088UL, + 0x0000000000ac0fe9UL, + 0x0000000001969819UL, + 0x0000000001b2e945UL, + 0x0000000001cb7ab0UL, + 0x0000000000280d30UL, + 0x00000000002fc969UL, + 0x0000000000309a62UL, + 0x000000000039cf27UL, + 0x00000000003eb940UL, + 0x0000000000420f91UL, + 0x00000000004a23aaUL, + 0x0000000000588af4UL, + 0x00000000006dabbeUL, + 0x000000000086e6a8UL, + 0x00000000008a1015UL, + 0x00000000008f364eUL, + 0x000000000099a943UL, + 0x0000000000b0f40aUL, + 0x0000000000b16ee6UL, + 0x0000000000c4bddcUL, + 0x0000000000c873c4UL, + 0x0000000000cdb07bUL, + 0x0000000000e0cb7aUL, + 0x0000000000e27ccfUL, + 0x0000000000e46c18UL, + 0x0000000000f6d405UL, + 0x0000000000ff1de7UL, + 0x00000000010ce599UL, + 0x00000000010e9379UL, + 0x00000000011c3a0bUL, + 0x00000000011f1501UL, + 0x00000000013a6b3fUL, + 0x00000000014636bcUL, + 0x000000000147c1ecUL, + 0x0000000001493fe6UL, + 0x0000000001589c29UL, + 0x00000000015fa835UL, + 0x00000000016ef1f5UL, + 0x000000000172a654UL, + 0x0000000001762cafUL, + 0x0000000001803ca8UL, + 0x00000000018557f4UL, + 0x0000000001922ab6UL, + 0x000000000193d68cUL, + 0x0000000001afb294UL, + 0x0000000001afb94fUL, + 0x0000000001e3c859UL, + 0x0000000001f9c216UL, + 0x0000000000f54a13UL, + 0x0000000001a47961UL, + 0x000000000007b538UL, + 0x00000000002a126bUL, + 0x000000000086309eUL, + 0x0000000000a10668UL, + 0x0000000001424346UL, + 0x0000000001904707UL, + 0x00000000019e8615UL, + 0x0000000001ee88bdUL, + 0x000000000000d4eaUL, + 0x000000000007e18bUL, + 0x000000000009c759UL, + 0x00000000000b9f34UL, + 0x00000000000c52a2UL, + 0x00000000000e9cb1UL, + 0x000000000010393cUL, + 0x00000000001835b7UL, + 0x00000000001a762aUL, + 0x00000000001d656dUL, + 0x000000000026b35aUL, + 0x00000000002cb827UL, + 0x0000000000311d2bUL, + 0x0000000000335a4eUL, + 0x00000000003b368dUL, + 0x00000000003bc914UL, + 0x00000000003fb5dfUL, + 0x00000000004da1a1UL, + 0x000000000053b7e0UL, + 0x00000000005530a6UL, + 0x00000000005753b3UL, + 0x00000000005a4212UL, + 0x00000000005ae3edUL, + 0x00000000005b0355UL, + 0x00000000005f0f7bUL, + 0x000000000060428eUL, + 0x00000000006096a5UL, + 0x000000000063b00bUL, + 0x00000000006f01c6UL, + 0x0000000000708980UL, + 0x000000000073ea78UL, + 0x0000000000815209UL, + 0x000000000082f7ddUL, + 0x000000000089b5abUL, + 0x00000000008b8a0dUL, + 0x000000000091976eUL, + 0x0000000000954868UL, + 0x00000000009b985eUL, + 0x00000000009ddbc8UL, + 0x0000000000a53a7eUL, + 0x0000000000a6efb3UL, + 0x0000000000a9e1f6UL, + 0x0000000000ad8dd7UL, + 0x0000000000b4c867UL, + 0x0000000000b891a4UL, + 0x0000000000ba7f81UL, + 0x0000000000bb2811UL, + 0x0000000000bc3f74UL, + 0x0000000000be72eeUL, + 0x0000000000cb3498UL, + 0x0000000000cb6f6cUL, + 0x0000000000d1a8baUL, + 0x0000000000d83a8dUL, + 0x0000000000e1fac2UL, + 0x0000000000e7103cUL, + 0x0000000000ed4975UL, + 0x0000000000f026b3UL, + 0x0000000000faf534UL, + 0x000000000101225cUL, + 0x00000000010e4832UL, + 0x00000000011179ddUL, + 0x00000000011599f4UL, + 0x000000000120b9baUL, + 0x000000000126ac68UL, + 0x000000000129332fUL, + 0x000000000130e02dUL, + 0x000000000139af1cUL, + 0x00000000013d2fb2UL, + 0x00000000013f7184UL, + 0x00000000014157c3UL, + 0x000000000143160eUL, + 0x0000000001445a16UL, + 0x00000000014d44abUL, + 0x00000000015ed0daUL, + 0x0000000001613d91UL, + 0x000000000161a061UL, + 0x000000000167d51dUL, + 0x00000000017672c8UL, + 0x000000000179c5c4UL, + 0x00000000017a9343UL, + 0x00000000017e27ecUL, + 0x00000000017fbd0aUL, + 0x000000000181819fUL, + 0x0000000001864c3dUL, + 0x000000000189103aUL, + 0x00000000018d1d98UL, + 0x000000000190144dUL, + 0x000000000190ef4aUL, + 0x0000000001977215UL, + 0x00000000019df438UL, + 0x00000000019e15b4UL, + 0x0000000001a109c4UL, + 0x0000000001a566baUL, + 0x0000000001ad5225UL, + 0x0000000001afe505UL, + 0x0000000001b050a3UL, + 0x0000000001b2ce22UL, + 0x0000000001b717cbUL, + 0x0000000001b734a0UL, + 0x0000000001bca013UL, + 0x0000000001bd68e5UL, + 0x0000000001c41d87UL, + 0x0000000001c82fcbUL, + 0x0000000001c9f151UL, + 0x0000000001ccddfbUL, + 0x0000000001cec510UL, + 0x0000000001de2263UL, + 0x0000000001deca7fUL, + 0x0000000001e40822UL, + 0x0000000001e5aca4UL, + 0x0000000001f11108UL, + 0x0000000001f19eebUL, + 0x0000000001f46bfeUL, + 0x0000000001f59172UL, + 0x0000000001f71885UL, + 0x0000000001f9b1b9UL, + 0x0000000001fbd3ddUL, + 0x0000000001fc920fUL, + 0x0000000001fdc6f0UL, + 0x0000000000c44f53UL, + 0x00000000012d3c61UL, + 0x00000000012e5703UL, + 0x0000000001c3366bUL, + 0x00000000002c17caUL, + 0x000000000056d120UL, + 0x0000000000621da8UL, + 0x00000000007ad388UL, + 0x00000000007c3cfeUL, + 0x0000000000b042d8UL, + 0x0000000000b8995bUL, + 0x0000000000d0c14fUL, + 0x0000000000f8ee30UL, + 0x0000000000fcbbddUL, + 0x00000000011f29e4UL, + 0x00000000014bce2cUL, + 0x00000000014c4df5UL, + 0x0000000001688f2fUL, + 0x000000000173d847UL, + 0x000000000182c3acUL, + 0x000000000194c673UL, + 0x0000000001a73d35UL, + 0x0000000001bc666dUL, + 0x0000000001cb3e5cUL, + 0x0000000001cfb468UL, + 0x0000000001e33634UL, + 0x00000000000017fdUL, + 0x0000000000011eb0UL, + 0x000000000001cdd4UL, + 0x00000000000246cdUL, + 0x0000000000035986UL, + 0x0000000000050e49UL, + 0x00000000000546a5UL, + 0x000000000005ecc8UL, + 0x000000000008cbecUL, + 0x00000000000a8672UL, + 0x00000000000bda00UL, + 0x00000000000be9b0UL, + 0x00000000000c8f75UL, + 0x00000000000c9c4aUL, + 0x00000000000ca068UL, + 0x00000000000e7f79UL, + 0x00000000000fa6dcUL, + 0x00000000000fc792UL, + 0x0000000000125406UL, + 0x00000000001308d4UL, + 0x000000000013497eUL, + 0x0000000000136d39UL, + 0x000000000015a41bUL, + 0x000000000015dac7UL, + 0x0000000000161bf0UL, + 0x000000000017e8b3UL, + 0x00000000001bf598UL, + 0x00000000001d4803UL, + 0x00000000001e464eUL, + 0x00000000001e8c2dUL, + 0x00000000001fedfaUL, + 0x0000000000217183UL, + 0x0000000000220be6UL, + 0x00000000002396dfUL, + 0x000000000024f768UL, + 0x00000000002501f8UL, + 0x000000000027e320UL, + 0x00000000002b543fUL, + 0x00000000002bbc05UL, + 0x00000000002c55d4UL, + 0x00000000003002c3UL, + 0x0000000000314774UL, + 0x000000000034e359UL, + 0x00000000003643e9UL, + 0x0000000000365d3dUL, + 0x000000000037a0d6UL, + 0x0000000000397e12UL, + 0x00000000003ba34cUL, + 0x00000000003ca9eaUL, + 0x00000000003d8bf0UL, + 0x00000000003de437UL, + 0x00000000003df44eUL, + 0x00000000003e0dc5UL, + 0x000000000040abc5UL, + 0x000000000041a6a2UL, + 0x0000000000449864UL, + 0x0000000000459f1aUL, + 0x000000000048678dUL, + 0x0000000000492247UL, + 0x00000000004e29fbUL, + 0x00000000004e48c0UL, + 0x000000000050413aUL, + 0x000000000050d248UL, + 0x000000000050e452UL, + 0x0000000000511299UL, + 0x000000000051c8f9UL, + 0x000000000052422dUL, + 0x0000000000541592UL, + 0x0000000000550b5eUL, + 0x0000000000593833UL, + 0x000000000059c0a0UL, + 0x00000000005a3758UL, + 0x00000000005af10eUL, + 0x00000000005d535bUL, + 0x00000000005db554UL, + 0x0000000000610a65UL, + 0x000000000061b41cUL, + 0x000000000061c840UL, + 0x0000000000631373UL, + 0x000000000064dd5bUL, + 0x0000000000653e58UL, + 0x000000000066c2f5UL, + 0x000000000066cf8cUL, + 0x000000000067f2b2UL, + 0x000000000068b324UL, + 0x000000000068d7dfUL, + 0x000000000069dc9eUL, + 0x00000000006d56e7UL, + 0x00000000006e2771UL, + 0x00000000006e5c1cUL, + 0x00000000006ee096UL, + 0x00000000006f6133UL, + 0x00000000006f7064UL, + 0x0000000000712329UL, + 0x000000000071aa87UL, + 0x000000000071f8bfUL, + 0x0000000000732dccUL, + 0x0000000000742175UL, + 0x000000000075cd66UL, + 0x0000000000786b6eUL, + 0x000000000078ac0cUL, + 0x000000000078d0d4UL, + 0x00000000007b0f2cUL, + 0x00000000007bc2d3UL, + 0x00000000007d47e8UL, + 0x00000000007f01b9UL, + 0x0000000000824af4UL, + 0x00000000008445ceUL, + 0x00000000008559c3UL, + 0x000000000085ef9fUL, + 0x0000000000875475UL, + 0x0000000000875e22UL, + 0x000000000087904fUL, + 0x000000000088bc10UL, + 0x00000000008d81edUL, + 0x00000000008f9b67UL, + 0x0000000000906ba9UL, + 0x0000000000907df2UL, + 0x0000000000922c0fUL, + 0x0000000000926f9aUL, + 0x0000000000928d7fUL, + 0x000000000095da74UL, + 0x00000000009616e8UL, + 0x00000000009704adUL, + 0x000000000098dca5UL, + 0x00000000009950ddUL, + 0x0000000000998c33UL, + 0x00000000009b19c9UL, + 0x00000000009d3dceUL, + 0x00000000009e212cUL, + 0x0000000000a053e2UL, + 0x0000000000a08d4eUL, + 0x0000000000a31ac3UL, + 0x0000000000a38296UL, + 0x0000000000a3d99dUL, + 0x0000000000a41ca5UL, + 0x0000000000a689ebUL, + 0x0000000000a78c71UL, + 0x0000000000a8b796UL, + 0x0000000000a8d7b9UL, + 0x0000000000a9ff2eUL, + 0x0000000000aa1c89UL, + 0x0000000000abc261UL, + 0x0000000000af39f0UL, + 0x0000000000afac66UL, + 0x0000000000b05d5cUL, + 0x0000000000b2a0c1UL, + 0x0000000000b332aaUL, + 0x0000000000b48168UL, + 0x0000000000b48fe4UL, + 0x0000000000b4bc32UL, + 0x0000000000b4beafUL, + 0x0000000000b5568aUL, + 0x0000000000b62515UL, + 0x0000000000b80a3bUL, + 0x0000000000b847ffUL, + 0x0000000000b91363UL, + 0x0000000000b96048UL, + 0x0000000000b9de7aUL, + 0x0000000000b9ebf9UL, + 0x0000000000ba4dd6UL, + 0x0000000000bd23c7UL, + 0x0000000000bd370cUL, + 0x0000000000bdbe99UL, + 0x0000000000be00a7UL, + 0x0000000000befbe3UL, + 0x0000000000bf2f41UL, + 0x0000000000bf387dUL, + 0x0000000000bf84f4UL, + 0x0000000000c01310UL, + 0x0000000000c1f678UL, + 0x0000000000c2b282UL, + 0x0000000000c56f90UL, + 0x0000000000c7d37dUL, + 0x0000000000cf3ac4UL, + 0x0000000000cf597eUL, + 0x0000000000cfae4bUL, + 0x0000000000d00d98UL, + 0x0000000000d3dcabUL, + 0x0000000000d3f022UL, + 0x0000000000d4f2b0UL, + 0x0000000000d53959UL, + 0x0000000000d9a41eUL, + 0x0000000000da64ccUL, + 0x0000000000db1522UL, + 0x0000000000dd12b7UL, + 0x0000000000ddb08aUL, + 0x0000000000de1b03UL, + 0x0000000000df9abcUL, + 0x0000000000e2d1c4UL, + 0x0000000000e3e0aeUL, + 0x0000000000e917f1UL, + 0x0000000000ea9c73UL, + 0x0000000000eb8484UL, + 0x0000000000eb8bf4UL, + 0x0000000000ebf5dbUL, + 0x0000000000ec424fUL, + 0x0000000000eccfbfUL, + 0x0000000000ed9c2eUL, + 0x0000000000ef2fa0UL, + 0x0000000000ef6cafUL, + 0x0000000000eff4b1UL, + 0x0000000000f08704UL, + 0x0000000000f2b04cUL, + 0x0000000000f3049bUL, + 0x0000000000f59b2dUL, + 0x0000000000f91997UL, + 0x0000000000f9dd69UL, + 0x0000000000fa25efUL, + 0x0000000000fe3009UL, + 0x0000000000fe31b6UL, + 0x0000000000ffc55cUL, + 0x0000000001005c92UL, + 0x000000000100eb53UL, + 0x00000000010180d2UL, + 0x000000000102b443UL, + 0x000000000103433bUL, + 0x000000000103bbb7UL, + 0x0000000001043ab5UL, + 0x00000000010451a7UL, + 0x0000000001048a27UL, + 0x0000000001083eafUL, + 0x0000000001094e37UL, + 0x00000000010a51b0UL, + 0x00000000010b391bUL, + 0x00000000010bc416UL, + 0x00000000010c33f3UL, + 0x00000000010eb514UL, + 0x00000000010ef64aUL, + 0x00000000010fb887UL, + 0x0000000001142344UL, + 0x000000000116c609UL, + 0x000000000117d3deUL, + 0x0000000001190865UL, + 0x0000000001190bf9UL, + 0x00000000011aa928UL, + 0x00000000011ab1d1UL, + 0x00000000011b6a59UL, + 0x00000000011c5d72UL, + 0x00000000011cc0e6UL, + 0x00000000011e07a3UL, + 0x00000000011eeab8UL, + 0x00000000011f5bbaUL, + 0x0000000001218a0bUL, + 0x0000000001224f34UL, + 0x000000000123afe4UL, + 0x000000000124ea9fUL, + 0x000000000125c386UL, + 0x000000000127116eUL, + 0x0000000001274de0UL, + 0x0000000001279f52UL, + 0x0000000001298aa6UL, + 0x000000000129edffUL, + 0x00000000012ab628UL, + 0x00000000012be0ddUL, + 0x00000000012f620aUL, + 0x00000000012f8198UL, + 0x00000000013166fdUL, + 0x000000000131d05bUL, + 0x000000000132db6bUL, + 0x0000000001340778UL, + 0x0000000001344237UL, + 0x0000000001345ee0UL, + 0x0000000001359733UL, + 0x0000000001374b28UL, + 0x0000000001386162UL, + 0x000000000139175aUL, + 0x00000000013bc06eUL, + 0x00000000013c7d27UL, + 0x00000000013ca18fUL, + 0x00000000013d94baUL, + 0x00000000013f44d7UL, + 0x00000000013fc21fUL, + 0x0000000001403cd7UL, + 0x00000000014049d9UL, + 0x000000000141cbb6UL, + 0x0000000001438f5dUL, + 0x00000000014391e3UL, + 0x0000000001469055UL, + 0x000000000146f729UL, + 0x000000000146f9cbUL, + 0x00000000014a0d21UL, + 0x00000000014b88e4UL, + 0x00000000014cc89eUL, + 0x00000000014dd263UL, + 0x00000000014dde85UL, + 0x00000000014e35caUL, + 0x00000000014fd8b9UL, + 0x000000000150266fUL, + 0x000000000152378bUL, + 0x000000000154631bUL, + 0x000000000155c131UL, + 0x000000000156e0cdUL, + 0x000000000156ed75UL, + 0x0000000001575afcUL, + 0x000000000159305aUL, + 0x00000000015a6b95UL, + 0x00000000015adc64UL, + 0x00000000015bc55bUL, + 0x00000000015c79f8UL, + 0x00000000015edb4dUL, + 0x00000000015f633dUL, + 0x00000000015fa7b4UL, + 0x000000000160a48bUL, + 0x00000000016132bbUL, + 0x00000000016244deUL, + 0x0000000001640b43UL, + 0x000000000165707fUL, + 0x0000000001657201UL, + 0x000000000166115bUL, + 0x0000000001665c81UL, + 0x000000000167d37aUL, + 0x000000000169026aUL, + 0x00000000016925f3UL, + 0x00000000016abdf0UL, + 0x00000000016b4be5UL, + 0x00000000016b5f80UL, + 0x00000000016b9587UL, + 0x00000000016bfe59UL, + 0x00000000016cd182UL, + 0x00000000016d50b0UL, + 0x00000000016e84d3UL, + 0x00000000016f6cf6UL, + 0x0000000001703828UL, + 0x00000000017364b7UL, + 0x0000000001738a33UL, + 0x000000000173b4d1UL, + 0x000000000174fdbeUL, + 0x0000000001756934UL, + 0x0000000001771452UL, + 0x0000000001780092UL, + 0x000000000178f33aUL, + 0x00000000017a02f9UL, + 0x00000000017a68acUL, + 0x00000000017ba6e6UL, + 0x00000000017eadc6UL, + 0x00000000017f53c1UL, + 0x00000000017f59b7UL, + 0x00000000017f761eUL, + 0x000000000180a3f9UL, + 0x000000000184a303UL, + 0x0000000001871bacUL, + 0x000000000188377eUL, + 0x0000000001894086UL, + 0x0000000001898fbcUL, + 0x000000000189e7e7UL, + 0x00000000018a2982UL, + 0x00000000018b2426UL, + 0x00000000018bff20UL, + 0x00000000018c7fc5UL, + 0x00000000018e4fdaUL, + 0x00000000018f3fa3UL, + 0x00000000018fa9b6UL, + 0x00000000018fda1cUL, + 0x0000000001917e3bUL, + 0x000000000191e17fUL, + 0x00000000019358efUL, + 0x0000000001940076UL, + 0x0000000001977b4bUL, + 0x00000000019a135bUL, + 0x00000000019d5cf1UL, + 0x00000000019f8f6cUL, + 0x0000000001a1f691UL, + 0x0000000001a38d32UL, + 0x0000000001a4a046UL, + 0x0000000001a69e5cUL, + 0x0000000001aaa0faUL, + 0x0000000001aace94UL, + 0x0000000001abc93fUL, + 0x0000000001abd38bUL, + 0x0000000001acb39bUL, + 0x0000000001ad6beaUL, + 0x0000000001ad8923UL, + 0x0000000001af0714UL, + 0x0000000001b1d3f1UL, + 0x0000000001b263e4UL, + 0x0000000001b345c1UL, + 0x0000000001b386b5UL, + 0x0000000001b5c32bUL, + 0x0000000001b5c64eUL, + 0x0000000001b690d4UL, + 0x0000000001b8953fUL, + 0x0000000001bb272bUL, + 0x0000000001bc18a8UL, + 0x0000000001be1e7bUL, + 0x0000000001bfe3b2UL, + 0x0000000001c31ee0UL, + 0x0000000001c36d84UL, + 0x0000000001c49b5fUL, + 0x0000000001c68beeUL, + 0x0000000001c86329UL, + 0x0000000001c8b9e8UL, + 0x0000000001cba1c5UL, + 0x0000000001cbb2eeUL, + 0x0000000001cbf5b6UL, + 0x0000000001d06ae0UL, + 0x0000000001d08443UL, + 0x0000000001d10cf5UL, + 0x0000000001d26419UL, + 0x0000000001d3081cUL, + 0x0000000001d52090UL, + 0x0000000001d64294UL, + 0x0000000001d79216UL, + 0x0000000001d89f62UL, + 0x0000000001d917adUL, + 0x0000000001dab994UL, + 0x0000000001db559fUL, + 0x0000000001dbcda7UL, + 0x0000000001dd65a8UL, + 0x0000000001dea1abUL, + 0x0000000001df2650UL, + 0x0000000001df8349UL, + 0x0000000001e15912UL, + 0x0000000001e16ef1UL, + 0x0000000001e1f36bUL, + 0x0000000001e26232UL, + 0x0000000001e3c1d2UL, + 0x0000000001e42d92UL, + 0x0000000001e74e6fUL, + 0x0000000001e77adbUL, + 0x0000000001ec5a9aUL, + 0x0000000001ed0dfeUL, + 0x0000000001eef8c4UL, + 0x0000000001f19834UL, + 0x0000000001f3ddceUL, + 0x0000000001f7fcbdUL, + 0x0000000001f8d552UL, + 0x0000000001f95ac9UL, + 0x0000000001f9fa65UL, + 0x0000000001fb4f1aUL, + 0x0000000001fc7a3fUL, + 0x0000000001fd3a9cUL, + 0x0000000001fe4990UL, + 0x0000000001fee44bUL, + 0x00000000002e5d93UL, + 0x00000000014ebe63UL, + 0x00000000000050d3UL, + 0x0000000000026995UL, + 0x00000000000607b0UL, + 0x0000000000066c16UL, + 0x000000000006ca5fUL, + 0x000000000006d740UL, + 0x00000000000800b7UL, + 0x0000000000080451UL, + 0x000000000009fd17UL, + 0x00000000000cca88UL, + 0x00000000000d7db9UL, + 0x00000000001063feUL, + 0x000000000010d723UL, + 0x0000000000116e5eUL, + 0x00000000001230bbUL, + 0x00000000001311d2UL, + 0x0000000000135bedUL, + 0x000000000015ab69UL, + 0x0000000000166ceeUL, + 0x00000000001a3f33UL, + 0x00000000001a4e75UL, + 0x00000000001bde5fUL, + 0x00000000001ea001UL, + 0x000000000020deb3UL, + 0x0000000000212942UL, + 0x0000000000231c54UL, + 0x000000000024e727UL, + 0x0000000000263031UL, + 0x000000000027255aUL, + 0x00000000002733a7UL, + 0x0000000000278608UL, + 0x0000000000282957UL, + 0x000000000028d943UL, + 0x0000000000290d9bUL, + 0x0000000000299b8aUL, + 0x00000000002b650fUL, + 0x00000000002b9059UL, + 0x00000000002e416aUL, + 0x00000000002e923eUL, + 0x0000000000301c77UL, + 0x000000000030a064UL, + 0x000000000031904cUL, + 0x000000000034bfd2UL, + 0x0000000000367fcfUL, + 0x0000000000368d9aUL, + 0x0000000000378a24UL, + 0x000000000037bc53UL, + 0x00000000003864bdUL, + 0x00000000003896e7UL, + 0x00000000003cdc15UL, + 0x00000000003d58e2UL, + 0x00000000003ecc42UL, + 0x00000000003f9cccUL, + 0x0000000000404577UL, + 0x000000000042e54cUL, + 0x0000000000446a31UL, + 0x00000000004513b8UL, + 0x000000000045b44dUL, + 0x0000000000461c2aUL, + 0x00000000004a7eecUL, + 0x00000000004adc8dUL, + 0x00000000004b31f6UL, + 0x000000000050f4e5UL, + 0x00000000005107c5UL, + 0x0000000000556348UL, + 0x0000000000557f52UL, + 0x0000000000582b5bUL, + 0x00000000005864ebUL, + 0x0000000000595e2bUL, + 0x00000000005b2226UL, + 0x00000000005b3c81UL, + 0x00000000005dd97dUL, + 0x0000000000605752UL, + 0x00000000006085d1UL, + 0x000000000062713fUL, + 0x000000000067684eUL, + 0x000000000067a717UL, + 0x0000000000680bc0UL, + 0x000000000069bce6UL, + 0x000000000069ffb0UL, + 0x00000000006c5448UL, + 0x00000000006fca5cUL, + 0x0000000000739f99UL, + 0x000000000073f76cUL, + 0x000000000075497bUL, + 0x000000000076845dUL, + 0x000000000077342bUL, + 0x00000000007736c6UL, + 0x000000000077a3efUL, + 0x0000000000784377UL, + 0x00000000007a2746UL, + 0x00000000007c012fUL, + 0x00000000007c79b1UL, + 0x00000000007e1f52UL, + 0x00000000007fd571UL, + 0x00000000008384e2UL, + 0x000000000088c603UL, + 0x000000000089e925UL, + 0x00000000008a592bUL, + 0x00000000008b4839UL, + 0x00000000008ce4a3UL, + 0x0000000000901ed3UL, + 0x0000000000957d14UL, + 0x0000000000967560UL, + 0x000000000096cd81UL, + 0x000000000098769eUL, + 0x000000000099cae2UL, + 0x00000000009a8b93UL, + 0x00000000009d1f5fUL, + 0x00000000009d72a8UL, + 0x00000000009deeecUL, + 0x00000000009ef6ccUL, + 0x0000000000a12eabUL, + 0x0000000000a1a227UL, + 0x0000000000a44caaUL, + 0x0000000000a47ff7UL, + 0x0000000000a67e2bUL, + 0x0000000000a7b0d8UL, + 0x0000000000a7d52bUL, + 0x0000000000aaa2acUL, + 0x0000000000aaa740UL, + 0x0000000000ab67b4UL, + 0x0000000000ad0f25UL, + 0x0000000000add15bUL, + 0x0000000000adff18UL, + 0x0000000000aeca37UL, + 0x0000000000af63ffUL, + 0x0000000000b0e563UL, + 0x0000000000b18e1fUL, + 0x0000000000b30530UL, + 0x0000000000b3d921UL, + 0x0000000000b552e5UL, + 0x0000000000b805f0UL, + 0x0000000000bae83aUL, + 0x0000000000be690bUL, + 0x0000000000c0e241UL, + 0x0000000000c1da94UL, + 0x0000000000c37a03UL, + 0x0000000000c627c9UL, + 0x0000000000c70242UL, + 0x0000000000c90f3fUL, + 0x0000000000c945d5UL, + 0x0000000000ca17faUL, + 0x0000000000cab8dbUL, + 0x0000000000cd5760UL, + 0x0000000000ce6248UL, + 0x0000000000cfd20aUL, + 0x0000000000d17b06UL, + 0x0000000000d23732UL, + 0x0000000000d2b694UL, + 0x0000000000d392e7UL, + 0x0000000000d5143aUL, + 0x0000000000d7084fUL, + 0x0000000000dac2a6UL, + 0x0000000000db1825UL, + 0x0000000000dc9817UL, + 0x0000000000df0553UL, + 0x0000000000e08d1bUL, + 0x0000000000e12340UL, + 0x0000000000e15a5dUL, + 0x0000000000e22e4dUL, + 0x0000000000e56f3eUL, + 0x0000000000e59620UL, + 0x0000000000e776acUL, + 0x0000000000e9721aUL, + 0x0000000000eb6b93UL, + 0x0000000000ebb465UL, + 0x0000000000ec8f90UL, + 0x0000000000ee0affUL, + 0x0000000000ef82e8UL, + 0x0000000000efad7bUL, + 0x0000000000f2206aUL, + 0x0000000000f44e87UL, + 0x0000000000f500aeUL, + 0x0000000000f7b8cbUL, + 0x0000000000f82214UL, + 0x0000000000f93f11UL, + 0x0000000000f9d2a1UL, + 0x0000000001002508UL, + 0x0000000001024751UL, + 0x000000000102e131UL, + 0x00000000010421baUL, + 0x000000000106919fUL, + 0x0000000001075004UL, + 0x0000000001091383UL, + 0x0000000001092d14UL, + 0x000000000109524fUL, + 0x00000000010d9e22UL, + 0x0000000001100b21UL, + 0x00000000011178f6UL, + 0x000000000114df7fUL, + 0x00000000011563e7UL, + 0x000000000116659cUL, + 0x00000000011801dcUL, + 0x00000000011a71a9UL, + 0x00000000011b336cUL, + 0x00000000011d8cc1UL, + 0x00000000011eb747UL, + 0x00000000011ee32eUL, + 0x00000000011f2952UL, + 0x0000000001210f7eUL, + 0x00000000012230e2UL, + 0x0000000001252f1bUL, + 0x000000000125ee66UL, + 0x0000000001269007UL, + 0x000000000129ee5aUL, + 0x00000000012a8f00UL, + 0x00000000012d403eUL, + 0x00000000012e1864UL, + 0x0000000001306731UL, + 0x00000000013233b4UL, + 0x0000000001333a75UL, + 0x000000000133a84fUL, + 0x0000000001350ae1UL, + 0x000000000136e823UL, + 0x00000000013bf256UL, + 0x00000000013cbb5eUL, + 0x00000000013e084aUL, + 0x000000000140dc63UL, + 0x00000000014125edUL, + 0x000000000141bca1UL, + 0x00000000014519c0UL, + 0x0000000001451aefUL, + 0x0000000001456ae8UL, + 0x00000000014720deUL, + 0x00000000014a2f0cUL, + 0x00000000014ae2d2UL, + 0x00000000014c6967UL, + 0x00000000014defe4UL, + 0x00000000014f35a0UL, + 0x000000000150d5a8UL, + 0x000000000152537fUL, + 0x0000000001526700UL, + 0x0000000001543bb2UL, + 0x0000000001544791UL, + 0x0000000001564e45UL, + 0x00000000015bb21dUL, + 0x00000000015c3308UL, + 0x0000000001620360UL, + 0x0000000001624d86UL, + 0x0000000001627835UL, + 0x00000000016363fcUL, + 0x00000000016453d4UL, + 0x000000000164f353UL, + 0x00000000016b3194UL, + 0x00000000016c147aUL, + 0x00000000016db57fUL, + 0x00000000016de2d7UL, + 0x0000000001719197UL, + 0x000000000173696dUL, + 0x00000000017515b4UL, + 0x0000000001783d5cUL, + 0x0000000001788dfdUL, + 0x0000000001796051UL, + 0x00000000017b34ceUL, + 0x00000000017cc39dUL, + 0x00000000017cf40aUL, + 0x00000000017f109bUL, + 0x00000000018060ecUL, + 0x0000000001813841UL, + 0x00000000018287d6UL, + 0x000000000186a81aUL, + 0x00000000018894c1UL, + 0x0000000001893435UL, + 0x00000000018981f0UL, + 0x000000000190bcdeUL, + 0x000000000190f39cUL, + 0x000000000192e850UL, + 0x0000000001982d23UL, + 0x00000000019b5296UL, + 0x00000000019baeefUL, + 0x00000000019eab74UL, + 0x00000000019f7e60UL, + 0x00000000019fe95eUL, + 0x0000000001a22fceUL, + 0x0000000001a3c2ffUL, + 0x0000000001a6c299UL, + 0x0000000001a8c63eUL, + 0x0000000001a97e23UL, + 0x0000000001aab7e3UL, + 0x0000000001ac7614UL, + 0x0000000001ac9129UL, + 0x0000000001acf952UL, + 0x0000000001ad59f9UL, + 0x0000000001af44a1UL, + 0x0000000001b00a70UL, + 0x0000000001b20229UL, + 0x0000000001b2ccc7UL, + 0x0000000001b53ab3UL, + 0x0000000001b6a4f7UL, + 0x0000000001b747a6UL, + 0x0000000001b98b76UL, + 0x0000000001ba5bfcUL, + 0x0000000001bee5e0UL, + 0x0000000001c0dd40UL, + 0x0000000001c379e1UL, + 0x0000000001c3b128UL, + 0x0000000001c4b6a3UL, + 0x0000000001c750f2UL, + 0x0000000001c76f57UL, + 0x0000000001c7ee7cUL, + 0x0000000001c8b297UL, + 0x0000000001ca75c9UL, + 0x0000000001cde475UL, + 0x0000000001d80bc4UL, + 0x0000000001d8467aUL, + 0x0000000001dac7c0UL, + 0x0000000001dc6d05UL, + 0x0000000001dd7be3UL, + 0x0000000001de0c68UL, + 0x0000000001df4c8cUL, + 0x0000000001e04111UL, + 0x0000000001e08cafUL, + 0x0000000001e0ff6cUL, + 0x0000000001e302d5UL, + 0x0000000001e31df3UL, + 0x0000000001e3457fUL, + 0x0000000001e76f48UL, + 0x0000000001e7a031UL, + 0x0000000001e7b1fbUL, + 0x0000000001e9c8f5UL, + 0x0000000001ea1e6eUL, + 0x0000000001ea5717UL, + 0x0000000001eba042UL, + 0x0000000001ec628cUL, + 0x0000000001ecf5a1UL, + 0x0000000001edbaa9UL, + 0x0000000001f07fc3UL, + 0x0000000001f0d049UL, + 0x0000000001f12aacUL, + 0x0000000001f28ea4UL, + 0x0000000001f2cc7aUL, + 0x0000000001f37cd4UL, + 0x0000000001f67122UL, + 0x0000000001f709ecUL, + 0x0000000001fb4677UL, + 0x0000000001fdc4ffUL, + 0x0000000001fe5661UL, +}; +apriltag_family_t *tagAruco5x5_1000_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco5x5_1000"); + tf->h = 5; + tf->ncodes = 1000; + tf->codes = codedata; + tf->nbits = 25; + tf->bit_x = calloc(25, sizeof(uint32_t)); + tf->bit_y = calloc(25, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 2; + tf->bit_y[4] = 2; + tf->bit_x[5] = 3; + tf->bit_y[5] = 2; + tf->bit_x[6] = 5; + tf->bit_y[6] = 1; + tf->bit_x[7] = 5; + tf->bit_y[7] = 2; + tf->bit_x[8] = 5; + tf->bit_y[8] = 3; + tf->bit_x[9] = 5; + tf->bit_y[9] = 4; + tf->bit_x[10] = 4; + tf->bit_y[10] = 2; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + tf->bit_x[12] = 5; + tf->bit_y[12] = 5; + tf->bit_x[13] = 4; + tf->bit_y[13] = 5; + tf->bit_x[14] = 3; + tf->bit_y[14] = 5; + tf->bit_x[15] = 2; + tf->bit_y[15] = 5; + tf->bit_x[16] = 4; + tf->bit_y[16] = 4; + tf->bit_x[17] = 3; + tf->bit_y[17] = 4; + tf->bit_x[18] = 1; + tf->bit_y[18] = 5; + tf->bit_x[19] = 1; + tf->bit_y[19] = 4; + tf->bit_x[20] = 1; + tf->bit_y[20] = 3; + tf->bit_x[21] = 1; + tf->bit_y[21] = 2; + tf->bit_x[22] = 2; + tf->bit_y[22] = 4; + tf->bit_x[23] = 2; + tf->bit_y[23] = 3; + tf->bit_x[24] = 3; + tf->bit_y[24] = 3; + tf->width_at_border = 7; + tf->total_width = 9; + tf->reversed_border = false; + return tf; +} + +void tagAruco5x5_1000_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco5x5_1000.h b/tagAruco5x5_1000.h new file mode 100644 index 00000000..dc309a12 --- /dev/null +++ b/tagAruco5x5_1000.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO5X5_1000 +#define _TAGARUCO5X5_1000 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco5x5_1000_create(); +void tagAruco5x5_1000_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco5x5_250.c b/tagAruco5x5_250.c new file mode 100644 index 00000000..05ce9ccf --- /dev/null +++ b/tagAruco5x5_250.c @@ -0,0 +1,372 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco5x5_250.h" + +static uint64_t codedata[250] = { + 0x000000000152c6e3UL, + 0x0000000000158da8UL, + 0x0000000001b977e8UL, + 0x00000000010bddc5UL, + 0x0000000001bb840fUL, + 0x0000000001d4b600UL, + 0x0000000000cfc7b5UL, + 0x0000000000e99b01UL, + 0x000000000110c85eUL, + 0x000000000125f4a7UL, + 0x000000000137383aUL, + 0x0000000001aa21b1UL, + 0x0000000001f83066UL, + 0x00000000005c8d1fUL, + 0x0000000001f7a29bUL, + 0x000000000046df76UL, + 0x00000000009f4366UL, + 0x0000000000be9f2aUL, + 0x0000000000fd2594UL, + 0x000000000119a385UL, + 0x000000000132f579UL, + 0x0000000001470112UL, + 0x000000000169f088UL, + 0x0000000000ac0fe9UL, + 0x0000000001969819UL, + 0x0000000001b2e945UL, + 0x0000000001cb7ab0UL, + 0x0000000000280d30UL, + 0x00000000002fc969UL, + 0x0000000000309a62UL, + 0x000000000039cf27UL, + 0x00000000003eb940UL, + 0x0000000000420f91UL, + 0x00000000004a23aaUL, + 0x0000000000588af4UL, + 0x00000000006dabbeUL, + 0x000000000086e6a8UL, + 0x00000000008a1015UL, + 0x00000000008f364eUL, + 0x000000000099a943UL, + 0x0000000000b0f40aUL, + 0x0000000000b16ee6UL, + 0x0000000000c4bddcUL, + 0x0000000000c873c4UL, + 0x0000000000cdb07bUL, + 0x0000000000e0cb7aUL, + 0x0000000000e27ccfUL, + 0x0000000000e46c18UL, + 0x0000000000f6d405UL, + 0x0000000000ff1de7UL, + 0x00000000010ce599UL, + 0x00000000010e9379UL, + 0x00000000011c3a0bUL, + 0x00000000011f1501UL, + 0x00000000013a6b3fUL, + 0x00000000014636bcUL, + 0x000000000147c1ecUL, + 0x0000000001493fe6UL, + 0x0000000001589c29UL, + 0x00000000015fa835UL, + 0x00000000016ef1f5UL, + 0x000000000172a654UL, + 0x0000000001762cafUL, + 0x0000000001803ca8UL, + 0x00000000018557f4UL, + 0x0000000001922ab6UL, + 0x000000000193d68cUL, + 0x0000000001afb294UL, + 0x0000000001afb94fUL, + 0x0000000001e3c859UL, + 0x0000000001f9c216UL, + 0x0000000000f54a13UL, + 0x0000000001a47961UL, + 0x000000000007b538UL, + 0x00000000002a126bUL, + 0x000000000086309eUL, + 0x0000000000a10668UL, + 0x0000000001424346UL, + 0x0000000001904707UL, + 0x00000000019e8615UL, + 0x0000000001ee88bdUL, + 0x000000000000d4eaUL, + 0x000000000007e18bUL, + 0x000000000009c759UL, + 0x00000000000b9f34UL, + 0x00000000000c52a2UL, + 0x00000000000e9cb1UL, + 0x000000000010393cUL, + 0x00000000001835b7UL, + 0x00000000001a762aUL, + 0x00000000001d656dUL, + 0x000000000026b35aUL, + 0x00000000002cb827UL, + 0x0000000000311d2bUL, + 0x0000000000335a4eUL, + 0x00000000003b368dUL, + 0x00000000003bc914UL, + 0x00000000003fb5dfUL, + 0x00000000004da1a1UL, + 0x000000000053b7e0UL, + 0x00000000005530a6UL, + 0x00000000005753b3UL, + 0x00000000005a4212UL, + 0x00000000005ae3edUL, + 0x00000000005b0355UL, + 0x00000000005f0f7bUL, + 0x000000000060428eUL, + 0x00000000006096a5UL, + 0x000000000063b00bUL, + 0x00000000006f01c6UL, + 0x0000000000708980UL, + 0x000000000073ea78UL, + 0x0000000000815209UL, + 0x000000000082f7ddUL, + 0x000000000089b5abUL, + 0x00000000008b8a0dUL, + 0x000000000091976eUL, + 0x0000000000954868UL, + 0x00000000009b985eUL, + 0x00000000009ddbc8UL, + 0x0000000000a53a7eUL, + 0x0000000000a6efb3UL, + 0x0000000000a9e1f6UL, + 0x0000000000ad8dd7UL, + 0x0000000000b4c867UL, + 0x0000000000b891a4UL, + 0x0000000000ba7f81UL, + 0x0000000000bb2811UL, + 0x0000000000bc3f74UL, + 0x0000000000be72eeUL, + 0x0000000000cb3498UL, + 0x0000000000cb6f6cUL, + 0x0000000000d1a8baUL, + 0x0000000000d83a8dUL, + 0x0000000000e1fac2UL, + 0x0000000000e7103cUL, + 0x0000000000ed4975UL, + 0x0000000000f026b3UL, + 0x0000000000faf534UL, + 0x000000000101225cUL, + 0x00000000010e4832UL, + 0x00000000011179ddUL, + 0x00000000011599f4UL, + 0x000000000120b9baUL, + 0x000000000126ac68UL, + 0x000000000129332fUL, + 0x000000000130e02dUL, + 0x000000000139af1cUL, + 0x00000000013d2fb2UL, + 0x00000000013f7184UL, + 0x00000000014157c3UL, + 0x000000000143160eUL, + 0x0000000001445a16UL, + 0x00000000014d44abUL, + 0x00000000015ed0daUL, + 0x0000000001613d91UL, + 0x000000000161a061UL, + 0x000000000167d51dUL, + 0x00000000017672c8UL, + 0x000000000179c5c4UL, + 0x00000000017a9343UL, + 0x00000000017e27ecUL, + 0x00000000017fbd0aUL, + 0x000000000181819fUL, + 0x0000000001864c3dUL, + 0x000000000189103aUL, + 0x00000000018d1d98UL, + 0x000000000190144dUL, + 0x000000000190ef4aUL, + 0x0000000001977215UL, + 0x00000000019df438UL, + 0x00000000019e15b4UL, + 0x0000000001a109c4UL, + 0x0000000001a566baUL, + 0x0000000001ad5225UL, + 0x0000000001afe505UL, + 0x0000000001b050a3UL, + 0x0000000001b2ce22UL, + 0x0000000001b717cbUL, + 0x0000000001b734a0UL, + 0x0000000001bca013UL, + 0x0000000001bd68e5UL, + 0x0000000001c41d87UL, + 0x0000000001c82fcbUL, + 0x0000000001c9f151UL, + 0x0000000001ccddfbUL, + 0x0000000001cec510UL, + 0x0000000001de2263UL, + 0x0000000001deca7fUL, + 0x0000000001e40822UL, + 0x0000000001e5aca4UL, + 0x0000000001f11108UL, + 0x0000000001f19eebUL, + 0x0000000001f46bfeUL, + 0x0000000001f59172UL, + 0x0000000001f71885UL, + 0x0000000001f9b1b9UL, + 0x0000000001fbd3ddUL, + 0x0000000001fc920fUL, + 0x0000000001fdc6f0UL, + 0x0000000000c44f53UL, + 0x00000000012d3c61UL, + 0x00000000012e5703UL, + 0x0000000001c3366bUL, + 0x00000000002c17caUL, + 0x000000000056d120UL, + 0x0000000000621da8UL, + 0x00000000007ad388UL, + 0x00000000007c3cfeUL, + 0x0000000000b042d8UL, + 0x0000000000b8995bUL, + 0x0000000000d0c14fUL, + 0x0000000000f8ee30UL, + 0x0000000000fcbbddUL, + 0x00000000011f29e4UL, + 0x00000000014bce2cUL, + 0x00000000014c4df5UL, + 0x0000000001688f2fUL, + 0x000000000173d847UL, + 0x000000000182c3acUL, + 0x000000000194c673UL, + 0x0000000001a73d35UL, + 0x0000000001bc666dUL, + 0x0000000001cb3e5cUL, + 0x0000000001cfb468UL, + 0x0000000001e33634UL, + 0x00000000000017fdUL, + 0x0000000000011eb0UL, + 0x000000000001cdd4UL, + 0x00000000000246cdUL, + 0x0000000000035986UL, + 0x0000000000050e49UL, + 0x00000000000546a5UL, + 0x000000000005ecc8UL, + 0x000000000008cbecUL, + 0x00000000000a8672UL, + 0x00000000000bda00UL, + 0x00000000000be9b0UL, + 0x00000000000c8f75UL, + 0x00000000000c9c4aUL, + 0x00000000000ca068UL, + 0x00000000000e7f79UL, + 0x00000000000fa6dcUL, + 0x00000000000fc792UL, + 0x0000000000125406UL, + 0x00000000001308d4UL, + 0x000000000013497eUL, + 0x0000000000136d39UL, + 0x000000000015a41bUL, + 0x000000000015dac7UL, +}; +apriltag_family_t *tagAruco5x5_250_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco5x5_250"); + tf->h = 6; + tf->ncodes = 250; + tf->codes = codedata; + tf->nbits = 25; + tf->bit_x = calloc(25, sizeof(uint32_t)); + tf->bit_y = calloc(25, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 2; + tf->bit_y[4] = 2; + tf->bit_x[5] = 3; + tf->bit_y[5] = 2; + tf->bit_x[6] = 5; + tf->bit_y[6] = 1; + tf->bit_x[7] = 5; + tf->bit_y[7] = 2; + tf->bit_x[8] = 5; + tf->bit_y[8] = 3; + tf->bit_x[9] = 5; + tf->bit_y[9] = 4; + tf->bit_x[10] = 4; + tf->bit_y[10] = 2; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + tf->bit_x[12] = 5; + tf->bit_y[12] = 5; + tf->bit_x[13] = 4; + tf->bit_y[13] = 5; + tf->bit_x[14] = 3; + tf->bit_y[14] = 5; + tf->bit_x[15] = 2; + tf->bit_y[15] = 5; + tf->bit_x[16] = 4; + tf->bit_y[16] = 4; + tf->bit_x[17] = 3; + tf->bit_y[17] = 4; + tf->bit_x[18] = 1; + tf->bit_y[18] = 5; + tf->bit_x[19] = 1; + tf->bit_y[19] = 4; + tf->bit_x[20] = 1; + tf->bit_y[20] = 3; + tf->bit_x[21] = 1; + tf->bit_y[21] = 2; + tf->bit_x[22] = 2; + tf->bit_y[22] = 4; + tf->bit_x[23] = 2; + tf->bit_y[23] = 3; + tf->bit_x[24] = 3; + tf->bit_y[24] = 3; + tf->width_at_border = 7; + tf->total_width = 9; + tf->reversed_border = false; + return tf; +} + +void tagAruco5x5_250_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco5x5_250.h b/tagAruco5x5_250.h new file mode 100644 index 00000000..e8c14794 --- /dev/null +++ b/tagAruco5x5_250.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO5X5_250 +#define _TAGARUCO5X5_250 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco5x5_250_create(); +void tagAruco5x5_250_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco5x5_50.c b/tagAruco5x5_50.c new file mode 100644 index 00000000..6b1c163c --- /dev/null +++ b/tagAruco5x5_50.c @@ -0,0 +1,172 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco5x5_50.h" + +static uint64_t codedata[50] = { + 0x000000000152c6e3UL, + 0x0000000000158da8UL, + 0x0000000001b977e8UL, + 0x00000000010bddc5UL, + 0x0000000001bb840fUL, + 0x0000000001d4b600UL, + 0x0000000000cfc7b5UL, + 0x0000000000e99b01UL, + 0x000000000110c85eUL, + 0x000000000125f4a7UL, + 0x000000000137383aUL, + 0x0000000001aa21b1UL, + 0x0000000001f83066UL, + 0x00000000005c8d1fUL, + 0x0000000001f7a29bUL, + 0x000000000046df76UL, + 0x00000000009f4366UL, + 0x0000000000be9f2aUL, + 0x0000000000fd2594UL, + 0x000000000119a385UL, + 0x000000000132f579UL, + 0x0000000001470112UL, + 0x000000000169f088UL, + 0x0000000000ac0fe9UL, + 0x0000000001969819UL, + 0x0000000001b2e945UL, + 0x0000000001cb7ab0UL, + 0x0000000000280d30UL, + 0x00000000002fc969UL, + 0x0000000000309a62UL, + 0x000000000039cf27UL, + 0x00000000003eb940UL, + 0x0000000000420f91UL, + 0x00000000004a23aaUL, + 0x0000000000588af4UL, + 0x00000000006dabbeUL, + 0x000000000086e6a8UL, + 0x00000000008a1015UL, + 0x00000000008f364eUL, + 0x000000000099a943UL, + 0x0000000000b0f40aUL, + 0x0000000000b16ee6UL, + 0x0000000000c4bddcUL, + 0x0000000000c873c4UL, + 0x0000000000cdb07bUL, + 0x0000000000e0cb7aUL, + 0x0000000000e27ccfUL, + 0x0000000000e46c18UL, + 0x0000000000f6d405UL, + 0x0000000000ff1de7UL, +}; +apriltag_family_t *tagAruco5x5_50_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco5x5_50"); + tf->h = 7; + tf->ncodes = 50; + tf->codes = codedata; + tf->nbits = 25; + tf->bit_x = calloc(25, sizeof(uint32_t)); + tf->bit_y = calloc(25, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 2; + tf->bit_y[4] = 2; + tf->bit_x[5] = 3; + tf->bit_y[5] = 2; + tf->bit_x[6] = 5; + tf->bit_y[6] = 1; + tf->bit_x[7] = 5; + tf->bit_y[7] = 2; + tf->bit_x[8] = 5; + tf->bit_y[8] = 3; + tf->bit_x[9] = 5; + tf->bit_y[9] = 4; + tf->bit_x[10] = 4; + tf->bit_y[10] = 2; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + tf->bit_x[12] = 5; + tf->bit_y[12] = 5; + tf->bit_x[13] = 4; + tf->bit_y[13] = 5; + tf->bit_x[14] = 3; + tf->bit_y[14] = 5; + tf->bit_x[15] = 2; + tf->bit_y[15] = 5; + tf->bit_x[16] = 4; + tf->bit_y[16] = 4; + tf->bit_x[17] = 3; + tf->bit_y[17] = 4; + tf->bit_x[18] = 1; + tf->bit_y[18] = 5; + tf->bit_x[19] = 1; + tf->bit_y[19] = 4; + tf->bit_x[20] = 1; + tf->bit_y[20] = 3; + tf->bit_x[21] = 1; + tf->bit_y[21] = 2; + tf->bit_x[22] = 2; + tf->bit_y[22] = 4; + tf->bit_x[23] = 2; + tf->bit_y[23] = 3; + tf->bit_x[24] = 3; + tf->bit_y[24] = 3; + tf->width_at_border = 7; + tf->total_width = 9; + tf->reversed_border = false; + return tf; +} + +void tagAruco5x5_50_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco5x5_50.h b/tagAruco5x5_50.h new file mode 100644 index 00000000..3e5d1d29 --- /dev/null +++ b/tagAruco5x5_50.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO5X5_50 +#define _TAGARUCO5X5_50 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco5x5_50_create(); +void tagAruco5x5_50_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco6x6_100.c b/tagAruco6x6_100.c new file mode 100644 index 00000000..aaa7c540 --- /dev/null +++ b/tagAruco6x6_100.c @@ -0,0 +1,244 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco6x6_100.h" + +static uint64_t codedata[100] = { + 0x0000000187359537UL, + 0x00000000bebe30f0UL, + 0x00000001674ad6c5UL, + 0x0000000cca05f46cUL, + 0x0000000d0d1ea69eUL, + 0x0000000db17045e8UL, + 0x000000041072bb74UL, + 0x00000008a0ad7603UL, + 0x00000003136ef12eUL, + 0x000000038c24efe6UL, + 0x000000047fdf132aUL, + 0x00000004b3cba425UL, + 0x0000000741459c8fUL, + 0x00000008371b88ffUL, + 0x00000008def1bd41UL, + 0x0000000a22f1f2bdUL, + 0x00000000f26c9aa7UL, + 0x000000015497da67UL, + 0x0000000308c11164UL, + 0x0000000489def7c3UL, + 0x000000053e85b9beUL, + 0x000000062448cc7cUL, + 0x0000000735ba1c39UL, + 0x000000099bd7319dUL, + 0x0000000af8148320UL, + 0x0000000c17a4301bUL, + 0x0000000c7a520881UL, + 0x0000000e54034939UL, + 0x0000000e897c40b3UL, + 0x0000000ed8be3f4cUL, + 0x0000000f8ba3d752UL, + 0x000000001f9eff7dUL, + 0x0000000055ddb604UL, + 0x00000000be25174aUL, + 0x0000000142fb59f0UL, + 0x0000000164f8a5acUL, + 0x00000003910df6ddUL, + 0x00000004c75c1458UL, + 0x00000005401c0bfeUL, + 0x00000005ab1ca5edUL, + 0x00000006051744e1UL, + 0x000000061b0e30c5UL, + 0x00000006520d7ba0UL, + 0x00000006fb6769ffUL, + 0x00000007207fc6a6UL, + 0x0000000765896e4bUL, + 0x00000007a2c4f517UL, + 0x00000008050d5374UL, + 0x000000088127e3baUL, + 0x000000097924acf5UL, + 0x00000009a054b06bUL, + 0x00000009bec85c73UL, + 0x0000000a45347d68UL, + 0x0000000b6e57e84dUL, + 0x0000000b7773c770UL, + 0x0000000b8569e404UL, + 0x0000000c10da8f0aUL, + 0x0000000c3c466640UL, + 0x0000000c64aed8adUL, + 0x0000000c9f3ccfd0UL, + 0x0000000cc4592762UL, + 0x0000000cd9c6c20dUL, + 0x0000000cee30adbaUL, + 0x0000000e56e7a3a6UL, + 0x0000000efcd25392UL, + 0x0000000f5ff92d7eUL, + 0x00000002b4e8a647UL, + 0x00000002f39b337fUL, + 0x000000037dd57e97UL, + 0x0000000a6923c68cUL, + 0x0000000ae992bd80UL, + 0x0000000d8b844ca1UL, + 0x0000000052819cf9UL, + 0x0000000074c0f91bUL, + 0x00000000fd6b6b50UL, + 0x00000001144a026cUL, + 0x0000000121afbfafUL, + 0x000000012893eb1cUL, + 0x0000000134e4c0d4UL, + 0x000000019ba03529UL, + 0x00000001b0392a30UL, + 0x00000001ca1e1341UL, + 0x00000001d8b7a6d6UL, + 0x0000000276934eaeUL, + 0x00000002a1c5ade8UL, + 0x000000035201571eUL, + 0x000000037147bb41UL, + 0x00000003784581bdUL, + 0x00000003bd17caf2UL, + 0x000000041407e597UL, + 0x000000042f638de4UL, + 0x0000000463485d62UL, + 0x00000004b296110cUL, + 0x0000000536f2cd8fUL, + 0x000000055e1322b5UL, + 0x000000056d84cf84UL, + 0x000000056f2fca56UL, + 0x0000000586689fceUL, + 0x000000059551ef6dUL, + 0x000000059db9027bUL, +}; +apriltag_family_t *tagAruco6x6_100_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco6x6_100"); + tf->h = 12; + tf->ncodes = 100; + tf->codes = codedata; + tf->nbits = 36; + tf->bit_x = calloc(36, sizeof(uint32_t)); + tf->bit_y = calloc(36, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 2; + tf->bit_y[5] = 2; + tf->bit_x[6] = 3; + tf->bit_y[6] = 2; + tf->bit_x[7] = 4; + tf->bit_y[7] = 2; + tf->bit_x[8] = 3; + tf->bit_y[8] = 3; + tf->bit_x[9] = 6; + tf->bit_y[9] = 1; + tf->bit_x[10] = 6; + tf->bit_y[10] = 2; + tf->bit_x[11] = 6; + tf->bit_y[11] = 3; + tf->bit_x[12] = 6; + tf->bit_y[12] = 4; + tf->bit_x[13] = 6; + tf->bit_y[13] = 5; + tf->bit_x[14] = 5; + tf->bit_y[14] = 2; + tf->bit_x[15] = 5; + tf->bit_y[15] = 3; + tf->bit_x[16] = 5; + tf->bit_y[16] = 4; + tf->bit_x[17] = 4; + tf->bit_y[17] = 3; + tf->bit_x[18] = 6; + tf->bit_y[18] = 6; + tf->bit_x[19] = 5; + tf->bit_y[19] = 6; + tf->bit_x[20] = 4; + tf->bit_y[20] = 6; + tf->bit_x[21] = 3; + tf->bit_y[21] = 6; + tf->bit_x[22] = 2; + tf->bit_y[22] = 6; + tf->bit_x[23] = 5; + tf->bit_y[23] = 5; + tf->bit_x[24] = 4; + tf->bit_y[24] = 5; + tf->bit_x[25] = 3; + tf->bit_y[25] = 5; + tf->bit_x[26] = 4; + tf->bit_y[26] = 4; + tf->bit_x[27] = 1; + tf->bit_y[27] = 6; + tf->bit_x[28] = 1; + tf->bit_y[28] = 5; + tf->bit_x[29] = 1; + tf->bit_y[29] = 4; + tf->bit_x[30] = 1; + tf->bit_y[30] = 3; + tf->bit_x[31] = 1; + tf->bit_y[31] = 2; + tf->bit_x[32] = 2; + tf->bit_y[32] = 5; + tf->bit_x[33] = 2; + tf->bit_y[33] = 4; + tf->bit_x[34] = 2; + tf->bit_y[34] = 3; + tf->bit_x[35] = 3; + tf->bit_y[35] = 4; + tf->width_at_border = 8; + tf->total_width = 10; + tf->reversed_border = false; + return tf; +} + +void tagAruco6x6_100_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco6x6_100.h b/tagAruco6x6_100.h new file mode 100644 index 00000000..8b2888db --- /dev/null +++ b/tagAruco6x6_100.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO6X6_100 +#define _TAGARUCO6X6_100 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco6x6_100_create(); +void tagAruco6x6_100_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco6x6_1000.c b/tagAruco6x6_1000.c new file mode 100644 index 00000000..f14871d5 --- /dev/null +++ b/tagAruco6x6_1000.c @@ -0,0 +1,1144 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco6x6_1000.h" + +static uint64_t codedata[1000] = { + 0x0000000187359537UL, + 0x00000000bebe30f0UL, + 0x00000001674ad6c5UL, + 0x0000000cca05f46cUL, + 0x0000000d0d1ea69eUL, + 0x0000000db17045e8UL, + 0x000000041072bb74UL, + 0x00000008a0ad7603UL, + 0x00000003136ef12eUL, + 0x000000038c24efe6UL, + 0x000000047fdf132aUL, + 0x00000004b3cba425UL, + 0x0000000741459c8fUL, + 0x00000008371b88ffUL, + 0x00000008def1bd41UL, + 0x0000000a22f1f2bdUL, + 0x00000000f26c9aa7UL, + 0x000000015497da67UL, + 0x0000000308c11164UL, + 0x0000000489def7c3UL, + 0x000000053e85b9beUL, + 0x000000062448cc7cUL, + 0x0000000735ba1c39UL, + 0x000000099bd7319dUL, + 0x0000000af8148320UL, + 0x0000000c17a4301bUL, + 0x0000000c7a520881UL, + 0x0000000e54034939UL, + 0x0000000e897c40b3UL, + 0x0000000ed8be3f4cUL, + 0x0000000f8ba3d752UL, + 0x000000001f9eff7dUL, + 0x0000000055ddb604UL, + 0x00000000be25174aUL, + 0x0000000142fb59f0UL, + 0x0000000164f8a5acUL, + 0x00000003910df6ddUL, + 0x00000004c75c1458UL, + 0x00000005401c0bfeUL, + 0x00000005ab1ca5edUL, + 0x00000006051744e1UL, + 0x000000061b0e30c5UL, + 0x00000006520d7ba0UL, + 0x00000006fb6769ffUL, + 0x00000007207fc6a6UL, + 0x0000000765896e4bUL, + 0x00000007a2c4f517UL, + 0x00000008050d5374UL, + 0x000000088127e3baUL, + 0x000000097924acf5UL, + 0x00000009a054b06bUL, + 0x00000009bec85c73UL, + 0x0000000a45347d68UL, + 0x0000000b6e57e84dUL, + 0x0000000b7773c770UL, + 0x0000000b8569e404UL, + 0x0000000c10da8f0aUL, + 0x0000000c3c466640UL, + 0x0000000c64aed8adUL, + 0x0000000c9f3ccfd0UL, + 0x0000000cc4592762UL, + 0x0000000cd9c6c20dUL, + 0x0000000cee30adbaUL, + 0x0000000e56e7a3a6UL, + 0x0000000efcd25392UL, + 0x0000000f5ff92d7eUL, + 0x00000002b4e8a647UL, + 0x00000002f39b337fUL, + 0x000000037dd57e97UL, + 0x0000000a6923c68cUL, + 0x0000000ae992bd80UL, + 0x0000000d8b844ca1UL, + 0x0000000052819cf9UL, + 0x0000000074c0f91bUL, + 0x00000000fd6b6b50UL, + 0x00000001144a026cUL, + 0x0000000121afbfafUL, + 0x000000012893eb1cUL, + 0x0000000134e4c0d4UL, + 0x000000019ba03529UL, + 0x00000001b0392a30UL, + 0x00000001ca1e1341UL, + 0x00000001d8b7a6d6UL, + 0x0000000276934eaeUL, + 0x00000002a1c5ade8UL, + 0x000000035201571eUL, + 0x000000037147bb41UL, + 0x00000003784581bdUL, + 0x00000003bd17caf2UL, + 0x000000041407e597UL, + 0x000000042f638de4UL, + 0x0000000463485d62UL, + 0x00000004b296110cUL, + 0x0000000536f2cd8fUL, + 0x000000055e1322b5UL, + 0x000000056d84cf84UL, + 0x000000056f2fca56UL, + 0x0000000586689fceUL, + 0x000000059551ef6dUL, + 0x000000059db9027bUL, + 0x00000005cceff55dUL, + 0x00000005d229255bUL, + 0x000000064c9ddd62UL, + 0x000000067eccda0cUL, + 0x00000006a201db7aUL, + 0x00000006f1dd0046UL, + 0x00000006fb415109UL, + 0x00000007177d99e8UL, + 0x00000007388f55faUL, + 0x000000076734a21dUL, + 0x00000007848ba632UL, + 0x000000079167847cUL, + 0x00000007ab338c0dUL, + 0x00000007f094be0aUL, + 0x000000081de59cbfUL, + 0x000000083b6abd5eUL, + 0x000000085c88a26bUL, + 0x000000098294ab90UL, + 0x000000099727b0c8UL, + 0x00000009f6547e8cUL, + 0x0000000a0a0865beUL, + 0x0000000a9620c395UL, + 0x0000000ac4c618c0UL, + 0x0000000b02eddb87UL, + 0x0000000b1d50b035UL, + 0x0000000b4ea4b14eUL, + 0x0000000badbb67b8UL, + 0x0000000bd0e3def5UL, + 0x0000000c1ffa1654UL, + 0x0000000c79a75f83UL, + 0x0000000cd31efa5bUL, + 0x0000000ce1a88d1cUL, + 0x0000000d00ce33a9UL, + 0x0000000d1068a8efUL, + 0x0000000d7264a958UL, + 0x0000000e3caf9955UL, + 0x0000000e5a4d46d5UL, + 0x0000000e8818ae83UL, + 0x0000000e8d17b80aUL, + 0x0000000eba757c10UL, + 0x0000000f0eac5af8UL, + 0x0000000f48566d17UL, + 0x0000000f9c1e79f5UL, + 0x0000000ae1e743d7UL, + 0x0000000c330f5948UL, + 0x0000000179cb95f7UL, + 0x00000004a597a65dUL, + 0x0000000535280f54UL, + 0x0000000692780819UL, + 0x00000007203064b5UL, + 0x00000008530c1caaUL, + 0x0000000cd5dbe8baUL, + 0x0000000d2fe483f0UL, + 0x0000000ebe8e2584UL, + 0x0000000f45b78644UL, + 0x0000000fcad7bbeaUL, + 0x0000000001339f4eUL, + 0x00000000018112a1UL, + 0x00000000073a4daaUL, + 0x000000001f262424UL, + 0x000000001f32e2f8UL, + 0x00000000283b13a4UL, + 0x000000003604b4cdUL, + 0x0000000046517041UL, + 0x0000000050138044UL, + 0x00000000625617afUL, + 0x00000000838b678cUL, + 0x0000000098fd8fa4UL, + 0x00000000b431447dUL, + 0x00000000d12b7ef6UL, + 0x00000000f6d350f7UL, + 0x00000000fd981f31UL, + 0x0000000104b87a8fUL, + 0x000000010c46f942UL, + 0x000000014447a8acUL, + 0x00000001539b8e36UL, + 0x00000001581dbd87UL, + 0x00000001a6b46561UL, + 0x00000001b6cd8f2aUL, + 0x00000001cd634677UL, + 0x00000001d96ba10aUL, + 0x00000001db14928eUL, + 0x00000001e5308efcUL, + 0x00000001e9487698UL, + 0x00000001e9f1f172UL, + 0x0000000220795e56UL, + 0x000000022a37c936UL, + 0x0000000240e00eb6UL, + 0x000000025ed0c569UL, + 0x0000000264bfb6d3UL, + 0x00000002762a830bUL, + 0x0000000299e1f28eUL, + 0x000000029d481345UL, + 0x00000002a3643ef5UL, + 0x00000002d99309caUL, + 0x00000002ec20204bUL, + 0x00000002fa2599f0UL, + 0x000000032518f73eUL, + 0x000000032dcf9e4eUL, + 0x0000000337dc00e3UL, + 0x0000000367de375cUL, + 0x00000003887aab11UL, + 0x000000038e94425dUL, + 0x00000003a78911a8UL, + 0x00000003d2d26b25UL, + 0x00000003d37b558fUL, + 0x00000003d4362f7fUL, + 0x00000003dd34c828UL, + 0x00000003e8afb268UL, + 0x000000040d49e611UL, + 0x000000042c18f155UL, + 0x0000000431b5db39UL, + 0x00000004349fefe4UL, + 0x0000000439565b06UL, + 0x000000043e51d2dcUL, + 0x0000000443cf493cUL, + 0x00000004497a7ac8UL, + 0x000000045e975bd0UL, + 0x000000048f9044feUL, + 0x000000049d5009b0UL, + 0x000000049e5fc173UL, + 0x00000004a04f08f6UL, + 0x00000004c2166f86UL, + 0x00000004d59e052fUL, + 0x00000004e9a614daUL, + 0x00000004f299d88aUL, + 0x00000005046ccfb9UL, + 0x000000055bf0ffbeUL, + 0x0000000576fd77c2UL, + 0x00000005775fc44bUL, + 0x000000058add7861UL, + 0x00000005ae7af43eUL, + 0x00000005c792b9d5UL, + 0x00000005cfd8e6a7UL, + 0x00000005d6b50e99UL, + 0x00000005f46c430dUL, + 0x000000060aff8445UL, + 0x00000006164a1dadUL, + 0x0000000671d1a7b5UL, + 0x000000067ac2f3e5UL, + 0x000000068e6975f0UL, + 0x0000000694e62f90UL, + 0x00000006a094d4f9UL, + 0x00000006aa4eb15aUL, + 0x00000006cb9a0090UL, + 0x00000006d1a94531UL, + 0x00000006e7d2691aUL, + 0x00000006ed3ac6c7UL, + 0x00000006fd7ba039UL, + 0x00000007026405e7UL, + 0x0000000714e067feUL, + 0x0000000718c1bfa9UL, + 0x0000000756b010e9UL, + 0x0000000759006964UL, + 0x000000075e367fa3UL, + 0x000000078d262d41UL, + 0x00000007a6be2bcaUL, + 0x00000007b661f6e9UL, + 0x00000007c57bcc52UL, + 0x00000007dcc470d3UL, + 0x00000008368a68b8UL, + 0x00000008688f24b5UL, + 0x000000086de260ddUL, + 0x000000089945d2d0UL, + 0x00000008aacc504dUL, + 0x00000008c5ff131dUL, + 0x00000008e4824f4eUL, + 0x00000008e5dafb24UL, + 0x00000008eb46dcefUL, + 0x00000009182cfe3cUL, + 0x000000092c092ceaUL, + 0x00000009313fae42UL, + 0x0000000936921730UL, + 0x0000000946ed84e5UL, + 0x0000000947faf06fUL, + 0x000000094a398963UL, + 0x000000095d6e75b7UL, + 0x000000096ae17cc9UL, + 0x000000097b5e0d4dUL, + 0x0000000992385298UL, + 0x00000009a9922323UL, + 0x00000009b8456986UL, + 0x00000009fddd8169UL, + 0x0000000a05f1cfe4UL, + 0x0000000a4bb73c5eUL, + 0x0000000a51416c9aUL, + 0x0000000a5af462e3UL, + 0x0000000a7e1ae714UL, + 0x0000000a91077546UL, + 0x0000000a958a46f5UL, + 0x0000000a9c5c4beeUL, + 0x0000000aa1fb20a4UL, + 0x0000000ae80c71a9UL, + 0x0000000afe711babUL, + 0x0000000b3c6dd763UL, + 0x0000000b66d421b9UL, + 0x0000000b8458d172UL, + 0x0000000b962a5d48UL, + 0x0000000ba6a96af3UL, + 0x0000000bb02f18a1UL, + 0x0000000bcc4054ecUL, + 0x0000000c09122dd8UL, + 0x0000000c182fa5fcUL, + 0x0000000c3d085538UL, + 0x0000000c4f19d67bUL, + 0x0000000c562f2af3UL, + 0x0000000c86610c7aUL, + 0x0000000c9cd3a0edUL, + 0x0000000cbfeed8daUL, + 0x0000000cdc0d11c8UL, + 0x0000000cef743a13UL, + 0x0000000cf9516c23UL, + 0x0000000cffaf2c19UL, + 0x0000000d0daacc7fUL, + 0x0000000d0f8cbd03UL, + 0x0000000d655de9f7UL, + 0x0000000d73d22a6cUL, + 0x0000000d7d9669eaUL, + 0x0000000d8a5250dbUL, + 0x0000000d914262a2UL, + 0x0000000db74ed1e4UL, + 0x0000000ddce45d1eUL, + 0x0000000de3c787fdUL, + 0x0000000dec3dee21UL, + 0x0000000e0246d029UL, + 0x0000000e0f3a091fUL, + 0x0000000e21b83bb2UL, + 0x0000000e2484056aUL, + 0x0000000e3b7220beUL, + 0x0000000e4ba14365UL, + 0x0000000e77ca9195UL, + 0x0000000e8632b70dUL, + 0x0000000eada009a9UL, + 0x0000000eaf6d80ddUL, + 0x0000000eb1e91740UL, + 0x0000000eb1f4c616UL, + 0x0000000edc651625UL, + 0x0000000ef0d9ba71UL, + 0x0000000f014e88daUL, + 0x0000000f06153ffdUL, + 0x0000000f2d67761dUL, + 0x0000000f36f43345UL, + 0x0000000f58baa12dUL, + 0x0000000f6ab1f404UL, + 0x0000000f938aad9fUL, + 0x0000000f9c799e3aUL, + 0x0000000fc095216fUL, + 0x0000000fd12ef760UL, + 0x0000000fd19c9019UL, + 0x0000000fde9e9ac7UL, + 0x0000000fe2519d3cUL, + 0x0000000ffce301f8UL, + 0x0000000a61ec225bUL, + 0x0000000a63010c61UL, + 0x00000000cebc3512UL, + 0x0000000235612533UL, + 0x000000046213d4e5UL, + 0x00000004a7ac9192UL, + 0x00000006719d7d5aUL, + 0x0000000697d4c7bdUL, + 0x0000000833804c8fUL, + 0x000000098052f9a1UL, + 0x0000000a49cbc7d2UL, + 0x00000000025f8a70UL, + 0x00000000035d111bUL, + 0x0000000011327e21UL, + 0x0000000020ec5d8cUL, + 0x00000000236eae3cUL, + 0x000000003899295fUL, + 0x000000003aee7a15UL, + 0x000000004df31d38UL, + 0x000000004ef52b93UL, + 0x0000000058eea7afUL, + 0x000000005a66a846UL, + 0x00000000670d605eUL, + 0x0000000074d9c1f0UL, + 0x000000007ffa6defUL, + 0x00000000879e0846UL, + 0x000000009109c5daUL, + 0x000000009aca57eeUL, + 0x000000009b1acb05UL, + 0x000000009c326103UL, + 0x00000000a05be16fUL, + 0x00000000a4ea9b62UL, + 0x00000000aa27f145UL, + 0x00000000acb0bac8UL, + 0x00000000b92e008cUL, + 0x00000000bf65eebaUL, + 0x00000000bfa757bfUL, + 0x00000000c3a1f2dbUL, + 0x00000000c51f3fe5UL, + 0x00000000c61989d1UL, + 0x00000000cfc5e7e2UL, + 0x00000000e7ac0695UL, + 0x00000000eca32700UL, + 0x00000000ecaf79eaUL, + 0x00000000f2f097d8UL, + 0x00000000f491fdadUL, + 0x00000000f667a576UL, + 0x00000000f9c50b1fUL, + 0x0000000108bee072UL, + 0x0000000113268d1bUL, + 0x00000001181f876bUL, + 0x00000001201b54abUL, + 0x000000013b75d744UL, + 0x000000014b3d0e5bUL, + 0x000000014c8c35f8UL, + 0x000000014d8b7b41UL, + 0x0000000160bd31c9UL, + 0x00000001692ad09bUL, + 0x000000016cc332feUL, + 0x000000016dd4fae0UL, + 0x000000016df0bc5fUL, + 0x0000000176508ee2UL, + 0x000000017a84e32aUL, + 0x000000017e82a980UL, + 0x000000018a955febUL, + 0x00000001940af781UL, + 0x0000000195c13e37UL, + 0x00000001997e7f6eUL, + 0x000000019a07dec6UL, + 0x000000019e90a59bUL, + 0x00000001a3d68096UL, + 0x00000001a9bd4347UL, + 0x00000001aa91f0eeUL, + 0x00000001ae294409UL, + 0x00000001ae8212c4UL, + 0x00000001aedecbccUL, + 0x00000001b8121a7dUL, + 0x00000001bc706ec1UL, + 0x00000001d3f48371UL, + 0x00000001dca12975UL, + 0x00000001e6402c6dUL, + 0x000000020197e122UL, + 0x000000020734169eUL, + 0x0000000216647753UL, + 0x000000021ad5b380UL, + 0x00000002208b1f3dUL, + 0x00000002457aa4ffUL, + 0x0000000259276329UL, + 0x0000000267a97362UL, + 0x0000000269b5ccc1UL, + 0x000000026b1be8c6UL, + 0x000000026ce950d1UL, + 0x000000026f044d33UL, + 0x000000027833b2ddUL, + 0x0000000279ca0e8cUL, + 0x000000027c1f5cffUL, + 0x0000000288f746ffUL, + 0x000000029248d0d7UL, + 0x00000002b2dfe9d5UL, + 0x00000002ba2e256fUL, + 0x00000002d3907e92UL, + 0x00000002d4bd5b41UL, + 0x00000002e3f99d37UL, + 0x00000002ee5d3027UL, + 0x00000002ef2f157cUL, + 0x00000002f357bfb9UL, + 0x00000002f9d8d387UL, + 0x00000003048aa3efUL, + 0x00000003088dd405UL, + 0x0000000312e7168dUL, + 0x00000003151947a7UL, + 0x000000031a38f1b1UL, + 0x000000031fcd29daUL, + 0x00000003240d95e6UL, + 0x00000003251e2cd5UL, + 0x0000000327ceea71UL, + 0x000000033101ee73UL, + 0x0000000334e8b218UL, + 0x0000000350d29a91UL, + 0x00000003527d4ff3UL, + 0x000000035bda3e67UL, + 0x0000000365b35447UL, + 0x0000000368d081daUL, + 0x000000037468d9a5UL, + 0x0000000377031db5UL, + 0x00000003828cf84eUL, + 0x000000038b0cd568UL, + 0x000000038b21799eUL, + 0x00000003a1924dacUL, + 0x00000003b09112bbUL, + 0x00000003b7f36167UL, + 0x00000003beb0fc03UL, + 0x00000003c85e63fbUL, + 0x00000003cdcdaeadUL, + 0x00000003d09d95a0UL, + 0x00000003d6d9a6ebUL, + 0x00000003d9f51dbeUL, + 0x00000003dff393c8UL, + 0x00000003e0248c17UL, + 0x00000003fbddce1eUL, + 0x0000000402ce0392UL, + 0x000000040cea90ecUL, + 0x00000004102cc665UL, + 0x000000041500eeaeUL, + 0x0000000419daa223UL, + 0x000000043b4d80abUL, + 0x000000043f89db70UL, + 0x0000000441bacfd1UL, + 0x0000000459a78dcdUL, + 0x000000045ef55473UL, + 0x0000000460216f78UL, + 0x000000046c6a05a2UL, + 0x000000048385b76fUL, + 0x0000000490c09143UL, + 0x0000000496158deeUL, + 0x00000004985c126aUL, + 0x00000004a15f7444UL, + 0x00000004a18359e3UL, + 0x00000004bce922caUL, + 0x00000004c6ffb0faUL, + 0x00000004d1945ee5UL, + 0x00000004d78fba61UL, + 0x00000004ddd76736UL, + 0x00000004e34346daUL, + 0x00000004e529f4c1UL, + 0x00000004eb913d9cUL, + 0x00000004f4775db2UL, + 0x00000004fb6b37e1UL, + 0x000000050473a7c1UL, + 0x00000005065453e0UL, + 0x0000000517787917UL, + 0x0000000519c34a9aUL, + 0x00000005230700ecUL, + 0x0000000529329718UL, + 0x0000000530388169UL, + 0x000000053ab07a59UL, + 0x000000053bd94df9UL, + 0x000000054d3105efUL, + 0x0000000551450dc0UL, + 0x0000000554686a20UL, + 0x00000005590af37dUL, + 0x0000000559bf44bcUL, + 0x000000055e3b8998UL, + 0x0000000565951a1cUL, + 0x0000000565b8511aUL, + 0x000000056adc4ac3UL, + 0x000000056c8f6f3eUL, + 0x000000057d5031c8UL, + 0x000000057e7226daUL, + 0x00000005850e8307UL, + 0x0000000587703239UL, + 0x00000005956ebb52UL, + 0x00000005a1bebd5bUL, + 0x00000005a5a6c4beUL, + 0x00000005aaf61e88UL, + 0x00000005b154155fUL, + 0x00000005b3ac0449UL, + 0x00000005c2b04454UL, + 0x00000005c7fb67dbUL, + 0x00000005d1ca454cUL, + 0x00000005d4ee34a4UL, + 0x00000005da9365cdUL, + 0x00000005dd5116c6UL, + 0x00000005e4d05715UL, + 0x00000005f5b9c85dUL, + 0x00000005fdfc29bcUL, + 0x00000006143eaf28UL, + 0x00000006237070ebUL, + 0x000000062fd9a062UL, + 0x0000000632d2e652UL, + 0x000000063afb1393UL, + 0x0000000655638401UL, + 0x0000000662206a93UL, + 0x000000066b96f8f3UL, + 0x0000000675f79ae2UL, + 0x000000067dbc8e78UL, + 0x000000068154b891UL, + 0x00000006833c3166UL, + 0x00000006834afe68UL, + 0x000000069783c84aUL, + 0x000000069846ecadUL, + 0x00000006988422a6UL, + 0x000000069d303a7eUL, + 0x00000006a6528530UL, + 0x00000006a78b2d50UL, + 0x00000006b7379350UL, + 0x00000006bc441ec8UL, + 0x00000006c183f90cUL, + 0x00000006d008df99UL, + 0x00000006d2f3827eUL, + 0x00000006e1b113eeUL, + 0x00000006e96cefcaUL, + 0x00000006fc6f50e4UL, + 0x000000070f54d74fUL, + 0x00000007103cbcc1UL, + 0x000000071c86090cUL, + 0x0000000722be51e5UL, + 0x000000072648a6dfUL, + 0x0000000727224972UL, + 0x000000072acca6a0UL, + 0x000000072c9f2265UL, + 0x0000000733e3733dUL, + 0x000000073f5fe595UL, + 0x0000000745327c8eUL, + 0x0000000746318e67UL, + 0x000000074dd7e899UL, + 0x00000007508e9547UL, + 0x0000000750e239bfUL, + 0x0000000751595661UL, + 0x00000007586c1c7aUL, + 0x0000000763cdd5d0UL, + 0x000000076c5e5385UL, + 0x000000076f25bf7aUL, + 0x0000000770b54b57UL, + 0x00000007790700f3UL, + 0x000000077b2c1103UL, + 0x0000000781fda723UL, + 0x000000078c4bb8c5UL, + 0x0000000793189f33UL, + 0x000000079a63a114UL, + 0x00000007ae234ad8UL, + 0x00000007b3f52aaaUL, + 0x00000007b5e25bf4UL, + 0x00000007c2c9c07bUL, + 0x00000007c4111ddaUL, + 0x00000007c92f379bUL, + 0x00000007cdaa1f4fUL, + 0x00000007cef15959UL, + 0x00000007e23b95c3UL, + 0x00000007e7fb2604UL, + 0x00000007efcd1211UL, + 0x00000007f621012eUL, + 0x00000007f717e98fUL, + 0x0000000802636568UL, + 0x0000000806d709cdUL, + 0x000000080955464dUL, + 0x000000080aad7fb1UL, + 0x000000080cf96e78UL, + 0x000000080f87b12dUL, + 0x00000008108150deUL, + 0x0000000813572c3dUL, + 0x0000000814c9daadUL, + 0x0000000823b4b75aUL, + 0x000000082a6c2d83UL, + 0x000000082f217814UL, + 0x0000000830887f6bUL, + 0x00000008367c467eUL, + 0x0000000852665f65UL, + 0x0000000854736280UL, + 0x00000008582a8b94UL, + 0x0000000861d3fad8UL, + 0x0000000865213399UL, + 0x00000008667accb1UL, + 0x000000088c089e10UL, + 0x000000088fe396c7UL, + 0x0000000895d51441UL, + 0x00000008a6c8f5e5UL, + 0x00000008b3eb714bUL, + 0x00000008c5f092baUL, + 0x00000008cf2f2f4fUL, + 0x00000008d1cfbf13UL, + 0x00000008dec00bc2UL, + 0x00000008ea253c37UL, + 0x00000008eda8b002UL, + 0x00000008f7584581UL, + 0x00000008fa70b11fUL, + 0x000000090ad0a485UL, + 0x000000090c62a3b2UL, + 0x0000000912d808faUL, + 0x0000000920dd6f1bUL, + 0x0000000924e5626dUL, + 0x0000000941b92d44UL, + 0x0000000949e7334bUL, + 0x000000094fb576ddUL, + 0x00000009559b20f4UL, + 0x000000096e564172UL, + 0x0000000972c8ebddUL, + 0x000000097770152eUL, + 0x00000009781e3154UL, + 0x00000009790de000UL, + 0x000000098d124abcUL, + 0x000000098e60413fUL, + 0x00000009916e58ddUL, + 0x00000009b0dae628UL, + 0x00000009b19e4e05UL, + 0x00000009b624ddf9UL, + 0x00000009b6fa0951UL, + 0x00000009bba6f264UL, + 0x00000009c4e0ac10UL, + 0x00000009cb40e145UL, + 0x00000009e9d75f5cUL, + 0x00000009f376b4a1UL, + 0x00000009f46916cbUL, + 0x00000009fa1709bcUL, + 0x00000009fe33fab2UL, + 0x0000000a18526b99UL, + 0x0000000a34c7ac27UL, + 0x0000000a361c3852UL, + 0x0000000a3b158ca2UL, + 0x0000000a42348ad4UL, + 0x0000000a443bdf10UL, + 0x0000000a46a2d671UL, + 0x0000000a4b75dabbUL, + 0x0000000a4efb40e6UL, + 0x0000000a526bbc85UL, + 0x0000000a5de66f52UL, + 0x0000000a5f6c97e0UL, + 0x0000000a72852b87UL, + 0x0000000a73b1f9f1UL, + 0x0000000a7e9f1988UL, + 0x0000000a7fd99cc3UL, + 0x0000000a89fa69d2UL, + 0x0000000a8fd0fd33UL, + 0x0000000a9e7534cfUL, + 0x0000000aa17ff279UL, + 0x0000000aa18195d5UL, + 0x0000000abd0211d8UL, + 0x0000000aca33452dUL, + 0x0000000acb80d09cUL, + 0x0000000addbad88fUL, + 0x0000000adf92130dUL, + 0x0000000aeba04846UL, + 0x0000000aef782c60UL, + 0x0000000aefc4f98aUL, + 0x0000000afa7f9654UL, + 0x0000000b0d20ee59UL, + 0x0000000b0e839f6aUL, + 0x0000000b0fbf1192UL, + 0x0000000b11502f26UL, + 0x0000000b1aff2033UL, + 0x0000000b21368527UL, + 0x0000000b2e1f7520UL, + 0x0000000b3b0f0389UL, + 0x0000000b432de3efUL, + 0x0000000b4811e74aUL, + 0x0000000b4965ff74UL, + 0x0000000b4f5fc33eUL, + 0x0000000b59f28ceeUL, + 0x0000000b5ba9d1a6UL, + 0x0000000b5dfbaf15UL, + 0x0000000b617648e5UL, + 0x0000000b6bb4899fUL, + 0x0000000b78f9907fUL, + 0x0000000b80b08b6aUL, + 0x0000000b8283f78bUL, + 0x0000000b8757a3adUL, + 0x0000000b9609bec2UL, + 0x0000000b9cee82deUL, + 0x0000000bbb32a9e9UL, + 0x0000000bbc486d15UL, + 0x0000000bc3db46b1UL, + 0x0000000bc54ecfcdUL, + 0x0000000bccab8bc9UL, + 0x0000000bcdc2a284UL, + 0x0000000bdb2a8609UL, + 0x0000000bdf67cb07UL, + 0x0000000be0521761UL, + 0x0000000be46aa758UL, + 0x0000000be8199684UL, + 0x0000000bec8d5a06UL, + 0x0000000beffbb673UL, + 0x0000000bfebb8225UL, + 0x0000000c12a07fd4UL, + 0x0000000c14e2d6a2UL, + 0x0000000c17671aacUL, + 0x0000000c19e07034UL, + 0x0000000c24b8961fUL, + 0x0000000c2a00b7ebUL, + 0x0000000c2e82f058UL, + 0x0000000c2ef871a8UL, + 0x0000000c3cb7631aUL, + 0x0000000c3edc835bUL, + 0x0000000c4fe3720eUL, + 0x0000000c6bdfb255UL, + 0x0000000c736564c6UL, + 0x0000000c87e420ecUL, + 0x0000000c88913009UL, + 0x0000000c9322936aUL, + 0x0000000c99f7b052UL, + 0x0000000ca39d0368UL, + 0x0000000ca83a8864UL, + 0x0000000cadf33b86UL, + 0x0000000cb03dff9aUL, + 0x0000000cb307ee75UL, + 0x0000000cb5799113UL, + 0x0000000cc034cf72UL, + 0x0000000cdb1d0396UL, + 0x0000000ce2802cc0UL, + 0x0000000ce9894e85UL, + 0x0000000ceb538636UL, + 0x0000000cecdaf8c3UL, + 0x0000000cf056ad6cUL, + 0x0000000cfaa9272dUL, + 0x0000000cfb664112UL, + 0x0000000cfec3da21UL, + 0x0000000d081fe928UL, + 0x0000000d0fffcba9UL, + 0x0000000d1cbb68d9UL, + 0x0000000d1d33dd03UL, + 0x0000000d40215e0dUL, + 0x0000000d43a661b8UL, + 0x0000000d4854bccaUL, + 0x0000000d624d1147UL, + 0x0000000d676ef832UL, + 0x0000000d741aca58UL, + 0x0000000d74f4ee9bUL, + 0x0000000d75cf8d9eUL, + 0x0000000d7f205ce6UL, + 0x0000000d80d19de7UL, + 0x0000000d8679a457UL, + 0x0000000d8d19f3a2UL, + 0x0000000d8ddf46d4UL, + 0x0000000d928d11b3UL, + 0x0000000d93f7fd4dUL, + 0x0000000da67d25aaUL, + 0x0000000da76aa48dUL, + 0x0000000dab1c0a1dUL, + 0x0000000dabf47dd6UL, + 0x0000000dae0dcd32UL, + 0x0000000db0c02a1bUL, + 0x0000000db49dc0c3UL, + 0x0000000db8195d54UL, + 0x0000000dbb403cbdUL, + 0x0000000dc03e1683UL, + 0x0000000dc50dff46UL, + 0x0000000dccb0d027UL, + 0x0000000dd346a1cbUL, + 0x0000000dd3c31259UL, + 0x0000000dd4385c71UL, + 0x0000000dd8daa790UL, + 0x0000000de006edd1UL, + 0x0000000de93edd88UL, + 0x0000000dee2469cdUL, + 0x0000000df98a39e5UL, + 0x0000000dfa3b8e97UL, + 0x0000000e014077f1UL, + 0x0000000e0adc89e1UL, + 0x0000000e11882decUL, + 0x0000000e16b5f94bUL, + 0x0000000e25524e59UL, + 0x0000000e292f927eUL, + 0x0000000e2932e801UL, + 0x0000000e3984c87cUL, + 0x0000000e3bc3e089UL, + 0x0000000e411a41a2UL, + 0x0000000e5b670e22UL, + 0x0000000e65a5eeb2UL, + 0x0000000e6b6a7987UL, + 0x0000000e7620e07aUL, + 0x0000000e8fa61c10UL, + 0x0000000e9628af76UL, + 0x0000000e97a95ccdUL, + 0x0000000e9aedc5edUL, + 0x0000000ea3163c43UL, + 0x0000000ea4e2bc3bUL, + 0x0000000ea5f4ad01UL, + 0x0000000eaad6a2cfUL, + 0x0000000eb0483826UL, + 0x0000000eb484761dUL, + 0x0000000ecd9d7bcfUL, + 0x0000000ed5ff4d64UL, + 0x0000000ede60ee86UL, + 0x0000000ee483a8daUL, + 0x0000000ef33d1c1fUL, + 0x0000000ef3f6cbe8UL, + 0x0000000efa8e6a91UL, + 0x0000000efb964464UL, + 0x0000000f04fc7429UL, + 0x0000000f0c028774UL, + 0x0000000f17823ba4UL, + 0x0000000f1aab265eUL, + 0x0000000f1c0d84a9UL, + 0x0000000f1cb0f13aUL, + 0x0000000f1cc5921dUL, + 0x0000000f1e4e15caUL, + 0x0000000f27cf64acUL, + 0x0000000f32aabb63UL, + 0x0000000f440cf235UL, + 0x0000000f4da8039eUL, + 0x0000000f60cec18fUL, + 0x0000000f610a14f8UL, + 0x0000000f64bd97fcUL, + 0x0000000f6c591839UL, + 0x0000000f717d2832UL, + 0x0000000f76348f8eUL, + 0x0000000f884cb367UL, + 0x0000000fafe9fc6aUL, + 0x0000000fb0a7706aUL, + 0x0000000fb319c0b0UL, + 0x0000000fb4e59a92UL, + 0x0000000fb5907b57UL, + 0x0000000fbbd0b950UL, + 0x0000000fbd1d2f48UL, + 0x0000000fca7f556aUL, + 0x0000000fdb5b191aUL, + 0x0000000fdc13c7b3UL, + 0x0000000fdd0485feUL, + 0x0000000fe26e4c41UL, + 0x0000000fec1e1c1eUL, + 0x0000000ff8157245UL, + 0x0000000ffc80e8bdUL, + 0x0000000ffced66b6UL, + 0x0000000fff7a10a7UL, + 0x000000001d93b051UL, + 0x000000004062c35aUL, + 0x000000005f40e3b7UL, + 0x0000000065099db8UL, + 0x00000000881f7956UL, + 0x000000012311ee8fUL, + 0x000000012d2bcc95UL, + 0x0000000133fdf42bUL, + 0x000000014230c7c3UL, + 0x00000001682a0a47UL, + 0x00000001960107f9UL, + 0x00000001982c31c5UL, + 0x0000000198e6f510UL, + 0x00000001b3efd398UL, + 0x00000001d0b231e6UL, + 0x00000001e7dcda0bUL, + 0x00000001ea0109e7UL, + 0x00000001f7296736UL, + 0x000000020e872de1UL, + 0x000000023c742093UL, + 0x00000002484e1ec6UL, + 0x00000002914d4b2aUL, + 0x00000002b5f8607aUL, + 0x00000002ddd4b06aUL, + 0x00000002ec439c61UL, + 0x00000003366a2f65UL, + 0x0000000399e47e0dUL, + 0x00000003ec60c29dUL, + 0x0000000432ddd7b6UL, + 0x000000043e4f49aeUL, + 0x000000044bf056a9UL, + 0x000000047198b00dUL, + 0x00000004a622d08aUL, + 0x00000004c9652881UL, + 0x000000050af5985fUL, + 0x00000005124578ddUL, + 0x00000005963f201cUL, + 0x00000005afa2f5ccUL, + 0x00000005f8e98f76UL, + 0x0000000600552a02UL, + 0x0000000604106d20UL, + 0x0000000684fb12b0UL, + 0x000000069747ae86UL, + 0x00000006ab7a036dUL, + 0x00000006aba7938cUL, + 0x0000000766da452fUL, + 0x000000078d141121UL, + 0x00000007974640f9UL, + 0x0000000798e68e67UL, + 0x00000007b0dd7fcdUL, + 0x00000007bad1607dUL, + 0x0000000803e818e7UL, + 0x000000084703bc9fUL, + 0x000000084ac6e6b0UL, + 0x000000088a74a76cUL, + 0x00000008a47418a1UL, + 0x00000008a6af5910UL, + 0x00000008ccfc8f57UL, + 0x00000008ce9811deUL, + 0x000000090718132dUL, + 0x00000009504422daUL, + 0x00000009b6369aafUL, + 0x00000009c8aade5cUL, + 0x00000009fab9a8e8UL, + 0x0000000a2a470a3fUL, + 0x0000000a9d8f5927UL, + 0x0000000aafe58f63UL, + 0x0000000ae3244229UL, + 0x0000000b05b0c171UL, + 0x0000000b157c19afUL, + 0x0000000b193a1376UL, + 0x0000000b40b5f41fUL, + 0x0000000b5202a851UL, + 0x0000000b8689bd37UL, + 0x0000000b9fa5e72eUL, + 0x0000000bad7eb2e2UL, + 0x0000000bc47c9086UL, + 0x0000000c0f5e2fa4UL, + 0x0000000c1c7ddeddUL, + 0x0000000c1e1ae912UL, + 0x0000000c2dc54431UL, + 0x0000000c437d1fa3UL, + 0x0000000c47c63669UL, + 0x0000000c54c777ffUL, + 0x0000000c5aca58e9UL, + 0x0000000c892ce454UL, + 0x0000000cfd566adeUL, + 0x0000000d02ad87c8UL, + 0x0000000d1f641306UL, + 0x0000000d6881194eUL, + 0x0000000dd1035f7aUL, + 0x0000000de0984a92UL, + 0x0000000dfe080e3aUL, + 0x0000000e003c047dUL, + 0x0000000e5151b0c0UL, + 0x0000000e6a5124a4UL, + 0x0000000e7f325d98UL, + 0x0000000ea43c63f7UL, + 0x0000000f035a1c6eUL, + 0x0000000f54748553UL, + 0x0000000f75fac4b2UL, + 0x0000000f8124ae2eUL, + 0x0000000fa4df729bUL, + 0x0000000fb9adb105UL, + 0x0000000fbe4bfb57UL, +}; +apriltag_family_t *tagAruco6x6_1000_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco6x6_1000"); + tf->h = 9; + tf->ncodes = 1000; + tf->codes = codedata; + tf->nbits = 36; + tf->bit_x = calloc(36, sizeof(uint32_t)); + tf->bit_y = calloc(36, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 2; + tf->bit_y[5] = 2; + tf->bit_x[6] = 3; + tf->bit_y[6] = 2; + tf->bit_x[7] = 4; + tf->bit_y[7] = 2; + tf->bit_x[8] = 3; + tf->bit_y[8] = 3; + tf->bit_x[9] = 6; + tf->bit_y[9] = 1; + tf->bit_x[10] = 6; + tf->bit_y[10] = 2; + tf->bit_x[11] = 6; + tf->bit_y[11] = 3; + tf->bit_x[12] = 6; + tf->bit_y[12] = 4; + tf->bit_x[13] = 6; + tf->bit_y[13] = 5; + tf->bit_x[14] = 5; + tf->bit_y[14] = 2; + tf->bit_x[15] = 5; + tf->bit_y[15] = 3; + tf->bit_x[16] = 5; + tf->bit_y[16] = 4; + tf->bit_x[17] = 4; + tf->bit_y[17] = 3; + tf->bit_x[18] = 6; + tf->bit_y[18] = 6; + tf->bit_x[19] = 5; + tf->bit_y[19] = 6; + tf->bit_x[20] = 4; + tf->bit_y[20] = 6; + tf->bit_x[21] = 3; + tf->bit_y[21] = 6; + tf->bit_x[22] = 2; + tf->bit_y[22] = 6; + tf->bit_x[23] = 5; + tf->bit_y[23] = 5; + tf->bit_x[24] = 4; + tf->bit_y[24] = 5; + tf->bit_x[25] = 3; + tf->bit_y[25] = 5; + tf->bit_x[26] = 4; + tf->bit_y[26] = 4; + tf->bit_x[27] = 1; + tf->bit_y[27] = 6; + tf->bit_x[28] = 1; + tf->bit_y[28] = 5; + tf->bit_x[29] = 1; + tf->bit_y[29] = 4; + tf->bit_x[30] = 1; + tf->bit_y[30] = 3; + tf->bit_x[31] = 1; + tf->bit_y[31] = 2; + tf->bit_x[32] = 2; + tf->bit_y[32] = 5; + tf->bit_x[33] = 2; + tf->bit_y[33] = 4; + tf->bit_x[34] = 2; + tf->bit_y[34] = 3; + tf->bit_x[35] = 3; + tf->bit_y[35] = 4; + tf->width_at_border = 8; + tf->total_width = 10; + tf->reversed_border = false; + return tf; +} + +void tagAruco6x6_1000_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco6x6_1000.h b/tagAruco6x6_1000.h new file mode 100644 index 00000000..6c1d38bc --- /dev/null +++ b/tagAruco6x6_1000.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO6X6_1000 +#define _TAGARUCO6X6_1000 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco6x6_1000_create(); +void tagAruco6x6_1000_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco6x6_250.c b/tagAruco6x6_250.c new file mode 100644 index 00000000..1dde8d47 --- /dev/null +++ b/tagAruco6x6_250.c @@ -0,0 +1,394 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco6x6_250.h" + +static uint64_t codedata[250] = { + 0x0000000187359537UL, + 0x00000000bebe30f0UL, + 0x00000001674ad6c5UL, + 0x0000000cca05f46cUL, + 0x0000000d0d1ea69eUL, + 0x0000000db17045e8UL, + 0x000000041072bb74UL, + 0x00000008a0ad7603UL, + 0x00000003136ef12eUL, + 0x000000038c24efe6UL, + 0x000000047fdf132aUL, + 0x00000004b3cba425UL, + 0x0000000741459c8fUL, + 0x00000008371b88ffUL, + 0x00000008def1bd41UL, + 0x0000000a22f1f2bdUL, + 0x00000000f26c9aa7UL, + 0x000000015497da67UL, + 0x0000000308c11164UL, + 0x0000000489def7c3UL, + 0x000000053e85b9beUL, + 0x000000062448cc7cUL, + 0x0000000735ba1c39UL, + 0x000000099bd7319dUL, + 0x0000000af8148320UL, + 0x0000000c17a4301bUL, + 0x0000000c7a520881UL, + 0x0000000e54034939UL, + 0x0000000e897c40b3UL, + 0x0000000ed8be3f4cUL, + 0x0000000f8ba3d752UL, + 0x000000001f9eff7dUL, + 0x0000000055ddb604UL, + 0x00000000be25174aUL, + 0x0000000142fb59f0UL, + 0x0000000164f8a5acUL, + 0x00000003910df6ddUL, + 0x00000004c75c1458UL, + 0x00000005401c0bfeUL, + 0x00000005ab1ca5edUL, + 0x00000006051744e1UL, + 0x000000061b0e30c5UL, + 0x00000006520d7ba0UL, + 0x00000006fb6769ffUL, + 0x00000007207fc6a6UL, + 0x0000000765896e4bUL, + 0x00000007a2c4f517UL, + 0x00000008050d5374UL, + 0x000000088127e3baUL, + 0x000000097924acf5UL, + 0x00000009a054b06bUL, + 0x00000009bec85c73UL, + 0x0000000a45347d68UL, + 0x0000000b6e57e84dUL, + 0x0000000b7773c770UL, + 0x0000000b8569e404UL, + 0x0000000c10da8f0aUL, + 0x0000000c3c466640UL, + 0x0000000c64aed8adUL, + 0x0000000c9f3ccfd0UL, + 0x0000000cc4592762UL, + 0x0000000cd9c6c20dUL, + 0x0000000cee30adbaUL, + 0x0000000e56e7a3a6UL, + 0x0000000efcd25392UL, + 0x0000000f5ff92d7eUL, + 0x00000002b4e8a647UL, + 0x00000002f39b337fUL, + 0x000000037dd57e97UL, + 0x0000000a6923c68cUL, + 0x0000000ae992bd80UL, + 0x0000000d8b844ca1UL, + 0x0000000052819cf9UL, + 0x0000000074c0f91bUL, + 0x00000000fd6b6b50UL, + 0x00000001144a026cUL, + 0x0000000121afbfafUL, + 0x000000012893eb1cUL, + 0x0000000134e4c0d4UL, + 0x000000019ba03529UL, + 0x00000001b0392a30UL, + 0x00000001ca1e1341UL, + 0x00000001d8b7a6d6UL, + 0x0000000276934eaeUL, + 0x00000002a1c5ade8UL, + 0x000000035201571eUL, + 0x000000037147bb41UL, + 0x00000003784581bdUL, + 0x00000003bd17caf2UL, + 0x000000041407e597UL, + 0x000000042f638de4UL, + 0x0000000463485d62UL, + 0x00000004b296110cUL, + 0x0000000536f2cd8fUL, + 0x000000055e1322b5UL, + 0x000000056d84cf84UL, + 0x000000056f2fca56UL, + 0x0000000586689fceUL, + 0x000000059551ef6dUL, + 0x000000059db9027bUL, + 0x00000005cceff55dUL, + 0x00000005d229255bUL, + 0x000000064c9ddd62UL, + 0x000000067eccda0cUL, + 0x00000006a201db7aUL, + 0x00000006f1dd0046UL, + 0x00000006fb415109UL, + 0x00000007177d99e8UL, + 0x00000007388f55faUL, + 0x000000076734a21dUL, + 0x00000007848ba632UL, + 0x000000079167847cUL, + 0x00000007ab338c0dUL, + 0x00000007f094be0aUL, + 0x000000081de59cbfUL, + 0x000000083b6abd5eUL, + 0x000000085c88a26bUL, + 0x000000098294ab90UL, + 0x000000099727b0c8UL, + 0x00000009f6547e8cUL, + 0x0000000a0a0865beUL, + 0x0000000a9620c395UL, + 0x0000000ac4c618c0UL, + 0x0000000b02eddb87UL, + 0x0000000b1d50b035UL, + 0x0000000b4ea4b14eUL, + 0x0000000badbb67b8UL, + 0x0000000bd0e3def5UL, + 0x0000000c1ffa1654UL, + 0x0000000c79a75f83UL, + 0x0000000cd31efa5bUL, + 0x0000000ce1a88d1cUL, + 0x0000000d00ce33a9UL, + 0x0000000d1068a8efUL, + 0x0000000d7264a958UL, + 0x0000000e3caf9955UL, + 0x0000000e5a4d46d5UL, + 0x0000000e8818ae83UL, + 0x0000000e8d17b80aUL, + 0x0000000eba757c10UL, + 0x0000000f0eac5af8UL, + 0x0000000f48566d17UL, + 0x0000000f9c1e79f5UL, + 0x0000000ae1e743d7UL, + 0x0000000c330f5948UL, + 0x0000000179cb95f7UL, + 0x00000004a597a65dUL, + 0x0000000535280f54UL, + 0x0000000692780819UL, + 0x00000007203064b5UL, + 0x00000008530c1caaUL, + 0x0000000cd5dbe8baUL, + 0x0000000d2fe483f0UL, + 0x0000000ebe8e2584UL, + 0x0000000f45b78644UL, + 0x0000000fcad7bbeaUL, + 0x0000000001339f4eUL, + 0x00000000018112a1UL, + 0x00000000073a4daaUL, + 0x000000001f262424UL, + 0x000000001f32e2f8UL, + 0x00000000283b13a4UL, + 0x000000003604b4cdUL, + 0x0000000046517041UL, + 0x0000000050138044UL, + 0x00000000625617afUL, + 0x00000000838b678cUL, + 0x0000000098fd8fa4UL, + 0x00000000b431447dUL, + 0x00000000d12b7ef6UL, + 0x00000000f6d350f7UL, + 0x00000000fd981f31UL, + 0x0000000104b87a8fUL, + 0x000000010c46f942UL, + 0x000000014447a8acUL, + 0x00000001539b8e36UL, + 0x00000001581dbd87UL, + 0x00000001a6b46561UL, + 0x00000001b6cd8f2aUL, + 0x00000001cd634677UL, + 0x00000001d96ba10aUL, + 0x00000001db14928eUL, + 0x00000001e5308efcUL, + 0x00000001e9487698UL, + 0x00000001e9f1f172UL, + 0x0000000220795e56UL, + 0x000000022a37c936UL, + 0x0000000240e00eb6UL, + 0x000000025ed0c569UL, + 0x0000000264bfb6d3UL, + 0x00000002762a830bUL, + 0x0000000299e1f28eUL, + 0x000000029d481345UL, + 0x00000002a3643ef5UL, + 0x00000002d99309caUL, + 0x00000002ec20204bUL, + 0x00000002fa2599f0UL, + 0x000000032518f73eUL, + 0x000000032dcf9e4eUL, + 0x0000000337dc00e3UL, + 0x0000000367de375cUL, + 0x00000003887aab11UL, + 0x000000038e94425dUL, + 0x00000003a78911a8UL, + 0x00000003d2d26b25UL, + 0x00000003d37b558fUL, + 0x00000003d4362f7fUL, + 0x00000003dd34c828UL, + 0x00000003e8afb268UL, + 0x000000040d49e611UL, + 0x000000042c18f155UL, + 0x0000000431b5db39UL, + 0x00000004349fefe4UL, + 0x0000000439565b06UL, + 0x000000043e51d2dcUL, + 0x0000000443cf493cUL, + 0x00000004497a7ac8UL, + 0x000000045e975bd0UL, + 0x000000048f9044feUL, + 0x000000049d5009b0UL, + 0x000000049e5fc173UL, + 0x00000004a04f08f6UL, + 0x00000004c2166f86UL, + 0x00000004d59e052fUL, + 0x00000004e9a614daUL, + 0x00000004f299d88aUL, + 0x00000005046ccfb9UL, + 0x000000055bf0ffbeUL, + 0x0000000576fd77c2UL, + 0x00000005775fc44bUL, + 0x000000058add7861UL, + 0x00000005ae7af43eUL, + 0x00000005c792b9d5UL, + 0x00000005cfd8e6a7UL, + 0x00000005d6b50e99UL, + 0x00000005f46c430dUL, + 0x000000060aff8445UL, + 0x00000006164a1dadUL, + 0x0000000671d1a7b5UL, + 0x000000067ac2f3e5UL, + 0x000000068e6975f0UL, + 0x0000000694e62f90UL, + 0x00000006a094d4f9UL, + 0x00000006aa4eb15aUL, + 0x00000006cb9a0090UL, + 0x00000006d1a94531UL, + 0x00000006e7d2691aUL, + 0x00000006ed3ac6c7UL, + 0x00000006fd7ba039UL, + 0x00000007026405e7UL, +}; +apriltag_family_t *tagAruco6x6_250_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco6x6_250"); + tf->h = 11; + tf->ncodes = 250; + tf->codes = codedata; + tf->nbits = 36; + tf->bit_x = calloc(36, sizeof(uint32_t)); + tf->bit_y = calloc(36, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 2; + tf->bit_y[5] = 2; + tf->bit_x[6] = 3; + tf->bit_y[6] = 2; + tf->bit_x[7] = 4; + tf->bit_y[7] = 2; + tf->bit_x[8] = 3; + tf->bit_y[8] = 3; + tf->bit_x[9] = 6; + tf->bit_y[9] = 1; + tf->bit_x[10] = 6; + tf->bit_y[10] = 2; + tf->bit_x[11] = 6; + tf->bit_y[11] = 3; + tf->bit_x[12] = 6; + tf->bit_y[12] = 4; + tf->bit_x[13] = 6; + tf->bit_y[13] = 5; + tf->bit_x[14] = 5; + tf->bit_y[14] = 2; + tf->bit_x[15] = 5; + tf->bit_y[15] = 3; + tf->bit_x[16] = 5; + tf->bit_y[16] = 4; + tf->bit_x[17] = 4; + tf->bit_y[17] = 3; + tf->bit_x[18] = 6; + tf->bit_y[18] = 6; + tf->bit_x[19] = 5; + tf->bit_y[19] = 6; + tf->bit_x[20] = 4; + tf->bit_y[20] = 6; + tf->bit_x[21] = 3; + tf->bit_y[21] = 6; + tf->bit_x[22] = 2; + tf->bit_y[22] = 6; + tf->bit_x[23] = 5; + tf->bit_y[23] = 5; + tf->bit_x[24] = 4; + tf->bit_y[24] = 5; + tf->bit_x[25] = 3; + tf->bit_y[25] = 5; + tf->bit_x[26] = 4; + tf->bit_y[26] = 4; + tf->bit_x[27] = 1; + tf->bit_y[27] = 6; + tf->bit_x[28] = 1; + tf->bit_y[28] = 5; + tf->bit_x[29] = 1; + tf->bit_y[29] = 4; + tf->bit_x[30] = 1; + tf->bit_y[30] = 3; + tf->bit_x[31] = 1; + tf->bit_y[31] = 2; + tf->bit_x[32] = 2; + tf->bit_y[32] = 5; + tf->bit_x[33] = 2; + tf->bit_y[33] = 4; + tf->bit_x[34] = 2; + tf->bit_y[34] = 3; + tf->bit_x[35] = 3; + tf->bit_y[35] = 4; + tf->width_at_border = 8; + tf->total_width = 10; + tf->reversed_border = false; + return tf; +} + +void tagAruco6x6_250_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco6x6_250.h b/tagAruco6x6_250.h new file mode 100644 index 00000000..9af0ff33 --- /dev/null +++ b/tagAruco6x6_250.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO6X6_250 +#define _TAGARUCO6X6_250 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco6x6_250_create(); +void tagAruco6x6_250_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco6x6_50.c b/tagAruco6x6_50.c new file mode 100644 index 00000000..21ca0fc7 --- /dev/null +++ b/tagAruco6x6_50.c @@ -0,0 +1,194 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco6x6_50.h" + +static uint64_t codedata[50] = { + 0x0000000187359537UL, + 0x00000000bebe30f0UL, + 0x00000001674ad6c5UL, + 0x0000000cca05f46cUL, + 0x0000000d0d1ea69eUL, + 0x0000000db17045e8UL, + 0x000000041072bb74UL, + 0x00000008a0ad7603UL, + 0x00000003136ef12eUL, + 0x000000038c24efe6UL, + 0x000000047fdf132aUL, + 0x00000004b3cba425UL, + 0x0000000741459c8fUL, + 0x00000008371b88ffUL, + 0x00000008def1bd41UL, + 0x0000000a22f1f2bdUL, + 0x00000000f26c9aa7UL, + 0x000000015497da67UL, + 0x0000000308c11164UL, + 0x0000000489def7c3UL, + 0x000000053e85b9beUL, + 0x000000062448cc7cUL, + 0x0000000735ba1c39UL, + 0x000000099bd7319dUL, + 0x0000000af8148320UL, + 0x0000000c17a4301bUL, + 0x0000000c7a520881UL, + 0x0000000e54034939UL, + 0x0000000e897c40b3UL, + 0x0000000ed8be3f4cUL, + 0x0000000f8ba3d752UL, + 0x000000001f9eff7dUL, + 0x0000000055ddb604UL, + 0x00000000be25174aUL, + 0x0000000142fb59f0UL, + 0x0000000164f8a5acUL, + 0x00000003910df6ddUL, + 0x00000004c75c1458UL, + 0x00000005401c0bfeUL, + 0x00000005ab1ca5edUL, + 0x00000006051744e1UL, + 0x000000061b0e30c5UL, + 0x00000006520d7ba0UL, + 0x00000006fb6769ffUL, + 0x00000007207fc6a6UL, + 0x0000000765896e4bUL, + 0x00000007a2c4f517UL, + 0x00000008050d5374UL, + 0x000000088127e3baUL, + 0x000000097924acf5UL, +}; +apriltag_family_t *tagAruco6x6_50_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco6x6_50"); + tf->h = 13; + tf->ncodes = 50; + tf->codes = codedata; + tf->nbits = 36; + tf->bit_x = calloc(36, sizeof(uint32_t)); + tf->bit_y = calloc(36, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 2; + tf->bit_y[5] = 2; + tf->bit_x[6] = 3; + tf->bit_y[6] = 2; + tf->bit_x[7] = 4; + tf->bit_y[7] = 2; + tf->bit_x[8] = 3; + tf->bit_y[8] = 3; + tf->bit_x[9] = 6; + tf->bit_y[9] = 1; + tf->bit_x[10] = 6; + tf->bit_y[10] = 2; + tf->bit_x[11] = 6; + tf->bit_y[11] = 3; + tf->bit_x[12] = 6; + tf->bit_y[12] = 4; + tf->bit_x[13] = 6; + tf->bit_y[13] = 5; + tf->bit_x[14] = 5; + tf->bit_y[14] = 2; + tf->bit_x[15] = 5; + tf->bit_y[15] = 3; + tf->bit_x[16] = 5; + tf->bit_y[16] = 4; + tf->bit_x[17] = 4; + tf->bit_y[17] = 3; + tf->bit_x[18] = 6; + tf->bit_y[18] = 6; + tf->bit_x[19] = 5; + tf->bit_y[19] = 6; + tf->bit_x[20] = 4; + tf->bit_y[20] = 6; + tf->bit_x[21] = 3; + tf->bit_y[21] = 6; + tf->bit_x[22] = 2; + tf->bit_y[22] = 6; + tf->bit_x[23] = 5; + tf->bit_y[23] = 5; + tf->bit_x[24] = 4; + tf->bit_y[24] = 5; + tf->bit_x[25] = 3; + tf->bit_y[25] = 5; + tf->bit_x[26] = 4; + tf->bit_y[26] = 4; + tf->bit_x[27] = 1; + tf->bit_y[27] = 6; + tf->bit_x[28] = 1; + tf->bit_y[28] = 5; + tf->bit_x[29] = 1; + tf->bit_y[29] = 4; + tf->bit_x[30] = 1; + tf->bit_y[30] = 3; + tf->bit_x[31] = 1; + tf->bit_y[31] = 2; + tf->bit_x[32] = 2; + tf->bit_y[32] = 5; + tf->bit_x[33] = 2; + tf->bit_y[33] = 4; + tf->bit_x[34] = 2; + tf->bit_y[34] = 3; + tf->bit_x[35] = 3; + tf->bit_y[35] = 4; + tf->width_at_border = 8; + tf->total_width = 10; + tf->reversed_border = false; + return tf; +} + +void tagAruco6x6_50_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco6x6_50.h b/tagAruco6x6_50.h new file mode 100644 index 00000000..702de6ee --- /dev/null +++ b/tagAruco6x6_50.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO6X6_50 +#define _TAGARUCO6X6_50 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco6x6_50_create(); +void tagAruco6x6_50_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco7x7_100.c b/tagAruco7x7_100.c new file mode 100644 index 00000000..673a44e7 --- /dev/null +++ b/tagAruco7x7_100.c @@ -0,0 +1,275 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco7x7_100.h" + +static uint64_t codedata[100] = { + 0x0001baac5d5162e1UL, + 0x0001c8e27cd4152eUL, + 0x00013d145de29d73UL, + 0x00014b1b9832636fUL, + 0x00018dbfe4692816UL, + 0x0000b400b8763a44UL, + 0x0001a354fe10afbcUL, + 0x00007d2484df464bUL, + 0x0001100e227dcbbeUL, + 0x000173592cf9b4ebUL, + 0x0001e861290cc887UL, + 0x0000013a3c588d01UL, + 0x0000afa68d0c317fUL, + 0x0001395d039f0024UL, + 0x00017f88ffd665dcUL, + 0x0001989219ed0a4bUL, + 0x0001a7b216d788c6UL, + 0x00000744abb456fdUL, + 0x00004e75d9181f0cUL, + 0x000073ae5aca022eUL, + 0x000074b59b967411UL, + 0x00008edb92bcae44UL, + 0x000094c207d1df77UL, + 0x0000bbf812145973UL, + 0x0000ed6733178755UL, + 0x00012ae8d49b0c18UL, + 0x000130d13bc6d3e2UL, + 0x000146c8b01d76a0UL, + 0x000173f3dd0ca2d0UL, + 0x000195fc2a1b6ecfUL, + 0x0001a77e14cb72bdUL, + 0x0001e49a1d3e6c36UL, + 0x0001feeba1673de7UL, + 0x000072189774d725UL, + 0x0000c0b574f30a70UL, + 0x00001638d2c6ec7eUL, + 0x00001a702241e245UL, + 0x00002ced7821110bUL, + 0x000035638cb69586UL, + 0x000052d2122b1cf4UL, + 0x0000530664c7d8cdUL, + 0x00005fabab68ef0dUL, + 0x00006f07e4399ebfUL, + 0x00007bdf87ce9cd3UL, + 0x00008e879e03c863UL, + 0x0000926184ad1261UL, + 0x0000b89172408c9aUL, + 0x0000bdb1a7ba8950UL, + 0x0000dc92c446afacUL, + 0x0000e575f5c45142UL, + 0x0000f4227569f686UL, + 0x0000f719b98a0dffUL, + 0x00010b20ca063fd1UL, + 0x000119fedf8a4b5dUL, + 0x000159e5d9e33a82UL, + 0x0001618b15fa5bcaUL, + 0x000176528ade090dUL, + 0x000183ae07643eeaUL, + 0x00019b733a8ac43eUL, + 0x0001a2def9dac864UL, + 0x0001a341fb77e543UL, + 0x00009769855a64f3UL, + 0x0000a6d430cf9e5aUL, + 0x000000d74d071e12UL, + 0x00000e2698ea1c92UL, + 0x00001ad454fe60c2UL, + 0x00001e584e5883a2UL, + 0x00002f6af31ca996UL, + 0x00002ff21f7e8439UL, + 0x00003abdc2cb3b40UL, + 0x00003e30bb6851f4UL, + 0x0000491333fe0abdUL, + 0x00004cb4e43f2dd9UL, + 0x00005819ee313444UL, + 0x00005d735ed1f498UL, + 0x00005e6861cb491eUL, + 0x000062808165199eUL, + 0x000063a36f92dc56UL, + 0x00006f311107d5b2UL, + 0x00009825c82bcf5fUL, + 0x00009ed46f821545UL, + 0x00009ee6e0707b62UL, + 0x0000abb3f102b70fUL, + 0x0000acabb6d6234bUL, + 0x0000acc44244b621UL, + 0x0000bb595c979f01UL, + 0x0000c03b3a4f30a6UL, + 0x0000d707bf249d90UL, + 0x0000d8e80f380d9cUL, + 0x0000e1c85a8f5145UL, + 0x0000eab421d0bc95UL, + 0x0001037915eca406UL, + 0x000107dbcea66a9bUL, + 0x000125bdcfb834baUL, + 0x00012ec1cfb51a47UL, + 0x00012fcea5f3874eUL, + 0x000137c6941cdc3cUL, + 0x0001546468139fb3UL, + 0x0001600a6efa37b5UL, + 0x00017705fad153a0UL +}; +apriltag_family_t *tagAruco7x7_100_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco7x7_100"); + tf->h = 18; + tf->ncodes = 100; + tf->codes = codedata; + tf->nbits = 49; + tf->bit_x = calloc(49, sizeof(uint32_t)); + tf->bit_y = calloc(49, sizeof(uint32_t)); + + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 6; + tf->bit_y[5] = 1; + tf->bit_x[6] = 2; + tf->bit_y[6] = 2; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 2; + tf->bit_x[9] = 5; + tf->bit_y[9] = 2; + tf->bit_x[10] = 3; + tf->bit_y[10] = 3; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + + tf->bit_x[12] = 7; + tf->bit_y[12] = 1; + tf->bit_x[13] = 7; + tf->bit_y[13] = 2; + tf->bit_x[14] = 7; + tf->bit_y[14] = 3; + tf->bit_x[15] = 7; + tf->bit_y[15] = 4; + tf->bit_x[16] = 7; + tf->bit_y[16] = 5; + tf->bit_x[17] = 7; + tf->bit_y[17] = 6; + tf->bit_x[18] = 6; + tf->bit_y[18] = 2; + tf->bit_x[19] = 6; + tf->bit_y[19] = 3; + tf->bit_x[20] = 6; + tf->bit_y[20] = 4; + tf->bit_x[21] = 6; + tf->bit_y[21] = 5; + tf->bit_x[22] = 5; + tf->bit_y[22] = 3; + tf->bit_x[23] = 5; + tf->bit_y[23] = 4; + + tf->bit_x[24] = 7; + tf->bit_y[24] = 7; + tf->bit_x[25] = 6; + tf->bit_y[25] = 7; + tf->bit_x[26] = 5; + tf->bit_y[26] = 7; + tf->bit_x[27] = 4; + tf->bit_y[27] = 7; + tf->bit_x[28] = 3; + tf->bit_y[28] = 7; + tf->bit_x[29] = 2; + tf->bit_y[29] = 7; + tf->bit_x[30] = 6; + tf->bit_y[30] = 6; + tf->bit_x[31] = 5; + tf->bit_y[31] = 6; + tf->bit_x[32] = 4; + tf->bit_y[32] = 6; + tf->bit_x[33] = 3; + tf->bit_y[33] = 6; + tf->bit_x[34] = 5; + tf->bit_y[34] = 5; + tf->bit_x[35] = 4; + tf->bit_y[35] = 5; + + tf->bit_x[36] = 1; + tf->bit_y[36] = 7; + tf->bit_x[37] = 1; + tf->bit_y[37] = 6; + tf->bit_x[38] = 1; + tf->bit_y[38] = 5; + tf->bit_x[39] = 1; + tf->bit_y[39] = 4; + tf->bit_x[40] = 1; + tf->bit_y[40] = 3; + tf->bit_x[41] = 1; + tf->bit_y[41] = 2; + tf->bit_x[42] = 2; + tf->bit_y[42] = 6; + tf->bit_x[43] = 2; + tf->bit_y[43] = 5; + tf->bit_x[44] = 2; + tf->bit_y[44] = 4; + tf->bit_x[45] = 2; + tf->bit_y[45] = 3; + tf->bit_x[46] = 3; + tf->bit_y[46] = 5; + tf->bit_x[47] = 3; + tf->bit_y[47] = 4; + + tf->bit_x[48] = 4; + tf->bit_y[48] = 4; + tf->width_at_border = 9; + tf->total_width = 11; + tf->reversed_border = false; + return tf; +} + +void tagAruco7x7_100_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco7x7_100.h b/tagAruco7x7_100.h new file mode 100644 index 00000000..706670c6 --- /dev/null +++ b/tagAruco7x7_100.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO7X7_100 +#define _TAGARUCO7X7_100 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco7x7_100_create(); +void tagAruco7x7_100_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco7x7_1000.c b/tagAruco7x7_1000.c new file mode 100644 index 00000000..2292310d --- /dev/null +++ b/tagAruco7x7_1000.c @@ -0,0 +1,1175 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco7x7_1000.h" + +static uint64_t codedata[1000] = { + 0x0001baac5d5162e1UL, + 0x0001c8e27cd4152eUL, + 0x00013d145de29d73UL, + 0x00014b1b9832636fUL, + 0x00018dbfe4692816UL, + 0x0000b400b8763a44UL, + 0x0001a354fe10afbcUL, + 0x00007d2484df464bUL, + 0x0001100e227dcbbeUL, + 0x000173592cf9b4ebUL, + 0x0001e861290cc887UL, + 0x0000013a3c588d01UL, + 0x0000afa68d0c317fUL, + 0x0001395d039f0024UL, + 0x00017f88ffd665dcUL, + 0x0001989219ed0a4bUL, + 0x0001a7b216d788c6UL, + 0x00000744abb456fdUL, + 0x00004e75d9181f0cUL, + 0x000073ae5aca022eUL, + 0x000074b59b967411UL, + 0x00008edb92bcae44UL, + 0x000094c207d1df77UL, + 0x0000bbf812145973UL, + 0x0000ed6733178755UL, + 0x00012ae8d49b0c18UL, + 0x000130d13bc6d3e2UL, + 0x000146c8b01d76a0UL, + 0x000173f3dd0ca2d0UL, + 0x000195fc2a1b6ecfUL, + 0x0001a77e14cb72bdUL, + 0x0001e49a1d3e6c36UL, + 0x0001feeba1673de7UL, + 0x000072189774d725UL, + 0x0000c0b574f30a70UL, + 0x00001638d2c6ec7eUL, + 0x00001a702241e245UL, + 0x00002ced7821110bUL, + 0x000035638cb69586UL, + 0x000052d2122b1cf4UL, + 0x0000530664c7d8cdUL, + 0x00005fabab68ef0dUL, + 0x00006f07e4399ebfUL, + 0x00007bdf87ce9cd3UL, + 0x00008e879e03c863UL, + 0x0000926184ad1261UL, + 0x0000b89172408c9aUL, + 0x0000bdb1a7ba8950UL, + 0x0000dc92c446afacUL, + 0x0000e575f5c45142UL, + 0x0000f4227569f686UL, + 0x0000f719b98a0dffUL, + 0x00010b20ca063fd1UL, + 0x000119fedf8a4b5dUL, + 0x000159e5d9e33a82UL, + 0x0001618b15fa5bcaUL, + 0x000176528ade090dUL, + 0x000183ae07643eeaUL, + 0x00019b733a8ac43eUL, + 0x0001a2def9dac864UL, + 0x0001a341fb77e543UL, + 0x00009769855a64f3UL, + 0x0000a6d430cf9e5aUL, + 0x000000d74d071e12UL, + 0x00000e2698ea1c92UL, + 0x00001ad454fe60c2UL, + 0x00001e584e5883a2UL, + 0x00002f6af31ca996UL, + 0x00002ff21f7e8439UL, + 0x00003abdc2cb3b40UL, + 0x00003e30bb6851f4UL, + 0x0000491333fe0abdUL, + 0x00004cb4e43f2dd9UL, + 0x00005819ee313444UL, + 0x00005d735ed1f498UL, + 0x00005e6861cb491eUL, + 0x000062808165199eUL, + 0x000063a36f92dc56UL, + 0x00006f311107d5b2UL, + 0x00009825c82bcf5fUL, + 0x00009ed46f821545UL, + 0x00009ee6e0707b62UL, + 0x0000abb3f102b70fUL, + 0x0000acabb6d6234bUL, + 0x0000acc44244b621UL, + 0x0000bb595c979f01UL, + 0x0000c03b3a4f30a6UL, + 0x0000d707bf249d90UL, + 0x0000d8e80f380d9cUL, + 0x0000e1c85a8f5145UL, + 0x0000eab421d0bc95UL, + 0x0001037915eca406UL, + 0x000107dbcea66a9bUL, + 0x000125bdcfb834baUL, + 0x00012ec1cfb51a47UL, + 0x00012fcea5f3874eUL, + 0x000137c6941cdc3cUL, + 0x0001546468139fb3UL, + 0x0001600a6efa37b5UL, + 0x00017705fad153a0UL, + 0x0001792f1bed5911UL, + 0x000179cb6a559dddUL, + 0x0001818c8ee9465cUL, + 0x000181fc31058b20UL, + 0x0001a278f56857ebUL, + 0x0001a87a326f89d1UL, + 0x0001b1e02ea1af03UL, + 0x0001b6a04057502aUL, + 0x0001c6a09f8e8768UL, + 0x0001c702d4b44ee2UL, + 0x0001cbad09bc67d7UL, + 0x0001d2e7ac516c75UL, + 0x0001d47697394091UL, + 0x0001db38fd1684a7UL, + 0x0001eeb152326ca9UL, + 0x0001fe9e1f38b941UL, + 0x00002e6b0fc08d6bUL, + 0x0000473dd887da53UL, + 0x00014c2d9857d104UL, + 0x0001655c6131c281UL, + 0x0001d678b62086deUL, + 0x0000010eaa2ff201UL, + 0x00000223b834d62aUL, + 0x000003d8090b3b6fUL, + 0x000006e6c4c53585UL, + 0x0000090348ff8646UL, + 0x00000c900ad73c8cUL, + 0x000012d7ebef400fUL, + 0x000015e33f8c7dd3UL, + 0x000019e69b5caeeeUL, + 0x00001b5d6ba0bf36UL, + 0x00002bd39a72d985UL, + 0x00002fbbd4757d6eUL, + 0x000031e623b77b86UL, + 0x000039bc31396159UL, + 0x00003fd52211b15eUL, + 0x000044f5eab18094UL, + 0x000045b81d6631fcUL, + 0x00004f3672e1a8e7UL, + 0x00005609d6ac3fc9UL, + 0x00005671dfe24d83UL, + 0x000059da148c4672UL, + 0x00005c00a58c9b15UL, + 0x00006b891c048b5eUL, + 0x00007b345a23f775UL, + 0x00007d8ad037d48dUL, + 0x000082a3485c6ad8UL, + 0x000085730bcb4840UL, + 0x0000869ea75e091aUL, + 0x000088ddb39806fbUL, + 0x0000922749b60c71UL, + 0x0000947f5cc80edaUL, + 0x0000962f93fd327eUL, + 0x0000964b6a615eefUL, + 0x00009793e05c1457UL, + 0x0000990c1ca6372eUL, + 0x000099edd150b95dUL, + 0x00009b41fad86e19UL, + 0x0000a1b24e45d38dUL, + 0x0000a22d13a8df82UL, + 0x0000a2a9bb960b94UL, + 0x0000a381adfe0f2bUL, + 0x0000aa60557d0736UL, + 0x0000ae80fae18f7dUL, + 0x0000aff2a520d464UL, + 0x0000b310c3db99b3UL, + 0x0000b7f6c7321adeUL, + 0x0000bbed2c7f5846UL, + 0x0000bc9cd95bb47eUL, + 0x0000c272384667cbUL, + 0x0000c2ca57ddaa29UL, + 0x0000cc044cf03277UL, + 0x0000d343e8018123UL, + 0x0000d9e8bba0d56fUL, + 0x0000dae1645332efUL, + 0x0000e09b403007ffUL, + 0x0000e11aa9e44355UL, + 0x0000e4748fbbe7bfUL, + 0x0000e7eb34b163e1UL, + 0x0000e89312d97051UL, + 0x0000eaff26819232UL, + 0x0000f7770069952cUL, + 0x0000f937a862b456UL, + 0x0000fba397d36e3cUL, + 0x0000fc746c5ba003UL, + 0x0000fddaf6606addUL, + 0x00010594e6e0dbd6UL, + 0x000105d295abcdfbUL, + 0x00010d94ffdb4425UL, + 0x000117b074d39f2cUL, + 0x0001185a12535639UL, + 0x00011a17e4e416a4UL, + 0x00011ad2b6049f6bUL, + 0x00011c88cc0210dfUL, + 0x00011dc2733d68a8UL, + 0x000120e1160d7319UL, + 0x00012492770d2fdeUL, + 0x000128197f157da3UL, + 0x000129be30567ed4UL, + 0x00012be5fcaa8fe2UL, + 0x00012e9cc1088abcUL, + 0x00013491d322eb45UL, + 0x000135dcd51eb7e3UL, + 0x00013b48b0b809ecUL, + 0x00013c7792fbd0efUL, + 0x00013ff89382ffa8UL, + 0x00014815b4595bfcUL, + 0x00014a3ec4f19b4bUL, + 0x00014adf08c3a405UL, + 0x00014fc654578932UL, + 0x000151408fff7feeUL, + 0x000158bf3970a9a6UL, + 0x00015998d3461810UL, + 0x00015d3a0865a730UL, + 0x00015d55ee01ce6dUL, + 0x000165645c7d7d82UL, + 0x0001677b5212baf7UL, + 0x000167f6a702b183UL, + 0x00016ad226cce5bcUL, + 0x00016b23ae7d017aUL, + 0x00016b343814600aUL, + 0x000175f26b5cb424UL, + 0x0001761617c00c20UL, + 0x00017800e2e3f43aUL, + 0x0001799d4a324a72UL, + 0x0001816f2420c5caUL, + 0x000181b99dc07f77UL, + 0x000186745e491961UL, + 0x000188913838c310UL, + 0x00018f3e2a6e028bUL, + 0x000192f5da345a6cUL, + 0x00019787d9e89f4eUL, + 0x00019945ac64db3aUL, + 0x00019d86e2b20e2fUL, + 0x0001aa18af8aef4fUL, + 0x0001aa8683ccd246UL, + 0x0001ab98e4a87150UL, + 0x0001af3adda3c31aUL, + 0x0001b062d21025e7UL, + 0x0001b25a38ac6021UL, + 0x0001b478e5738d45UL, + 0x0001c5b6c92f9505UL, + 0x0001c7d442986b79UL, + 0x0001c98a510b67b5UL, + 0x0001cc59b608fd08UL, + 0x0001cd038e4fe4bfUL, + 0x0001cf2f10c0493cUL, + 0x0001d0b6d8c778f9UL, + 0x0001d372623fd2b5UL, + 0x0001da5ee84cbec2UL, + 0x0001e42bd1f24007UL, + 0x0001e960d6da49b6UL, + 0x0001ebfc5ae61fffUL, + 0x0001f685ccd7bf52UL, + 0x0001f8e4d526364dUL, + 0x0001223144a80d8bUL, + 0x0001952855a86238UL, + 0x00003e8173047726UL, + 0x000044f3247ae38dUL, + 0x00005ad37934e4b1UL, + 0x00008573acfc02ffUL, + 0x000092a79d74aa97UL, + 0x0000a334a0f85e74UL, + 0x0000a4953a84f84dUL, + 0x0000cecb43f913ceUL, + 0x0000e207420732e5UL, + 0x0001183b16a07520UL, + 0x00012d10cd08b906UL, + 0x0001414c8d22bed9UL, + 0x00017f21e1e59754UL, + 0x000186b090234371UL, + 0x0001b750280eb707UL, + 0x0001d9aac61ea97bUL, + 0x0001fb175cf306eaUL, + 0x000000ac594da237UL, + 0x000000f26e6d6660UL, + 0x000006d18e1b44daUL, + 0x000008c3535e257bUL, + 0x0000144cc1ecee9dUL, + 0x0000156628d60f5cUL, + 0x0000159d40180680UL, + 0x000015a9bce48e70UL, + 0x000017c86ff29e03UL, + 0x0000189b2e41db70UL, + 0x0000215a6543b427UL, + 0x0000225cb015be0dUL, + 0x000024b7b7c1e3f9UL, + 0x0000297364340a0cUL, + 0x00002babce410ed2UL, + 0x00002e4ae76f6482UL, + 0x00002f141c9efbdbUL, + 0x0000323d2953c5f5UL, + 0x00003335433f7e98UL, + 0x0000367e03546c97UL, + 0x0000393d4d8baea3UL, + 0x00003a9ca55437feUL, + 0x00003b2add785a49UL, + 0x00003e99b773a593UL, + 0x00003f3d69d612d8UL, + 0x000040c15067fe4eUL, + 0x0000419af6f7841aUL, + 0x000043030c8b156aUL, + 0x00004339eb1d8f12UL, + 0x000043ebbd444847UL, + 0x0000450fee72f6e2UL, + 0x0000460221787fbaUL, + 0x00004978ce2b01b9UL, + 0x00004c997ea441d9UL, + 0x00004d9a57914946UL, + 0x00005016b7b9f96fUL, + 0x000050d0fad434f7UL, + 0x000050ed161100e0UL, + 0x000053434e9c1af0UL, + 0x0000565118e8786aUL, + 0x0000568b9dbd8425UL, + 0x00005780d0034f9aUL, + 0x00005a0e6ad4b19bUL, + 0x00005a0fee8eac78UL, + 0x00005e52df70281eUL, + 0x00005fd730e1d782UL, + 0x0000607bec71adb0UL, + 0x0000615854226dc7UL, + 0x00006167db3c608dUL, + 0x000068663e10e2b1UL, + 0x0000693f14f896b4UL, + 0x00006aa4a73968abUL, + 0x00006dd66e3a3e06UL, + 0x00006edde6e8964dUL, + 0x00006eff7e348c8fUL, + 0x00007022c98094a5UL, + 0x00007035a1964eaeUL, + 0x0000707c7b002941UL, + 0x0000730dcdce5d04UL, + 0x00007360bd1bc49bUL, + 0x0000750a43d577ebUL, + 0x0000756d656416a3UL, + 0x000076eb8576ed5aUL, + 0x000078d8f5ff4c6fUL, + 0x00007992655b5298UL, + 0x00007a4c9f9a32e4UL, + 0x00007eb4fdecd801UL, + 0x0000813c723526ecUL, + 0x0000819a8148e853UL, + 0x000081a4c4f6515fUL, + 0x00008358ea29b48aUL, + 0x000084d91b3277ceUL, + 0x000088de79026a9bUL, + 0x00008974fc9b993fUL, + 0x00008abe53581403UL, + 0x00008be935601b92UL, + 0x00008d14c63d7860UL, + 0x00008d2606520436UL, + 0x00008da752a2ba98UL, + 0x000093f1b9a6cadbUL, + 0x000099bfef8c80c6UL, + 0x00009db0b841b180UL, + 0x00009f5bff74b1efUL, + 0x0000a233f236cd5dUL, + 0x0000a673ef172ee1UL, + 0x0000a8380409f4bbUL, + 0x0000aa634e0361aaUL, + 0x0000ac05d443ffb7UL, + 0x0000ac83e4c8642eUL, + 0x0000b06e7f0e961eUL, + 0x0000b0932b2bd903UL, + 0x0000b896202418ecUL, + 0x0000b9ab78f3729fUL, + 0x0000ba47726551b3UL, + 0x0000bc36d0982a1dUL, + 0x0000bd9a1379c3e0UL, + 0x0000bfd845f130f4UL, + 0x0000c0983dd1f205UL, + 0x0000c26eacaf246fUL, + 0x0000c2ecc7d38d17UL, + 0x0000c329dcf0ef8eUL, + 0x0000c36956abf77bUL, + 0x0000c711b4afe33cUL, + 0x0000c98708614b87UL, + 0x0000cd2afc6e1b85UL, + 0x0000d17c0743ac4aUL, + 0x0000d481e07367d5UL, + 0x0000d4cef4090d4fUL, + 0x0000d50f7bd94413UL, + 0x0000d67fe8a86684UL, + 0x0000da3911d90765UL, + 0x0000daf6698e8f2bUL, + 0x0000dbb184b19f76UL, + 0x0000dc5930d6b1d6UL, + 0x0000dc60ef495a48UL, + 0x0000dcbbf1cd6c95UL, + 0x0000dcbe2ff51ed6UL, + 0x0000dd13f130fa74UL, + 0x0000ddd4928b8c38UL, + 0x0000de554a47de91UL, + 0x0000e2b3b0f714adUL, + 0x0000e42252bf1b5bUL, + 0x0000e48a97713e4fUL, + 0x0000e4fffe5b0316UL, + 0x0000e562d70dcd3aUL, + 0x0000e7db22774a1eUL, + 0x0000e8599ebd422dUL, + 0x0000e8810aa61678UL, + 0x0000e91bb96cdc22UL, + 0x0000eb6b83a35c4aUL, + 0x0000ebbff084dcdeUL, + 0x0000ed9f18db1ff3UL, + 0x0000edd901169a42UL, + 0x0000ef4ce741b5d6UL, + 0x0000eff3621d5d01UL, + 0x0000f2204d11494fUL, + 0x0000f5f575f8ad3eUL, + 0x0000f91a8a20bbafUL, + 0x0000ff432c1c6fecUL, + 0x0000ff5dc9f76aefUL, + 0x0000ffbab0a62934UL, + 0x000100e9e7127dcdUL, + 0x0001016c442ad934UL, + 0x00010276f5d5665eUL, + 0x0001066278a37ac0UL, + 0x00010907c258571aUL, + 0x000109267c706bdfUL, + 0x000109519f074673UL, + 0x00010af0cbe9bc5eUL, + 0x00010b121a93aab0UL, + 0x00010ec3e817cf0cUL, + 0x000110d9a4ba1f46UL, + 0x000111bf4013eb18UL, + 0x00011249087d1795UL, + 0x000113d1d8dfa9c7UL, + 0x0001146da26de7c0UL, + 0x000114816f4c1aacUL, + 0x0001167c5b928899UL, + 0x000116faff1119a6UL, + 0x000118b28d89c514UL, + 0x0001194a7814f3e1UL, + 0x00011a446c413d0eUL, + 0x00011ce64bd458cbUL, + 0x000120c1039cbc4aUL, + 0x0001215ecf298868UL, + 0x0001222df55c3941UL, + 0x000124afa88f9958UL, + 0x000125873c50b70fUL, + 0x00012670868f3cb6UL, + 0x00012a124660b0d8UL, + 0x00012a30f0c583b3UL, + 0x00012bb51d6dc92cUL, + 0x00012c676bc00797UL, + 0x00012d1d54b13b5cUL, + 0x000130381af1fbe9UL, + 0x00013226682dd169UL, + 0x000133e6d1eb31f4UL, + 0x00013842a382c001UL, + 0x00013b898b4f72a8UL, + 0x000142622594af24UL, + 0x00014480d4827540UL, + 0x000144aa1029a1abUL, + 0x00014658bedd6d7bUL, + 0x00014739643f60deUL, + 0x0001484e7a1ae506UL, + 0x0001497bf0f57173UL, + 0x00014a33ebda2012UL, + 0x00014a97d71bfa11UL, + 0x00014b9ce693369dUL, + 0x00014d8d0cbc85a8UL, + 0x00014e2cea2cdd3eUL, + 0x000150f922a42cbbUL, + 0x0001513a4d104fbeUL, + 0x000151407f88092aUL, + 0x00015206bf5ff518UL, + 0x000152cbf28a616bUL, + 0x000153ace5784133UL, + 0x0001542d2f183007UL, + 0x00015530820977adUL, + 0x0001571bb66b79a7UL, + 0x0001588a28ee0164UL, + 0x0001597f2923514cUL, + 0x000159f145fd4bdcUL, + 0x00015a1cb3e24555UL, + 0x00015a232fff8d87UL, + 0x00015a81e38706f7UL, + 0x00015ceba2b34919UL, + 0x00015de8c25703c6UL, + 0x00015fb3eaa039e0UL, + 0x000160ee414c875cUL, + 0x000163c21097c6f5UL, + 0x00016e9b744227f0UL, + 0x00016f0c9a7a1e5dUL, + 0x000171945e572f4dUL, + 0x000173b27a2a699dUL, + 0x000173d8af6a2a74UL, + 0x00017434d3f2394aUL, + 0x000174f4c6988cc3UL, + 0x000178ca67c4f942UL, + 0x00017902e5232b40UL, + 0x00017aa284adaeceUL, + 0x00017bb1352f3e23UL, + 0x00017fc8dd65a389UL, + 0x0001804aa0076ef7UL, + 0x000180895d61d9e2UL, + 0x0001872d4aa51048UL, + 0x00018744f4a49125UL, + 0x00018afcbd4aa558UL, + 0x0001930cee11f35bUL, + 0x0001932023208779UL, + 0x0001968833d7fb8aUL, + 0x00019732a54d1bdcUL, + 0x000198cd27279f0dUL, + 0x00019ec8547e7b3cUL, + 0x00019f65c6b8a11eUL, + 0x0001a1cea2ea909eUL, + 0x0001a2e3f2509bc8UL, + 0x0001a8b1e7f34386UL, + 0x0001af3fbded65f6UL, + 0x0001b0543fbe1db5UL, + 0x0001b3ed63ded336UL, + 0x0001b4400360f32eUL, + 0x0001b598eae7d259UL, + 0x0001b7358938d3c3UL, + 0x0001b7cdb2a0a4f1UL, + 0x0001b8d6fd758057UL, + 0x0001b8e345457cbcUL, + 0x0001b93a50d2f823UL, + 0x0001ba46c082937fUL, + 0x0001bccc85c91ea7UL, + 0x0001bec7b91e10cdUL, + 0x0001c0c38ae688c7UL, + 0x0001c0fbfda1c628UL, + 0x0001c157488a8f94UL, + 0x0001cb9b5df8f539UL, + 0x0001ce7375f7924cUL, + 0x0001d225a8c812beUL, + 0x0001d566a28b5b22UL, + 0x0001d6c373d67855UL, + 0x0001d77024723c70UL, + 0x0001ddca9a2edfdaUL, + 0x0001df840de171ceUL, + 0x0001e011f0894e1fUL, + 0x0001e2dfbd65331aUL, + 0x0001e506be44485eUL, + 0x0001e61ec0df3011UL, + 0x0001e62b3306746cUL, + 0x0001e64c2b9eaafeUL, + 0x0001e7ab050dfa07UL, + 0x0001e8038412a206UL, + 0x0001eb2edd1fcf6dUL, + 0x0001eb32ee85b4f5UL, + 0x0001f47878ebc4f6UL, + 0x0001f4a5120f94cbUL, + 0x0001f658e2241885UL, + 0x0001f7afc7895470UL, + 0x0001f85f45fc117eUL, + 0x0001fa04883c4b35UL, + 0x0001fbab76f88442UL, + 0x0001fcdb6d6743bfUL, + 0x0000e389ca73b16cUL, + 0x00010779c2279ba0UL, + 0x00000141a5f8eaa0UL, + 0x000001a66ce69328UL, + 0x0000025f743345bdUL, + 0x000002880476ab82UL, + 0x0000046954521799UL, + 0x000005284c656b1aUL, + 0x00000683f29fb82dUL, + 0x0000079712197ce7UL, + 0x00000aed538e3ec6UL, + 0x00000b58717c4038UL, + 0x00000d0b97426b75UL, + 0x00000e4a140eb405UL, + 0x000010683666d8e4UL, + 0x000011cbcd37697cUL, + 0x00001353d5e3af4cUL, + 0x000014a0983c5b89UL, + 0x000016a5a9411b30UL, + 0x0000191c8dd2617fUL, + 0x00001976ecc55bf5UL, + 0x00001aaa74c04dd0UL, + 0x00001ab9bdc3312dUL, + 0x00001b4646fb1de3UL, + 0x00001bcda90e0991UL, + 0x00001bf9d9356206UL, + 0x00001c374ca9c9b8UL, + 0x00001d424b89e3fdUL, + 0x00001e71536cabdaUL, + 0x00001f1f7589e256UL, + 0x0000204cf84ba1a9UL, + 0x000023e9289d619dUL, + 0x000024ca3c861fafUL, + 0x000024d7f9f2154cUL, + 0x00002733d85eecabUL, + 0x0000283be2ea407bUL, + 0x00002999fa93e62eUL, + 0x00002c200def8b40UL, + 0x00002c41051935e7UL, + 0x00002c82dc5d30f8UL, + 0x00002cbe6871fc82UL, + 0x00002d28b12e3effUL, + 0x00002dd2c0cff80fUL, + 0x00002ece8c672e34UL, + 0x00002edd75725b25UL, + 0x00002eea94a853deUL, + 0x0000305e91e584cbUL, + 0x0000320ec11c2a02UL, + 0x0000329029cde8d6UL, + 0x000033bb1a59f03aUL, + 0x00003405de76a7a8UL, + 0x000034ef44c3ce4fUL, + 0x00003556a551ab2aUL, + 0x000035eee308674bUL, + 0x000035f149645b4bUL, + 0x000036675331e144UL, + 0x000037b07b9f430bUL, + 0x000037cfded71ec5UL, + 0x00003937108722ceUL, + 0x00003b205fb03882UL, + 0x00003b80b3b7eccaUL, + 0x00003b8327b93f68UL, + 0x00003d1b016a8b7eUL, + 0x000040e92f0be162UL, + 0x0000412f80b20a9bUL, + 0x000041387f78fcdfUL, + 0x000042157d1cb694UL, + 0x0000429daf786dd0UL, + 0x00004457ec472140UL, + 0x0000452e8949012dUL, + 0x0000457f3fe3f021UL, + 0x0000476a5dd8e9faUL, + 0x000047cfcc7c59b9UL, + 0x000049a2985232e5UL, + 0x000049dd82160f5dUL, + 0x00004a3308a5758eUL, + 0x00004bd8b4a4b3e8UL, + 0x00004c285ca34c22UL, + 0x00004ddb99715e9cUL, + 0x00004e05959576d3UL, + 0x00004e6237343acdUL, + 0x00004edbe71c6748UL, + 0x00004f4a3635c62fUL, + 0x00004fc1f32a0d16UL, + 0x00005125affd0088UL, + 0x0000517ef995811cUL, + 0x0000518d7c238716UL, + 0x0000565e765e10aeUL, + 0x00005764eb79fd71UL, + 0x00005a4f5b5bd20dUL, + 0x00005a91d2758861UL, + 0x00005c46bfc790faUL, + 0x00005ca108bae05bUL, + 0x00005d8f0b8cb8a5UL, + 0x00005f0239c22e72UL, + 0x00006003eb0cc27eUL, + 0x0000621d086dafe6UL, + 0x00006397b698c228UL, + 0x0000656f95e4bb1fUL, + 0x000065e8ae57af48UL, + 0x0000671af0494cc0UL, + 0x00006b42c8da2783UL, + 0x00006bfa53942e1bUL, + 0x00006ce505a0aeacUL, + 0x000070bd66b6697cUL, + 0x000072bf83d5e303UL, + 0x00007323450e3cffUL, + 0x000073338ccf7292UL, + 0x00007668ebb5ea90UL, + 0x00007982b2e4530bUL, + 0x000079e083cb370eUL, + 0x00007b45ae172594UL, + 0x00007b8d99fa80cfUL, + 0x00007cd165c99cf2UL, + 0x00007e5e5cd0fe3bUL, + 0x00007edbafe7ba8cUL, + 0x00007f437c2e124aUL, + 0x000080263b11172fUL, + 0x00008354cd72d5d2UL, + 0x000083f01d79e6cbUL, + 0x00008567548caca7UL, + 0x0000866158cb43a7UL, + 0x0000879e34293729UL, + 0x0000890fb1ddeb0fUL, + 0x00008a0ce3801852UL, + 0x00008a54f83e6565UL, + 0x00008c129b07f719UL, + 0x00008c6fcb5d3c31UL, + 0x00008c9ffd80ad14UL, + 0x000090cdc2c5fbfbUL, + 0x000092014fc2fdddUL, + 0x00009284d3572dacUL, + 0x000095b00381126cUL, + 0x00009616a294a9e9UL, + 0x00009be927eba620UL, + 0x00009cbd6d15484cUL, + 0x00009d50d81008f2UL, + 0x00009e0d663392d4UL, + 0x00009e49fd0626fcUL, + 0x00009fab72430027UL, + 0x00009fc67ccdb2e3UL, + 0x00009ffc4b422b31UL, + 0x0000a17b65d1cae9UL, + 0x0000a19bbd32e1c9UL, + 0x0000a4206e5985f2UL, + 0x0000a50f4ec978ceUL, + 0x0000a7ce19eba833UL, + 0x0000a7f538fabdc1UL, + 0x0000a91aefa615b2UL, + 0x0000ab4709d37c99UL, + 0x0000abc22f0d2521UL, + 0x0000abd5f54d4ea1UL, + 0x0000ada78f77fbf2UL, + 0x0000aef8013381cbUL, + 0x0000af830cabffafUL, + 0x0000b0541e7d6c23UL, + 0x0000b10cbf720fcaUL, + 0x0000b242e6f1a8dfUL, + 0x0000b29df18e7af0UL, + 0x0000b2c2809f72cbUL, + 0x0000b4befb1d72c4UL, + 0x0000b4f9331d2403UL, + 0x0000b544722b3d56UL, + 0x0000b653cde94976UL, + 0x0000b6c56c9a7a14UL, + 0x0000b79cfa3c585aUL, + 0x0000b9065b571aa1UL, + 0x0000b9faa0da4e12UL, + 0x0000bc79c4e33a13UL, + 0x0000bf8134a00605UL, + 0x0000c11cc2c611adUL, + 0x0000c160a47d69c5UL, + 0x0000c20289d906b0UL, + 0x0000c376760b8ec1UL, + 0x0000c530b1768109UL, + 0x0000c60c4967e549UL, + 0x0000c8abc45db31dUL, + 0x0000ca9887474ac4UL, + 0x0000cabf56e673a3UL, + 0x0000cbc318803c24UL, + 0x0000cbc6116e5ebeUL, + 0x0000ccf0db1554a9UL, + 0x0000cddcac6fa25aUL, + 0x0000ce96261ff48eUL, + 0x0000cecf2e48a986UL, + 0x0000d1b910eddeefUL, + 0x0000d29e33f0ca7aUL, + 0x0000d6e8342a3184UL, + 0x0000d6fc99149bb5UL, + 0x0000daa4bcd61719UL, + 0x0000db520d201328UL, + 0x0000dbe6c118c224UL, + 0x0000de6b56f31d14UL, + 0x0000df300cdf8590UL, + 0x0000e0049acdf393UL, + 0x0000e0220a337cfdUL, + 0x0000e054e6015535UL, + 0x0000e27c6c9fee32UL, + 0x0000e4ed9027f065UL, + 0x0000e6b663a39fc8UL, + 0x0000e6e9f7af88c5UL, + 0x0000e7f72bc21ca7UL, + 0x0000e8c1b6b09cd4UL, + 0x0000ebee44f9908dUL, + 0x0000eccce0be392bUL, + 0x0000f07ee0b55d52UL, + 0x0000f0ce19a417d6UL, + 0x0000f5c948a818a6UL, + 0x0000fa685187e0ddUL, + 0x0000fc0db272e91cUL, + 0x0000fd36274d01b7UL, + 0x0000fd66f9a6efdeUL, + 0x0000fda0d93abdabUL, + 0x0001003988e644d5UL, + 0x00010116cfd15dd9UL, + 0x00010123e8f8d195UL, + 0x00010180f04edab1UL, + 0x0001036eb170fee7UL, + 0x000103a7f3bf5febUL, + 0x000105f08e700922UL, + 0x000107cc36aa2b48UL, + 0x000109bd9c16a8f1UL, + 0x00010c0ae3f6da17UL, + 0x00010ccb34315755UL, + 0x00010cde7e2f58c7UL, + 0x00010e292fa86e34UL, + 0x00010e5d0949e2d1UL, + 0x00010f60bd9826aaUL, + 0x00011008cf854996UL, + 0x000111f56b66e071UL, + 0x000114dd38a98449UL, + 0x0001188fc5d992faUL, + 0x00011b285555b5daUL, + 0x00011dd783387b04UL, + 0x00011efc5d7b6d56UL, + 0x00011f8a925dfaddUL, + 0x000120c830f46f6eUL, + 0x000121038815ffdeUL, + 0x0001212a3941e24bUL, + 0x00012144ee169244UL, + 0x000121e16168140dUL, + 0x0001225ae259638fUL, + 0x00012579ba514415UL, + 0x000125a8a53964c0UL, + 0x0001269fe3de25c7UL, + 0x0001274baa39aabcUL, + 0x0001275b62e78c45UL, + 0x000127b87c0e5441UL, + 0x000128c54d7d04d9UL, + 0x00012a869cfa3127UL, + 0x00012a8e2f60953aUL, + 0x00012a93122867c3UL, + 0x00012cfe7507f472UL, + 0x00012d360d0e879eUL, + 0x00012d71de40f3e3UL, + 0x00012f5f9d1a2c9cUL, + 0x000131112d4e0047UL, + 0x0001320d27aabcccUL, + 0x000135f48df07e2dUL, + 0x000136dbb1339a5fUL, + 0x00013781ea663cfeUL, + 0x000138f5c553d840UL, + 0x00013a347112bac7UL, + 0x00013a98203646e7UL, + 0x00013b47e37209d6UL, + 0x00013b5ce06bdf4cUL, + 0x00014020ccdb2a68UL, + 0x000141ff724d9c33UL, + 0x000142f37ef7cbbeUL, + 0x000144ba64d8d01eUL, + 0x0001460dd8e8ad11UL, + 0x000146cd55cf1264UL, + 0x000147bb3fd11278UL, + 0x000149787377cf7dUL, + 0x000149a3ffc81681UL, + 0x00014aa9c853e733UL, + 0x00014abbf3281ebaUL, + 0x00014bd038668306UL, + 0x00014c268658898cUL, + 0x00014ca268c1630dUL, + 0x00014d9c4c72e81dUL, + 0x0001502da8bb79eaUL, + 0x000150efa1d6948fUL, + 0x0001515332410990UL, + 0x000151e995ae13adUL, + 0x000153d6aed93342UL, + 0x000154615a906e1eUL, + 0x000156dc972f443eUL, + 0x000156e710f5f969UL, + 0x0001589b3027d036UL, + 0x00015b4b9b3c2e93UL, + 0x00015bb7cb8d66c9UL, + 0x00015cc6f17c1783UL, + 0x00015cdeda4ae8a1UL, + 0x00015e6d4ec0b7fcUL, + 0x00015fc917b939ffUL, + 0x0001627626dfba6dUL, + 0x00016276bb8e5dc0UL, + 0x00016330b2c2d04fUL, + 0x0001635507508bcfUL, + 0x000163d54bbf97f6UL, + 0x000165860b93464fUL, + 0x000165e44cefb17bUL, + 0x000166061c4383d9UL, + 0x00016642de75c594UL, + 0x00016b8d86af375aUL, + 0x00016d2c59c62be6UL, + 0x00016ef488ddc7e7UL, + 0x00016f576aec2768UL, + 0x00016faa9ee9a257UL, + 0x0001706b63e20f2dUL, + 0x000171a466406218UL, + 0x000171c3587e5077UL, + 0x00017309d0141671UL, + 0x00017443ed058ed7UL, + 0x000174cbd474aa67UL, + 0x00017659593ae13fUL, + 0x0001770a2934394fUL, + 0x00017ba0b77683e0UL, + 0x00017bca595f3658UL, + 0x000180bc519635a7UL, + 0x0001812df2fa2577UL, + 0x00018269e59935b4UL, + 0x0001842493614ce8UL, + 0x000184c07ffef4ebUL, + 0x000184c0b5ff09a6UL, + 0x000185fa39c95f8aUL, + 0x0001868f398745ebUL, + 0x000187a983155df6UL, + 0x000189c1e1333026UL, + 0x00018a3c5aeef05dUL, + 0x00018ad69fd38bedUL, + 0x00018baed2d12190UL, + 0x00018bfca1e54043UL, + 0x00018c45f955e4a4UL, + 0x00018d09c57a8f92UL, + 0x00018dbb57835ed3UL, + 0x00018dcdd8c35b21UL, + 0x0001901a5ea91b8cUL, + 0x000192257be3b4e6UL, + 0x0001928d0286421aUL, + 0x000192d64a95bdb7UL, + 0x000193843809ed2dUL, + 0x000194cf62183ffcUL, + 0x00019599f40e1d3aUL, + 0x00019740ec2aeaeeUL, + 0x0001979630856e94UL, + 0x0001982408526941UL, + 0x0001993f53c28670UL, + 0x00019c40a73669daUL, + 0x00019c560d8b6c73UL, + 0x00019da81b73075dUL, + 0x00019f1a9fd87092UL, + 0x00019f8f25d4d9f3UL, + 0x0001a0dab97e878fUL, + 0x0001a1805ecc3d10UL, + 0x0001a1da23213795UL, + 0x0001a2fa06da6d21UL, + 0x0001a5dc56870031UL, + 0x0001a67f0e665ad0UL, + 0x0001a71a934696b3UL, + 0x0001a79d7043eae5UL, + 0x0001aa5994fcc6d3UL, + 0x0001acf8eeca0b68UL, + 0x0001ad48fa22413fUL, + 0x0001b0a0854fa7d5UL, + 0x0001b2a5397c7428UL, + 0x0001b32296a6731cUL, + 0x0001b33ef374c080UL, + 0x0001b347b8cfcdfaUL, + 0x0001b420de2fb131UL, + 0x0001b4e0fb7af89cUL, + 0x0001b5078c8c6181UL, + 0x0001b79aacb60495UL, + 0x0001b8add6b6d85aUL, + 0x0001b8f4fab2f126UL, + 0x0001bbc28f35c9a7UL, + 0x0001bbebab16e6c6UL, + 0x0001bc0c31c8a191UL, + 0x0001bd1d61bef9baUL, + 0x0001bdf60f68c267UL, + 0x0001bf1c8a8e99d4UL, + 0x0001bfa76af76988UL, + 0x0001c0b80204f3e0UL, + 0x0001c0d55fa86956UL, + 0x0001c2d6c5bc0901UL, + 0x0001c3e9db691351UL, + 0x0001c3ed1a4de68cUL, + 0x0001c6ebd4525e7eUL, + 0x0001c8b7f02325e2UL, + 0x0001c9dd66ea043cUL, + 0x0001cab59ef27e94UL, + 0x0001cae122cf1fc8UL, + 0x0001cb865167b043UL, + 0x0001cbc3d5516dc3UL, + 0x0001cbda6d741ac5UL, + 0x0001cd7ab740c203UL, + 0x0001ce8e1799c0fcUL, + 0x0001ceff8bd8d19dUL, + 0x0001cf2f6bbbf14fUL, + 0x0001d0f0d6b5e7edUL, + 0x0001d184098689a2UL, + 0x0001d1ff2758f6d1UL, + 0x0001d21a7a79a173UL, + 0x0001d5a0947d9292UL, + 0x0001d6db2efe904aUL, + 0x0001d851447599a7UL, + 0x0001d9ed8577b7b6UL, + 0x0001da43c0ae25b0UL, + 0x0001db443660e662UL, + 0x0001dc759ae0c9f0UL, + 0x0001dd36b43bee3bUL, + 0x0001ded4a9a53c09UL, + 0x0001e0207354a68bUL, + 0x0001e156d11091d5UL, + 0x0001e2592980a389UL, + 0x0001e4345190f2b2UL, + 0x0001e505a9b18b76UL, + 0x0001e517d2b6e5b7UL, + 0x0001e52ef625f748UL, + 0x0001e6826bf94069UL, + 0x0001ea42fdae999fUL, + 0x0001eab095553c48UL, + 0x0001ebba299e7859UL, + 0x0001ebe0988067b1UL, + 0x0001ebfbea6360b0UL, + 0x0001ec3f003b6674UL, + 0x0001f1cf5182e408UL, + 0x0001f1fa8becedf7UL, + 0x0001f24c4d28a244UL, + 0x0001f572b9d36c81UL, + 0x0001f6510b6a9f69UL, + 0x0001f70eb5819feaUL, + 0x0001f7acf3e9b128UL, + 0x0001f8676b18b1baUL, + 0x0001f8cd1f7ad3b1UL, + 0x0001fa525e29541aUL, + 0x0001fc690f1710f5UL, + 0x0001fcaf88f5c23bUL, + 0x0001fd1b07241c1aUL, + 0x0001fd77f2687c27UL, + 0x0001fe53933d77bfUL, + 0x0000bbb6b61e3b81UL, + 0x00010a95357e9afbUL, + 0x00018cb610bfbb6aUL, + 0x0001cf5833fd8395UL +}; +apriltag_family_t *tagAruco7x7_1000_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco7x7_1000"); + tf->h = 14; + tf->ncodes = 1000; + tf->codes = codedata; + tf->nbits = 49; + tf->bit_x = calloc(49, sizeof(uint32_t)); + tf->bit_y = calloc(49, sizeof(uint32_t)); + + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 6; + tf->bit_y[5] = 1; + tf->bit_x[6] = 2; + tf->bit_y[6] = 2; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 2; + tf->bit_x[9] = 5; + tf->bit_y[9] = 2; + tf->bit_x[10] = 3; + tf->bit_y[10] = 3; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + + tf->bit_x[12] = 7; + tf->bit_y[12] = 1; + tf->bit_x[13] = 7; + tf->bit_y[13] = 2; + tf->bit_x[14] = 7; + tf->bit_y[14] = 3; + tf->bit_x[15] = 7; + tf->bit_y[15] = 4; + tf->bit_x[16] = 7; + tf->bit_y[16] = 5; + tf->bit_x[17] = 7; + tf->bit_y[17] = 6; + tf->bit_x[18] = 6; + tf->bit_y[18] = 2; + tf->bit_x[19] = 6; + tf->bit_y[19] = 3; + tf->bit_x[20] = 6; + tf->bit_y[20] = 4; + tf->bit_x[21] = 6; + tf->bit_y[21] = 5; + tf->bit_x[22] = 5; + tf->bit_y[22] = 3; + tf->bit_x[23] = 5; + tf->bit_y[23] = 4; + + tf->bit_x[24] = 7; + tf->bit_y[24] = 7; + tf->bit_x[25] = 6; + tf->bit_y[25] = 7; + tf->bit_x[26] = 5; + tf->bit_y[26] = 7; + tf->bit_x[27] = 4; + tf->bit_y[27] = 7; + tf->bit_x[28] = 3; + tf->bit_y[28] = 7; + tf->bit_x[29] = 2; + tf->bit_y[29] = 7; + tf->bit_x[30] = 6; + tf->bit_y[30] = 6; + tf->bit_x[31] = 5; + tf->bit_y[31] = 6; + tf->bit_x[32] = 4; + tf->bit_y[32] = 6; + tf->bit_x[33] = 3; + tf->bit_y[33] = 6; + tf->bit_x[34] = 5; + tf->bit_y[34] = 5; + tf->bit_x[35] = 4; + tf->bit_y[35] = 5; + + tf->bit_x[36] = 1; + tf->bit_y[36] = 7; + tf->bit_x[37] = 1; + tf->bit_y[37] = 6; + tf->bit_x[38] = 1; + tf->bit_y[38] = 5; + tf->bit_x[39] = 1; + tf->bit_y[39] = 4; + tf->bit_x[40] = 1; + tf->bit_y[40] = 3; + tf->bit_x[41] = 1; + tf->bit_y[41] = 2; + tf->bit_x[42] = 2; + tf->bit_y[42] = 6; + tf->bit_x[43] = 2; + tf->bit_y[43] = 5; + tf->bit_x[44] = 2; + tf->bit_y[44] = 4; + tf->bit_x[45] = 2; + tf->bit_y[45] = 3; + tf->bit_x[46] = 3; + tf->bit_y[46] = 5; + tf->bit_x[47] = 3; + tf->bit_y[47] = 4; + + tf->bit_x[48] = 4; + tf->bit_y[48] = 4; + tf->width_at_border = 9; + tf->total_width = 11; + tf->reversed_border = false; + return tf; +} + +void tagAruco7x7_1000_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco7x7_1000.h b/tagAruco7x7_1000.h new file mode 100644 index 00000000..4c7e51de --- /dev/null +++ b/tagAruco7x7_1000.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO7X7_1000 +#define _TAGARUCO7X7_1000 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco7x7_1000_create(); +void tagAruco7x7_1000_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco7x7_250.c b/tagAruco7x7_250.c new file mode 100644 index 00000000..9b0c443f --- /dev/null +++ b/tagAruco7x7_250.c @@ -0,0 +1,425 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco7x7_250.h" + +static uint64_t codedata[250] = { + 0x0001baac5d5162e1UL, + 0x0001c8e27cd4152eUL, + 0x00013d145de29d73UL, + 0x00014b1b9832636fUL, + 0x00018dbfe4692816UL, + 0x0000b400b8763a44UL, + 0x0001a354fe10afbcUL, + 0x00007d2484df464bUL, + 0x0001100e227dcbbeUL, + 0x000173592cf9b4ebUL, + 0x0001e861290cc887UL, + 0x0000013a3c588d01UL, + 0x0000afa68d0c317fUL, + 0x0001395d039f0024UL, + 0x00017f88ffd665dcUL, + 0x0001989219ed0a4bUL, + 0x0001a7b216d788c6UL, + 0x00000744abb456fdUL, + 0x00004e75d9181f0cUL, + 0x000073ae5aca022eUL, + 0x000074b59b967411UL, + 0x00008edb92bcae44UL, + 0x000094c207d1df77UL, + 0x0000bbf812145973UL, + 0x0000ed6733178755UL, + 0x00012ae8d49b0c18UL, + 0x000130d13bc6d3e2UL, + 0x000146c8b01d76a0UL, + 0x000173f3dd0ca2d0UL, + 0x000195fc2a1b6ecfUL, + 0x0001a77e14cb72bdUL, + 0x0001e49a1d3e6c36UL, + 0x0001feeba1673de7UL, + 0x000072189774d725UL, + 0x0000c0b574f30a70UL, + 0x00001638d2c6ec7eUL, + 0x00001a702241e245UL, + 0x00002ced7821110bUL, + 0x000035638cb69586UL, + 0x000052d2122b1cf4UL, + 0x0000530664c7d8cdUL, + 0x00005fabab68ef0dUL, + 0x00006f07e4399ebfUL, + 0x00007bdf87ce9cd3UL, + 0x00008e879e03c863UL, + 0x0000926184ad1261UL, + 0x0000b89172408c9aUL, + 0x0000bdb1a7ba8950UL, + 0x0000dc92c446afacUL, + 0x0000e575f5c45142UL, + 0x0000f4227569f686UL, + 0x0000f719b98a0dffUL, + 0x00010b20ca063fd1UL, + 0x000119fedf8a4b5dUL, + 0x000159e5d9e33a82UL, + 0x0001618b15fa5bcaUL, + 0x000176528ade090dUL, + 0x000183ae07643eeaUL, + 0x00019b733a8ac43eUL, + 0x0001a2def9dac864UL, + 0x0001a341fb77e543UL, + 0x00009769855a64f3UL, + 0x0000a6d430cf9e5aUL, + 0x000000d74d071e12UL, + 0x00000e2698ea1c92UL, + 0x00001ad454fe60c2UL, + 0x00001e584e5883a2UL, + 0x00002f6af31ca996UL, + 0x00002ff21f7e8439UL, + 0x00003abdc2cb3b40UL, + 0x00003e30bb6851f4UL, + 0x0000491333fe0abdUL, + 0x00004cb4e43f2dd9UL, + 0x00005819ee313444UL, + 0x00005d735ed1f498UL, + 0x00005e6861cb491eUL, + 0x000062808165199eUL, + 0x000063a36f92dc56UL, + 0x00006f311107d5b2UL, + 0x00009825c82bcf5fUL, + 0x00009ed46f821545UL, + 0x00009ee6e0707b62UL, + 0x0000abb3f102b70fUL, + 0x0000acabb6d6234bUL, + 0x0000acc44244b621UL, + 0x0000bb595c979f01UL, + 0x0000c03b3a4f30a6UL, + 0x0000d707bf249d90UL, + 0x0000d8e80f380d9cUL, + 0x0000e1c85a8f5145UL, + 0x0000eab421d0bc95UL, + 0x0001037915eca406UL, + 0x000107dbcea66a9bUL, + 0x000125bdcfb834baUL, + 0x00012ec1cfb51a47UL, + 0x00012fcea5f3874eUL, + 0x000137c6941cdc3cUL, + 0x0001546468139fb3UL, + 0x0001600a6efa37b5UL, + 0x00017705fad153a0UL, + 0x0001792f1bed5911UL, + 0x000179cb6a559dddUL, + 0x0001818c8ee9465cUL, + 0x000181fc31058b20UL, + 0x0001a278f56857ebUL, + 0x0001a87a326f89d1UL, + 0x0001b1e02ea1af03UL, + 0x0001b6a04057502aUL, + 0x0001c6a09f8e8768UL, + 0x0001c702d4b44ee2UL, + 0x0001cbad09bc67d7UL, + 0x0001d2e7ac516c75UL, + 0x0001d47697394091UL, + 0x0001db38fd1684a7UL, + 0x0001eeb152326ca9UL, + 0x0001fe9e1f38b941UL, + 0x00002e6b0fc08d6bUL, + 0x0000473dd887da53UL, + 0x00014c2d9857d104UL, + 0x0001655c6131c281UL, + 0x0001d678b62086deUL, + 0x0000010eaa2ff201UL, + 0x00000223b834d62aUL, + 0x000003d8090b3b6fUL, + 0x000006e6c4c53585UL, + 0x0000090348ff8646UL, + 0x00000c900ad73c8cUL, + 0x000012d7ebef400fUL, + 0x000015e33f8c7dd3UL, + 0x000019e69b5caeeeUL, + 0x00001b5d6ba0bf36UL, + 0x00002bd39a72d985UL, + 0x00002fbbd4757d6eUL, + 0x000031e623b77b86UL, + 0x000039bc31396159UL, + 0x00003fd52211b15eUL, + 0x000044f5eab18094UL, + 0x000045b81d6631fcUL, + 0x00004f3672e1a8e7UL, + 0x00005609d6ac3fc9UL, + 0x00005671dfe24d83UL, + 0x000059da148c4672UL, + 0x00005c00a58c9b15UL, + 0x00006b891c048b5eUL, + 0x00007b345a23f775UL, + 0x00007d8ad037d48dUL, + 0x000082a3485c6ad8UL, + 0x000085730bcb4840UL, + 0x0000869ea75e091aUL, + 0x000088ddb39806fbUL, + 0x0000922749b60c71UL, + 0x0000947f5cc80edaUL, + 0x0000962f93fd327eUL, + 0x0000964b6a615eefUL, + 0x00009793e05c1457UL, + 0x0000990c1ca6372eUL, + 0x000099edd150b95dUL, + 0x00009b41fad86e19UL, + 0x0000a1b24e45d38dUL, + 0x0000a22d13a8df82UL, + 0x0000a2a9bb960b94UL, + 0x0000a381adfe0f2bUL, + 0x0000aa60557d0736UL, + 0x0000ae80fae18f7dUL, + 0x0000aff2a520d464UL, + 0x0000b310c3db99b3UL, + 0x0000b7f6c7321adeUL, + 0x0000bbed2c7f5846UL, + 0x0000bc9cd95bb47eUL, + 0x0000c272384667cbUL, + 0x0000c2ca57ddaa29UL, + 0x0000cc044cf03277UL, + 0x0000d343e8018123UL, + 0x0000d9e8bba0d56fUL, + 0x0000dae1645332efUL, + 0x0000e09b403007ffUL, + 0x0000e11aa9e44355UL, + 0x0000e4748fbbe7bfUL, + 0x0000e7eb34b163e1UL, + 0x0000e89312d97051UL, + 0x0000eaff26819232UL, + 0x0000f7770069952cUL, + 0x0000f937a862b456UL, + 0x0000fba397d36e3cUL, + 0x0000fc746c5ba003UL, + 0x0000fddaf6606addUL, + 0x00010594e6e0dbd6UL, + 0x000105d295abcdfbUL, + 0x00010d94ffdb4425UL, + 0x000117b074d39f2cUL, + 0x0001185a12535639UL, + 0x00011a17e4e416a4UL, + 0x00011ad2b6049f6bUL, + 0x00011c88cc0210dfUL, + 0x00011dc2733d68a8UL, + 0x000120e1160d7319UL, + 0x00012492770d2fdeUL, + 0x000128197f157da3UL, + 0x000129be30567ed4UL, + 0x00012be5fcaa8fe2UL, + 0x00012e9cc1088abcUL, + 0x00013491d322eb45UL, + 0x000135dcd51eb7e3UL, + 0x00013b48b0b809ecUL, + 0x00013c7792fbd0efUL, + 0x00013ff89382ffa8UL, + 0x00014815b4595bfcUL, + 0x00014a3ec4f19b4bUL, + 0x00014adf08c3a405UL, + 0x00014fc654578932UL, + 0x000151408fff7feeUL, + 0x000158bf3970a9a6UL, + 0x00015998d3461810UL, + 0x00015d3a0865a730UL, + 0x00015d55ee01ce6dUL, + 0x000165645c7d7d82UL, + 0x0001677b5212baf7UL, + 0x000167f6a702b183UL, + 0x00016ad226cce5bcUL, + 0x00016b23ae7d017aUL, + 0x00016b343814600aUL, + 0x000175f26b5cb424UL, + 0x0001761617c00c20UL, + 0x00017800e2e3f43aUL, + 0x0001799d4a324a72UL, + 0x0001816f2420c5caUL, + 0x000181b99dc07f77UL, + 0x000186745e491961UL, + 0x000188913838c310UL, + 0x00018f3e2a6e028bUL, + 0x000192f5da345a6cUL, + 0x00019787d9e89f4eUL, + 0x00019945ac64db3aUL, + 0x00019d86e2b20e2fUL, + 0x0001aa18af8aef4fUL, + 0x0001aa8683ccd246UL, + 0x0001ab98e4a87150UL, + 0x0001af3adda3c31aUL, + 0x0001b062d21025e7UL, + 0x0001b25a38ac6021UL, + 0x0001b478e5738d45UL, + 0x0001c5b6c92f9505UL, + 0x0001c7d442986b79UL, + 0x0001c98a510b67b5UL, + 0x0001cc59b608fd08UL, + 0x0001cd038e4fe4bfUL, + 0x0001cf2f10c0493cUL, + 0x0001d0b6d8c778f9UL, + 0x0001d372623fd2b5UL, + 0x0001da5ee84cbec2UL +}; +apriltag_family_t *tagAruco7x7_250_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco7x7_250"); + tf->h = 17; + tf->ncodes = 250; + tf->codes = codedata; + tf->nbits = 49; + tf->bit_x = calloc(49, sizeof(uint32_t)); + tf->bit_y = calloc(49, sizeof(uint32_t)); + + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 6; + tf->bit_y[5] = 1; + tf->bit_x[6] = 2; + tf->bit_y[6] = 2; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 2; + tf->bit_x[9] = 5; + tf->bit_y[9] = 2; + tf->bit_x[10] = 3; + tf->bit_y[10] = 3; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + + tf->bit_x[12] = 7; + tf->bit_y[12] = 1; + tf->bit_x[13] = 7; + tf->bit_y[13] = 2; + tf->bit_x[14] = 7; + tf->bit_y[14] = 3; + tf->bit_x[15] = 7; + tf->bit_y[15] = 4; + tf->bit_x[16] = 7; + tf->bit_y[16] = 5; + tf->bit_x[17] = 7; + tf->bit_y[17] = 6; + tf->bit_x[18] = 6; + tf->bit_y[18] = 2; + tf->bit_x[19] = 6; + tf->bit_y[19] = 3; + tf->bit_x[20] = 6; + tf->bit_y[20] = 4; + tf->bit_x[21] = 6; + tf->bit_y[21] = 5; + tf->bit_x[22] = 5; + tf->bit_y[22] = 3; + tf->bit_x[23] = 5; + tf->bit_y[23] = 4; + + tf->bit_x[24] = 7; + tf->bit_y[24] = 7; + tf->bit_x[25] = 6; + tf->bit_y[25] = 7; + tf->bit_x[26] = 5; + tf->bit_y[26] = 7; + tf->bit_x[27] = 4; + tf->bit_y[27] = 7; + tf->bit_x[28] = 3; + tf->bit_y[28] = 7; + tf->bit_x[29] = 2; + tf->bit_y[29] = 7; + tf->bit_x[30] = 6; + tf->bit_y[30] = 6; + tf->bit_x[31] = 5; + tf->bit_y[31] = 6; + tf->bit_x[32] = 4; + tf->bit_y[32] = 6; + tf->bit_x[33] = 3; + tf->bit_y[33] = 6; + tf->bit_x[34] = 5; + tf->bit_y[34] = 5; + tf->bit_x[35] = 4; + tf->bit_y[35] = 5; + + tf->bit_x[36] = 1; + tf->bit_y[36] = 7; + tf->bit_x[37] = 1; + tf->bit_y[37] = 6; + tf->bit_x[38] = 1; + tf->bit_y[38] = 5; + tf->bit_x[39] = 1; + tf->bit_y[39] = 4; + tf->bit_x[40] = 1; + tf->bit_y[40] = 3; + tf->bit_x[41] = 1; + tf->bit_y[41] = 2; + tf->bit_x[42] = 2; + tf->bit_y[42] = 6; + tf->bit_x[43] = 2; + tf->bit_y[43] = 5; + tf->bit_x[44] = 2; + tf->bit_y[44] = 4; + tf->bit_x[45] = 2; + tf->bit_y[45] = 3; + tf->bit_x[46] = 3; + tf->bit_y[46] = 5; + tf->bit_x[47] = 3; + tf->bit_y[47] = 4; + + tf->bit_x[48] = 4; + tf->bit_y[48] = 4; + tf->width_at_border = 9; + tf->total_width = 11; + tf->reversed_border = false; + return tf; +} + +void tagAruco7x7_250_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco7x7_250.h b/tagAruco7x7_250.h new file mode 100644 index 00000000..ca6f0762 --- /dev/null +++ b/tagAruco7x7_250.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO7X7_250 +#define _TAGARUCO7X7_250 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco7x7_250_create(); +void tagAruco7x7_250_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagAruco7x7_50.c b/tagAruco7x7_50.c new file mode 100644 index 00000000..9461fb13 --- /dev/null +++ b/tagAruco7x7_50.c @@ -0,0 +1,225 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagAruco7x7_50.h" + +static uint64_t codedata[50] = { + 0x0001baac5d5162e1UL, + 0x0001c8e27cd4152eUL, + 0x00013d145de29d73UL, + 0x00014b1b9832636fUL, + 0x00018dbfe4692816UL, + 0x0000b400b8763a44UL, + 0x0001a354fe10afbcUL, + 0x00007d2484df464bUL, + 0x0001100e227dcbbeUL, + 0x000173592cf9b4ebUL, + 0x0001e861290cc887UL, + 0x0000013a3c588d01UL, + 0x0000afa68d0c317fUL, + 0x0001395d039f0024UL, + 0x00017f88ffd665dcUL, + 0x0001989219ed0a4bUL, + 0x0001a7b216d788c6UL, + 0x00000744abb456fdUL, + 0x00004e75d9181f0cUL, + 0x000073ae5aca022eUL, + 0x000074b59b967411UL, + 0x00008edb92bcae44UL, + 0x000094c207d1df77UL, + 0x0000bbf812145973UL, + 0x0000ed6733178755UL, + 0x00012ae8d49b0c18UL, + 0x000130d13bc6d3e2UL, + 0x000146c8b01d76a0UL, + 0x000173f3dd0ca2d0UL, + 0x000195fc2a1b6ecfUL, + 0x0001a77e14cb72bdUL, + 0x0001e49a1d3e6c36UL, + 0x0001feeba1673de7UL, + 0x000072189774d725UL, + 0x0000c0b574f30a70UL, + 0x00001638d2c6ec7eUL, + 0x00001a702241e245UL, + 0x00002ced7821110bUL, + 0x000035638cb69586UL, + 0x000052d2122b1cf4UL, + 0x0000530664c7d8cdUL, + 0x00005fabab68ef0dUL, + 0x00006f07e4399ebfUL, + 0x00007bdf87ce9cd3UL, + 0x00008e879e03c863UL, + 0x0000926184ad1261UL, + 0x0000b89172408c9aUL, + 0x0000bdb1a7ba8950UL, + 0x0000dc92c446afacUL, + 0x0000e575f5c45142UL +}; +apriltag_family_t *tagAruco7x7_50_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagAruco7x7_50"); + tf->h = 19; + tf->ncodes = 50; + tf->codes = codedata; + tf->nbits = 49; + tf->bit_x = calloc(49, sizeof(uint32_t)); + tf->bit_y = calloc(49, sizeof(uint32_t)); + + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 6; + tf->bit_y[5] = 1; + tf->bit_x[6] = 2; + tf->bit_y[6] = 2; + tf->bit_x[7] = 3; + tf->bit_y[7] = 2; + tf->bit_x[8] = 4; + tf->bit_y[8] = 2; + tf->bit_x[9] = 5; + tf->bit_y[9] = 2; + tf->bit_x[10] = 3; + tf->bit_y[10] = 3; + tf->bit_x[11] = 4; + tf->bit_y[11] = 3; + + tf->bit_x[12] = 7; + tf->bit_y[12] = 1; + tf->bit_x[13] = 7; + tf->bit_y[13] = 2; + tf->bit_x[14] = 7; + tf->bit_y[14] = 3; + tf->bit_x[15] = 7; + tf->bit_y[15] = 4; + tf->bit_x[16] = 7; + tf->bit_y[16] = 5; + tf->bit_x[17] = 7; + tf->bit_y[17] = 6; + tf->bit_x[18] = 6; + tf->bit_y[18] = 2; + tf->bit_x[19] = 6; + tf->bit_y[19] = 3; + tf->bit_x[20] = 6; + tf->bit_y[20] = 4; + tf->bit_x[21] = 6; + tf->bit_y[21] = 5; + tf->bit_x[22] = 5; + tf->bit_y[22] = 3; + tf->bit_x[23] = 5; + tf->bit_y[23] = 4; + + tf->bit_x[24] = 7; + tf->bit_y[24] = 7; + tf->bit_x[25] = 6; + tf->bit_y[25] = 7; + tf->bit_x[26] = 5; + tf->bit_y[26] = 7; + tf->bit_x[27] = 4; + tf->bit_y[27] = 7; + tf->bit_x[28] = 3; + tf->bit_y[28] = 7; + tf->bit_x[29] = 2; + tf->bit_y[29] = 7; + tf->bit_x[30] = 6; + tf->bit_y[30] = 6; + tf->bit_x[31] = 5; + tf->bit_y[31] = 6; + tf->bit_x[32] = 4; + tf->bit_y[32] = 6; + tf->bit_x[33] = 3; + tf->bit_y[33] = 6; + tf->bit_x[34] = 5; + tf->bit_y[34] = 5; + tf->bit_x[35] = 4; + tf->bit_y[35] = 5; + + tf->bit_x[36] = 1; + tf->bit_y[36] = 7; + tf->bit_x[37] = 1; + tf->bit_y[37] = 6; + tf->bit_x[38] = 1; + tf->bit_y[38] = 5; + tf->bit_x[39] = 1; + tf->bit_y[39] = 4; + tf->bit_x[40] = 1; + tf->bit_y[40] = 3; + tf->bit_x[41] = 1; + tf->bit_y[41] = 2; + tf->bit_x[42] = 2; + tf->bit_y[42] = 6; + tf->bit_x[43] = 2; + tf->bit_y[43] = 5; + tf->bit_x[44] = 2; + tf->bit_y[44] = 4; + tf->bit_x[45] = 2; + tf->bit_y[45] = 3; + tf->bit_x[46] = 3; + tf->bit_y[46] = 5; + tf->bit_x[47] = 3; + tf->bit_y[47] = 4; + + tf->bit_x[48] = 4; + tf->bit_y[48] = 4; + tf->width_at_border = 9; + tf->total_width = 11; + tf->reversed_border = false; + return tf; +} + +void tagAruco7x7_50_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagAruco7x7_50.h b/tagAruco7x7_50.h new file mode 100644 index 00000000..1c387726 --- /dev/null +++ b/tagAruco7x7_50.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCO7X7_50 +#define _TAGARUCO7X7_50 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagAruco7x7_50_create(); +void tagAruco7x7_50_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tagArucoMIP36h12.c b/tagArucoMIP36h12.c new file mode 100644 index 00000000..672a681f --- /dev/null +++ b/tagArucoMIP36h12.c @@ -0,0 +1,394 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include +#include "tagArucoMIP36h12.h" + +static uint64_t codedata[250] = { + 0x0000000d2a2af057UL, + 0x0000000600ce910cUL, + 0x0000000109d925dfUL, + 0x0000000fed18b3bcUL, + 0x000000087eda40adUL, + 0x0000000b14bcf6c9UL, + 0x00000006e6af268fUL, + 0x000000051193e238UL, + 0x0000000028070a6eUL, + 0x00000008a569d4daUL, + 0x0000000eb85acf5dUL, + 0x00000001bae0829eUL, + 0x0000000b2d838da9UL, + 0x000000029c0b61b6UL, + 0x00000007a33c5dccUL, + 0x000000027fcdeb19UL, + 0x00000008c8ea3fc9UL, + 0x000000048f81804bUL, + 0x0000000bd49e287cUL, + 0x0000000d8646eaadUL, + 0x000000017b9e9c8aUL, + 0x000000012426a5dcUL, + 0x0000000e2acff7faUL, + 0x00000004201cc4bbUL, + 0x000000093347a10bUL, + 0x00000002439f30b9UL, + 0x0000000c63f8f998UL, + 0x00000000047252cfUL, + 0x000000028080273dUL, + 0x000000070dadb89aUL, + 0x0000000d11aa6c8fUL, + 0x0000000f61cc0bffUL, + 0x0000000c3d9424f5UL, + 0x000000038fde83e8UL, + 0x000000025de707feUL, + 0x0000000426db0dc8UL, + 0x0000000d90712ad9UL, + 0x00000003bcd26e8bUL, + 0x0000000ad991d9dfUL, + 0x00000008b2cc69ceUL, + 0x0000000b3e0a03dbUL, + 0x0000000b70c98459UL, + 0x0000000231a4425bUL, + 0x0000000a9f8d4e2eUL, + 0x0000000aa0fd8dbcUL, + 0x00000004acaad2a8UL, + 0x00000005af8c3f29UL, + 0x0000000aab1284feUL, + 0x0000000045d42e1aUL, + 0x0000000aa5d5e24cUL, + 0x000000075ad4a5bcUL, + 0x00000008bd44978dUL, + 0x0000000e1c108a8eUL, + 0x0000000b74e419c8UL, + 0x00000002068bca9cUL, + 0x0000000f7282b5cfUL, + 0x0000000a682db0cdUL, + 0x00000001550900faUL, + 0x00000001bda9ae5dUL, + 0x00000008c34a53bfUL, + 0x00000006805541deUL, + 0x00000000c544f9cbUL, + 0x00000001c0e7e6eaUL, + 0x00000001bb5452f9UL, + 0x0000000cf4b80ebaUL, + 0x0000000d23f567adUL, + 0x00000008b399e2e3UL, + 0x000000041e92718aUL, + 0x0000000debbb12ddUL, + 0x0000000a245e3baeUL, + 0x0000000b457ae5baUL, + 0x0000000085afe92dUL, + 0x0000000f26088c6cUL, + 0x00000009d1b243e9UL, + 0x000000099c0a9cbfUL, + 0x000000082d1f68d8UL, + 0x00000008498482a8UL, + 0x00000006b1c91d9bUL, + 0x000000061f0ea608UL, + 0x00000003e2907a4dUL, + 0x00000001af514daeUL, + 0x0000000c18e689dbUL, + 0x00000008628ebe7dUL, + 0x00000003b14ae09dUL, + 0x000000035fbb6fadUL, + 0x00000000d6c28b2aUL, + 0x00000002d7488edfUL, + 0x0000000834c60214UL, + 0x000000060dd7e4afUL, + 0x0000000c84dbb1fdUL, + 0x000000012a9de16cUL, + 0x0000000c028132deUL, + 0x0000000367f8938fUL, + 0x000000046f4d318eUL, + 0x0000000ea78cc185UL, + 0x00000005604836adUL, + 0x00000002ff83b2edUL, + 0x00000002854c8810UL, + 0x0000000430327cbcUL, + 0x00000009a10b8b3cUL, + 0x00000008a590189dUL, + 0x00000008c210afefUL, + 0x00000002761c202aUL, + 0x000000026384a99eUL, + 0x00000008f57021fcUL, + 0x00000009074829c1UL, + 0x0000000810b8c01dUL, + 0x00000000f51dadb9UL, + 0x00000006a0962888UL, + 0x000000076888408eUL, + 0x00000000ce9a477cUL, + 0x0000000a5a9c62dfUL, + 0x000000048cdd86c4UL, + 0x0000000211d593ebUL, + 0x0000000adc27a988UL, + 0x0000000835024aabUL, + 0x000000040a489a1bUL, + 0x000000087e905fd9UL, + 0x0000000793da4e48UL, + 0x0000000496ece39bUL, + 0x0000000bcde17ebfUL, + 0x0000000da8069bc8UL, + 0x00000002590c1cbcUL, + 0x000000036c00aa18UL, + 0x0000000afa4f28fbUL, + 0x000000031f4275ffUL, + 0x00000004f81913e8UL, + 0x0000000078d73b9dUL, + 0x0000000c25cae0b6UL, + 0x00000005f2fb8dffUL, + 0x000000060ba20598UL, + 0x0000000af0c4da39UL, + 0x00000003a18a96ebUL, + 0x0000000d8882c77bUL, + 0x0000000121c65f8fUL, + 0x00000004dddb4bcbUL, + 0x000000073c6a09bcUL, + 0x00000009efaeebccUL, + 0x0000000eb7da27d1UL, + 0x0000000e342bc5ffUL, + 0x000000040e1f16ebUL, + 0x0000000b8356bdb9UL, + 0x0000000342a357ccUL, + 0x00000006b5ba876cUL, + 0x00000008809ed86bUL, + 0x00000008c6a2c48bUL, + 0x00000002f02e07f9UL, + 0x0000000d0c4cc198UL, + 0x000000042f148f7fUL, + 0x000000087c7b36ffUL, + 0x0000000413496ffdUL, + 0x00000007a15126baUL, + 0x0000000724e8265eUL, + 0x00000009ebc0b5aaUL, + 0x00000007c5c504e9UL, + 0x0000000c08ff4369UL, + 0x0000000913df84fcUL, + 0x000000024ad018caUL, + 0x00000009c5349afaUL, + 0x00000000393e41efUL, + 0x00000007caacde9fUL, + 0x000000062c8659ddUL, + 0x0000000d021be7c9UL, + 0x00000001b6c81009UL, + 0x000000094c8f638bUL, + 0x0000000f90582d2fUL, + 0x00000003b3e9a9e8UL, + 0x000000031dda8257UL, + 0x0000000c8e1d223cUL, + 0x0000000793845bbaUL, + 0x000000013468cf89UL, + 0x00000005a6dc7cdbUL, + 0x0000000b31be4d39UL, + 0x0000000051ebbabaUL, + 0x0000000bb8fb43aeUL, + 0x00000000aedba63bUL, + 0x0000000d242d6eebUL, + 0x00000008839d2f88UL, + 0x0000000467be23faUL, + 0x00000003bbd88fb5UL, + 0x000000069e44a979UL, + 0x0000000379223adfUL, + 0x00000002a3b6cbfdUL, + 0x00000008bbab4ff8UL, + 0x0000000e2cf9e299UL, + 0x000000070012fb9fUL, + 0x0000000a953d209fUL, + 0x0000000112158b58UL, + 0x0000000120de00e1UL, + 0x0000000e3278179cUL, + 0x0000000b395b2b69UL, + 0x0000000fdda996ceUL, + 0x000000041c8c6a6dUL, + 0x0000000bac4d497dUL, + 0x0000000689c0f3ecUL, + 0x0000000a8c1855cdUL, + 0x000000097680e6bcUL, + 0x00000001dc1c4688UL, + 0x000000018391ced6UL, + 0x0000000e161218f9UL, + 0x0000000a681b9f9bUL, + 0x0000000314f32579UL, + 0x0000000eb3aa98aeUL, + 0x000000028d6ebafdUL, + 0x00000008c1232cdeUL, + 0x0000000f2e952f9eUL, + 0x00000004659dd2edUL, + 0x000000028430f098UL, + 0x000000001dc2efd8UL, + 0x00000003d7a42a89UL, + 0x000000012f5a3798UL, + 0x000000039d7e4cdeUL, + 0x00000005115f098dUL, + 0x00000001828ea01aUL, + 0x0000000634550e09UL, + 0x000000009b3aa3d9UL, + 0x00000001ccd403bfUL, + 0x0000000ad2df818fUL, + 0x0000000f40a6c8bcUL, + 0x000000027150ff8cUL, + 0x0000000e03983b6bUL, + 0x000000048cbc0958UL, + 0x0000000a984646baUL, + 0x0000000e715302cfUL, + 0x0000000228d8572bUL, + 0x000000082d8a934eUL, + 0x00000009a7d86a38UL, + 0x0000000297dcfc6dUL, + 0x000000091c13264aUL, + 0x000000082b11c39dUL, + 0x000000001186256aUL, + 0x0000000d128e42c2UL, + 0x0000000a0a02c94fUL, + 0x00000008d5ae675fUL, + 0x0000000cadbba58aUL, + 0x0000000ccbcd61d9UL, + 0x0000000f9edb24a8UL, + 0x00000009a1a8239bUL, + 0x0000000bf4a8e9afUL, + 0x0000000e00f0edcdUL, + 0x00000004e8843ffeUL, + 0x0000000b8b8ba70fUL, + 0x00000003725249bbUL, + 0x0000000129fac6ccUL, + 0x0000000cb9cf2eadUL, + 0x0000000d84ff4f9fUL, + 0x000000043740b8dcUL, + 0x000000033ad60c5dUL, + 0x0000000713b480ceUL, + 0x00000004d79815adUL, +}; +apriltag_family_t *tagArucoMIP36h12_create() +{ + apriltag_family_t *tf = calloc(1, sizeof(apriltag_family_t)); + tf->name = strdup("tagArucoMIP_36h12"); + tf->h = 12; + tf->ncodes = 250; + tf->codes = codedata; + tf->nbits = 36; + tf->bit_x = calloc(36, sizeof(uint32_t)); + tf->bit_y = calloc(36, sizeof(uint32_t)); + tf->bit_x[0] = 1; + tf->bit_y[0] = 1; + tf->bit_x[1] = 2; + tf->bit_y[1] = 1; + tf->bit_x[2] = 3; + tf->bit_y[2] = 1; + tf->bit_x[3] = 4; + tf->bit_y[3] = 1; + tf->bit_x[4] = 5; + tf->bit_y[4] = 1; + tf->bit_x[5] = 2; + tf->bit_y[5] = 2; + tf->bit_x[6] = 3; + tf->bit_y[6] = 2; + tf->bit_x[7] = 4; + tf->bit_y[7] = 2; + tf->bit_x[8] = 3; + tf->bit_y[8] = 3; + tf->bit_x[9] = 6; + tf->bit_y[9] = 1; + tf->bit_x[10] = 6; + tf->bit_y[10] = 2; + tf->bit_x[11] = 6; + tf->bit_y[11] = 3; + tf->bit_x[12] = 6; + tf->bit_y[12] = 4; + tf->bit_x[13] = 6; + tf->bit_y[13] = 5; + tf->bit_x[14] = 5; + tf->bit_y[14] = 2; + tf->bit_x[15] = 5; + tf->bit_y[15] = 3; + tf->bit_x[16] = 5; + tf->bit_y[16] = 4; + tf->bit_x[17] = 4; + tf->bit_y[17] = 3; + tf->bit_x[18] = 6; + tf->bit_y[18] = 6; + tf->bit_x[19] = 5; + tf->bit_y[19] = 6; + tf->bit_x[20] = 4; + tf->bit_y[20] = 6; + tf->bit_x[21] = 3; + tf->bit_y[21] = 6; + tf->bit_x[22] = 2; + tf->bit_y[22] = 6; + tf->bit_x[23] = 5; + tf->bit_y[23] = 5; + tf->bit_x[24] = 4; + tf->bit_y[24] = 5; + tf->bit_x[25] = 3; + tf->bit_y[25] = 5; + tf->bit_x[26] = 4; + tf->bit_y[26] = 4; + tf->bit_x[27] = 1; + tf->bit_y[27] = 6; + tf->bit_x[28] = 1; + tf->bit_y[28] = 5; + tf->bit_x[29] = 1; + tf->bit_y[29] = 4; + tf->bit_x[30] = 1; + tf->bit_y[30] = 3; + tf->bit_x[31] = 1; + tf->bit_y[31] = 2; + tf->bit_x[32] = 2; + tf->bit_y[32] = 5; + tf->bit_x[33] = 2; + tf->bit_y[33] = 4; + tf->bit_x[34] = 2; + tf->bit_y[34] = 3; + tf->bit_x[35] = 3; + tf->bit_y[35] = 4; + tf->width_at_border = 8; + tf->total_width = 10; + tf->reversed_border = false; + return tf; +} + +void tagArucoMIP36h12_destroy(apriltag_family_t *tf) +{ + free(tf->bit_x); + free(tf->bit_y); + free(tf->name); + free(tf); +} diff --git a/tagArucoMIP36h12.h b/tagArucoMIP36h12.h new file mode 100644 index 00000000..22f8863c --- /dev/null +++ b/tagArucoMIP36h12.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2013-2016, The Regents of The University of Michigan. +All rights reserved. +This software was developed in the APRIL Robotics Lab under the +direction of Edwin Olson, ebolson@umich.edu. This software may be +available under alternative licensing terms; contact the address above. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the Regents of The University of Michigan. +*/ + +/* +// https://github.com/opencv/opencv/blob/3e43d0cfca9753bcc4983f610b75d70c3f25f0cd/modules/objdetect/src/aruco/predefined_dictionaries.hpp +Copyright 2025 OpenCV + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#ifndef _TAGARUCOMIP36h12 +#define _TAGARUCOMIP36h12 + +#include "apriltag.h" + +#ifdef __cplusplus +extern "C" { +#endif + +apriltag_family_t *tagArucoMIP36h12_create(); +void tagArucoMIP36h12_destroy(apriltag_family_t *tf); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/test/test_quick_decode.c b/test/test_quick_decode.c index 91e035ac..3b85df8b 100644 --- a/test/test_quick_decode.c +++ b/test/test_quick_decode.c @@ -12,6 +12,23 @@ #include "tagCustom48h12.h" #include "tagStandard41h12.h" #include "tagStandard52h13.h" +#include "tagAruco4x4_50.h" +#include "tagAruco4x4_100.h" +#include "tagAruco4x4_250.h" +#include "tagAruco4x4_1000.h" +#include "tagAruco5x5_50.h" +#include "tagAruco5x5_100.h" +#include "tagAruco5x5_250.h" +#include "tagAruco5x5_1000.h" +#include "tagAruco6x6_50.h" +#include "tagAruco6x6_100.h" +#include "tagAruco6x6_250.h" +#include "tagAruco6x6_1000.h" +#include "tagAruco7x7_50.h" +#include "tagAruco7x7_100.h" +#include "tagAruco7x7_250.h" +#include "tagAruco7x7_1000.h" +#include "tagArucoMIP36h12.h" #include "../apriltag.c" @@ -104,6 +121,23 @@ int main() { tagCustom48h12_create(), tagStandard41h12_create(), tagStandard52h13_create(), + tagAruco4x4_50_create(), + tagAruco4x4_100_create(), + tagAruco4x4_250_create(), + tagAruco4x4_1000_create(), + tagAruco5x5_50_create(), + tagAruco5x5_100_create(), + tagAruco5x5_250_create(), + tagAruco5x5_1000_create(), + tagAruco6x6_50_create(), + tagAruco6x6_100_create(), + tagAruco6x6_250_create(), + tagAruco6x6_1000_create(), + tagAruco7x7_50_create(), + tagAruco7x7_100_create(), + tagAruco7x7_250_create(), + tagAruco7x7_1000_create(), + tagArucoMIP36h12_create(), NULL }; @@ -120,6 +154,23 @@ int main() { tagCustom48h12_destroy(fams[6]); tagStandard41h12_destroy(fams[7]); tagStandard52h13_destroy(fams[8]); + tagAruco4x4_50_destroy(fams[9]); + tagAruco4x4_100_destroy(fams[10]); + tagAruco4x4_250_destroy(fams[11]); + tagAruco4x4_1000_destroy(fams[12]); + tagAruco5x5_50_destroy(fams[13]); + tagAruco5x5_100_destroy(fams[14]); + tagAruco5x5_250_destroy(fams[15]); + tagAruco5x5_1000_destroy(fams[16]); + tagAruco6x6_50_destroy(fams[17]); + tagAruco6x6_100_destroy(fams[18]); + tagAruco6x6_250_destroy(fams[19]); + tagAruco6x6_1000_destroy(fams[20]); + tagAruco7x7_50_destroy(fams[21]); + tagAruco7x7_100_destroy(fams[22]); + tagAruco7x7_250_destroy(fams[23]); + tagAruco7x7_1000_destroy(fams[24]); + tagArucoMIP36h12_destroy(fams[25]); printf("All quick_decode tests passed!\n"); return 0;