Skip to content

Commit e4385f0

Browse files
Merge pull request #52 from NVIDIA-ISAAC-ROS/release-3.2
Isaac ROS 3.2
2 parents 2b07136 + 41fa0ba commit e4385f0

File tree

64 files changed

+1447
-241
lines changed

Some content is hidden

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

64 files changed

+1447
-241
lines changed

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ This package is powered by [NVIDIA Isaac Transport for ROS (NITROS)](https://dev
4949

5050
## Performance
5151

52-
| 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/> |
53-
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
54-
| [Rectify Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_image_proc_benchmark/scripts/isaac_ros_rectify_node.py)<br/><br/><br/><br/> | 1080p<br/><br/><br/><br/> | [983 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-agx_orin.json)<br/><br/><br/>2.5 ms @ 30Hz<br/><br/> | [569 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-orin_nx.json)<br/><br/><br/>3.5 ms @ 30Hz<br/><br/> | [394 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-orin_nano.json)<br/><br/><br/>5.2 ms @ 30Hz<br/><br/> | [2500 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-nuc_4060ti.json)<br/><br/><br/>0.88 ms @ 30Hz<br/><br/> | [2500 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-x86_4090.json)<br/><br/><br/>0.66 ms @ 30Hz<br/><br/> |
55-
| [Stereo Disparity Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_stereo_image_proc_benchmark/scripts/isaac_ros_disparity_node.py)<br/><br/><br/><br/> | 1080p<br/><br/><br/><br/> | [168 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-agx_orin.json)<br/><br/><br/>7.5 ms @ 30Hz<br/><br/> | [75.4 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-orin_nx.json)<br/><br/><br/>15 ms @ 30Hz<br/><br/> | [51.5 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-orin_nano.json)<br/><br/><br/>22 ms @ 30Hz<br/><br/> | [350 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-nuc_4060ti.json)<br/><br/><br/>3.4 ms @ 30Hz<br/><br/> | [814 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-x86_4090.json)<br/><br/><br/>1.8 ms @ 30Hz<br/><br/> |
56-
| [Stereo Disparity Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_stereo_image_proc_benchmark/scripts/isaac_ros_disparity_graph.py)<br/><br/><br/><br/> | 1080p<br/><br/><br/><br/> | [157 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-agx_orin.json)<br/><br/><br/>12 ms @ 30Hz<br/><br/> | [72.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-orin_nx.json)<br/><br/><br/>20 ms @ 30Hz<br/><br/> | [49.6 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-orin_nano.json)<br/><br/><br/>28 ms @ 30Hz<br/><br/> | [349 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-nuc_4060ti.json)<br/><br/><br/>2.5 ms @ 30Hz<br/><br/> | [791 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-x86_4090.json)<br/><br/><br/>2.7 ms @ 30Hz<br/><br/> |
52+
| 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 4090<br/><br/> |
53+
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
54+
| [Rectify Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_image_proc_benchmark/scripts/isaac_ros_rectify_node.py)<br/><br/><br/><br/> | 1080p<br/><br/><br/><br/> | [1160 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-agx_orin.json)<br/><br/><br/>2.2 ms @ 30Hz<br/><br/> | [595 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-orin_nx.json)<br/><br/><br/>3.6 ms @ 30Hz<br/><br/> | [411 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-orin_nano.json)<br/><br/><br/>4.4 ms @ 30Hz<br/><br/> | [2500 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_rectify_node-x86-4090.json)<br/><br/><br/>0.70 ms @ 30Hz<br/><br/> |
55+
| [Stereo Disparity Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_stereo_image_proc_benchmark/scripts/isaac_ros_disparity_node.py)<br/><br/><br/><br/> | 1080p<br/><br/><br/><br/> | [117 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-agx_orin.json)<br/><br/><br/>11 ms @ 30Hz<br/><br/> | [78.4 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-orin_nx.json)<br/><br/><br/>14 ms @ 30Hz<br/><br/> | [53.5 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-orin_nano.json)<br/><br/><br/>21 ms @ 30Hz<br/><br/> | [978 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_node-x86-4090.json)<br/><br/><br/>1.6 ms @ 30Hz<br/><br/> |
56+
| [Stereo Disparity Graph](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_stereo_image_proc_benchmark/scripts/isaac_ros_disparity_graph.py)<br/><br/><br/><br/> | 1080p<br/><br/><br/><br/> | [111 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-agx_orin.json)<br/><br/><br/>15 ms @ 30Hz<br/><br/> | [72.2 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-orin_nx.json)<br/><br/><br/>19 ms @ 30Hz<br/><br/> | [49.7 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-orin_nano.json)<br/><br/><br/>26 ms @ 30Hz<br/><br/> | [695 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_disparity_graph-x86-4090.json)<br/><br/><br/>3.9 ms @ 30Hz<br/><br/> |
5757

5858
---
5959

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

7979
## Latest
8080

81-
Update 2024-09-26: Update for ZED compatibility
81+
Update 2024-12-10: Added new alpha blending node

isaac_ros_depth_image_proc/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,10 @@ if(BUILD_TESTING)
7070
add_launch_test(test/isaac_ros_depth_image_proc_convert_metric_pol.py)
7171
endif()
7272

73+
74+
# Embed versioning information into installed files
75+
ament_index_get_resource(ISAAC_ROS_COMMON_CMAKE_PATH isaac_ros_common_cmake_path isaac_ros_common)
76+
include("${ISAAC_ROS_COMMON_CMAKE_PATH}/isaac_ros_common-version-info.cmake")
77+
generate_version_info(${PROJECT_NAME})
78+
7379
ament_auto_package(INSTALL_TO_SHARE launch config)

isaac_ros_depth_image_proc/package.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ SPDX-License-Identifier: Apache-2.0
2121
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
2222
<package format="3">
2323
<name>isaac_ros_depth_image_proc</name>
24-
<version>3.1.0</version>
24+
<version>3.2.0</version>
2525
<description>Stereo and disparity processing</description>
2626

2727
<maintainer email="isaac-ros-maintainers@nvidia.com">Isaac ROS Maintainers</maintainer>
@@ -30,6 +30,7 @@ SPDX-License-Identifier: Apache-2.0
3030
<author>Ashwin Varghese Kuruttukulam</author>
3131

3232
<buildtool_depend>ament_cmake_auto</buildtool_depend>
33+
<build_depend>isaac_ros_common</build_depend>
3334

3435
<depend>rclcpp</depend>
3536
<depend>rclcpp_components</depend>

isaac_ros_depth_image_proc/src/convert_metric_node.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ ConvertMetricNode::ConvertMetricNode(const rclcpp::NodeOptions options)
5656
::nvidia::isaac_ros::nitros::NitrosImageView>>(
5757
this, "image_raw", ::nvidia::isaac_ros::nitros::nitros_image_mono16_t::supported_type_name,
5858
std::bind(&ConvertMetricNode::DepthCallback, this,
59-
std::placeholders::_1), nvidia::isaac_ros::nitros::NitrosStatisticsConfig{},
59+
std::placeholders::_1), nvidia::isaac_ros::nitros::NitrosDiagnosticsConfig{},
6060
input_qos_)},
6161
nitros_img_pub_{std::make_shared<
6262
nvidia::isaac_ros::nitros::ManagedNitrosPublisher<nvidia::isaac_ros::nitros::NitrosImage>>(
6363
this, "image",
6464
nvidia::isaac_ros::nitros::nitros_image_32FC1_t::supported_type_name,
65-
nvidia::isaac_ros::nitros::NitrosStatisticsConfig{}, output_qos_)}
65+
nvidia::isaac_ros::nitros::NitrosDiagnosticsConfig{}, output_qos_)}
6666
{
6767
CheckCudaErrors(cudaStreamCreate(&stream_), __FILE__, __LINE__);
6868
}

