diff --git a/demo/demo2.py b/demo/demo2.py index 8a10231187f7492015f24cb93592687feef55fcb..7c8d006f6a2c9bb62dd972e5a2121ee64219dd91 100644 --- a/demo/demo2.py +++ b/demo/demo2.py @@ -54,22 +54,17 @@ if __name__ == "__main__": (VehicleMode.Normal, LaneMode.Lane1), ] ) - # # res_list = scenario.simulate_multi(40,1) - # traces = scenario.verify(40) + # res_list = scenario.simulate(40) + traces = scenario.verify(40) - # fig = plt.figure(2) - # fig = plot_map(tmp_map, 'g', fig) - # fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'b', fig) - # fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'r', fig) - # # for traces in res_list: - # # generate_simulation_anime(traces, tmp_map, fig) - # # # fig,x_lim,y_lim = plot_simulation_tree(traces, 'car1', 1, [2], 'b', fig,x_lim,y_lim) - # # # fig,x_lim,y_lim = plot_simulation_tree(traces, 'car2', 1, [2], 'r', fig,x_lim,y_lim) + fig = plt.figure(2) + fig = plot_map(tmp_map, 'g', fig) + fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'b', fig) + fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'r', fig) + plt.show() - # plt.show() - -# this is for plot-based visualization - traces = scenario.simulate(40) - fig = go.Figure() - fig = plotly_simulation_anime(traces, tmp_map, fig) - fig.show() + # # this is for plot-based visualization + # traces = scenario.simulate(40) + # fig = go.Figure() + # fig = plotly_simulation_anime(traces, tmp_map, fig) + # fig.show() diff --git a/demo/demo3.py b/demo/demo3.py index 54121e8fd88607034c01a41e8a9634fd0182fd72..1ba4fc08711617729d18001c41ec933f58d52ccf 100644 --- a/demo/demo3.py +++ b/demo/demo3.py @@ -42,7 +42,7 @@ class State: if __name__ == "__main__": - input_code_name = './example_controller4.py' + input_code_name = './demo/example_controller4.py' scenario = Scenario() car = CarAgent('car1', file_name=input_code_name) @@ -70,18 +70,18 @@ if __name__ == "__main__": (VehicleMode.Normal, LaneMode.Lane1), ] ) - # traces = scenario.simulate(70) - traces = scenario.verify(70) + traces = scenario.simulate(70) + # traces = scenario.verify(70) - fig = plt.figure(2) - fig = plot_map(tmp_map, 'g', fig) - fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'b', fig) - fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'r', fig) - fig = plot_reachtube_tree(traces, 'car3', 1, [2], 'r', fig) - fig = plot_reachtube_tree(traces, 'car4', 1, [2], 'r', fig) - plt.show() + # fig = plt.figure(2) + # fig = plot_map(tmp_map, 'g', fig) + # fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'b', fig) + # fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car3', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car4', 1, [2], 'r', fig) + # plt.show() - # fig = go.Figure() - # fig = plotly_simulation_anime(traces, tmp_map, fig) - # fig.show() + fig = go.Figure() + fig = plotly_simulation_anime(traces, tmp_map, fig) + fig.show() diff --git a/demo/demo4.py b/demo/demo4.py index a7b1bb854ba7a8ebd53ebb2583bd8788df3061c9..86d69d5e7ca521262216dc42c3b5877d97729d6c 100644 --- a/demo/demo4.py +++ b/demo/demo4.py @@ -79,18 +79,18 @@ if __name__ == "__main__": (VehicleMode.Normal, LaneMode.Lane3), ] ) - # traces = scenario.simulate(80) - traces = scenario.verify(80) + traces = scenario.simulate(80) + # traces = scenario.verify(80) - fig = plt.figure(2) - fig = plot_map(tmp_map, 'g', fig) - fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'b', fig) - fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'r', fig) - fig = plot_reachtube_tree(traces, 'car3', 1, [2], 'r', fig) - fig = plot_reachtube_tree(traces, 'car4', 1, [2], 'r', fig) - fig = plot_reachtube_tree(traces, 'car5', 1, [2], 'r', fig) - fig = plot_reachtube_tree(traces, 'car6', 1, [2], 'r', fig) - plt.show() + # fig = plt.figure(2) + # fig = plot_map(tmp_map, 'g', fig) + # fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'b', fig) + # fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car3', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car4', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car5', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car6', 1, [2], 'r', fig) + # plt.show() # fig = go.Figure() # fig = plotly_simulation_anime(traces, tmp_map, fig) diff --git a/demo/demo7.py b/demo/demo7.py index 0b93f3f65ac3507e8c743f866b1e4f16dee3cf73..fd2b0b39a6877ae0a8540da85699bafc1ef6de3e 100644 --- a/demo/demo7.py +++ b/demo/demo7.py @@ -45,7 +45,7 @@ class State: if __name__ == "__main__": - input_code_name = './example_controller8.py' + input_code_name = './demo/example_controller8.py' scenario = Scenario() car = CarAgent('car1', file_name=input_code_name) @@ -89,17 +89,19 @@ if __name__ == "__main__": (VehicleMode.Normal, LaneMode.Lane3), ] ) - traces = scenario.simulate(80) - # traces = scenario.verify(80) + traces = scenario.simulate(20) + # traces = scenario.verify(15) # fig = plt.figure(2) # fig = plot_map(tmp_map, 'g', fig) - # fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'b', fig) - # fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'r', fig) - # fig = plot_reachtube_tree(traces, 'car3', 1, [2], 'r', fig) - # fig = plot_reachtube_tree(traces, 'car4', 1, [2], 'r', fig) - # fig = plot_reachtube_tree(traces, 'car5', 1, [2], 'r', fig) - # fig = plot_reachtube_tree(traces, 'car6', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car1', 1, [2], 'r', fig) + # fig = plot_reachtube_tree(traces, 'car2', 1, [2], 'g', fig) + # fig = plot_reachtube_tree(traces, 'car3', 1, [2], 'g', fig) + # fig = plot_reachtube_tree(traces, 'car4', 1, [2], 'g', fig) + # fig = plot_reachtube_tree(traces, 'car5', 1, [2], 'g', fig) + # fig = plot_reachtube_tree(traces, 'car6', 1, [2], 'g', fig) + # fig = plot_reachtube_tree(traces, 'car7', 1, [2], 'g', fig) + # fig = plot_reachtube_tree(traces, 'car8', 1, [2], 'g', fig) # plt.show() fig = go.Figure() diff --git a/dryvr_plus_plus/scene_verifier/analysis/simulator.py b/dryvr_plus_plus/scene_verifier/analysis/simulator.py index fab7aa29bcdd4c387281ef84e801fbf7c5b560d7..c1099ecb985d9ec7f8d3471bfbe6406236917ca1 100644 --- a/dryvr_plus_plus/scene_verifier/analysis/simulator.py +++ b/dryvr_plus_plus/scene_verifier/analysis/simulator.py @@ -34,7 +34,7 @@ class Simulator: while simulation_queue != []: node:AnalysisTreeNode = simulation_queue.pop(0) print(node.start_time, node.mode) - remain_time = time_horizon - node.start_time + remain_time = round(time_horizon - node.start_time,10) if remain_time <= 0: continue # For trace not already simulated @@ -49,6 +49,10 @@ class Simulator: transitions, transition_idx = transition_graph.get_transition_simulate_new(node) + # If there's no transitions (returned transitions is empty), continue + if not transitions: + continue + # truncate the computed trajectories from idx and store the content after truncate truncated_trace = {} for agent_idx in node.agent: diff --git a/dryvr_plus_plus/scene_verifier/analysis/verifier.py b/dryvr_plus_plus/scene_verifier/analysis/verifier.py index 01fcdca10f679b43dcc510bf2c340e7f3d6e3786..123729a66b30cd660001a831f1f095f456c74adf 100644 --- a/dryvr_plus_plus/scene_verifier/analysis/verifier.py +++ b/dryvr_plus_plus/scene_verifier/analysis/verifier.py @@ -65,8 +65,7 @@ class Verifier: # print("here") # TODO: Check safety conditions here - if node.trace['car1'][-1][0] > 50.01: - print("stop here") + # Get all possible transitions to next mode all_possible_transitions = transition_graph.get_transition_verify_new(node) max_end_idx = 0 diff --git a/dryvr_plus_plus/scene_verifier/scenario/scenario.py b/dryvr_plus_plus/scene_verifier/scenario/scenario.py index 142b51726e5c1f7deba285c40e37b7c2b480a4ab..8a064619751afb34c28d241e6582e47b5c38abc8 100644 --- a/dryvr_plus_plus/scene_verifier/scenario/scenario.py +++ b/dryvr_plus_plus/scene_verifier/scenario/scenario.py @@ -253,7 +253,10 @@ class Scenario: tmp = tmp[1] for var in discrete_variable_dict: tmp = tmp.replace(var, f"'{discrete_variable_dict[var]}'") - possible_dest[i] = eval(tmp) + res = eval(tmp) + if not isinstance(res, list): + res = [res] + possible_dest[i] = res else: tmp = tmp[1].split('.') if tmp[0].strip(' ') in agent.controller.modes: