Skip to content

Commit 19059d0

Browse files
Merge pull request #37 from NVIDIA-ISAAC-ROS/release-3.0
Isaac ROS 3.0.0
2 parents f842250 + 7862b58 commit 19059d0

File tree

147 files changed

+60462
-425
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+60462
-425
lines changed

README.md

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,41 @@
11
# Isaac ROS Pose Estimation
22

3-
Deep learned, hardware-accelerated 3D object pose estimation
3+
Deep learned, NVIDIA-accelerated 3D object 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_pose_estimation/dope_objects.png/"><img alt="image" src="https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_pose_estimation/dope_objects.png/" width="400px"/></a></div>
66

77
## Overview
88

99
[Isaac ROS Pose Estimation](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation)
1010
contains ROS 2 packages to predict the pose of an object.
11+
`isaac_ros_foundationpose` estimates the object’s pose using the 3D
12+
bounding cuboid dimensions of unknown object from an input image.
1113
`isaac_ros_dope` estimates the object’s pose using the 3D
1214
bounding cuboid dimensions of a known object in an input image.
1315
`isaac_ros_centerpose` estimates the object’s pose using the 3D
1416
bounding cuboid dimensions of unknown object instances in a known
15-
category of objects from an input image. `isaac_ros_dope` and
16-
`isaac_ros_centerpose` use GPU acceleration for DNN inference to
17+
category of objects from an input image.
18+
Those packages use GPU acceleration for DNN inference to
1719
estimate the pose of an object. The output prediction can be used by
1820
perception functions when fusing with the corresponding depth to provide
1921
the 3D pose of an object and distance for navigation or manipulation.
2022

2123
<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_pose_estimation/isaac_ros_pose_estimation_nodegraph.png/"><img alt="image" src="https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_pose_estimation_nodegraph.png/" width="500px"/></a></div>
2224