isaac_ros_gxf_extensions/gxf_isaac_depth_image_proc/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,10 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY COMPILE_OPTIONS ${target_options})
6363
# Install the binary file
6464
install(TARGETS ${PROJECT_NAME} DESTINATION share/${PROJECT_NAME}/gxf/lib)
6565

66+
67+
# Embed versioning information into installed files
68+
ament_index_get_resource(ISAAC_ROS_COMMON_CMAKE_PATH isaac_ros_common_cmake_path isaac_ros_common)
69+
include("${ISAAC_ROS_COMMON_CMAKE_PATH}/isaac_ros_common-version-info.cmake")
70+
generate_version_info(${PROJECT_NAME})
71+
6672
ament_auto_package(INSTALL_TO_SHARE)

isaac_ros_gxf_extensions/gxf_isaac_depth_image_proc/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ SPDX-License-Identifier: Apache-2.0
2121
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
2222
<package format="3">
2323
<name>gxf_isaac_depth_image_proc</name>
24-
<version>3.1.0</version>
24+
<version>3.2.0</version>
2525
<description>Depth Proc GXF extension</description>
2626

2727
<maintainer email="isaac-ros-maintainers@nvidia.com">Isaac ROS Maintainers</maintainer>

isaac_ros_gxf_extensions/gxf_isaac_image_flip/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,10 @@ set_property(TARGET ${PROJECT_NAME} PROPERTY COMPILE_OPTIONS ${target_options})
5353
# Install the binary file
5454
install(TARGETS ${PROJECT_NAME} DESTINATION share/${PROJECT_NAME}/gxf/lib)
5555

