diff --git a/README.md b/README.md index 79c4415..bb2bcd8 100644 --- a/README.md +++ b/README.md @@ -46,15 +46,17 @@ The following are the benchmark performance results of the prepared pipelines in - [Updates](#updates) ## Latest Update -Update 2022-06-30: Removed frame_id, queue_size and tensor_output_order parameter. Added network_output_type parameter (support for sigmoid and argmax output layers). Switched implementation to use NITROS. Removed support for odd sized images. Switched tutorial to use PeopleSemSegNet ShuffleSeg and moved som details to other READMEs. +Update 2022-08-31: Update to be compatible with JetPack 5.0.2 ## Supported Platforms This package is designed and tested to be compatible with ROS2 Humble running on [Jetson](https://developer.nvidia.com/embedded-computing) or an x86_64 system with an NVIDIA GPU. +> **Note**: Versions of ROS2 earlier than Humble are **not** supported. This package depends on specific ROS2 implementation features that were only introduced beginning with the Humble release. + | Platform | Hardware | Software | Notes | | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Jetson | [Jetson Orin](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/)
[Jetson Xavier](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-agx-xavier/) | [JetPack 5.0.1 DP](https://developer.nvidia.com/embedded/jetpack) | For best performance, ensure that [power settings](https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/SD/PlatformPowerAndPerformance.html) are configured appropriately. | +| Jetson | [Jetson Orin](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-orin/)
[Jetson Xavier](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-agx-xavier/) | [JetPack 5.0.2](https://developer.nvidia.com/embedded/jetpack) | For best performance, ensure that [power settings](https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/SD/PlatformPowerAndPerformance.html) are configured appropriately. | | x86_64 | NVIDIA GPU | [Ubuntu 20.04+](https://releases.ubuntu.com/20.04/)
[CUDA 11.6.1+](https://developer.nvidia.com/cuda-downloads) | @@ -231,6 +233,7 @@ For solutions to problems with using DNN models, please check [here](https://git ## Updates | Date | Changes | | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 2022-08-31 | Update to be compatible with JetPack 5.0.2 | | 2022-06-30 | Removed frame_id, queue_size and tensor_output_order parameter. Added network_output_type parameter (support for sigmoid and argmax output layers). Switched implementation to use NITROS. Removed support for odd sized images. Switched tutorial to use PeopleSemSegNet ShuffleSeg and moved unnecessary details to other READMEs. | | 2021-11-15 | Isaac Sim HIL documentation update | | 2021-10-20 | Initial release | diff --git a/docs/tutorial-isaac-sim.md b/docs/tutorial-isaac-sim.md index 2e608e2..4dec8ee 100644 --- a/docs/tutorial-isaac-sim.md +++ b/docs/tutorial-isaac-sim.md @@ -1,5 +1,5 @@ # Tutorial with Isaac Sim -> **Note: Isaac Sim 2022.1.0 published on 6/3/2022 does not support ROS2 Humble. Please follow one of the [workarounds](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common/blob/main/docs/isaac-sim-sil-setup.md#isaac-sim-202210-workarounds) before continuing with the tutorial** + 1. Complete the [Quickstart section](../README.md#quickstart) in the main README till step 9. 2. Launch the Docker container using the `run_dev.sh` script: ```bash diff --git a/isaac_ros_unet/CMakeLists.txt b/isaac_ros_unet/CMakeLists.txt index 13c1e4c..8406eeb 100644 --- a/isaac_ros_unet/CMakeLists.txt +++ b/isaac_ros_unet/CMakeLists.txt @@ -68,7 +68,7 @@ if(BUILD_TESTING) ament_lint_auto_find_test_dependencies() find_package(launch_testing_ament_cmake REQUIRED) - add_launch_test(test/isaac_ros_unet_pol_test.py TIMEOUT "300") + add_launch_test(test/isaac_ros_unet_pol_test.py TIMEOUT "400") endif() ament_auto_package(INSTALL_TO_SHARE launch) diff --git a/isaac_ros_unet/package.xml b/isaac_ros_unet/package.xml index c0d21b9..a9a593e 100644 --- a/isaac_ros_unet/package.xml +++ b/isaac_ros_unet/package.xml @@ -13,7 +13,7 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. isaac_ros_unet - 0.9.0 + 0.11.0 U-Net model processing Hemal Shah @@ -28,6 +28,8 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. rclcpp_components isaac_ros_dnn_encoders isaac_ros_nitros + isaac_ros_nitros_image_type + isaac_ros_nitros_tensor_list_type ament_lint_auto ament_lint_common diff --git a/isaac_ros_unet/src/unet_decoder_node.cpp b/isaac_ros_unet/src/unet_decoder_node.cpp index c129db4..41a6d81 100644 --- a/isaac_ros_unet/src/unet_decoder_node.cpp +++ b/isaac_ros_unet/src/unet_decoder_node.cpp @@ -18,8 +18,8 @@ #include "rclcpp/rclcpp.hpp" #include "sensor_msgs/sensor_msgs/image_encodings.hpp" -#include "isaac_ros_nitros/types/nitros_image.hpp" -#include "isaac_ros_nitros/types/nitros_tensor_list.hpp" +#include "isaac_ros_nitros_image_type/nitros_image.hpp" +#include "isaac_ros_nitros_tensor_list_type/nitros_tensor_list.hpp" namespace nvidia { @@ -159,6 +159,9 @@ UNetDecoderNode::UNetDecoderNode(const rclcpp::NodeOptions options) throw std::invalid_argument("Received invalid network output type: " + network_output_type_); } + registerSupportedType(); + registerSupportedType(); + startNitrosNode(); } diff --git a/isaac_ros_unet/test/isaac_ros_unet_pol_test.py b/isaac_ros_unet/test/isaac_ros_unet_pol_test.py index 47ffdfd..f1b48f5 100644 --- a/isaac_ros_unet/test/isaac_ros_unet_pol_test.py +++ b/isaac_ros_unet/test/isaac_ros_unet_pol_test.py @@ -127,14 +127,25 @@ class IsaacROSUNetPipelineTest(IsaacROSBaseTest): @IsaacROSBaseTest.for_each_test_case() def test_image_segmentation(self, test_folder): + self.node._logger.info(f'Generating model (timeout={self.MODEL_GENERATION_TIMEOUT_SEC}s)') start_time = time.time() + ten_second_count = 1 while not os.path.isfile(self.MODEL_PATH): - if (time.time() - start_time) > self.MODEL_GENERATION_TIMEOUT_SEC: + time_diff = time.time() - start_time + if time_diff > self.MODEL_GENERATION_TIMEOUT_SEC: self.fail('Model generation timed out') + if time_diff > ten_second_count*10: + self.node._logger.info( + f'Waiting for model generation to finish... ({int(time_diff)}s passed)') + ten_second_count += 1 time.sleep(1) + # Wait for TensorRT engine time.sleep(self.INIT_WAIT_SEC) + self.node._logger.info( + f'Model generation was finished (took {(time.time() - start_time)}s)') + """Expect the node to segment an image.""" self.generate_namespace_lookup( ['image', 'unet/raw_segmentation_mask',