An open API service indexing awesome lists of open source software.

https://github.com/sid220/isaac-ros-apriltag

Mirror of: https://git.sidtrz.com/slamdunk/isaac-ros-apriltag
https://github.com/sid220/isaac-ros-apriltag

Last synced: about 2 months ago
JSON representation

Mirror of: https://git.sidtrz.com/slamdunk/isaac-ros-apriltag

Awesome Lists containing this project

README

        

# Isaac ROS AprilTag

[![NVIDIA AprilTag status](https://git.sidtrz.com/slamdunk/isaac-ros-apriltag/badges/master/pipeline.svg)](https://git.sidtrz.com/slamdunk/isaac-ros-apriltag/-/commits/master)

> [!Note]
> This repo is a fork of [NVIDIA-ISAAC-ROS/isaac_ros_apriltag](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_apriltag), aimed at being an actual drop-in replacement for [christianrauch/apriltag_ros](https://github.com/christianrauch/apriltag_ros/tree/master) or [ros-misc-utilities/apriltag_detector](https://github.com/ros-misc-utilities/apriltag_detector), using the standard [christianrauch/apriltag_msgs](https://github.com/christianrauch/apriltag_msgs). You can download binaries from the [package registry](https://git.sidtrz.com/slamdunk/isaac-ros-apriltag/-/packages/3).

NVIDIA-accelerated AprilTag detection and pose estimation.

image

## Overview

[Isaac ROS AprilTag](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_apriltag) contains a ROS 2 package for detection of
[AprilTags](https://april.eecs.umich.edu/software/apriltag),
a type of fiducial marker that provides a point of reference or measure.
AprilTag detections are NVIDIA-accelerated for high performance.

image

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 NVIDIA
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 detection.

image

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 provides the option through the `backend` parameter to leverage either the GPU or
> CPU on all NVIDIA-powered platforms or PVA on Jetson devices for AprilTag detection.

> [!Note]
> This package is a NVIDIA-accelerated drop-in replacement for
> the [CPU version of ROS
> AprilTag](https://github.com/christianrauch/apriltag_ros)

> [!Note]
> For more information, including the paper and the reference
> CPU implementation, refer to the [AprilTag
> page](https://april.eecs.umich.edu/software/apriltag.html)

## Isaac ROS NITROS Acceleration

This package is powered by [NVIDIA Isaac Transport for ROS (NITROS)](https://developer.nvidia.com/blog/improve-perception-performance-for-ros-2-applications-with-nvidia-isaac-transport-for-ros/), which leverages type adaptation and negotiation to optimize message formats and dramatically accelerate communication between participating nodes.

## Performance

| Sample Graph

| Input Size

| AGX Orin

| Orin NX

| Orin Nano 8GB

| x86_64 w/ RTX 4090

|
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AprilTag Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_apriltag_benchmark/scripts/isaac_ros_apriltag_node.py)



| 720p



| [249 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-agx_orin.json)


4.5 ms @ 30Hz

| [116 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-orin_nx.json)


9.3 ms @ 30Hz

| [80.7 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-orin_nano.json)


14 ms @ 30Hz

| [596 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-x86-4090.json)


0.97 ms @ 30Hz

|
| [AprilTag Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_apriltag_benchmark/scripts/isaac_ros_apriltag_graph.py)



| 720p



| [246 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-agx_orin.json)


6.3 ms @ 30Hz

| [111 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-orin_nx.json)


12 ms @ 30Hz

| [77.5 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-orin_nano.json)


20 ms @ 30Hz

| [596 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-x86-4090.json)


1.6 ms @ 30Hz

|

---

## Documentation

Please visit the [Isaac ROS Documentation](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_apriltag/index.html) to learn how to use this repository.

---

## Packages

* [`isaac_ros_apriltag`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_apriltag/isaac_ros_apriltag/index.html)
* [Quickstart](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_apriltag/isaac_ros_apriltag/index.html#quickstart)
* [Try More Examples](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_apriltag/isaac_ros_apriltag/index.html#try-more-examples)
* [Troubleshooting](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_apriltag/isaac_ros_apriltag/index.html#troubleshooting)
* [API](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_apriltag/isaac_ros_apriltag/index.html#api)

## Latest

Update 2024-12-10: Added PVA and CPU backends for detector with support for new tag families

---

Copyright 2025 Sidney Trzepacz. All Rights Reserved.