56+
57+
# Embed versioning information into installed files
58+
ament_index_get_resource(ISAAC_ROS_COMMON_CMAKE_PATH isaac_ros_common_cmake_path isaac_ros_common)
59+
include("${ISAAC_ROS_COMMON_CMAKE_PATH}/isaac_ros_common-version-info.cmake")
60+
generate_version_info(${PROJECT_NAME})
61+
5662
ament_auto_package(INSTALL_TO_SHARE)

isaac_ros_gxf_extensions/gxf_isaac_image_flip/gxf/image_flip.cpp

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717

1818
#include "image_flip.hpp"
1919

20+
#include <string>
21+
#include <unordered_map>
2022
#include <vector>
2123

2224
#include "gxf/multimedia/video.hpp"
2325
#include "gxf/std/timestamp.hpp"
2426

25-
namespace nvidia
26-
{
27-
namespace isaac_ros
28-
{
27+
namespace nvidia {
28+
namespace isaac_ros {
2929

3030
#define CHECK_VPI_STATUS(STMT) \
3131
do { \
@@ -35,7 +35,7 @@ namespace isaac_ros
3535
vpiGetLastStatusMessage(buffer, sizeof(buffer)); \
3636
std::ostringstream ss; \
3737
ss << __FILE__ << ":" << __LINE__ << ": " << vpiStatusGetName(status) << ": " << buffer; \
38-
GXF_LOG_ERROR(ss.str().c_str()); \
38+
GXF_LOG_ERROR("%s", ss.str().c_str()); \
3939
return GXF_FAILURE; \
4040
} \
4141
} while (0);
@@ -50,14 +50,12 @@ const std::unordered_map<std::string, uint32_t> kStrToVpiBackend({{"CPU", VPI_BA
5050
const std::unordered_map<std::string, VPIFlipMode> kStrToVpiFlipMode(
5151
{{"HORIZONTAL", VPI_FLIP_HORIZ}, {"VERTICAL", VPI_FLIP_VERT}, {"BOTH", VPI_FLIP_BOTH}});
5252

53-
struct VPIFormat
54-
{
53+
struct VPIFormat {
5554
VPIImageFormat image_format;
5655
std::vector<VPIPixelType> pixel_type;
5756
};
5857

59-
VPIFormat ToVpiFormat(VideoFormat value)
60-
{
58+
VPIFormat ToVpiFormat(VideoFormat value) {
6159
#pragma GCC diagnostic push
6260
#pragma GCC diagnostic ignored "-Wpedantic"
6361
switch (value) {
@@ -95,8 +93,7 @@ VPIFormat ToVpiFormat(VideoFormat value)
9593

9694
VPIStatus CreateVPIImageWrapper(
9795
VPIImage & vpi_image, VPIImageData & img_data, uint64_t flags,
98-
const nvidia::gxf::Handle<nvidia::gxf::VideoBuffer> & video_buff)
99-
{
96+
const nvidia::gxf::Handle<nvidia::gxf::VideoBuffer> & video_buff) {
10097
nvidia::gxf::VideoBufferInfo image_info = video_buff->video_frame_info();
10198
VPIFormat vpi_format = ToVpiFormat(image_info.color_format);
10299
img_data.bufferType = VPI_IMAGE_BUFFER_CUDA_PITCH_LINEAR;
@@ -117,8 +114,7 @@ VPIStatus CreateVPIImageWrapper(
117114

118115
VPIStatus UpdateVPIImageWrapper(
119116
VPIImage & image, VPIImageData & imageWrap,
120-
const nvidia::gxf::Handle<nvidia::gxf::VideoBuffer> & video_buff)
121-
{
117+
const nvidia::gxf::Handle<nvidia::gxf::VideoBuffer> & video_buff) {
122118
nvidia::gxf::VideoBufferInfo image_info = video_buff->video_frame_info();
123119
auto data_ptr_offset = 0;
124120
for (size_t i = 0; i < image_info.color_planes.size(); ++i) {
@@ -128,8 +124,7 @@ VPIStatus UpdateVPIImageWrapper(
128124
return vpiImageSetWrapper(image, &imageWrap);
129125
}
130126

131-
gxf_result_t ImageFlip::registerInterface(gxf::Registrar * registrar)
132-
{
127+
gxf_result_t ImageFlip::registerInterface(gxf::Registrar * registrar) {
133128
gxf::Expected<void> result;
134129

135130
result &= registrar->parameter(
@@ -157,8 +152,7 @@ gxf_result_t ImageFlip::registerInterface(gxf::Registrar * registrar)
157152
return gxf::ToResultCode(result);
158153
}
159154

160-
gxf_result_t ImageFlip::start()
161-
{
155+
gxf_result_t ImageFlip::start() {
162156
// Set and print out backend used
163157
auto backend_it = kStrToVpiBackend.find(vpi_backends_param_.get());
164158
if (backend_it != kStrToVpiBackend.end()) {
@@ -188,8 +182,7 @@ gxf_result_t ImageFlip::start()
188182
return GXF_SUCCESS;
189183
}
190184

191-
gxf_result_t ImageFlip::tick()
192-
{
185+
gxf_result_t ImageFlip::tick() {
193186
auto maybe_input_message = image_receiver_->receive();
194187
if (!maybe_input_message) {
195188
GXF_LOG_ERROR("Failed to receive image message");
@@ -291,8 +284,7 @@ gxf_result_t ImageFlip::tick()
291284
return GXF_SUCCESS;
292285
}
293286

294-
gxf_result_t ImageFlip::stop()
295-
{
287+
gxf_result_t ImageFlip::stop() {
296288
if (!vpi_stream_) {CHECK_VPI_STATUS(vpiStreamSync(vpi_stream_));}
297289
vpiStreamDestroy(vpi_stream_);
298290
vpiImageDestroy(input_);

isaac_ros_gxf_extensions/gxf_isaac_image_flip/gxf/image_flip.hpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
// limitations under the License.
1515
//
1616
// SPDX-License-Identifier: Apache-2.0
17+
1718
#ifndef NVIDIA_ISAAC_ROS_EXTENSIONS_IMAGE_FLIP_HPP_
1819
#define NVIDIA_ISAAC_ROS_EXTENSIONS_IMAGE_FLIP_HPP_
1920

@@ -29,25 +30,22 @@
2930
#include "gxf/std/receiver.hpp"
3031
#include "gxf/std/transmitter.hpp"
3132

32-
#include "vpi/VPI.h"
3333
#include "vpi/algo/ConvertImageFormat.h"
3434
#include "vpi/algo/ImageFlip.h"
35+
#include "vpi/VPI.h"
3536

36-
namespace nvidia
37-
{
38-
namespace isaac_ros
39-
{
37+
namespace nvidia {
38+
namespace isaac_ros {
4039
// GXF codelet that subscribes image using videobuffer,
4140
// then publishes a flipped image
42-
class ImageFlip : public gxf::Codelet
43-
{
44-
public:
41+
class ImageFlip : public gxf::Codelet {
42+
public:
4543
gxf_result_t start() override;
4644
gxf_result_t tick() override;
4745
gxf_result_t stop() override;
4846
gxf_result_t registerInterface(gxf::Registrar * registrar) override;
4947

50-
private:
48+
private:
5149
// The name of the input image
5250
gxf::Parameter<std::string> image_name_;
5351
// The name of the output video buffer

isaac_ros_gxf_extensions/gxf_isaac_image_flip/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ SPDX-License-Identifier: Apache-2.0
2121
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
2222
<package format="3">
2323
<name>gxf_isaac_image_flip</name>
24-
<version>3.1.0</version>
24+
<version>3.2.0</version>
2525
<description>Image Flip GXF extension.</description>
2626

2727
<maintainer email="isaac-ros-maintainers@nvidia.com">Isaac ROS Maintainers</maintainer>

0 commit comments

Comments
 (0)