1+ """
2+ Performance test for qrb_ros_transport image
3+
4+ Required:
5+ - Packages:
6+ - qrb_ros_transport
7+ - Datasets:
8+ - /data/ros2_ws/qrb_ros_benchmark_data
9+ """
10+
11+ from launch_ros .actions import ComposableNodeContainer
12+ from launch_ros .descriptions import ComposableNode
13+
14+ from ros2_benchmark import ImageResolution
15+ from ros2_benchmark import ROS2BenchmarkConfig , ROS2BenchmarkTest
16+
17+ IMAGE_RESOLUTION = ImageResolution .HD
18+ ROSBAG_PATH = 'resize_data'
19+
20+ def launch_setup (container_prefix , container_sigterm_timeout ):
21+ """Generate launch description for benchmarking XXX."""
22+
23+ data_loader_node = ComposableNode (
24+ name = 'DataLoaderNode' ,
25+ namespace = TestResizeNode .generate_namespace (),
26+ package = 'ros2_benchmark' ,
27+ plugin = 'ros2_benchmark::DataLoaderNode' ,
28+ remappings = [('image_raw' , '/data_loader_image' )]
29+ )
30+
31+ playback_node = ComposableNode (
32+ name = 'QrbPlaybackNode' ,
33+ namespace = TestResizeNode .generate_namespace (),
34+ package = 'qrb_ros_benchmark' ,
35+ plugin = 'qrb_ros::benchmark::QrbPlaybackNode' ,
36+ parameters = [{
37+ 'data_formats' : [
38+ 'qrb_ros/transport/type/Image'
39+ ],
40+ }],
41+ remappings = [
42+ ('buffer/input0' , '/data_loader_image' ),
43+ ('input0' , '/playback_image' )
44+ ]
45+ )
46+
47+ resize_node = ComposableNode (
48+ name = 'resize_1' ,
49+ namespace = TestResizeNode .generate_namespace (),
50+ package = 'qrb_ros_image_resize' ,
51+ plugin = 'qrb_ros::resize::ResizeNode' ,
52+ parameters = [{
53+ 'calculate_enable' :True ,
54+ 'use_scale' : False ,
55+ 'height' : 400 ,
56+ 'width' : 400 ,
57+ #'use_scale': True,
58+ #'height_scale': 0.25,
59+ #'width_scale': 0.25,
60+ }],
61+ remappings = [
62+ ('image_raw' , '/playback_image' ),
63+ ('image_resize' , '/image_resize' )
64+ ]
65+ )
66+
67+ monitor_node = ComposableNode (
68+ name = 'QrbMonitorNode' ,
69+ namespace = TestResizeNode .generate_namespace (),
70+ package = 'qrb_ros_benchmark' ,
71+ plugin = 'qrb_ros::benchmark::QrbMonitorNode' ,
72+ parameters = [{
73+ 'monitor_data_format' : 'qrb_ros/transport/type/Image' ,
74+ }],
75+ remappings = [
76+ ('output' , '/image_resize' )
77+ ]
78+ )
79+
80+ composable_node_container = ComposableNodeContainer (
81+ name = 'container' ,
82+ namespace = TestResizeNode .generate_namespace (),
83+ package = 'rclcpp_components' ,
84+ executable = 'component_container_mt' ,
85+ prefix = container_prefix ,
86+ sigterm_timeout = container_sigterm_timeout ,
87+ composable_node_descriptions = [
88+ data_loader_node ,
89+ playback_node ,
90+ resize_node ,
91+ monitor_node ,
92+ ],
93+ output = 'screen'
94+ )
95+
96+ return [composable_node_container ]
97+
98+ def generate_test_description ():
99+ return TestResizeNode .generate_test_description_with_nsys (launch_setup )
100+
101+ class TestResizeNode (ROS2BenchmarkTest ):
102+ """Performance test for XXX - qrb_ros/transport/type/Image."""
103+
104+ # Custom configurations
105+ config = ROS2BenchmarkConfig (
106+ benchmark_name = 'qrb_ros_transport image test Node Benchmark' ,
107+ assets_root = '/data/ros2_ws/' ,
108+ input_data_path = ROSBAG_PATH ,
109+ # Upper and lower bounds of peak throughput search window
110+ publisher_upper_frequency = 500.0 ,
111+ publisher_lower_frequency = 10.0 ,
112+ # The number of frames to be buffered
113+ playback_message_buffer_size = 20 ,
114+ )
115+
116+ def test_benchmark (self ):
117+ self .run_benchmark ()
0 commit comments