25+
`isaac_ros_foundationpose` is used in a graph of nodes to estimate the pose of
26+
a novel object using 3D bounding cuboid dimensions. It’s developed on top of
27+
[FoundationPose](https://github.com/NVlabs/FoundationPose) model, which is
28+
a pre-trained deep learning model developed by NVLabs. FoundationPose
29+
is capable for both pose estimation and tracking on unseen objects without requiring fine-tuning,
30+
and its accuracy outperforms existing state-of-art methods.
31+
32+
FoundationPose comprises two distinct models: the refine model and the score model.
33+
The refine model processes initial pose hypotheses, iteratively refining them, then
34+
passes these refined hypotheses to the score model, which selects and finalizes the pose estimation.
35+
Additionally, the refine model can serve for tracking, that updates the pose estimation based on
36+
new image inputs and the previous frame’s pose estimate. This tracking process is more efficient
37+
compared to pose estimation, which speeds exceeding 120 FPS on the Jetson Orin platform.
38+
2339
`isaac_ros_dope` is used in a graph of nodes to estimate the pose of a
2440
known object with 3D bounding cuboid dimensions. To produce the
2541
estimate, a [DOPE](https://github.com/NVlabs/Deep_Object_Pose) (Deep
@@ -65,10 +81,11 @@ which can also be found at [Isaac ROS DNN Inference](https://github.com/NVIDIA-I
6581

6682
## Performance
6783

68-
| 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/> |
69-
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
70-
| [DOPE Pose Estimation Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/scripts/isaac_ros_dope_graph.py)<br/><br/><br/><br/> | VGA<br/><br/><br/><br/> | [39.8 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_dope_graph-agx_orin.json)<br/><br/><br/>33 ms<br/><br/> | [17.3 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_dope_graph-orin_nx.json)<br/><br/><br/>120 ms<br/><br/> | –<br/><br/><br/><br/> | [89.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_dope_graph-nuc_4060ti.json)<br/><br/><br/>15 ms<br/><br/> |
71-
| [Centerpose Pose Estimation Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/scripts/isaac_ros_centerpose_graph.py)<br/><br/><br/><br/> | VGA<br/><br/><br/><br/> | [36.1 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-agx_orin.json)<br/><br/><br/>5.7 ms<br/><br/> | [19.4 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-orin_nx.json)<br/><br/><br/>7.4 ms<br/><br/> | [13.8 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-orin_nano.json)<br/><br/><br/>12 ms<br/><br/> | [50.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-nuc_4060ti.json)<br/><br/><br/>14 ms<br/><br/> |
84+
| 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/> |
85+
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
86+
| [FoundationPose Pose Estimation Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_foundationpose_benchmark/scripts/isaac_ros_foundationpose_node.py)<br/><br/><br/><br/> | 720p<br/><br/><br/><br/> | [1.72 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_foundationpose_node-agx_orin.json)<br/><br/><br/>690 ms @ 30Hz<br/><br/> | –<br/><br/><br/><br/> | –<br/><br/><br/><br/> | –<br/><br/><br/><br/> | [7.02 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_foundationpose_node-x86_4090.json)<br/><br/><br/>170 ms @ 30Hz<br/><br/> |
87+
| [DOPE Pose Estimation Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_dope_benchmark/scripts/isaac_ros_dope_graph.py)<br/><br/><br/><br/> | VGA<br/><br/><br/><br/> | [41.3 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_dope_graph-agx_orin.json)<br/><br/><br/>42 ms @ 30Hz<br/><br/> | [17.5 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_dope_graph-orin_nx.json)<br/><br/><br/>76 ms @ 30Hz<br/><br/> | –<br/><br/><br/><br/> | [85.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_dope_graph-nuc_4060ti.json)<br/><br/><br/>24 ms @ 30Hz<br/><br/> | [199 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_dope_graph-x86_4090.json)<br/><br/><br/>14 ms @ 30Hz<br/><br/> |
88+
| [Centerpose Pose Estimation Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_centerpose_benchmark/scripts/isaac_ros_centerpose_graph.py)<br/><br/><br/><br/> | VGA<br/><br/><br/><br/> | [36.3 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-agx_orin.json)<br/><br/><br/>4.8 ms @ 30Hz<br/><br/> | [19.7 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-orin_nx.json)<br/><br/><br/>4.9 ms @ 30Hz<br/><br/> | [13.8 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-orin_nano.json)<br/><br/><br/>7.4 ms @ 30Hz<br/><br/> | [50.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-nuc_4060ti.json)<br/><br/><br/>23 ms @ 30Hz<br/><br/> | [50.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_centerpose_graph-x86_4090.json)<br/><br/><br/>20 ms @ 30Hz<br/><br/> |
7289

7390
---
7491

@@ -82,7 +99,6 @@ Please visit the [Isaac ROS Documentation](https://nvidia-isaac-ros.github.io/re
8299

83100
* [`isaac_ros_centerpose`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_centerpose/index.html)
84101
* [Quickstart](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_centerpose/index.html#quickstart)
85-
* [Use Different Models](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_centerpose/index.html#use-different-models)
86102
* [Troubleshooting](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_centerpose/index.html#troubleshooting)
87103
* [API](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_centerpose/index.html#api)
88104
* [`isaac_ros_dope`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_dope/index.html)
@@ -91,7 +107,12 @@ Please visit the [Isaac ROS Documentation](https://nvidia-isaac-ros.github.io/re
91107
* [Use Different Models](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_dope/index.html#use-different-models)
92108
* [Troubleshooting](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_dope/index.html#troubleshooting)
93109
* [API](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_dope/index.html#api)
110+
* [`isaac_ros_foundationpose`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_foundationpose/index.html)
111+
* [Quickstart](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_foundationpose/index.html#quickstart)
112+
* [Try More Examples](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_foundationpose/index.html#try-more-examples)
113+
* [Troubleshooting](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_foundationpose/index.html#troubleshooting)
114+
* [API](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_pose_estimation/isaac_ros_foundationpose/index.html#api)
94115

95116
## Latest
96117

97-
Update 2023-10-18: Adding NITROS CenterPose decoder.
118+
Update 2024-05-30: Added FoundationPose pose estimation package

isaac_ros_centerpose/CMakeLists.txt

Lines changed: 11 additions & 8 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.
@@ -29,19 +29,22 @@ ament_auto_find_build_dependencies()
2929
ament_auto_add_library(centerpose_decoder_node SHARED src/centerpose_decoder_node.cpp)
3030
rclcpp_components_register_nodes(centerpose_decoder_node "nvidia::isaac_ros::centerpose::CenterPoseDecoderNode")
3131
set(node_plugins "${node_plugins}nvidia::isaac_ros::centerpose::CenterPoseDecoderNode;$<TARGET_FILE:centerpose_decoder_node>\n")
32+
set_target_properties(centerpose_decoder_node PROPERTIES
33+
BUILD_WITH_INSTALL_RPATH TRUE
34+
BUILD_RPATH_USE_ORIGIN TRUE
35+
INSTALL_RPATH_USE_LINK_PATH TRUE
36+
)
3237

3338
# Visualizer node
3439
ament_auto_add_library(centerpose_visualizer_node SHARED src/centerpose_visualizer_node.cpp)
3540
rclcpp_components_register_nodes(centerpose_visualizer_node "nvidia::isaac_ros::centerpose::CenterPoseVisualizerNode")
3641
set(node_plugins "${node_plugins}nvidia::isaac_ros::centerpose::CenterPoseVisualizerNode;$<TARGET_FILE:centerpose_visualizer_node>\n")
42+
set_target_properties(centerpose_visualizer_node PROPERTIES
43+
BUILD_WITH_INSTALL_RPATH TRUE
44+
BUILD_RPATH_USE_ORIGIN TRUE
45+
INSTALL_RPATH_USE_LINK_PATH TRUE
46+
)
3747

38-
### Install extensions built from source
39-
40-
# CenterPose
41-
add_subdirectory(gxf/centerpose)
42-
install(TARGETS gxf_centerpose DESTINATION share/${PROJECT_NAME}/gxf/lib/centerpose)
43-
44-
### End extensions
4548
if(BUILD_TESTING)
4649
find_package(ament_lint_auto REQUIRED)
4750
ament_lint_auto_find_test_dependencies()

isaac_ros_centerpose/config/centerpose_node.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,14 @@ components:
2222
type: nvidia::gxf::DoubleBufferReceiver
2323
parameters:
2424
capacity: 12
25-
policy: 0
2625
- name: camera_model_input
2726
type: nvidia::gxf::DoubleBufferReceiver
2827
parameters:
2928
capacity: 12
30-
policy: 0
3129
- name: output
3230
type: nvidia::gxf::DoubleBufferTransmitter
3331
parameters:
3432
capacity: 12
35-
policy: 0
3633
- name: allocator
3734
type: nvidia::gxf::UnboundedAllocator
3835
- name: centerpose_decoder
@@ -64,12 +61,10 @@ components:
6461
type: nvidia::gxf::DoubleBufferReceiver
6562
parameters:
6663
capacity: 12
67-
policy: 0
6864
- name: output
6965
type: nvidia::gxf::DoubleBufferTransmitter
7066
parameters:
7167
capacity: 12
72-
policy: 0
7368
- name: centerpose_decoder_to_isaac
7469
type: nvidia::isaac::centerpose::CenterPoseDetectionToIsaac
7570
parameters:
@@ -91,7 +86,6 @@ components:
9186
type: nvidia::gxf::DoubleBufferReceiver
9287
parameters:
9388
capacity: 2
94-
policy: 0
9589
- type: nvidia::gxf::MessageAvailableSchedulingTerm
9690
parameters:
9791
receiver: signal

isaac_ros_centerpose/config/centerpose_visualizer_node.yaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,18 @@ components:
2222
type: nvidia::gxf::DoubleBufferReceiver
2323
parameters:
2424
capacity: 12
25-
policy: 0
2625
- name: detections_input
2726
type: nvidia::gxf::DoubleBufferReceiver
2827
parameters:
2928
capacity: 12
30-
policy: 0
3129
- name: camera_model_input
3230
type: nvidia::gxf::DoubleBufferReceiver
3331
parameters:
3432
capacity: 12
35-
policy: 0
3633
- name: output
3734
type: nvidia::gxf::DoubleBufferTransmitter
3835
parameters:
3936
capacity: 12
40-
policy: 0
4137
- name: allocator
4238
type: nvidia::gxf::UnboundedAllocator
4339
- name: centerpose_visualizer
@@ -73,7 +69,6 @@ components:
7369
type: nvidia::gxf::DoubleBufferReceiver
7470
parameters:
7571
capacity: 2
76-
policy: 0
7772
- type: nvidia::gxf::MessageAvailableSchedulingTerm
7873
parameters:
7974
receiver: signal

isaac_ros_centerpose/gxf/centerpose/CMakeLists.txt

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)