Skip to content

Commit

Permalink
Merge pull request #1 from NVIDIA-ISAAC-ROS/release-3.0
Browse files Browse the repository at this point in the history
Isaac ROS 3.0.0
  • Loading branch information
hemalshahNV authored May 31, 2024
2 parents 7b34f7c + 9d03b23 commit 6550128
Show file tree
Hide file tree
Showing 54 changed files with 3,241 additions and 3 deletions.
27 changes: 27 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Ignore Python files in linguist
*.py linguist-detectable=false

# Images
*.gif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text

# Archives
*.gz filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text

# Documents
*.pdf filter=lfs diff=lfs merge=lfs -text

# Shared libraries
*.so filter=lfs diff=lfs merge=lfs -text
*.so.* filter=lfs diff=lfs merge=lfs -text

# ROS Bags
**/resources/**/*.zstd filter=lfs diff=lfs merge=lfs -text
**/resources/**/*.db3 filter=lfs diff=lfs merge=lfs -text
**/resources/**/*.yaml filter=lfs diff=lfs merge=lfs -text
**/resources/**/*.bag filter=lfs diff=lfs merge=lfs -text

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Ignore all pycache files
**/__pycache__/**
14 changes: 14 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Isaac ROS Contribution Rules

Any contribution that you make to this repository will
be under the Apache 2 License, as dictated by that
[license](http://www.apache.org/licenses/LICENSE-2.0.html):

> **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.
Contributors must sign-off each commit by adding a `Signed-off-by: ...`
line to commit messages to certify that they have the right to submit
the code they are contributing to the project according to the
[Developer Certificate of Origin (DCO)](https://developercertificate.org/).

[//]: # (202201002)
3 changes: 2 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
Expand Down Expand Up @@ -198,4 +199,4 @@
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# isaac_ros_examples
Examples of using Isaac ROS GEMs together
# Isaac ROS Examples

This repository contains example launch files and scripts to support Isaac ROS package quickstarts.

Visit the [Isaac ROS Package Index](https://nvidia-isaac-ros.github.io/repositories_and_packages/index.html) for a list of packages that include quickstart examples.
25 changes: 25 additions & 0 deletions isaac_ros_examples/isaac_ros_examples/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
# Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0

from .isaac_ros_launch_fragment import IsaacROSLaunchFragment
from .isaac_ros_launch_fragment_spec import IsaacROSLaunchFragmentSpec, LAUNCH_FRAGMENT_SPECS

__all__ = [
'IsaacROSLaunchFragment',
'IsaacROSLaunchFragmentSpec',
'LAUNCH_FRAGMENT_SPECS'
]
77 changes: 77 additions & 0 deletions isaac_ros_examples/isaac_ros_examples/isaac_ros_launch_fragment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
# Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0

from typing import Any, Dict

from launch import Action
from launch_ros.descriptions import ComposableNode


class IsaacROSLaunchFragment():

@staticmethod
def get_interface_specs() -> Dict[str, Any]:
"""
Get the interface specifications for this fragment.
Interface specifications are a way to define key-value pairs that this fragment
makes available to other fragments in the launch graph. This is useful for communicating
values that must be known prior to launch time, such as camera resolutions, etc.
Returns
-------
Dict[str, Any]
The interface specifications for this fragment.
"""
return {}

@staticmethod
def get_composable_nodes(interface_specs: Dict[str, Any] = {}) -> Dict[str, ComposableNode]:
"""
Get the composable nodes for this fragment.
Parameters
----------
interface_specs : Dict[str, Any], optional
The accumulated interface specs from all fragments, by default {}
Returns
-------
Dict[str, ComposableNode]
The composable nodes for this fragment, labelled with unique names
"""
return {}

@staticmethod
def get_launch_actions(interface_specs: Dict[str, Any] = {}) -> Dict[str, Action]:
"""
Get the launch actions for this fragment.
Parameters
----------
interface_specs : Dict[str, Any], optional
The accumulated interface specs from all fragments, by default {}
Returns
-------
Dict[str, Action]
The launch actions for this fragment, labelled with unique names
"""
return {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
# SPDX-FileCopyrightText: NVIDIA CORPORATION & AFFILIATES
# Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0

from typing import Dict


class IsaacROSLaunchFragmentSpec:

def __init__(self, package, class_name, filename=''):
self.package = package
self.class_name = class_name
self.filename = filename if filename != '' else f'{package}_core.launch.py'


LAUNCH_FRAGMENT_SPECS: Dict[str, IsaacROSLaunchFragmentSpec] = {
################
# Data Sources #
################

# RealSense Camera
'realsense_mono': IsaacROSLaunchFragmentSpec(
'isaac_ros_realsense', 'IsaacROSRealSenseMonoLaunchFragment',
'isaac_ros_realsense_mono_core.launch.py'),
'realsense_mono_rect': IsaacROSLaunchFragmentSpec(
'isaac_ros_realsense', 'IsaacROSRealSenseMonoRectLaunchFragment',
'isaac_ros_realsense_mono_rect_core.launch.py'),
'realsense_stereo_rect': IsaacROSLaunchFragmentSpec(
'isaac_ros_realsense', 'IsaacROSRealSenseStereoRectLaunchFragment',
'isaac_ros_realsense_stereo_rect_core.launch.py'),
'realsense_stereo_rect_imu': IsaacROSLaunchFragmentSpec(
'isaac_ros_realsense', 'IsaacROSRealSenseStereoRectImuLaunchFragment',
'isaac_ros_realsense_stereo_rect_imu_core.launch.py'),
'realsense_mono_rect_depth': IsaacROSLaunchFragmentSpec(
'isaac_ros_realsense', 'IsaacROSRealSenseMonoRectDepthLaunchFragment',
'isaac_ros_realsense_mono_rect_depth_core.launch.py'),

# Argus Camera
'argus_mono': IsaacROSLaunchFragmentSpec(
'isaac_ros_argus_camera', 'IsaacROSArgusMonoLaunchFragment',
'isaac_ros_argus_camera_mono_core.launch.py'),
'argus_stereo': IsaacROSLaunchFragmentSpec(
'isaac_ros_argus_camera', 'IsaacROSArgusStereoLaunchFragment',
'isaac_ros_argus_camera_stereo_core.launch.py'),
'argus_depth': IsaacROSLaunchFragmentSpec(
'isaac_ros_argus_camera', 'IsaacROSArgusDepthLaunchFragment',
'isaac_ros_argus_camera_depth_core.launch.py'),

# USB Camera
'usb_cam': IsaacROSLaunchFragmentSpec(
'isaac_ros_usb_cam', 'IsaacROSUSBCameraLaunchFragment'),

###########################
# Preprocessing Utilities #
###########################

# Rectification
'rectify_mono': IsaacROSLaunchFragmentSpec(
'isaac_ros_image_proc', 'IsaacROSRectifyMonoLaunchFragment',
'isaac_ros_image_rectify_mono_core.launch.py'),
'rectify_stereo': IsaacROSLaunchFragmentSpec(
'isaac_ros_image_proc', 'IsaacROSRectifyStereoLaunchFragment',
'isaac_ros_image_rectify_stereo_core.launch.py'),

# Resize + Rectification
'resize_rectify_stereo': IsaacROSLaunchFragmentSpec(
'isaac_ros_image_proc', 'IsaacROSResizeRectifyStereoLaunchFragment',
'isaac_ros_image_resize_rectify_stereo_core.launch.py'),

# Isaac ROS Depth Proc
# Convert depth to metric
'convert_metric': IsaacROSLaunchFragmentSpec(
'isaac_ros_depth_image_proc', 'IsaacROSConvertMetricLaunchFragment',
'isaac_ros_depth_image_proc_convert_metric_core.launch.py'),
# Convert depth to pointcloud
'point_cloud_xyz': IsaacROSLaunchFragmentSpec(
'isaac_ros_depth_image_proc', 'IsaacROSPointCloudXyzLaunchFragment',
'isaac_ros_depth_image_proc_point_cloud_xyz_core.launch.py'),
# Convert depth to colorized pointcloud
'point_cloud_xyzrgb': IsaacROSLaunchFragmentSpec(
'isaac_ros_depth_image_proc', 'IsaacROSPointCloudXyzrgbLaunchFragment',
'isaac_ros_depth_image_proc_point_cloud_xyzrgb_core.launch.py'),

# Isaac ROS Stereo Image Proc
# SGM disparity estimation
'disparity': IsaacROSLaunchFragmentSpec(
'isaac_ros_stereo_image_proc', 'IsaacROSDisparityLaunchFragment',
'isaac_ros_stereo_image_proc_disparity_core.launch.py'),
# Convert disparity to colorized pointcloud
'point_cloud': IsaacROSLaunchFragmentSpec(
'isaac_ros_stereo_image_proc', 'IsaacROSPointCloudLaunchFragment',
'isaac_ros_stereo_image_proc_point_cloud_core.launch.py'),
# Convert disparity to depth
'disparity_to_depth': IsaacROSLaunchFragmentSpec(
'isaac_ros_stereo_image_proc', 'IsaacROSDisparityToDepthLaunchFragment',
'isaac_ros_stereo_image_proc_disparity_to_depth_core.launch.py'),

###############
# Core Graphs #
###############

# Isaac ROS AprilTag
'apriltag': IsaacROSLaunchFragmentSpec(
'isaac_ros_apriltag', 'IsaacROSAprilTagLaunchFragment'),

# Isaac ROS Compression
'stereo_h264_decoder': IsaacROSLaunchFragmentSpec(
'isaac_ros_h264_decoder', 'IsaacROSStereoH264DecoderLaunchFragment'),
'stereo_h264_encoder': IsaacROSLaunchFragmentSpec(
'isaac_ros_h264_encoder', 'IsaacROSStereoH264EncoderLaunchFragment'),

# Isaac ROS Depth Segmentation
'bi3d': IsaacROSLaunchFragmentSpec(
'isaac_ros_bi3d', 'IsaacROSBi3DLaunchFragment'),

# Isaac ROS DNN Stereo Depth
'ess_disparity': IsaacROSLaunchFragmentSpec(
'isaac_ros_ess', 'IsaacROSEssLaunchFragment'),

# Isaac ROS Freespace Segmentation
'bi3d_freespace': IsaacROSLaunchFragmentSpec(
'isaac_ros_bi3d_freespace', 'IsaacROSBi3DFreespaceLaunchFragment'),

# Isaac ROS Image Pipeline
'resize': IsaacROSLaunchFragmentSpec(
'isaac_ros_image_proc', 'IsaacROSResizeLaunchFragment',
'isaac_ros_image_resize_core.launch.py'),
'flip': IsaacROSLaunchFragmentSpec(
'isaac_ros_image_proc', 'IsaacROSFlipLaunchFragment',
'isaac_ros_image_flip_core.launch.py'),
'crop': IsaacROSLaunchFragmentSpec(
'isaac_ros_image_proc', 'IsaacROSCropLaunchFragment',
'isaac_ros_image_crop_core.launch.py'),
'color_conversion': IsaacROSLaunchFragmentSpec(
'isaac_ros_image_proc', 'IsaacROSColorConversionLaunchFragment',
'isaac_ros_image_color_conversion_core.launch.py'),

# Isaac ROS Image Segmentation
'segformer': IsaacROSLaunchFragmentSpec(
'isaac_ros_segformer', 'IsaacROSSegformerLaunchFragment'),
'segment_anything': IsaacROSLaunchFragmentSpec(
'isaac_ros_segment_anything', 'IsaacROSSegmentAnythingLaunchFragment'),
'unet': IsaacROSLaunchFragmentSpec(
'isaac_ros_unet', 'IsaacROSUNetLaunchFragment'),

# Isaac ROS Object Detection
'rtdetr': IsaacROSLaunchFragmentSpec(
'isaac_ros_rtdetr', 'IsaacROSRtDetrLaunchFragment'),
'detectnet': IsaacROSLaunchFragmentSpec(
'isaac_ros_detectnet', 'IsaacROSDetectnetLaunchFragment'),
'yolov8': IsaacROSLaunchFragmentSpec(
'isaac_ros_yolov8', 'IsaacROSYolov8LaunchFragment'),

# Isaac ROS Pose Estimation
'centerpose': IsaacROSLaunchFragmentSpec(
'isaac_ros_centerpose', 'IsaacROSCenterPoseLaunchFragment'),
'centerpose_visualizer': IsaacROSLaunchFragmentSpec(
'isaac_ros_centerpose', 'IsaacROSCenterPoseVisualizerLaunchFragment',
'isaac_ros_centerpose_visualizer_core.launch.py'),
'dope': IsaacROSLaunchFragmentSpec(
'isaac_ros_dope', 'IsaacROSDopeLaunchFragment'),
'foundationpose': IsaacROSLaunchFragmentSpec(
'isaac_ros_foundationpose', 'IsaacROSFoundationPoseLaunchFragment'),
'foundationpose_tracking': IsaacROSLaunchFragmentSpec(
'isaac_ros_foundationpose', 'IsaacROSFoundationPoseTrackingLaunchFragment',
'isaac_ros_foundationpose_tracking_core.launch.py'),

# Isaac ROS Visual Slam
'visual_slam': IsaacROSLaunchFragmentSpec(
'isaac_ros_visual_slam', 'IsaacROSVisualSlamLaunchFragment'),
}
Loading

0 comments on commit 6550128

Please sign in to comment.