I’ve written an Isaac interface library using Isaac’s C API that is built and deployed on Xavier using Isaac’s deploy.sh script. I link to this library in my existing application for Xavier. My application’s basic functionality is to interface with Argus and use the CUDA Driver API and EGL Stream framework to consume and process Argus-produced frames in CUDA and stream over the network. In parallel to that pipeline, I am trying to publish CUDA-processed images to Isaac to detect fiducials via the April Tags GEM.
The Isaac integration appears to working fine inside my application, behaving normally until I try to use the April Tags GEM. Shortly after successfully publishing an image to the AprilTags GEM, I get several cudaErrorMemoryAllocation errors in “/home/nvidia/AprilTagging/april_tagging/corner_detection/corner_detector.cpp”, and then Isaac terminates with the following error:
2020-04-23 15:33:52.508 PANIC ./engine/gems/image/utils.hpp@100: row count mismatch: 540 vs 0
| Isaac application terminated unexpectedly |
There are several GBytes worth of memory space on the device still, so lack of memory is not the issue. I am wondering if there is some sort of conflict between the CUDA Driver API usage in my application, and the AprilTags CUDA code that is trying to run. Any advice would be greatly appreciated.
P.s. I should note that although my interface library compiles and deploys without any errors, when I first tried to run my application, I got en error that Isaac couldn’t find “libAprilTagsDetection_module.so”. I am not sure why it is looking for that filename, as the deployed library is “libapril_tags_module.so”. In any case, I created a symlink and this appeared to solve the issue. I don’t think it’s related to the problem above, but wanted to mention it anyway.