Skip to content

Commit 9d91389

Browse files
authored
Merge pull request #42 from NVIDIA-ISAAC-ROS/release-3.0
Isaac ROS 3.0.0
2 parents da49a97 + db1bfdc commit 9d91389

File tree

742 files changed

+21432
-3807
lines changed

Some content is hidden

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

742 files changed

+21432
-3807
lines changed

README.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,28 @@ NVIDIA Isaac Transport for ROS package for hardware-acceleration friendly moveme
99
[Isaac ROS NITROS](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nitros) contains NVIDIA’s implementation
1010
of type adaptation and negotiation in ROS 2. To learn more about NITROS, see [here](https://nvidia-isaac-ros.github.io/concepts/nitros/index.html).
1111

12+
Isaac ROS NITROS is composed of a number of individual packages, each with either a functional or structural purpose:
13+
14+
`isaac_ros_gxf`:
15+
: This package serves as a container for precompiled GXF extensions used by other Isaac ROS packages.
16+
While a number of GXF extensions used by Isaac ROS are provided with source, the extensions contained in `isaac_ros_gxf` are license constrained and are thus shipped as `.so` binaries.
17+
18+
`isaac_ros_managed_nitros`:
19+
: This package contains the wrapper classes that enable developers to add NITROS-compatible publishers and subscribers to third-party CUDA-based ROS nodes.
20+
For more information about CUDA with NITROS, see [here](https://nvidia-isaac-ros.github.io/concepts/nitros/cuda_with_nitros.html).
21+
22+
`isaac_ros_nitros`:
23+
: This package contains the base `NitrosNode` class and associated core utilities that serve as the foundation for all NITROS-based ROS nodes.
24+
25+
`isaac_ros_nitros_interfaces`:
26+
: This package contains the definitions of the custom ROS 2 interfaces that facilitate type negotiation between NITROS nodes.
27+
28+
`isaac_ros_nitros_topic_tools`:
29+
: This folder contains a NITROS based implementation of some of the nodes in the [topic_tools package](https://github.com/ros-tooling/topic_tools).
30+
31+
`isaac_ros_nitros_type`:
32+
: This folder contains a number of packages, each defining a specific NITROS type and the associated type adaptation logic to convert to and from a standard ROS type.
33+
1234
---
1335

1436
## Documentation
@@ -24,8 +46,10 @@ Please visit the [Isaac ROS Documentation](https://nvidia-isaac-ros.github.io/re
2446
* [`isaac_ros_nitros`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_nitros/isaac_ros_nitros/index.html)
2547
* [Quickstart](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_nitros/isaac_ros_nitros/index.html#quickstart)
2648
* [`isaac_ros_nitros_interfaces`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_nitros/isaac_ros_nitros_interfaces/index.html)
49+
* [`isaac_ros_nitros_topic_tools`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_nitros/isaac_ros_nitros_topic_tools/index.html)
50+
* [NitrosCameraDrop Node](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_nitros/isaac_ros_nitros_topic_tools/index.html#nitroscameradrop-node)
2751
* [`isaac_ros_nitros_type`](https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_nitros/isaac_ros_nitros_type/index.html)
2852

2953
## Latest
3054

31-
Update 2023-10-18: Introducing CUDA with NITROS.
55+
Update 2024-05-30: Add support for NITROS message filters

isaac_ros_gxf/CMakeLists.txt

Lines changed: 75 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2-
# Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# Copyright (c) 2022-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.
@@ -31,26 +31,91 @@ install(
3131
DIRECTORY gxf/core/include/
3232
DESTINATION share/${PROJECT_NAME}/gxf/include/
3333
)
34-
# GXF ext headers
35-
install(
36-
DIRECTORY gxf/ext/include/
37-
DESTINATION share/${PROJECT_NAME}/gxf/include/
38-
)
3934

4035
# Install extensions directory
4136
if( ${ARCHITECTURE} STREQUAL "x86_64" )
42-
install(DIRECTORY gxf/core/lib/gxf_x86_64_cuda_11_8/ DESTINATION share/${PROJECT_NAME}/gxf/lib)
43-
install(DIRECTORY gxf/ext/lib/gxf_x86_64_cuda_11_8/ DESTINATION share/${PROJECT_NAME}/gxf/lib)
37+
install(DIRECTORY gxf/core/lib/gxf_x86_64_cuda_12_2/ DESTINATION share/${PROJECT_NAME}/gxf/lib)
38+
install(FILES gxf/core/lib/gxf_x86_64_cuda_12_2/core/libgxf_core.so DESTINATION lib)
39+
install(FILES gxf/core/lib/gxf_x86_64_cuda_12_2/logger/libgxf_logger.so DESTINATION lib)
40+
install(FILES gxf/core/lib/gxf_x86_64_cuda_12_2/multimedia/libgxf_multimedia.so DESTINATION lib)
41+
install(FILES gxf/core/lib/gxf_x86_64_cuda_12_2/cuda/libgxf_cuda.so DESTINATION lib)
4442
elseif( ${ARCHITECTURE} STREQUAL "aarch64" )
45-
install(DIRECTORY gxf/core/lib/gxf_jetpack51/ DESTINATION share/${PROJECT_NAME}/gxf/lib)
46-
install(DIRECTORY gxf/ext/lib/gxf_jetpack51/ DESTINATION share/${PROJECT_NAME}/gxf/lib)
43+
install(DIRECTORY gxf/core/lib/gxf_jetpack60/ DESTINATION share/${PROJECT_NAME}/gxf/lib)
44+
install(FILES gxf/core/lib/gxf_jetpack60/core/libgxf_core.so DESTINATION lib)
45+
install(FILES gxf/core/lib/gxf_jetpack60/logger/libgxf_logger.so DESTINATION lib)
46+
install(FILES gxf/core/lib/gxf_jetpack60/multimedia/libgxf_multimedia.so DESTINATION lib)
47+
install(FILES gxf/core/lib/gxf_jetpack60/cuda/libgxf_cuda.so DESTINATION lib)
4748
endif()
4849

4950
# Register cmake in install.
5051
ament_index_register_resource(isaac_ros_gxf_cmake_path CONTENT
5152
"${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/cmake")
5253
list(APPEND ${PROJECT_NAME}_CONFIG_EXTRAS cmake/isaac_ros_gxf-extras.cmake)
5354

55+
# Core
56+
add_library(Core INTERFACE)
57+
set_target_properties(Core PROPERTIES
58+
INTERFACE_INCLUDE_DIRECTORIES
59+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/include"
60+
)
61+
set_property(TARGET Core PROPERTY
62+
INTERFACE_LINK_LIBRARIES
63+
magic_enum::magic_enum
64+
"$<INSTALL_PREFIX>/lib/libgxf_core.so"
65+
)
66+
67+
# Logger
68+
add_library(Logger INTERFACE)
69+
set_target_properties(Logger PROPERTIES
70+
INTERFACE_LINK_LIBRARIES
71+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/lib/logger/libgxf_logger.so"
72+
INTERFACE_INCLUDE_DIRECTORIES
73+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/include"
74+
)
75+
76+
# Std
77+
add_library(Std INTERFACE)
78+
set_target_properties(Std PROPERTIES
79+
INTERFACE_LINK_LIBRARIES
80+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/lib/std/libgxf_std.so"
81+
INTERFACE_INCLUDE_DIRECTORIES
82+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/include"
83+
)
84+
85+
# Multimedia
86+
add_library(Multimedia INTERFACE)
87+
set_target_properties(Multimedia PROPERTIES
88+
INTERFACE_LINK_LIBRARIES
89+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/lib/multimedia/libgxf_multimedia.so"
90+
INTERFACE_INCLUDE_DIRECTORIES
91+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/include"
92+
)
93+
94+
# Serialization
95+
add_library(Serialization INTERFACE)
96+
set_target_properties(Serialization PROPERTIES
97+
INTERFACE_LINK_LIBRARIES
98+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/lib/serialization/libgxf_serialization.so"
99+
INTERFACE_INCLUDE_DIRECTORIES
100+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/include"
101+
)
102+
103+
# Cuda
104+
add_library(Cuda INTERFACE)
105+
set_target_properties(Cuda PROPERTIES
106+
INTERFACE_LINK_LIBRARIES
107+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/lib/cuda/libgxf_cuda.so"
108+
INTERFACE_INCLUDE_DIRECTORIES
109+
"$<INSTALL_PREFIX>/share/${PROJECT_NAME}/gxf/include"
110+
)
111+
112+
install(TARGETS Core Logger Std Multimedia Serialization Cuda
113+
EXPORT export_${PROJECT_NAME}
114+
LIBRARY DESTINATION lib
115+
ARCHIVE DESTINATION lib
116+
RUNTIME DESTINATION bin)
117+
ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
118+
54119
if(BUILD_TESTING)
55120
find_package(ament_lint_auto REQUIRED)
56121

isaac_ros_gxf/cmake/isaac_ros_gxf-extras.cmake

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) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# Copyright (c) 2023-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_gxf/cmake/modules/FindGXF.cmake

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2-
# Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# Copyright (c) 2022-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.
@@ -31,13 +31,8 @@
3131

3232
# Library names
3333
list(APPEND _GXF_EXTENSIONS
34-
atlas
3534
cuda
36-
isaac_messages
37-
isaac_ros_messages
38-
message_compositor
3935
multimedia
40-
gxf_optimizer
4136
serialization
4237
std
4338
)

isaac_ros_gxf/gxf/core/include/common/assert.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_gxf/gxf/core/include/common/backtrace.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) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
// Copyright (c) 2022-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_gxf/gxf/core/include/common/byte.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_gxf/gxf/core/include/common/endian.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_gxf/gxf/core/include/common/expected.hpp

Lines changed: 8 additions & 7 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.
@@ -86,7 +86,7 @@ using ResultType = decltype(Declval<F>()(Declval<Es>().value()...));
8686
template <class F, class... Es>
8787
using ErrorResultType = UnexpectedType<decltype(Declval<F>()(Declval<Es>().error()...))>;
8888

89-
// Empty stuct for representing an object with only one possible value (itself). This can be used
89+
// Empty struct for representing an object with only one possible value (itself). This can be used
9090
// for speciallizing on void types where void would not compile because it is not a valid type.
9191
// NOTE: GCC9 has a bug where it cannot evaluate the destructor of an empty struct, so put a dummy
9292
// byte in to pass the compiler warnings. All empty structs are always considered non-zero in size
@@ -336,7 +336,8 @@ class ExpectedBase {
336336
}
337337
template <class... Args>
338338
constexpr Derived&& log_error(Args&&... args) && {
339-
// GCC is not able to do format security validation when the string is coming from a variadic template, even if the string is originally a char*
339+
// GCC is not able to do format security validation when the string is coming from a
340+
// variadic template, even if the string is originally a char*
340341
// ignore this warning until a more recent GCC version fixes this behavior
341342
#pragma GCC diagnostic push
342343
#pragma GCC diagnostic ignored "-Wformat-security"
@@ -553,7 +554,7 @@ class ExpectedBase {
553554
static_assert(IsSame_v<U, RemoveCVRef_t<ValueType<Derived>>>,
554555
"received pointer-to-member that is not of type T.");
555556
// NOTE: there is a subtle distinction here. If we want to get access to a member variable
556-
// from an rvalue context, we MUST make a copy, since we cannot guarrantee the reference will
557+
// from an rvalue context, we MUST make a copy, since we cannot guarantee the reference will
557558
// still be valid after destruction of the temporary.
558559
auto func = [&](ValueType<Derived>&& a) { return a.*ptr; };
559560
return has_value() ? FunctorMap(func, std::move(*derived())) : unexpected();
@@ -700,20 +701,20 @@ class ExpectedBase {
700701
return std::move(*ValuePointer<Unexpected<E>>(buffer_));
701702
}
702703

703-
// Returns a pointer to the dervied type for accessing value result in supported specializations.
704+
// Returns a pointer to the derived type for accessing value result in supported specializations.
704705
constexpr const Derived* derived() const { return static_cast<const Derived*>(this); }
705706
constexpr Derived* derived() { return static_cast<Derived*>(this); }
706707

707708
///-----------------------------------------------------------------------------------------------
708709
/// Construction Helpers
709710
///-----------------------------------------------------------------------------------------------
710-
// Constuct a new object in allocated buffer.
711+
// Construct a new object in allocated buffer.
711712
template <class U, class G, class D>
712713
constexpr void constructFrom(const ExpectedBase<U, G, D>& other) {
713714
other.has_value() ? constructValueFrom(other) : constructErrorFrom(other);
714715
}
715716

716-
// Move constuct a new object in allocated buffer.
717+
// Move construct a new object in allocated buffer.
717718
template <class U, class G, class D>
718719
constexpr void constructFrom(ExpectedBase<U, G, D>&& other) {
719720
other.has_value() ? constructValueFrom(std::move(other)) : constructErrorFrom(std::move(other));

isaac_ros_gxf/gxf/core/include/common/fixed_map.hpp

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) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
// Copyright (c) 2023-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.
@@ -39,7 +39,7 @@ class FixedMap {
3939
template <typename TContainer>
4040
using ConstIterator = Iterator<const TContainer, const typename TContainer::value_type>;
4141

42-
// Use STL naming convension for compatibility with STL algorithms
42+
// Use STL naming convention for compatibility with STL algorithms
4343
using key_type = Key;
4444
using mapped_type = T;
4545
using value_type = std::pair<const key_type, mapped_type>;
@@ -363,7 +363,7 @@ class FixedMap {
363363
return kSuccess;
364364
}
365365

366-
// Assings an the value to the given key if it exists, else creates a new object
366+
// Assigns an the value to the given key if it exists, else creates a new object
367367
template <typename... Args>
368368
Expected<void> insert_or_assign(Args&&... args) {
369369
value_type value(std::forward<Args>(args)...);

0 commit comments

Comments
 (0)