| 284 | |
| 285 | |
| 286 | def save(self, near_node, far_node, near_command, steer, throttle, brake, target_speed, tick_data): |
| 287 | frame = self.step // 10 |
| 288 | |
| 289 | pos = self._get_position(tick_data) |
| 290 | theta = tick_data['compass'] |
| 291 | speed = tick_data['speed'] |
| 292 | weather = tick_data['weather'] |
| 293 | |
| 294 | data = { |
| 295 | 'x': pos[0], |
| 296 | 'y': pos[1], |
| 297 | 'theta': theta, |
| 298 | 'speed': speed, |
| 299 | 'target_speed': target_speed, |
| 300 | 'x_command': far_node[0], |
| 301 | 'y_command': far_node[1], |
| 302 | 'command': near_command.value, |
| 303 | 'steer': steer, |
| 304 | 'throttle': throttle, |
| 305 | 'brake': brake, |
| 306 | 'weather': weather, |
| 307 | 'weather_id': self.weather_id, |
| 308 | 'near_node_x': near_node[0], |
| 309 | 'near_node_y': near_node[1], |
| 310 | 'far_node_x': far_node[0], |
| 311 | 'far_node_y': far_node[1], |
| 312 | 'is_vehicle_present': self.is_vehicle_present, |
| 313 | 'is_pedestrian_present': self.is_pedestrian_present, |
| 314 | 'is_red_light_present': self.is_red_light_present, |
| 315 | 'is_stop_sign_present': self.is_stop_sign_present, |
| 316 | 'should_slow': self.should_slow, |
| 317 | 'should_brake': self.should_brake, |
| 318 | 'angle': self.angle, |
| 319 | 'angle_unnorm': self.angle_unnorm, |
| 320 | 'angle_far_unnorm': self.angle_far_unnorm, |
| 321 | } |
| 322 | |
| 323 | measurements_file = self.save_path / 'measurements' / ('%04d.json' % frame) |
| 324 | f = open(measurements_file, 'w') |
| 325 | json.dump(data, f, indent=4) |
| 326 | f.close() |
| 327 | |
| 328 | # for pos in ['front', 'left', 'right', 'rear']: |
| 329 | for pos in ['front']: |
| 330 | name = 'rgb_' + pos |
| 331 | Image.fromarray(tick_data[name]).save(self.save_path / name / ('%04d.png' % frame)) |
| 332 | # for sensor_type in ['seg', 'depth']: |
| 333 | # name = sensor_type + '_' + pos |
| 334 | # Image.fromarray(tick_data[name]).save(self.save_path / name / ('%04d.png' % frame)) |
| 335 | # for sensor_type in ['2d_bbs']: |
| 336 | # name = sensor_type + '_' + pos |
| 337 | # np.save(self.save_path / name / ('%04d.npy' % frame), tick_data[name], allow_pickle=True) |
| 338 | |
| 339 | # Image.fromarray(tick_data['topdown']).save(self.save_path / 'topdown' / ('%04d.png' % frame)) |
| 340 | # np.save(self.save_path / 'lidar' / ('%04d.npy' % frame), tick_data['lidar'], allow_pickle=True) |
| 341 | # np.save(self.save_path / 'semantic_lidar' / ('%04d.npy' % frame), tick_data['semantic_lidar'], allow_pickle=True) |
| 342 | # np.save(self.save_path / '3d_bbs' / ('%04d.npy' % frame), tick_data['3d_bbs'], allow_pickle=True) |
| 343 | # np.save(self.save_path / 'affordances' / ('%04d.npy' % frame), tick_data['affordances'], allow_pickle=True) |