NVIDIA-accelerated AprilTag detection and pose estimation.
Isaac ROS AprilTag contains a ROS 2 package for detection of AprilTags, a type of fiducial marker that provides a point of reference or measure. AprilTag detections are GPU-accelerated for high performance.
A common graph of nodes connects from an input camera through rectify and resize to AprilTag. Rectify warps the input camera image into a rectified, undistorted output image; this node may not be necessary if the camera driver provides rectified camera images. Resize is often used to downscale higher resolution cameras into the desired resolution for AprilTags if needed. The input resolution to AprilTag is selected by the required detection distance for the application, as a minimum number of pixels are required to perform an AprilTag detection and classification. For example, an 8mp input image of 3840×2160 may be much larger than necessary and a 4:1 downscale to 1920x1080 could make more efficient use of compute resources and satisfy the required detection distance of the application. Each of the green nodes in the above diagram is GPU accelerated, allowing for a high-performance compute graph from Argus Camera to ApriTag. For USB and Ethernet cameras, the graph is accelerated from Rectify through AprilTag
As illustrated above, detections are provided in an output array for the number of AprilTag detections in the input image. Each entry in the array contains the ID (two-dimensional bar code) for the AprilTag, the four corners ((x0, y0), (x1, y1), (x2, y2), (x3, y3)) and center (x, y) of the input image, and the pose of the AprilTag.
[!Note] This package is a GPU-accelerated drop-in replacement for the CPU version of ROS AprilTag
[!Note] For more information, including the paper and the reference CPU implementation, refer to the AprilTag page
This package is powered by NVIDIA Isaac Transport for ROS (NITROS), which leverages type adaptation and negotiation to optimize message formats and dramatically accelerate communication between participating nodes.
Sample Graph |
Input Size |
AGX Orin |
Orin NX |
Orin Nano 8GB |
x86_64 w/ RTX 4060 Ti |
x86_64 w/ RTX 4090 |
---|---|---|---|---|---|---|
AprilTag Node |
720p |
244 fps 7.3 ms @ 30Hz |
114 fps 12 ms @ 30Hz |
79.2 fps 18 ms @ 30Hz |
596 fps 2.4 ms @ 30Hz |
596 fps 2.1 ms @ 30Hz |
AprilTag Graph |
720p |
241 fps 9.5 ms @ 30Hz |
109 fps 15 ms @ 30Hz |
74.3 fps 21 ms @ 30Hz |
596 fps 3.4 ms @ 30Hz |
596 fps 2.9 ms @ 30Hz |
Please visit the Isaac ROS Documentation to learn how to use this repository.
Update 2024-09-26: Update for ZED compatibility