From 3df10ea05c38217490cb5f977d39084e87e7e4d0 Mon Sep 17 00:00:00 2001 From: Quanyi Li <785878978@qq.com> Date: Tue, 29 Jun 2021 15:30:57 +0800 Subject: [PATCH] Add function for rendering top-down trajectory from json file (#460) * update * format * format * format * format * format * allow set state * _replay_done * foramt * fix height error * panda_replay * now allow show agent name with top down renderere * replay stop system * prefer track * color * global light * update * fix light pois * lane follow ! * vehicle color * format * cam para * camera dist * format * sync main Co-authored-by: pengzhenghao --- pgdrive/envs/base_env.py | 1 + pgdrive/envs/marl_envs/marl_bottleneck.py | 1 + pgdrive/envs/marl_envs/marl_intersection.py | 36 ++++++++----------- pgdrive/envs/marl_envs/marl_parking_lot.py | 18 +++++++--- pgdrive/envs/multi_agent_pgdrive.py | 1 + pgdrive/envs/pgdrive_env.py | 4 ++- pgdrive/scene_creator/vehicle/base_vehicle.py | 1 - 7 files changed, 34 insertions(+), 28 deletions(-) diff --git a/pgdrive/envs/base_env.py b/pgdrive/envs/base_env.py index a98505c01..8bccb11f7 100644 --- a/pgdrive/envs/base_env.py +++ b/pgdrive/envs/base_env.py @@ -41,6 +41,7 @@ use_chase_camera=True, use_chase_camera_follow_lane=False, # If true, then vision would be more stable. camera_height=1.8, + camera_dist=7, prefer_track_agent=None, # ===== Vehicle ===== diff --git a/pgdrive/envs/marl_envs/marl_bottleneck.py b/pgdrive/envs/marl_envs/marl_bottleneck.py index 520a64e43..10b3fb3ed 100644 --- a/pgdrive/envs/marl_envs/marl_bottleneck.py +++ b/pgdrive/envs/marl_envs/marl_bottleneck.py @@ -1,4 +1,5 @@ from pgdrive.envs.multi_agent_pgdrive import pygame_replay +from pgdrive.utils.math_utils import clip from pgdrive.envs.marl_envs.marl_inout_roundabout import LidarStateObservationMARound from pgdrive.envs.multi_agent_pgdrive import MultiAgentPGDrive from pgdrive.obs import ObservationType diff --git a/pgdrive/envs/marl_envs/marl_intersection.py b/pgdrive/envs/marl_envs/marl_intersection.py index dddbc2be4..56118415d 100644 --- a/pgdrive/envs/marl_envs/marl_intersection.py +++ b/pgdrive/envs/marl_envs/marl_intersection.py @@ -1,5 +1,5 @@ import copy - +from pgdrive.envs.multi_agent_pgdrive import pygame_replay, panda_replay from pgdrive.envs.marl_envs.marl_inout_roundabout import LidarStateObservationMARound from pgdrive.envs.multi_agent_pgdrive import MultiAgentPGDrive from pgdrive.obs import ObservationType @@ -204,8 +204,8 @@ def _vis(): }, "show_lidar": False, }, - "fast": True, - "use_render": True, + # "fast": True, + # "use_render": True, "debug": True, "manual_control": True, "num_agents": 48, @@ -218,7 +218,7 @@ def _vis(): for i in range(1, 100000): actions = {k: [0.0, 1.0] for k in env.vehicles.keys()} if len(env.vehicles) == 1: - actions = {k: [-1.0, 1.0] for k in env.vehicles.keys()} + actions = {k: [-0, 1.0] for k in env.vehicles.keys()} o, r, d, info = env.step(actions) for r_ in r.values(): total_r += r_ @@ -350,24 +350,6 @@ def show_map_and_traj(): env.close() -def pygame_replay(): - import json - import pygame - env = MultiAgentIntersectionEnv({"use_topdown": True}) - with open("metasvodist_inter_best.json", "r") as f: - traj = json.load(f) - o = env.reset(copy.deepcopy(traj)) - frame_count = 0 - while True: - o, r, d, i = env.step(env.action_space.sample()) - env.pg_world.force_fps.toggle() - env.render(mode="top_down", num_stack=50, film_size=(4000, 4000), history_smooth=0) - pygame.image.save(env._top_down_renderer._runtime, "inter_{}.png".format(frame_count)) - frame_count += 1 - if len(env.scene_manager.replay_system.restore_episode_info) == 0: - env.close() - - if __name__ == "__main__": # _draw() _vis() @@ -375,4 +357,14 @@ def pygame_replay(): # _profiwdle() # _long_run() # show_map_and_traj() + # pygame_replay("parking", MultiAgentParkingLotEnv, False, other_traj="metasvodist_parking_best.json") + # panda_replay( + # "parking", + # MultiAgentIntersectionEnv, + # False, + # other_traj="metasvodist_inter.json", + # extra_config={"pg_world_config": { + # "global_light": True + # }} + # ) # pygame_replay() diff --git a/pgdrive/envs/marl_envs/marl_parking_lot.py b/pgdrive/envs/marl_envs/marl_parking_lot.py index dbf3ef8b9..91466e0de 100644 --- a/pgdrive/envs/marl_envs/marl_parking_lot.py +++ b/pgdrive/envs/marl_envs/marl_parking_lot.py @@ -2,7 +2,7 @@ import logging from pgdrive.envs.marl_envs.marl_inout_roundabout import LidarStateObservationMARound -from pgdrive.envs.multi_agent_pgdrive import MultiAgentPGDrive, pygame_replay +from pgdrive.envs.multi_agent_pgdrive import MultiAgentPGDrive, pygame_replay, panda_replay from pgdrive.obs import ObservationType from pgdrive.scene_creator.blocks.first_block import FirstBlock from pgdrive.scene_creator.blocks.parking_lot import ParkingLot @@ -386,7 +386,8 @@ def _vis(): "show_lidar": False, }, "pg_world_config": { - "debug_static_world": True + "debug_static_world": True, + "global_light": True }, "fast": True, "use_render": True, @@ -542,8 +543,17 @@ def _long_run(): if __name__ == "__main__": # _draw() - # _vis() + _vis() # _vis_debug_respawn() _profile() # _long_run() - pygame_replay("parking", MultiAgentParkingLotEnv, True, other_ckpt="metasvodist_parking_3.json") + # pygame_replay("parking", MultiAgentParkingLotEnv, False, other_traj="metasvodist_parking_best.json") + panda_replay( + "parking", + MultiAgentParkingLotEnv, + False, + other_traj="metasvodist_parking_best.json", + extra_config={"pg_world_config": { + "global_light": True + }} + ) diff --git a/pgdrive/envs/multi_agent_pgdrive.py b/pgdrive/envs/multi_agent_pgdrive.py index c02ad1ed6..34dabb798 100644 --- a/pgdrive/envs/multi_agent_pgdrive.py +++ b/pgdrive/envs/multi_agent_pgdrive.py @@ -378,6 +378,7 @@ def pygame_replay(name, env_class, save=False, other_traj=None, film_size=(1000, with open(ckpt, "r") as f: traj = json.load(f) o = env.reset(copy.deepcopy(traj)) + env.main_camera.set_follow_lane(True) frame_count = 0 while True: o, r, d, i = env.step(env.action_space.sample()) diff --git a/pgdrive/envs/pgdrive_env.py b/pgdrive/envs/pgdrive_env.py index 9e9eb3c28..1884544ea 100644 --- a/pgdrive/envs/pgdrive_env.py +++ b/pgdrive/envs/pgdrive_env.py @@ -189,7 +189,9 @@ def _after_lazy_init(self): # for manual_control and main camera type if (self.config["use_render"] or self.config["use_image"]) and self.config["use_chase_camera"]: - self.main_camera = ChaseCamera(self.pg_world.cam, self.config["camera_height"], 7, self.pg_world) + self.main_camera = ChaseCamera( + self.pg_world.cam, self.config["camera_height"], self.config["camera_dist"], self.pg_world + ) self.main_camera.set_follow_lane(self.config["use_chase_camera_follow_lane"]) self.main_camera.track(self.current_track_vehicle, self.pg_world) self.pg_world.accept("b", self.bird_view_camera) diff --git a/pgdrive/scene_creator/vehicle/base_vehicle.py b/pgdrive/scene_creator/vehicle/base_vehicle.py index dd43e4225..0669c6d64 100644 --- a/pgdrive/scene_creator/vehicle/base_vehicle.py +++ b/pgdrive/scene_creator/vehicle/base_vehicle.py @@ -892,7 +892,6 @@ def overspeed(self): @property def replay_done(self): - print(111) return self._replay_done if hasattr(self, "_replay_done") else ( self.crash_building or self.crash_vehicle or # self.on_white_continuous_line or