def __init__(self): config = parse_config('../../configs/turtlebot_demo.yaml') hdr_texture = os.path.join(gibson2.ig_dataset_path, 'scenes', 'background', 'probe_02.hdr') hdr_texture2 = os.path.join(gibson2.ig_dataset_path, 'scenes', 'background', 'probe_03.hdr') light_modulation_map_filename = os.path.join(gibson2.ig_dataset_path, 'scenes', 'Rs_int', 'layout', 'floor_lighttype_0.png') background_texture = os.path.join(gibson2.ig_dataset_path, 'scenes', 'background', 'urban_street_01.jpg') settings = MeshRendererSettings(enable_shadow=False, enable_pbr=False) self.s = Simulator(mode='headless', image_width=400, image_height=400, rendering_settings=settings) scene = StaticIndoorScene('Rs') self.s.import_scene(scene) #self.s.import_ig_scene(scene) self.robot = Turtlebot(config) self.s.import_robot(self.robot) for _ in range(5): obj = YCBObject('003_cracker_box') self.s.import_object(obj) obj.set_position_orientation( np.random.uniform(low=0, high=2, size=3), [0, 0, 0, 1]) print(self.s.renderer.instances)
def test_import_building_viewing(): download_assets() download_demo_data() config = parse_config(os.path.join(gibson2.root_path, '../test/test.yaml')) s = Simulator(mode='headless') scene = StaticIndoorScene('Rs') s.import_scene(scene) assert s.objects == list(range(2)) turtlebot1 = Turtlebot(config) turtlebot2 = Turtlebot(config) turtlebot3 = Turtlebot(config) s.import_robot(turtlebot1) s.import_robot(turtlebot2) s.import_robot(turtlebot3) turtlebot1.set_position([0.5, 0, 0.5]) turtlebot2.set_position([0, 0, 0.5]) turtlebot3.set_position([-0.5, 0, 0.5]) for i in range(10): s.step() #turtlebot1.apply_action(np.random.randint(4)) #turtlebot2.apply_action(np.random.randint(4)) #turtlebot3.apply_action(np.random.randint(4)) s.disconnect()
def main(): config = parse_config('../configs/turtlebot_demo.yaml') settings = MeshRendererSettings(enable_shadow=False, msaa=False) s = Simulator(mode='gui', image_width=256, image_height=256, rendering_settings=settings) scene = StaticIndoorScene('Rs', build_graph=True, pybullet_load_texture=True) s.import_scene(scene) turtlebot = Turtlebot(config) s.import_robot(turtlebot) for _ in range(10): obj = YCBObject('003_cracker_box') s.import_object(obj) obj.set_position_orientation(np.random.uniform(low=0, high=2, size=3), [0, 0, 0, 1]) print(s.renderer.instances) for i in range(10000): with Profiler('Simulator step'): turtlebot.apply_action([0.1, 0.1]) s.step() rgb = s.renderer.render_robot_cameras(modes=('rgb')) s.disconnect()
def main(): p.connect(p.GUI) p.setGravity(0, 0, -9.8) p.setTimeStep(1. / 240.) scene = StaticIndoorScene('Rs', build_graph=True, pybullet_load_texture=True) scene.load() np.random.seed(0) for _ in range(10): random_floor = scene.get_random_floor() p1 = scene.get_random_point(random_floor)[1] p2 = scene.get_random_point(random_floor)[1] shortest_path, geodesic_distance = scene.get_shortest_path( random_floor, p1[:2], p2[:2], entire_path=True) print('random point 1:', p1) print('random point 2:', p2) print('geodesic distance between p1 and p2', geodesic_distance) print('shortest path from p1 to p2:', shortest_path) for _ in range(24000): # at least 100 seconds p.stepSimulation() time.sleep(1. / 240.) p.disconnect()
def test_import_building_big(): download_assets() download_demo_data() s = Simulator(mode='headless') scene = StaticIndoorScene('Rs') s.import_scene(scene, texture_scale=1) assert s.objects == list(range(2)) s.disconnect()
def run_demo(self): config = parse_config( os.path.join(os.path.dirname(gibson2.__file__), '../examples/configs/turtlebot_demo.yaml')) s = Simulator(mode='gui', image_width=700, image_height=700) scene = StaticIndoorScene('Rs', pybullet_load_texture=True) s.import_scene(scene) turtlebot = Turtlebot(config) s.import_robot(turtlebot) for i in range(1000): turtlebot.apply_action([0.1, 0.5]) s.step() s.disconnect()
def main(): config = parse_config('../configs/turtlebot_demo.yaml') settings = MeshRendererSettings() s = Simulator(mode='gui', image_width=256, image_height=256, rendering_settings=settings) scene = StaticIndoorScene('Rs', build_graph=True, pybullet_load_texture=True) s.import_scene(scene) turtlebot = Turtlebot(config) s.import_robot(turtlebot) for i in range(10000): with Profiler('Simulator step'): turtlebot.apply_action([0.1, -0.1]) s.step() lidar = s.renderer.get_lidar_all() print(lidar.shape) # TODO: visualize lidar scan s.disconnect()
def load(self): """ Load the scene and robot """ if self.config['scene'] == 'empty': scene = EmptyScene() self.simulator.import_scene(scene, load_texture=self.config.get( 'load_texture', True)) elif self.config['scene'] == 'stadium': scene = StadiumScene() self.simulator.import_scene(scene, load_texture=self.config.get( 'load_texture', True)) elif self.config['scene'] == 'gibson': scene = StaticIndoorScene( self.config['scene_id'], waypoint_resolution=self.config.get('waypoint_resolution', 0.2), num_waypoints=self.config.get('num_waypoints', 10), build_graph=self.config.get('build_graph', False), trav_map_resolution=self.config.get('trav_map_resolution', 0.1), trav_map_erosion=self.config.get('trav_map_erosion', 2), pybullet_load_texture=self.config.get('pybullet_load_texture', False), ) self.simulator.import_scene(scene, load_texture=self.config.get( 'load_texture', True)) elif self.config['scene'] == 'igibson': scene = InteractiveIndoorScene( self.config['scene_id'], waypoint_resolution=self.config.get('waypoint_resolution', 0.2), num_waypoints=self.config.get('num_waypoints', 10), build_graph=self.config.get('build_graph', False), trav_map_resolution=self.config.get('trav_map_resolution', 0.1), trav_map_erosion=self.config.get('trav_map_erosion', 2), trav_map_type=self.config.get('trav_map_type', 'with_obj'), pybullet_load_texture=self.config.get('pybullet_load_texture', False), texture_randomization=self.texture_randomization_freq is not None, object_randomization=self.object_randomization_freq is not None, object_randomization_idx=self.object_randomization_idx, should_open_all_doors=self.config.get('should_open_all_doors', False), load_object_categories=self.config.get( 'load_object_categories', None), load_room_types=self.config.get('load_room_types', None), load_room_instances=self.config.get('load_room_instances', None), ) # TODO: Unify the function import_scene and take out of the if-else clauses first_n = self.config.get('_set_first_n_objects', -1) if first_n != -1: scene._set_first_n_objects(first_n) self.simulator.import_ig_scene(scene) if self.config['robot'] == 'Turtlebot': robot = Turtlebot(self.config) elif self.config['robot'] == 'Husky': robot = Husky(self.config) elif self.config['robot'] == 'Ant': robot = Ant(self.config) elif self.config['robot'] == 'Humanoid': robot = Humanoid(self.config) elif self.config['robot'] == 'JR2': robot = JR2(self.config) elif self.config['robot'] == 'JR2_Kinova': robot = JR2_Kinova(self.config) elif self.config['robot'] == 'Freight': robot = Freight(self.config) elif self.config['robot'] == 'Fetch': robot = Fetch(self.config) elif self.config['robot'] == 'Locobot': robot = Locobot(self.config) else: raise Exception('unknown robot type: {}'.format( self.config['robot'])) self.scene = scene self.robots = [robot] for robot in self.robots: self.simulator.import_robot(robot)
def benchmark(render_to_tensor=False, resolution=512): config = parse_config(os.path.join(gibson2.root_path, '../test/test.yaml')) s = Simulator(mode='headless', image_width=resolution, image_height=resolution, render_to_tensor=render_to_tensor) scene = StaticIndoorScene('Rs', build_graph=True, pybullet_load_texture=True) s.import_scene(scene) turtlebot = Turtlebot(config) s.import_robot(turtlebot) n_frame = 500 start = time.time() for i in range(n_frame): turtlebot.apply_action([0.1, 0.1]) s.step() rgb = s.renderer.render_robot_cameras(modes=('rgb')) physics_render_elapsed = time.time() - start physics_render_fps = n_frame / physics_render_elapsed print( "physics simulation + rendering rgb, resolution {}, render_to_tensor {}: {} fps" .format(resolution, render_to_tensor, physics_render_fps)) start = time.time() for i in range(n_frame): rgb = s.renderer.render_robot_cameras(modes=('rgb')) render_elapsed = time.time() - start rgb_fps = n_frame / render_elapsed print("Rendering rgb, resolution {}, render_to_tensor {}: {} fps".format( resolution, render_to_tensor, n_frame / render_elapsed)) start = time.time() for i in range(n_frame): rgb = s.renderer.render_robot_cameras(modes=('3d')) render_elapsed = time.time() - start pc_fps = n_frame / render_elapsed print("Rendering 3d, resolution {}, render_to_tensor {}: {} fps".format( resolution, render_to_tensor, n_frame / render_elapsed)) start = time.time() for i in range(n_frame): rgb = s.renderer.render_robot_cameras(modes=('normal')) normal_fps = n_frame / render_elapsed render_elapsed = time.time() - start print( "Rendering normal, resolution {}, render_to_tensor {}: {} fps".format( resolution, render_to_tensor, n_frame / render_elapsed)) plt.figure() plt.bar([0, 1, 2, 3], [physics_render_fps, rgb_fps, pc_fps, normal_fps], color='g') plt.xticks([0, 1, 2, 3], ['sim+render', 'rgb', '3d', 'normal']) plt.ylabel('fps') plt.xlabel('mode') plt.title('Static Scene Benchmark, resolution {}, to_tensor {}'.format( resolution, render_to_tensor)) plt.savefig('static_scene_benchmark_res{}_tensor{}.pdf'.format( resolution, render_to_tensor)) s.disconnect()