77import cv2
88from baseline_racer import BaselineRacer
99
10+
1011class BaselineRacerImageBenchmarker (BaselineRacer ):
11- def __init__ (self ,
12- img_benchmark_type = 'simGetImage' ,
13- drone_name = "drone_1" ,
14- viz_traj = False ,
15- viz_traj_color_rgba = [1.0 , 1.0 , 0.0 , 1.0 ],
16- viz_image_cv2 = False ):
17- super ().__init__ (drone_name = drone_name , viz_traj = viz_traj , viz_image_cv2 = viz_image_cv2 )
12+ def __init__ (
13+ self ,
14+ img_benchmark_type = "simGetImage" ,
15+ drone_name = "drone_1" ,
16+ viz_traj = False ,
17+ viz_traj_color_rgba = [1.0 , 1.0 , 0.0 , 1.0 ],
18+ viz_image_cv2 = False ,
19+ ):
20+ super ().__init__ (
21+ drone_name = drone_name , viz_traj = viz_traj , viz_image_cv2 = viz_image_cv2
22+ )
1823
1924 self .image_benchmark_num_images = 0
2025 self .image_benchmark_total_time = 0.0
2126 self .image_callback_thread = None
2227 if img_benchmark_type == "simGetImage" :
23- self .image_callback_thread = threading .Thread (target = self .repeat_timer_img , args = (self .image_callback_benchmark_simGetImage , 0.05 ))
28+ self .image_callback_thread = threading .Thread (
29+ target = self .repeat_timer_img ,
30+ args = (self .image_callback_benchmark_simGetImage , 0.05 ),
31+ )
2432 if img_benchmark_type == "simGetImages" :
25- self .image_callback_thread = threading .Thread (target = self .repeat_timer_img , args = (self .image_callback_benchmark_simGetImages , 0.05 ))
33+ self .image_callback_thread = threading .Thread (
34+ target = self .repeat_timer_img ,
35+ args = (self .image_callback_benchmark_simGetImages , 0.05 ),
36+ )
2637 self .is_image_thread_active = False
2738
2839 def start_img_benchmark_thread (self ):
@@ -43,45 +54,73 @@ def repeat_timer_img(self, task, period):
4354 time .sleep (period )
4455
4556 def print_benchmark_results (self ):
46- avg_fps = 1.0 / ((self .image_benchmark_total_time ) / float (self .image_benchmark_num_images ))
47- print (self .level_name + ": {} avg_fps for {} num of images" .format (avg_fps , self .image_benchmark_num_images ))
57+ avg_fps = 1.0 / (
58+ (self .image_benchmark_total_time ) / float (self .image_benchmark_num_images )
59+ )
60+ print (
61+ self .level_name
62+ + ": {} avg_fps for {} num of images" .format (
63+ avg_fps , self .image_benchmark_num_images
64+ )
65+ )
4866
4967 def image_callback_benchmark_simGetImage (self ):
5068 self .image_benchmark_num_images += 1
5169 iter_start_time = time .time ()
52- response = self .airsim_client_images .simGetImage ("fpv_cam" , airsim .ImageType .Scene )
53- img_rgb = cv2 .imdecode (airsim .string_to_uint8_array (response ), cv2 .IMREAD_UNCHANGED )
70+ response = self .airsim_client_images .simGetImage (
71+ "fpv_cam" , airsim .ImageType .Scene
72+ )
73+ img_rgb = cv2 .imdecode (
74+ airsim .string_to_uint8_array (response ), cv2 .IMREAD_UNCHANGED
75+ )
5476 self .image_benchmark_total_time += time .time () - iter_start_time
55- avg_fps = 1.0 / ((self .image_benchmark_total_time ) / float (self .image_benchmark_num_images ))
56- print (self .level_name + ": {} avg_fps for {} num of images" .format (avg_fps , self .image_benchmark_num_images ))
77+ avg_fps = 1.0 / (
78+ (self .image_benchmark_total_time ) / float (self .image_benchmark_num_images )
79+ )
80+ print (
81+ self .level_name
82+ + ": {} avg_fps for {} num of images" .format (
83+ avg_fps , self .image_benchmark_num_images
84+ )
85+ )
5786 # uncomment following lines to viz image
5887 # if self.viz_image_cv2:
59- # cv2.imshow("img_rgb", img_rgb_1d_new)
60- # cv2.waitKey(1)
88+ # cv2.imshow("img_rgb", img_rgb_1d_new)
89+ # cv2.waitKey(1)
6190
6291 def image_callback_benchmark_simGetImages (self ):
6392 self .image_benchmark_num_images += 1
6493 iter_start_time = time .time ()
6594 request = [airsim .ImageRequest ("fpv_cam" , airsim .ImageType .Scene , False , False )]
6695 response = self .airsim_client_images .simGetImages (request )
67- img_rgb_1d = np .fromstring (response [0 ].image_data_uint8 , dtype = np .uint8 )
96+ img_rgb_1d = np .fromstring (response [0 ].image_data_uint8 , dtype = np .uint8 )
6897 img_rgb = img_rgb_1d .reshape (response [0 ].height , response [0 ].width , 3 )
6998 self .image_benchmark_total_time += time .time () - iter_start_time
70- avg_fps = 1.0 / ((self .image_benchmark_total_time ) / float (self .image_benchmark_num_images ))
71- print (self .level_name + ": {} avg_fps for {} num of images" .format (avg_fps , self .image_benchmark_num_images ))
99+ avg_fps = 1.0 / (
100+ (self .image_benchmark_total_time ) / float (self .image_benchmark_num_images )
101+ )
102+ print (
103+ self .level_name
104+ + ": {} avg_fps for {} num of images" .format (
105+ avg_fps , self .image_benchmark_num_images
106+ )
107+ )
72108 # uncomment following lines to viz image
73109 # if self.viz_image_cv2:
74- # cv2.imshow("img_rgb", img_rgb_1d_new)
75- # cv2.waitKey(1)
110+ # cv2.imshow("img_rgb", img_rgb_1d_new)
111+ # cv2.waitKey(1)
112+
76113
77114def main (args ):
78115 # ensure you have generated the neurips planning settings file by running python generate_settings_file.py
79- baseline_racer = BaselineRacerImageBenchmarker (img_benchmark_type = args .img_benchmark_type , \
80- drone_name = "drone_1" , \
81- viz_traj = args .viz_traj , \
82- viz_traj_color_rgba = [1.0 , 1.0 , 0.0 , 1.0 ], \
83- viz_image_cv2 = args .viz_image_cv2 )
84-
116+ baseline_racer = BaselineRacerImageBenchmarker (
117+ img_benchmark_type = args .img_benchmark_type ,
118+ drone_name = "drone_1" ,
119+ viz_traj = args .viz_traj ,
120+ viz_traj_color_rgba = [1.0 , 1.0 , 0.0 , 1.0 ],
121+ viz_image_cv2 = args .viz_image_cv2 ,
122+ )
123+
85124 baseline_racer .load_level (args .level_name )
86125 if args .level_name == "Qualifier_Tier_1" :
87126 args .race_tier = 1
@@ -99,14 +138,39 @@ def main(args):
99138 baseline_racer .stop_img_benchmark_thread ()
100139 baseline_racer .print_benchmark_results ()
101140
141+
102142if __name__ == "__main__" :
103143 parser = ArgumentParser ()
104- parser .add_argument ('--level_name' , type = str , choices = ["Soccer_Field_Easy" , "Soccer_Field_Medium" , "ZhangJiaJie_Medium" , "Building99_Hard" ,
105- "Qualifier_Tier_1" , "Qualifier_Tier_2" , "Qualifier_Tier_3" ], default = "ZhangJiaJie_Medium" )
106- parser .add_argument ('--enable_viz_traj' , dest = 'viz_traj' , action = 'store_true' , default = False )
107- parser .add_argument ('--img_benchmark_type' , type = str , choices = ["simGetImage" , "simGetImages" ], default = "simGetImages" )
108- parser .add_argument ('--enable_viz_image_cv2' , dest = 'viz_image_cv2' , action = 'store_true' , default = False )
109- parser .add_argument ('--race_tier' , type = int , choices = [1 ,2 ,3 ], default = 1 )
144+ parser .add_argument (
145+ "--level_name" ,
146+ type = str ,
147+ choices = [
148+ "Soccer_Field_Easy" ,
149+ "Soccer_Field_Medium" ,
150+ "ZhangJiaJie_Medium" ,
151+ "Building99_Hard" ,
152+ "Qualifier_Tier_1" ,
153+ "Qualifier_Tier_2" ,
154+ "Qualifier_Tier_3" ,
155+ ],
156+ default = "ZhangJiaJie_Medium" ,
157+ )
158+ parser .add_argument (
159+ "--enable_viz_traj" , dest = "viz_traj" , action = "store_true" , default = False
160+ )
161+ parser .add_argument (
162+ "--img_benchmark_type" ,
163+ type = str ,
164+ choices = ["simGetImage" , "simGetImages" ],
165+ default = "simGetImages" ,
166+ )
167+ parser .add_argument (
168+ "--enable_viz_image_cv2" ,
169+ dest = "viz_image_cv2" ,
170+ action = "store_true" ,
171+ default = False ,
172+ )
173+ parser .add_argument ("--race_tier" , type = int , choices = [1 , 2 , 3 ], default = 1 )
110174
111175 args = parser .parse_args ()
112- main (args )
176+ main (args )
0 commit comments