Skip to content

Commit bc95406

Browse files
authored
Merge pull request #47 from NVIDIA-ISAAC-ROS/release-3.0
Isaac ROS 3.0.0
2 parents 5090e53 + 48eac16 commit bc95406

25 files changed

+302
-289
lines changed

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Isaac ROS AprilTag
22

3-
Hardware-accelerated AprilTag detection and pose estimation.
3+
NVIDIA-accelerated AprilTag detection and pose estimation.
44

55
<div align="center"><a class="reference internal image-reference" href="https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_apriltag/isaac_ros_apriltag_sample_crop.gif/"><img alt="image" src="https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_apriltag/isaac_ros_apriltag_sample_crop.gif/" width="550px"/></a></div>
66

@@ -53,10 +53,10 @@ This package is powered by [NVIDIA Isaac Transport for ROS (NITROS)](https://dev
5353

5454
## Performance
5555

56-
| Sample Graph<br/><br/> | Input Size<br/><br/> | AGX Orin<br/><br/> | Orin NX<br/><br/> | Orin Nano 8GB<br/><br/> | x86_64 w/ RTX 4060 Ti<br/><br/> |
57-
|---------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
58-
| [AprilTag Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/scripts/isaac_ros_apriltag_node.py)<br/><br/><br/><br/> | 720p<br/><br/><br/><br/> | [216 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-agx_orin.json)<br/><br/><br/>9.7 ms<br/><br/> | [106 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-orin_nx.json)<br/><br/><br/>14 ms<br/><br/> | [74.1 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-orin_nano.json)<br/><br/><br/>21 ms<br/><br/> | [473 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-nuc_4060ti.json)<br/><br/><br/>6.4 ms<br/><br/> |
59-
| [AprilTag Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/scripts/isaac_ros_apriltag_graph.py)<br/><br/><br/><br/> | 720p<br/><br/><br/><br/> | [213 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-agx_orin.json)<br/><br/><br/>14 ms<br/><br/> | [102 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-orin_nx.json)<br/><br/><br/>20 ms<br/><br/> | [71.0 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-orin_nano.json)<br/><br/><br/>26 ms<br/><br/> | [472 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-nuc_4060ti.json)<br/><br/><br/>9.5 ms<br/><br/> |
56+
| Sample Graph<br/><br/> | Input Size<br/><br/> | AGX Orin<br/><br/> | Orin NX<br/><br/> | Orin Nano 8GB<br/><br/> | x86_64 w/ RTX 4060 Ti<br/><br/> | x86_64 w/ RTX 4090<br/><br/> |
57+
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
58+
| [AprilTag Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_apriltag_benchmark/scripts/isaac_ros_apriltag_node.py)<br/><br/><br/><br/> | 720p<br/><br/><br/><br/> | [244 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-agx_orin.json)<br/><br/><br/>7.3 ms @ 30Hz<br/><br/> | [114 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-orin_nx.json)<br/><br/><br/>12 ms @ 30Hz<br/><br/> | [79.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-orin_nano.json)<br/><br/><br/>18 ms @ 30Hz<br/><br/> | [596 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-nuc_4060ti.json)<br/><br/><br/>2.4 ms @ 30Hz<br/><br/> | [596 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_node-x86_4090.json)<br/><br/><br/>2.1 ms @ 30Hz<br/><br/> |
59+
| [AprilTag Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_apriltag_benchmark/scripts/isaac_ros_apriltag_graph.py)<br/><br/><br/><br/> | 720p<br/><br/><br/><br/> | [241 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-agx_orin.json)<br/><br/><br/>9.5 ms @ 30Hz<br/><br/> | [109 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-orin_nx.json)<br/><br/><br/>15 ms @ 30Hz<br/><br/> | [74.3 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-orin_nano.json)<br/><br/><br/>21 ms @ 30Hz<br/><br/> | [596 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-nuc_4060ti.json)<br/><br/><br/>3.4 ms @ 30Hz<br/><br/> | [596 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_apriltag_graph-x86_4090.json)<br/><br/><br/>2.9 ms @ 30Hz<br/><br/> |
6060

6161
---
6262

@@ -76,4 +76,4 @@ Please visit the [Isaac ROS Documentation](https://nvidia-isaac-ros.github.io/re
7676

7777
## Latest
7878

79-
Update 2023-10-18: Improved throughput performance, exposed new tuning parameters.
79+
Update 2024-05-30: Update to be compatible with JetPack 6.0

gxf_isaac_fiducials/CMakeLists.txt

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2+
# Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
# SPDX-License-Identifier: Apache-2.0
17+
18+
cmake_minimum_required(VERSION 3.22.1)
19+
project(gxf_isaac_fiducials LANGUAGES C CXX)
20+
21+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
22+
add_compile_options(-fPIC -w)
23+
endif()
24+
25+
find_package(ament_cmake_auto REQUIRED)
26+
ament_auto_find_build_dependencies()
27+
28+
# Dependencies
29+
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
30+
find_package(isaac_ros_nitros_april_tag_detection_array_type REQUIRED)
31+
find_package(yaml-cpp)
32+
33+
# cuapriltags (resolve path from ament_index)
34+
ament_index_get_resource(CUAPRILTAGS_RELATIVE_PATH cuapriltags isaac_ros_nitros)
35+
ament_index_get_prefix_path(AMENT_INDEX_PREFIX_PATHS)
36+
foreach(PREFIX_PATH IN LISTS AMENT_INDEX_PREFIX_PATHS)
37+
if(EXISTS "${PREFIX_PATH}/${CUAPRILTAGS_RELATIVE_PATH}")
38+
set(CUAPRILTAGS "${PREFIX_PATH}/${CUAPRILTAGS_RELATIVE_PATH}")
39+
break()
40+
endif()
41+
endforeach()
42+
message( STATUS "Found cuapriltags at ${CUAPRILTAGS}")
43+
44+
add_library(cuapriltags STATIC IMPORTED)
45+
set_property(TARGET cuapriltags PROPERTY IMPORTED_LOCATION ${CUAPRILTAGS}/lib/libcuapriltags.a)
46+
47+
# Fiducials extension
48+
ament_auto_add_library(${PROJECT_NAME} SHARED
49+
gxf/extensions/fiducials/components/cuda_april_tag_detector.cpp
50+
gxf/extensions/fiducials/fiducials.cpp
51+
)
52+
target_include_directories(${PROJECT_NAME} PUBLIC
53+
"${CUAPRILTAGS}/cuapriltags"
54+
"${CMAKE_CURRENT_SOURCE_DIR}/gxf"
55+
"${isaac_ros_nitros_april_tag_detection_array_type_INCLUDE_DIRS}"
56+
)
57+
target_link_libraries(${PROJECT_NAME}
58+
Eigen3::Eigen
59+
${isaac_ros_nitros_april_tag_detection_array_type_LIBRARIES}
60+
cuapriltags
61+
yaml-cpp
62+
)
63+
64+
set_target_properties(${PROJECT_NAME} PROPERTIES
65+
BUILD_WITH_INSTALL_RPATH TRUE
66+
BUILD_RPATH_USE_ORIGIN TRUE
67+
INSTALL_RPATH_USE_LINK_PATH TRUE
68+
)
69+
70+
# Install the binary file
71+
install(TARGETS ${PROJECT_NAME} DESTINATION share/${PROJECT_NAME}/gxf/lib)
72+
73+
ament_auto_package(INSTALL_TO_SHARE)

isaac_ros_apriltag/gxf/fiducials/components/cuda_april_tag_detector.cpp renamed to gxf_isaac_fiducials/gxf/extensions/fiducials/components/cuda_april_tag_detector.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2-
// Copyright (c) 2021-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
// Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
55
// you may not use this file except in compliance with the License.
@@ -22,9 +22,9 @@
2222
#include <vector>
2323

2424
#include "cuAprilTags.h"
25-
#include "engine/core/image/image.hpp"
26-
#include "engine/gems/image/utils.hpp"
2725
#include "extensions/fiducials/messages/fiducial_message.hpp"
26+
#include "gems/core/image/image.hpp"
27+
#include "gems/image/utils.hpp"
2828
#include "gxf/multimedia/video.hpp"
2929
#include "gxf/std/timestamp.hpp"
3030

isaac_ros_apriltag/gxf/fiducials/include/extensions/fiducials/components/cuda_april_tag_detector.hpp renamed to gxf_isaac_fiducials/gxf/extensions/fiducials/components/cuda_april_tag_detector.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2-
// Copyright (c) 2021-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
// Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
55
// you may not use this file except in compliance with the License.

isaac_ros_apriltag/gxf/fiducials/fiducials.cpp renamed to gxf_isaac_fiducials/gxf/extensions/fiducials/fiducials.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2-
// Copyright (c) 2021-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
// Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
55
// you may not use this file except in compliance with the License.

gxf_isaac_fiducials/package.xml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0"?>
2+
3+
<!--
4+
SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5+
6+
Licensed under the Apache License, Version 2.0 (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
18+
SPDX-License-Identifier: Apache-2.0
19+
-->
20+
21+
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
22+
<package format="3">
23+
<name>gxf_isaac_fiducials</name>
24+
<version>3.0.0</version>
25+
<description>GXF extension containing components for working with fiducials.</description>
26+
27+
<maintainer email="[email protected]">Isaac ROS Maintainers</maintainer>
28+
<license>Apache-2.0</license>
29+
<url type="website">https://developer.nvidia.com/isaac-ros-gems/</url>
30+
<author>CY Chen</author>
31+
32+
<buildtool_depend>ament_cmake_auto</buildtool_depend>
33+
34+
<depend>isaac_ros_common</depend>
35+
<depend>isaac_ros_nitros</depend>
36+
<depend>isaac_ros_gxf</depend>
37+
<depend>isaac_ros_apriltag_interfaces</depend>
38+
<depend>isaac_ros_nitros_april_tag_detection_array_type</depend>
39+
40+
<build_depend>gxf_isaac_gems</build_depend>
41+
42+
<test_depend>ament_lint_auto</test_depend>
43+
<test_depend>ament_lint_common</test_depend>
44+
45+
<export>
46+
<build_type>ament_cmake</build_type>
47+
</export>
48+
</package>

isaac_ros_apriltag/CMakeLists.txt

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2-
# Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -28,31 +28,15 @@ ament_auto_find_build_dependencies()
2828
# Dependencies
2929
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
3030

31-
# cuapriltags (resolve path from ament_index)
32-
ament_index_get_resource(CUAPRILTAGS_RELATIVE_PATH cuapriltags isaac_ros_nitros)
33-
ament_index_get_prefix_path(AMENT_INDEX_PREFIX_PATHS)
34-
foreach(PREFIX_PATH IN LISTS AMENT_INDEX_PREFIX_PATHS)
35-
if(EXISTS "${PREFIX_PATH}/${CUAPRILTAGS_RELATIVE_PATH}")
36-
set(CUAPRILTAGS "${PREFIX_PATH}/${CUAPRILTAGS_RELATIVE_PATH}")
37-
break()
38-
endif()
39-
endforeach()
40-
41-
message( STATUS "Found cuapriltags at ${CUAPRILTAGS}")
42-
4331
# ApriltagNode
4432
ament_auto_add_library(apriltag_node SHARED src/apriltag_node.cpp)
4533
rclcpp_components_register_nodes(apriltag_node "nvidia::isaac_ros::apriltag::AprilTagNode")
4634
set(node_plugins "${node_plugins}nvidia::isaac_ros::apriltag::AprilTagNode;$<TARGET_FILE:apriltag_node>\n")
4735
target_link_libraries(apriltag_node Eigen3::Eigen)
48-
49-
### Install extensions built from source
50-
51-
# Fiducials
52-
add_subdirectory(gxf/fiducials)
53-
install(TARGETS gxf_fiducials DESTINATION share/${PROJECT_NAME}/gxf/lib/fiducials)
54-
55-
### End extensions
36+
set_target_properties(apriltag_node PROPERTIES
37+
BUILD_WITH_INSTALL_RPATH TRUE
38+
BUILD_RPATH_USE_ORIGIN TRUE
39+
INSTALL_RPATH_USE_LINK_PATH TRUE)
5640

5741
if(BUILD_TESTING)
5842
find_package(ament_lint_auto REQUIRED)
@@ -67,4 +51,4 @@ if(BUILD_TESTING)
6751
add_launch_test(test/isaac_ros_apriltag_pipeline_test.py)
6852
endif()
6953

70-
ament_auto_package(INSTALL_TO_SHARE config launch)
54+
ament_auto_package(INSTALL_TO_SHARE config launch rviz)

0 commit comments

Comments
 (0)