Giter Site home page Giter Site logo

nvidia-isaac-ros / isaac_ros_apriltag Goto Github PK

View Code? Open in Web Editor NEW
104.0 4.0 19.0 1.22 MB

NVIDIA-accelerated Apriltag detection and pose estimation.

Home Page: https://developer.nvidia.com/isaac-ros-gems

License: Apache License 2.0

CMake 15.68% C++ 84.32%
apriltag ros ros2-humble fiducial-marker nvidia ros2 gpu jetson

isaac_ros_apriltag's Introduction

Isaac ROS AprilTag

NVIDIA-accelerated AprilTag detection and pose estimation.

image

Overview

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.

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 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

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 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

Isaac ROS NITROS Acceleration

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.

Performance

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


Documentation

Please visit the Isaac ROS Documentation to learn how to use this repository.


Packages

Latest

Update 2024-05-30: Update to be compatible with JetPack 6.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.