Skip to content

Commit caf9d45

Browse files
Merge pull request #1 from NVIDIA-ISAAC-ROS/release-dp3
Isaac ROS 0.30.0 (DP3)
2 parents 06175e9 + ee6e257 commit caf9d45

Some content is hidden

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

45 files changed

+3968
-3
lines changed

.gitattributes

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Ignore Python files in linguist
2+
*.py linguist-detectable=false
3+
4+
# Images
5+
*.gif filter=lfs diff=lfs merge=lfs -text
6+
*.jpg filter=lfs diff=lfs merge=lfs -text
7+
*.png filter=lfs diff=lfs merge=lfs -text
8+
*.psd filter=lfs diff=lfs merge=lfs -text
9+
10+
# Archives
11+
*.gz filter=lfs diff=lfs merge=lfs -text
12+
*.tar filter=lfs diff=lfs merge=lfs -text
13+
*.zip filter=lfs diff=lfs merge=lfs -text
14+
15+
# Documents
16+
*.pdf filter=lfs diff=lfs merge=lfs -text
17+
18+
# Shared libraries
19+
*.so filter=lfs diff=lfs merge=lfs -text
20+
*.so.* filter=lfs diff=lfs merge=lfs -text
21+
22+
# ROS Bags
23+
**/resources/**/*.zstd filter=lfs diff=lfs merge=lfs -text
24+
**/data/**/*.db3 filter=lfs diff=lfs merge=lfs -text
25+
**/data/**/*.yaml filter=lfs diff=lfs merge=lfs -text

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Ignore all pycache files
2+
**/__pycache__/**

CONTRIBUTING.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Isaac ROS Contribution Rules
2+
3+
Any contribution that you make to this repository will
4+
be under the Apache 2 License, as dictated by that
5+
[license](http://www.apache.org/licenses/LICENSE-2.0.html):
6+
7+
> **5. Submission of Contributions.** Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
8+
9+
Contributors must sign-off each commit by adding a `Signed-off-by: ...`
10+
line to commit messages to certify that they have the right to submit
11+
the code they are contributing to the project according to the
12+
[Developer Certificate of Origin (DCO)](https://developercertificate.org/).
13+
14+
[//]: # (202201002)

LICENSE

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
Apache License
23
Version 2.0, January 2004
34
http://www.apache.org/licenses/
@@ -198,4 +199,4 @@
198199
distributed under the License is distributed on an "AS IS" BASIS,
199200
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200201
See the License for the specific language governing permissions and
201-
limitations under the License.
202+
limitations under the License.

README.md

Lines changed: 365 additions & 2 deletions
Large diffs are not rendered by default.

docs/isaac-sim-nav2-tutorial.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Isaac ROS Occupancy Grid Localizer Nav2 Isaac Sim Tutorial
2+
3+
<div align="center"><img alt="Isaac ROS Occupancy Grid Localizer Expected Output" src="../resources/nav2_isaac_sim.png" width="600px"/></div>
4+
5+
## Overview
6+
7+
This tutorial describes how to integrate the Isaac ROS Occupancy Grid Localizer with a simulated robot running in Isaac Sim with Nav2.
8+
9+
Last validated with [Isaac Sim 2022.1.0](https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/release_notes.html#id10).
10+
11+
## Tutorial Walkthrough
12+
13+
1. Complete the [Quickstart section](../README.md#quickstart) in the main README.
14+
2. Launch the Docker container using the `run_dev.sh` script:
15+
16+
```bash
17+
cd ~/workspaces/isaac_ros-dev/src/isaac_ros_common && \
18+
./scripts/run_dev.sh
19+
```
20+
21+
3. Inside the container, build and source the workspace:
22+
23+
```bash
24+
cd /workspaces/isaac_ros-dev && \
25+
colcon build --symlink-install && \
26+
source install/setup.bash
27+
```
28+
29+
4. Install and launch Isaac Sim following the steps in the [Isaac ROS Isaac Sim Setup Guide](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common/blob/main/docs/isaac-sim-sil-setup.md)
30+
5. Open up the Isaac ROS Common USD scene (using the *Content* tab) located at:
31+
32+
```text
33+
http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/2022.2.1/Isaac/Samples/ROS2/Scenario/carter_warehouse_apriltags_worker.usd
34+
```
35+
And wait for it to load completely.
36+
6. Press **Play** to start publishing data from the Isaac Sim application.
37+
38+
7. Run the launch file and you should see a nav2 window pop up.
39+
40+
```bash
41+
ros2 launch isaac_ros_occupancy_grid_localizer isaac_ros_occupancy_grid_localizer_nav2.launch.py
42+
```
43+
44+
8. Open a new terminal using the `run_dev.sh` script:
45+
46+
```bash
47+
cd ~/workspaces/isaac_ros-dev/src/isaac_ros_common && \
48+
./scripts/run_dev.sh
49+
```
50+
51+
9. Trigger the localization service using the command line interface:
52+
53+
```bash
54+
ros2 service call /trigger_grid_search_localization std_srvs/srv/Empty {}
55+
```
56+
57+
10. You should see the laser scan in rviz. This happens when the transform between map and carter_lidar frame is available. The robot is now localized. You can give a position setpoint using the `2D Nav Goal` button as shown below. You can relocalize again at any point by running the `ros2 service call` command above.
58+
59+
<div align="center"><img alt="Isaac ROS Occupancy Grid Localizer Expected Output" src="../resources/nav2_isaac_sim.gif" width="600px"/></div>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
2+
# Copyright (c) 2023 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.23.2)
19+
project(isaac_ros_occupancy_grid_localizer LANGUAGES C CXX)
20+
21+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
22+
add_compile_options(-Wall -Wextra -Wpedantic)
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+
31+
# OccupancyGridLocalizerNode
32+
ament_auto_add_library(occupancy_grid_localizer SHARED src/occupancy_grid_localizer_node.cpp)
33+
rclcpp_components_register_nodes(occupancy_grid_localizer "nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode")
34+
set(node_plugins "${node_plugins}nvidia::isaac_ros::occupancy_grid_localizer::OccupancyGridLocalizerNode;\
35+
$<TARGET_FILE:occupancy_grid_localizer>\n")
36+
target_link_libraries(occupancy_grid_localizer Eigen3::Eigen)
37+
38+
if(BUILD_TESTING)
39+
find_package(ament_lint_auto REQUIRED)
40+
ament_lint_auto_find_test_dependencies()
41+
42+
find_package(launch_testing_ament_cmake REQUIRED)
43+
add_launch_test(test/isaac_ros_occupancy_grid_localizer_pol_test.py)
44+
endif()
45+
46+
ament_auto_package(INSTALL_TO_SHARE config launch maps params rviz)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
%YAML 1.2
2+
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
3+
# Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
# SPDX-License-Identifier: Apache-2.0
18+
---
19+
name: OccupancyGridLocalizer Node Namespace Injector Rule
20+
operation: namespace_injector
21+
body:
22+
components:
23+
- type: nvidia::isaac::AtlasFrontend
24+
path_parameter_keys: [occupancy_grid_map]
25+
- type: nvidia::isaac::localization::Occupancy2DMapProvider
26+
path_parameter_keys: [atlas]
27+
- type: nvidia::isaac::localization::GridSearchLocalizer
28+
path_parameter_keys: [atlas, occupancy_2d_map_provider]
29+
- type: nvidia::isaac::TensorCopier
30+
path_parameter_keys: [cuda_stream]

0 commit comments

Comments
 (0)