3939import shutil
4040import time
4141
42- from ament_index_python .packages import get_package_share_directory
4342from isaac_ros_benchmark import TRTConverter
44- from launch .actions import IncludeLaunchDescription
45- from launch .launch_description_sources import PythonLaunchDescriptionSource
4643from launch_ros .actions import ComposableNodeContainer
4744from launch_ros .descriptions import ComposableNode
4845
@@ -72,7 +69,7 @@ def launch_setup(container_prefix, container_sigterm_timeout):
7269 'model_repository_paths' : [ENGINE_ROOT ],
7370 'max_batch_size' : 0 ,
7471 'input_tensor_names' : ['input_tensor' ],
75- 'input_binding_names' : ['input_2:0 ' ],
72+ 'input_binding_names' : ['input_2' ],
7673 'input_tensor_formats' : ['nitros_tensor_list_nchw_rgb_f32' ],
7774 'output_tensor_names' : ['output' ],
7875 'output_binding_names' : ['argmax_1' ],
@@ -90,27 +87,82 @@ def launch_setup(container_prefix, container_sigterm_timeout):
9087 ('hawk_0_left_rgb_camera_info' , 'data_loader/camera_info' )]
9188 )
9289
93- encoder_dir = get_package_share_directory ('isaac_ros_dnn_image_encoder' )
94- encoder_node_launch = IncludeLaunchDescription (
95- PythonLaunchDescriptionSource (
96- [os .path .join (encoder_dir , 'launch' , 'dnn_image_encoder.launch.py' )]
97- ),
98- launch_arguments = {
99- 'input_image_width' : str (IMAGE_RESOLUTION ['width' ]),
100- 'input_image_height' : str (IMAGE_RESOLUTION ['height' ]),
101- 'network_image_width' : str (NETWORK_RESOLUTION ['width' ]),
102- 'network_image_height' : str (NETWORK_RESOLUTION ['height' ]),
103- 'image_mean' : str ([0.5 , 0.5 , 0.5 ]),
104- 'image_stddev' : str ([0.5 , 0.5 , 0.5 ]),
105- 'encoding_desired' : 'rgb8' ,
106- 'image_input_topic' : 'data_loader/image' ,
107- 'camera_info_input_topic' : 'data_loader/camera_info' ,
108- 'tensor_output_topic' : 'buffer/input' ,
109- 'attach_to_shared_component_container' : 'True' ,
110- 'component_container_name' :
111- f'{ TestIsaacROSTritonNode .generate_namespace ()} /triton_container' ,
112- 'dnn_image_encoder_namespace' : TestIsaacROSTritonNode .generate_namespace (),
113- }.items (),
90+ resize_node = ComposableNode (
91+ name = 'ResizeNode' ,
92+ namespace = TestIsaacROSTritonNode .generate_namespace (),
93+ package = 'isaac_ros_image_proc' ,
94+ plugin = 'nvidia::isaac_ros::image_proc::ResizeNode' ,
95+ parameters = [{
96+ 'input_width' : IMAGE_RESOLUTION ['width' ],
97+ 'input_height' : IMAGE_RESOLUTION ['height' ],
98+ 'output_width' : NETWORK_RESOLUTION ['width' ],
99+ 'output_height' : NETWORK_RESOLUTION ['height' ],
100+ 'keep_aspect_ratio' : True ,
101+ 'encoding_desired' : 'rgb8'
102+ }],
103+ remappings = [
104+ ('image' , 'data_loader/image' ),
105+ ('camera_info' , 'data_loader/camera_info' )
106+ ]
107+ )
108+
109+ image_format_converter_node = ComposableNode (
110+ name = 'ImageFormatConverter' ,
111+ namespace = TestIsaacROSTritonNode .generate_namespace (),
112+ package = 'isaac_ros_image_proc' ,
113+ plugin = 'nvidia::isaac_ros::image_proc::ImageFormatConverterNode' ,
114+ parameters = [{
115+ 'encoding_desired' : 'rgb8' ,
116+ 'image_width' : NETWORK_RESOLUTION ['width' ],
117+ 'image_height' : NETWORK_RESOLUTION ['height' ]
118+ }],
119+ remappings = [
120+ ('image_raw' , 'resize/image' ),
121+ ('image' , 'image_rgb' )]
122+ )
123+
124+ image_to_tensor_node = ComposableNode (
125+ name = 'ImageToTensorNode' ,
126+ namespace = TestIsaacROSTritonNode .generate_namespace (),
127+ package = 'isaac_ros_tensor_proc' ,
128+ plugin = 'nvidia::isaac_ros::dnn_inference::ImageToTensorNode' ,
129+ parameters = [{
130+ 'scale' : False ,
131+ 'tensor_name' : 'image' ,
132+ }],
133+ remappings = [
134+ ('image' , 'image_rgb' )
135+ ]
136+ )
137+
138+ normalize_node = ComposableNode (
139+ name = 'NormalizeNode' ,
140+ namespace = TestIsaacROSTritonNode .generate_namespace (),
141+ package = 'isaac_ros_tensor_proc' ,
142+ plugin = 'nvidia::isaac_ros::dnn_inference::ImageTensorNormalizeNode' ,
143+ parameters = [{
144+ 'mean' : [0.5 , 0.5 , 0.5 ],
145+ 'stddev' : [0.5 , 0.5 , 0.5 ],
146+ 'input_tensor_name' : 'image' ,
147+ 'output_tensor_name' : 'image'
148+ }]
149+ )
150+
151+ reshape_node = ComposableNode (
152+ name = 'ReshapeNode' ,
153+ namespace = TestIsaacROSTritonNode .generate_namespace (),
154+ package = 'isaac_ros_tensor_proc' ,
155+ plugin = 'nvidia::isaac_ros::dnn_inference::ReshapeNode' ,
156+ parameters = [{
157+ 'output_tensor_name' : 'input_tensor' ,
158+ 'input_tensor_shape' : [NETWORK_RESOLUTION ['height' ], NETWORK_RESOLUTION ['width' ], 3 ],
159+ 'output_tensor_shape' : [
160+ 1 , NETWORK_RESOLUTION ['height' ], NETWORK_RESOLUTION ['width' ], 3 ]
161+ }],
162+ remappings = [
163+ ('tensor' , 'normalized_tensor' ),
164+ ('reshaped_tensor' , 'buffer/input' )
165+ ],
114166 )
115167
116168 playback_node = ComposableNode (
@@ -147,14 +199,16 @@ def launch_setup(container_prefix, container_sigterm_timeout):
147199 sigterm_timeout = container_sigterm_timeout ,
148200 composable_node_descriptions = [
149201 data_loader_node ,
202+ resize_node , image_format_converter_node ,
203+ image_to_tensor_node , normalize_node , reshape_node ,
150204 playback_node ,
151- monitor_node ,
152- triton_node
205+ triton_node ,
206+ monitor_node
153207 ],
154208 output = 'screen'
155209 )
156210
157- return [composable_node_container , encoder_node_launch ]
211+ return [composable_node_container ]
158212
159213
160214def generate_test_description ():
@@ -171,9 +225,9 @@ def generate_test_description():
171225 f'--onnx={ MODELS_ROOT } /{ MODEL_NAME } /peoplesemsegnet_shuffleseg.onnx' ,
172226 f'--saveEngine={ ENGINE_FILE_PATH } ' ,
173227 '--fp16' ,
174- '--minShapes=input_2:0:1x3x544x960 ' ,
175- '--optShapes=input_2:0:1x3x544x960 ' ,
176- '--maxShapes=input_2:0:16x3x544x960 ' ,
228+ '--minShapes=input_2:1x544x960x3 ' ,
229+ '--optShapes=input_2:1x544x960x3 ' ,
230+ '--maxShapes=input_2:16x544x960x3 ' ,
177231 '--skipInference' ,
178232 ]
179233 TRTConverter ()(trtexec_args )
0 commit comments