Skip to content

Commit a743db8

Browse files
authored
Merge pull request #28 from NVIDIA-ISAAC-ROS/release-3.0
Isaac ROS 3.0.0
2 parents 5275d43 + d4a6cf4 commit a743db8

26 files changed

+164
-96
lines changed

README.md

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

3-
Hardware-accelerated Map localization.
3+
NVIDIA-accelerated Map localization.
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_map_localization/occupancy_grid_localizer.gif/"><img alt="image" src="https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/repositories_and_packages/isaac_ros_map_localization/occupancy_grid_localizer.gif/" width="600px"/></a></div>
66

@@ -69,9 +69,9 @@ This package is powered by [NVIDIA Isaac Transport for ROS (NITROS)](https://dev
6969

7070
## Performance
7171

72-
| 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/> |
73-
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
74-
| [Occupancy Grid Localizer Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/scripts/isaac_ros_grid_localizer_node.py)<br/><br/><br/><br/> | ~50 sq. m<br/><br/><br/><br/> | [15.9 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-agx_orin.json)<br/><br/><br/>64 ms<br/><br/> | [7.34 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-orin_nx.json)<br/><br/><br/>140 ms<br/><br/> | [5.17 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-orin_nano.json)<br/><br/><br/>200 ms<br/><br/> | [50.1 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-nuc_4060ti.json)<br/><br/><br/>20 ms<br/><br/> |
72+
| 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/> |
73+
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
74+
| [Occupancy Grid Localizer Node](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/benchmarks/isaac_ros_occupancy_grid_localizer_benchmark/scripts/isaac_ros_grid_localizer_node.py)<br/><br/><br/><br/> | ~50 sq. m<br/><br/><br/><br/> | [19.5 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-agx_orin.json)<br/><br/><br/>57 ms @ 30Hz<br/><br/> | [8.34 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-orin_nx.json)<br/><br/><br/>130 ms @ 30Hz<br/><br/> | [5.75 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-orin_nano.json)<br/><br/><br/>190 ms @ 30Hz<br/><br/> | [50.1 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-nuc_4060ti.json)<br/><br/><br/>21 ms @ 30Hz<br/><br/> | [50.1 fps](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_benchmark/blob/main/results/isaac_ros_grid_localizer_node-x86_4090.json)<br/><br/><br/>12 ms @ 30Hz<br/><br/> |
7575

7676
---
7777

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

9595
## Latest
9696

97-
Update 2023-10-18: Updated for Isaac ROS 2.0.0.
97+
Update 2024-05-30: Update to be compatible with JetPack 6.0

isaac_ros_occupancy_grid_localizer/CMakeLists.txt

Lines changed: 9 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.
@@ -33,13 +33,19 @@ ament_auto_add_library(occupancy_grid_localizer SHARED src/occupancy_grid_locali
3333
rclcpp_components_register_nodes(occupancy_grid_localizer "nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode")
3434
set(node_plugins "${node_plugins}nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode;\
3535
$<TARGET_FILE:occupancy_grid_localizer>\n")
36-
target_link_libraries(occupancy_grid_localizer Eigen3::Eigen)
36+
target_link_libraries(occupancy_grid_localizer
37+
Eigen3::Eigen
38+
)
39+
set_target_properties(occupancy_grid_localizer PROPERTIES
40+
BUILD_WITH_INSTALL_RPATH TRUE
41+
BUILD_RPATH_USE_ORIGIN TRUE
42+
INSTALL_RPATH_USE_LINK_PATH TRUE
43+
)
3744

3845
if(BUILD_TESTING)
3946
find_package(ament_lint_auto REQUIRED)
4047
ament_lint_auto_find_test_dependencies()
4148

42-
4349
# The FindPythonInterp and FindPythonLibs modules are removed
4450
if(POLICY CMP0148)
4551
cmake_policy(SET CMP0148 OLD)

isaac_ros_occupancy_grid_localizer/config/namespace_injector_rule.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@ body:
2828
path_parameter_keys: [atlas, occupancy_2d_map_provider]
2929
- type: nvidia::isaac::TensorCopier
3030
path_parameter_keys: [cuda_stream]
31+
- type: nvidia::isaac_ros::TensorCopier
32+
path_parameter_keys: [cuda_stream]

isaac_ros_occupancy_grid_localizer/config/occupancy_grid_localizer_node.yaml

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ name: localization_to_pose3d
8787
components:
8888
- name: rx_localization_result
8989
type: nvidia::gxf::DoubleBufferReceiver
90-
parameters:
91-
policy: 0
9290
- name: allocator
9391
type: nvidia::gxf::BlockMemoryPool
9492
parameters:
@@ -102,8 +100,6 @@ components:
102100
min_size: 1
103101
- name: tx_pose3d_cov
104102
type: nvidia::gxf::DoubleBufferTransmitter
105-
parameters:
106-
policy: 0
107103
- name: localization_to_pose3d
108104
type: nvidia::isaac::localization::LocalizationResultToPose3d
109105
parameters:
@@ -122,26 +118,20 @@ name: global_localization
122118
components:
123119
- name: rx_flatscan
124120
type: nvidia::gxf::DoubleBufferReceiver
125-
parameters:
126-
policy: 0
127121
- name: message_scheduling_term
128122
type: nvidia::gxf::MessageAvailableSchedulingTerm
129123
parameters:
130124
receiver: rx_flatscan
131125
min_size: 1
132126
- name: rx_reset_signal
133127
type: nvidia::gxf::DoubleBufferReceiver
134-
parameters:
135-
policy: 0
136128
- name: message_scheduling_term
137129
type: nvidia::gxf::MessageAvailableSchedulingTerm
138130
parameters:
139131
receiver: rx_reset_signal
140132
min_size: 1
141133
- name: tx_localization_result
142134
type: nvidia::gxf::DoubleBufferTransmitter
143-
parameters:
144-
policy: 0
145135
- name: grid_search_localizer
146136
type: nvidia::isaac::localization::GridSearchLocalizer
147137
parameters:
@@ -175,7 +165,6 @@ components:
175165
type: nvidia::gxf::DoubleBufferReceiver
176166
parameters:
177167
capacity: 1
178-
policy: 0
179168
- type: nvidia::gxf::MessageAvailableSchedulingTerm
180169
parameters:
181170
receiver: rx_flatscan
@@ -203,7 +192,6 @@ components:
203192
type: nvidia::gxf::DoubleBufferReceiver
204193
parameters:
205194
capacity: 1
206-
policy: 0
207195
- name: tx_flatscan
208196
type: nvidia::gxf::DoubleBufferTransmitter
209197
- type: nvidia::gxf::DownstreamReceptiveSchedulingTerm
@@ -221,7 +209,7 @@ components:
221209
block_size: 19200000
222210
num_blocks: 120
223211
- name: tensor_copier
224-
type: nvidia::isaac::TensorCopier
212+
type: nvidia::isaac_ros::TensorCopier
225213
parameters:
226214
receiver: rx_flatscan
227215
transmitter: tx_flatscan
@@ -241,7 +229,6 @@ components:
241229
type: nvidia::gxf::DoubleBufferReceiver
242230
parameters:
243231
capacity: 1
244-
policy: 0
245232
- type: nvidia::gxf::MessageAvailableSchedulingTerm
246233
parameters:
247234
receiver: signal
@@ -281,11 +268,11 @@ components:
281268
components:
282269
- name: clock
283270
type: nvidia::gxf::RealtimeClock
284-
- type: nvidia::gxf::GreedyScheduler
271+
- type: nvidia::gxf::EventBasedScheduler
285272
parameters:
286273
clock: clock
287274
stop_on_deadlock: false
288-
check_recession_period_us: 100
275+
worker_thread_number: 2
289276
- type: nvidia::gxf::JobStatistics
290277
parameters:
291278
clock: clock

isaac_ros_occupancy_grid_localizer/include/isaac_ros_occupancy_grid_localizer/occupancy_grid_localizer_node.hpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
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.
66
// You may obtain a copy of the License at
77
//
8-
// http://www.apache.org/licenses/LICENSE-2.0
8+
// http://www.apache.org/licenses/LICENSE-2.0
99
//
1010
// Unless required by applicable law or agreed to in writing, software
1111
// distributed under the License is distributed on an "AS IS" BASIS,
@@ -76,8 +76,6 @@ class OccupancyGridLocalizerNode : public nitros::NitrosNode
7676
void LocResultNitrosSubCallback(const gxf_context_t, nitros::NitrosTypeBase &);
7777

7878
private:
79-
std::optional<std::shared_ptr<isaac_ros_pointcloud_interfaces::msg::FlatScan>> last_flat_scan_;
80-
8179
rclcpp::Publisher<isaac_ros_pointcloud_interfaces::msg::FlatScan>::SharedPtr flat_scan_publisher_;
8280

8381
rclcpp::Subscription<isaac_ros_pointcloud_interfaces::msg::FlatScan>::SharedPtr
@@ -129,6 +127,9 @@ class OccupancyGridLocalizerNode : public nitros::NitrosNode
129127
unsigned int map_png_height_;
130128
std::shared_ptr<tf2_ros::TransformListener> tf_listener_;
131129
std::unique_ptr<tf2_ros::Buffer> tf_buffer_;
130+
131+
// If true will trigger the localization when the next flatscan is received.
132+
std::atomic<bool> trigger_localization_on_next_flatscan_ = false;
132133
};
133134

134135
} // namespace occupancy_grid_localizer

isaac_ros_occupancy_grid_localizer/launch/isaac_ros_occupancy_grid_localizer.launch.py

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_occupancy_grid_localizer/launch/isaac_ros_occupancy_grid_localizer_nav2.launch.py

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

isaac_ros_occupancy_grid_localizer/launch/isaac_ros_occupancy_grid_localizer_quickstart.launch.py

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_occupancy_grid_localizer/package.xml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22

33
<!--
4-
SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
4+
SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
55
66
Licensed under the Apache License, Version 2.0 (the "License");
77
you may not use this file except in compliance with the License.
@@ -21,10 +21,10 @@
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_occupancy_grid_localizer</name>
24-
<version>2.1.0</version>
24+
<version>3.0.0</version>
2525
<description>Occupancy Grid Global Localizer.</description>
2626

27-
<maintainer email="ashwinvk@nvidia.com">Ashwin Varghese Kuruttukulam</maintainer>
27+
<maintainer email="isaac-ros-maintainers@nvidia.com">Isaac ROS Maintainers</maintainer>
2828
<license>Apache-2.0</license>
2929
<url type="website">https://developer.nvidia.com/isaac-ros/</url>
3030
<author>Ashwin Varghese Kuruttukulam</author>
@@ -34,14 +34,22 @@
3434
<depend>rclcpp</depend>
3535
<depend>rclcpp_components</depend>
3636
<depend>tf2_ros</depend>
37-
<depend>isaac_ros_pointcloud_interfaces</depend>
3837
<depend>std_srvs</depend>
38+
<depend>isaac_ros_pointcloud_interfaces</depend>
39+
<depend>isaac_ros_gxf</depend>
3940
<depend>isaac_ros_nitros</depend>
4041
<depend>isaac_ros_nitros_pose_cov_stamped_type</depend>
4142
<depend>isaac_ros_nitros_flat_scan_type</depend>
4243
<depend>isaac_ros_pointcloud_utils</depend>
44+
<depend>gxf_isaac_utils</depend>
4345

4446
<build_depend>isaac_ros_common</build_depend>
47+
<build_depend>gxf_isaac_gems</build_depend>
48+
49+
<exec_depend>gxf_isaac_cuda</exec_depend>
50+
<exec_depend>gxf_isaac_flatscan_localization</exec_depend>
51+
<exec_depend>gxf_isaac_localization</exec_depend>
52+
<exec_depend>gxf_isaac_ros_cuda</exec_depend>
4553

4654
<test_depend>ament_lint_auto</test_depend>
4755
<test_depend>ament_lint_common</test_depend>

0 commit comments

Comments
 (0)