ESP32S3 add AprilTag Detection
Posted: Thu Nov 09, 2023 2:24 pm
Hello.
i'm try to add this function to my project. but it's not working well.
can you give me a hint?
target board is esp32s3 / 8MB psram.
use frame buffer "PIXFORMAT_GRAYSCALE", "FRAMESIZE_240X240"
add this lib "idf.py add-dependency "liux-pro/apriltag^0.0.4" by this cmd
and do full clean and build result build successfully complite.
https://components.espressif.com/compon ... o/apriltag
tf = tag16h5_create(); td = apriltag_detector_create();
when i call this function error has bean accurred.
please check "heap_caps_calloc_error.jpg" image so i change malloc and calloc function to heap_caps_calloc, heap_caps_malloc to allocatic in spram
after some same error keep accurred at malloc and calloc so i changed all.
after that
issue has changed.
this is my serial window.
i can not understand what's happend.
here is my code.
coude check it please?
best regards.
i'm try to add this function to my project. but it's not working well.
can you give me a hint?
target board is esp32s3 / 8MB psram.
use frame buffer "PIXFORMAT_GRAYSCALE", "FRAMESIZE_240X240"
add this lib "idf.py add-dependency "liux-pro/apriltag^0.0.4" by this cmd
and do full clean and build result build successfully complite.
https://components.espressif.com/compon ... o/apriltag
tf = tag16h5_create(); td = apriltag_detector_create();
when i call this function error has bean accurred.
please check "heap_caps_calloc_error.jpg" image so i change malloc and calloc function to heap_caps_calloc, heap_caps_malloc to allocatic in spram
after some same error keep accurred at malloc and calloc so i changed all.
after that
issue has changed.
this is my serial window.
i can not understand what's happend.
here is my code.
Code: Select all
init function
`
void initAprilTagDecode(void)
{
tf = tag16h5_create();
td = apriltag_detector_create();
apriltag_detector_add_family(td, tf);
td->quad_decimate = 1.0; // "Decimate input image by this factor"
td->quad_sigma = 0.0; // "Apply low-pass blur to input; negative sharpens"
td->nthreads = 1; // "Use this many CPU threads"
td->debug = 0; // "Enable debugging output (slow)"
td->refine_edges = 1; // "Spend more time trying to align edges of tags"
td->decode_sharpening = 0;
quiet = 0; // "Reduce output"
maxiters = 1; // "Repeat processing on input set this many times"
}
and main loop call function
{
image_u8_t im =
{
.width = (int32_t)frame->width,
.height = (int32_t)frame->height,
.stride = (int32_t)frame->width,
.buf = frame->buf
};
ESP_LOGI("APRIL", "CAM_AP_APRIL_TAG FB get");
if (return_frambuffer) esp_camera_fb_return(frame);
else free(frame);
zarray_t *detections = apriltag_detector_detect(td, &im);
for (int i = 0; i < zarray_size(detections); i++)
{
apriltag_detection_t *det;
zarray_get(detections, i, &det);
ESP_LOGE("TAG","%d, ",det->id);
}
apriltag_detections_destroy(detections);
ESP_LOGI("APRIL", "CAM_AP_APRIL_TAG FB Get");
break;
}
best regards.