diff --git a/.gitignore b/.gitignore index 6793308750e93c4ce9e026bec63fb6bd8071ed32..5bba7af96e75af65b1cc95fc52a50ab820d9986e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ __pycache__/ .idea/ venv/ .DS_Store +**.egg-info/ \ No newline at end of file diff --git a/demo.py b/demo.py index c0a62d944dda4dd3f13f2920330e195483d36223..c27601c91de525ff1d74f0ab1d100874a7315950 100644 --- a/demo.py +++ b/demo.py @@ -1,8 +1,8 @@ -from src.example.example_agent.car_agent import CarAgent -from src.scene_verifier.scenario.scenario import Scenario -from src.example.example_map.simple_map2 import SimpleMap2, SimpleMap3, SimpleMap5, SimpleMap6 -from src.plotter.plotter2D import * -from src.example.example_sensor.fake_sensor import FakeSensor2 +from dryvrpy.example.example_agent.car_agent import CarAgent +from dryvrpy.scene_verifier.scenario.scenario import Scenario +from dryvrpy.example.example_map.simple_map2 import SimpleMap2, SimpleMap3, SimpleMap5, SimpleMap6 +from dryvrpy.plotter.plotter2D import * +from dryvrpy.example.example_sensor.fake_sensor import FakeSensor2 import matplotlib.pyplot as plt import numpy as np @@ -51,16 +51,16 @@ if __name__ == "__main__": (VehicleMode.Normal, LaneMode.Lane1), ] ) - res_list = scenario.simulate_multi(40,1) - # traces = scenario.verify(40) + # res_list = scenario.simulate_multi(40,1) + traces = scenario.verify(40) - # fig = plt.figure(2) - # fig,x_lim,y_lim = 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,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) + # for traces in res_list: + # generate_simulation_anime(traces, tmp_map) + # # 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) plt.show() diff --git a/demo2.py b/demo2.py index 4ec0bec812a8615dcfc1353dd710cce679a32b44..795e150833bdd3579f79ff05dd7d61dfac60a9b6 100644 --- a/demo2.py +++ b/demo2.py @@ -1,8 +1,8 @@ -from src.example.example_agent.car_agent import CarAgent, NPCAgent -from src.scene_verifier.scenario.scenario import Scenario -from src.example.example_map.simple_map2 import SimpleMap2, SimpleMap3, SimpleMap5, SimpleMap6 -from src.plotter.plotter2D import * -from src.example.example_sensor.fake_sensor import FakeSensor2 +from dryvrpy.example.example_agent.car_agent import CarAgent, NPCAgent +from dryvrpy.scene_verifier.scenario.scenario import Scenario +from dryvrpy.example.example_map.simple_map2 import SimpleMap2, SimpleMap3, SimpleMap5, SimpleMap6 +from dryvrpy.plotter.plotter2D import * +from dryvrpy.example.example_sensor.fake_sensor import FakeSensor2 import matplotlib.pyplot as plt import numpy as np @@ -51,17 +51,17 @@ if __name__ == "__main__": (VehicleMode.Normal, LaneMode.Lane1), ] ) - res_list = scenario.simulate_multi(10,1) - # traces = scenario.verify(10) + # res_list = scenario.simulate_multi(10,10) + traces = scenario.verify(10) - # fig = plt.figure(2) - # fig,x_lim,y_lim = plot_map(tmp_map, 'g', fig) - # fig,x_lim,y_lim = plot_reachtube_tree(traces, 'car1', 0, [1], 'b', fig) - # fig,x_lim,y_lim = plot_reachtube_tree(traces, 'car2', 0, [1], 'r', fig,x_lim,y_lim) - for traces in res_list: - # fig,x_lim,y_lim = plot_simulation_tree(traces, 'car1', 0, [1], 'b', fig) - # fig,x_lim,y_lim = plot_simulation_tree(traces, 'car2', 0, [1], 'r', fig, x_lim, y_lim) - generate_simulation_anime(traces, tmp_map) + fig = plt.figure(2) + # fig = plot_map(tmp_map, 'g', fig) + fig = plot_reachtube_tree(traces, 'car1', 0, [1], 'b', fig, (1000,-1000), (1000,-1000)) + fig = plot_reachtube_tree(traces, 'car2', 0, [1], 'r', fig) + # for traces in res_list: + # fig = plot_simulation_tree(traces, 'car1', 0, [1], 'b', fig, (1000,-1000), (1000,-1000)) + # fig = plot_simulation_tree(traces, 'car2', 0, [1], 'r', fig) + # # generate_simulation_anime(traces, tmp_map) diff --git a/src/__init__.py b/dryvr_plus_plus/__init__.py similarity index 100% rename from src/__init__.py rename to dryvr_plus_plus/__init__.py diff --git a/src/example/__init__.py b/dryvr_plus_plus/example/__init__.py similarity index 100% rename from src/example/__init__.py rename to dryvr_plus_plus/example/__init__.py diff --git a/src/example/example_agent/__init__.py b/dryvr_plus_plus/example/example_agent/__init__.py similarity index 100% rename from src/example/example_agent/__init__.py rename to dryvr_plus_plus/example/example_agent/__init__.py diff --git a/src/example/example_agent/car_agent.py b/dryvr_plus_plus/example/example_agent/car_agent.py similarity index 97% rename from src/example/example_agent/car_agent.py rename to dryvr_plus_plus/example/example_agent/car_agent.py index cd7e94c25c4b8e740f46aa86c53111a37bf13022..8079e4b62137f3299175ca9a8462c193e8edca17 100644 --- a/src/example/example_agent/car_agent.py +++ b/dryvr_plus_plus/example/example_agent/car_agent.py @@ -3,8 +3,8 @@ from typing import Tuple, List import numpy as np from scipy.integrate import ode -from src.scene_verifier.agents.base_agent import BaseAgent -from src.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.agents.base_agent import BaseAgent +from dryvrpy.scene_verifier.map.lane_map import LaneMap class NPCAgent(BaseAgent): def __init__(self, id, code = None, file_name = None): diff --git a/src/example/example_agent/sign_agent.py b/dryvr_plus_plus/example/example_agent/sign_agent.py similarity index 88% rename from src/example/example_agent/sign_agent.py rename to dryvr_plus_plus/example/example_agent/sign_agent.py index fe7af49971668afdc7a03ab8399250ad1c6bb3c3..c9fa9c1b59733349b26961ec7d41dff3e5cec09d 100644 --- a/src/example/example_agent/sign_agent.py +++ b/dryvr_plus_plus/example/example_agent/sign_agent.py @@ -1,4 +1,4 @@ -from src.scene_verifier.agents.base_agent import BaseAgent +from dryvrpy.scene_verifier.agents.base_agent import BaseAgent import numpy as np class SignAgent(BaseAgent): diff --git a/src/example/example_map/__init__.py b/dryvr_plus_plus/example/example_map/__init__.py similarity index 100% rename from src/example/example_map/__init__.py rename to dryvr_plus_plus/example/example_map/__init__.py diff --git a/src/example/example_map/simple_map.py b/dryvr_plus_plus/example/example_map/simple_map.py similarity index 89% rename from src/example/example_map/simple_map.py rename to dryvr_plus_plus/example/example_map/simple_map.py index 1ebe33d045455adb5a01d0ff39577cb99e058f99..dca317775e33945c4aede10845274850ccb5b0bf 100644 --- a/src/example/example_map/simple_map.py +++ b/dryvr_plus_plus/example/example_map/simple_map.py @@ -1,5 +1,5 @@ -from src.scene_verifier.map.lane_map import LaneMap -from src.scene_verifier.map.lane_segment import LaneSegment +from dryvrpy.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.map.lane_segment import LaneSegment class SimpleMap(LaneMap): def __init__(self): diff --git a/src/example/example_map/simple_map2.py b/dryvr_plus_plus/example/example_map/simple_map2.py similarity index 95% rename from src/example/example_map/simple_map2.py rename to dryvr_plus_plus/example/example_map/simple_map2.py index b23d73ed2089b0cbbf7e0326e439610cb51bd60e..ce5ffc214f1c3c028a1960ff0c3ef17adaa8dbd4 100644 --- a/src/example/example_map/simple_map2.py +++ b/dryvr_plus_plus/example/example_map/simple_map2.py @@ -1,6 +1,6 @@ -from src.scene_verifier.map.lane_map import LaneMap -from src.scene_verifier.map.lane_segment import LaneSegment, StraightLane, CircularLane -from src.scene_verifier.map.lane import Lane +from dryvrpy.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.map.lane_segment import LaneSegment, StraightLane, CircularLane +from dryvrpy.scene_verifier.map.lane import Lane import numpy as np diff --git a/src/example/example_sensor/__init__.py b/dryvr_plus_plus/example/example_sensor/__init__.py similarity index 100% rename from src/example/example_sensor/__init__.py rename to dryvr_plus_plus/example/example_sensor/__init__.py diff --git a/src/example/example_sensor/fake_sensor.py b/dryvr_plus_plus/example/example_sensor/fake_sensor.py similarity index 100% rename from src/example/example_sensor/fake_sensor.py rename to dryvr_plus_plus/example/example_sensor/fake_sensor.py diff --git a/src/plotter/__init__.py b/dryvr_plus_plus/plotter/__init__.py similarity index 100% rename from src/plotter/__init__.py rename to dryvr_plus_plus/plotter/__init__.py diff --git a/src/plotter/parser.py b/dryvr_plus_plus/plotter/parser.py similarity index 100% rename from src/plotter/parser.py rename to dryvr_plus_plus/plotter/parser.py diff --git a/src/plotter/plotter2D.py b/dryvr_plus_plus/plotter/plotter2D.py similarity index 87% rename from src/plotter/plotter2D.py rename to dryvr_plus_plus/plotter/plotter2D.py index a89c77c1357d47e79b1b7b8219e9214e7451791a..68364c7d1eba3c33048a8af70b9e81bb5f40fdd2 100644 --- a/src/plotter/plotter2D.py +++ b/dryvr_plus_plus/plotter/plotter2D.py @@ -17,12 +17,18 @@ def plot( y_dim_list: List[int] = [1], color = 'b', fig = None, - x_lim = (float('inf'), -float('inf')), - y_lim = (float('inf'), -float('inf')) + x_lim = None, + y_lim = None ): if fig is None: fig = plt.figure() + ax = fig.gca() + if x_lim is None: + x_lim = ax.get_xlim() + if y_lim is None: + y_lim = ax.get_ylim() + x_min, x_max = x_lim y_min, y_max = y_lim for rect in data: @@ -40,10 +46,16 @@ def plot( ax.set_ylim([y_min-1, y_max+1]) return fig, (x_min, x_max), (y_min, y_max) -def plot_reachtube_tree(root, agent_id, x_dim: int=0, y_dim_list: List[int]=[1], color='b', fig = None, x_lim = (float('inf'),-float('inf')),y_lim = (float('inf'),-float('inf'))): +def plot_reachtube_tree(root, agent_id, x_dim: int=0, y_dim_list: List[int]=[1], color='b', fig = None, x_lim = None, y_lim = None): if fig is None: fig = plt.figure() + ax = fig.gca() + if x_lim is None: + x_lim = ax.get_xlim() + if y_lim is None: + y_lim = ax.get_ylim() + queue = [root] while queue != []: node = queue.pop(0) @@ -56,12 +68,18 @@ def plot_reachtube_tree(root, agent_id, x_dim: int=0, y_dim_list: List[int]=[1], queue += node.child - return fig,x_lim,y_lim + return fig -def plot_map(map, color = 'b', fig = None, x_lim = (float('inf'),-float('inf')),y_lim = (float('inf'),-float('inf'))): +def plot_map(map, color = 'b', fig = None, x_lim = None,y_lim = None): if fig is None: fig = plt.figure() + ax = fig.gca() + if x_lim is None: + x_lim = ax.get_xlim() + if y_lim is None: + y_lim = ax.get_ylim() + for lane_idx in map.lane_dict: lane = map.lane_dict[lane_idx] for lane_seg in lane.segment_list: @@ -74,12 +92,18 @@ def plot_map(map, color = 'b', fig = None, x_lim = (float('inf'),-float('inf')), ax.plot(x,y,color) else: raise ValueError(f'Unknown lane segment type {lane_seg.type}') - return fig, ax.get_xlim(), ax.get_ylim() + return fig -def plot_simulation_tree(root, agent_id, x_dim: int=0, y_dim_list: List[int]=[1], color='b', fig = None, x_lim = (float('inf'),-float('inf')),y_lim = (float('inf'),-float('inf'))): +def plot_simulation_tree(root, agent_id, x_dim: int=0, y_dim_list: List[int]=[1], color='b', fig = None, x_lim = None, y_lim = None): if fig is None: fig = plt.figure() + ax = fig.gca() + if x_lim is None: + x_lim = ax.get_xlim() + if y_lim is None: + y_lim = ax.get_ylim() + x_min, x_max = x_lim y_min, y_max = y_lim @@ -100,7 +124,7 @@ def plot_simulation_tree(root, agent_id, x_dim: int=0, y_dim_list: List[int]=[1] ax.set_xlim([x_min-1, x_max+1]) ax.set_ylim([y_min-1, y_max+1]) - return fig, ax.get_xlim(), ax.get_ylim() + return fig def generate_simulation_anime(root, map): timed_point_dict = {} diff --git a/src/plotter/plotter3D.py b/dryvr_plus_plus/plotter/plotter3D.py similarity index 100% rename from src/plotter/plotter3D.py rename to dryvr_plus_plus/plotter/plotter3D.py diff --git a/src/scene_verifier/__init__.py b/dryvr_plus_plus/scene_verifier/__init__.py similarity index 100% rename from src/scene_verifier/__init__.py rename to dryvr_plus_plus/scene_verifier/__init__.py diff --git a/src/scene_verifier/agents/__init__.py b/dryvr_plus_plus/scene_verifier/agents/__init__.py similarity index 100% rename from src/scene_verifier/agents/__init__.py rename to dryvr_plus_plus/scene_verifier/agents/__init__.py diff --git a/src/scene_verifier/agents/base_agent.py b/dryvr_plus_plus/scene_verifier/agents/base_agent.py similarity index 77% rename from src/scene_verifier/agents/base_agent.py rename to dryvr_plus_plus/scene_verifier/agents/base_agent.py index e0044528e0c7ce5c0d0119b932d049c8d65b4802..ef0ec62717e0ff2068634811518ce687dc62005e 100644 --- a/src/scene_verifier/agents/base_agent.py +++ b/dryvr_plus_plus/scene_verifier/agents/base_agent.py @@ -1,4 +1,4 @@ -from src.scene_verifier.code_parser.pythonparser import ControllerAst +from dryvrpy.scene_verifier.code_parser.pythonparser import ControllerAst class BaseAgent: def __init__(self, id, code = None, file_name = None): diff --git a/src/scene_verifier/analysis/__init__.py b/dryvr_plus_plus/scene_verifier/analysis/__init__.py similarity index 100% rename from src/scene_verifier/analysis/__init__.py rename to dryvr_plus_plus/scene_verifier/analysis/__init__.py diff --git a/src/scene_verifier/analysis/analysis_tree_node.py b/dryvr_plus_plus/scene_verifier/analysis/analysis_tree_node.py similarity index 100% rename from src/scene_verifier/analysis/analysis_tree_node.py rename to dryvr_plus_plus/scene_verifier/analysis/analysis_tree_node.py diff --git a/src/scene_verifier/analysis/simulator.py b/dryvr_plus_plus/scene_verifier/analysis/simulator.py similarity index 94% rename from src/scene_verifier/analysis/simulator.py rename to dryvr_plus_plus/scene_verifier/analysis/simulator.py index 95532b12292077b9f5878d98bd5cc4bf86ea8aee..a112ab329a35731fc932bb602a09665e900a5f36 100644 --- a/src/scene_verifier/analysis/simulator.py +++ b/dryvr_plus_plus/scene_verifier/analysis/simulator.py @@ -3,8 +3,8 @@ import copy import numpy as np -from src.scene_verifier.agents.base_agent import BaseAgent -from src.scene_verifier.analysis.analysis_tree_node import AnalysisTreeNode +from dryvrpy.scene_verifier.agents.base_agent import BaseAgent +from dryvrpy.scene_verifier.analysis.analysis_tree_node import AnalysisTreeNode class Simulator: def __init__(self): @@ -22,9 +22,7 @@ class Simulator: ) for i, agent in enumerate(agent_list): root.init[agent.id] = init_list[i] - init_mode = init_mode_list[i][0].name - for j in range(1, len(init_mode_list[i])): - init_mode += (','+init_mode_list[i][j].name) + init_mode = [elem.name for elem in init_mode_list[i]] root.mode[agent.id] = init_mode root.agent[agent.id] = agent root.type = 'simtrace' diff --git a/src/scene_verifier/analysis/verifier.py b/dryvr_plus_plus/scene_verifier/analysis/verifier.py similarity index 94% rename from src/scene_verifier/analysis/verifier.py rename to dryvr_plus_plus/scene_verifier/analysis/verifier.py index 6854579bf94b851458f4f586be14e43c8728859d..0135cf6ec68f319c25fd4371a238381544737331 100644 --- a/src/scene_verifier/analysis/verifier.py +++ b/dryvr_plus_plus/scene_verifier/analysis/verifier.py @@ -3,10 +3,10 @@ import copy import numpy as np -from src.scene_verifier.agents.base_agent import BaseAgent -from src.scene_verifier.analysis.analysis_tree_node import AnalysisTreeNode -from src.scene_verifier.dryvr.core.dryvrcore import calc_bloated_tube -import src.scene_verifier.dryvr.common.config as userConfig +from dryvrpy.scene_verifier.agents.base_agent import BaseAgent +from dryvrpy.scene_verifier.analysis.analysis_tree_node import AnalysisTreeNode +from dryvrpy.scene_verifier.dryvr.core.dryvrcore import calc_bloated_tube +import dryvrpy.scene_verifier.dryvr.common.config as userConfig class Verifier: def __init__(self): diff --git a/src/scene_verifier/automaton/__init__.py b/dryvr_plus_plus/scene_verifier/automaton/__init__.py similarity index 100% rename from src/scene_verifier/automaton/__init__.py rename to dryvr_plus_plus/scene_verifier/automaton/__init__.py diff --git a/src/scene_verifier/automaton/guard.py b/dryvr_plus_plus/scene_verifier/automaton/guard.py similarity index 99% rename from src/scene_verifier/automaton/guard.py rename to dryvr_plus_plus/scene_verifier/automaton/guard.py index b3a2ebe7ee0ec68c2e7b02e79ba57f8b6b848bba..4e7202c3c2f2df496fcd6e4e7e30bf518d3d4368 100644 --- a/src/scene_verifier/automaton/guard.py +++ b/dryvr_plus_plus/scene_verifier/automaton/guard.py @@ -12,9 +12,9 @@ import sympy import astunparse import numpy as np -from src.scene_verifier.map.lane_map import LaneMap -from src.scene_verifier.map.lane_segment import AbstractLane -from src.scene_verifier.utils.utils import * +from dryvrpy.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.map.lane_segment import AbstractLane +from dryvrpy.scene_verifier.utils.utils import * class LogicTreeNode: def __init__(self, data, child = [], val = None, mode_guard = None): self.data = data diff --git a/src/scene_verifier/automaton/hybrid_automaton.py b/dryvr_plus_plus/scene_verifier/automaton/hybrid_automaton.py similarity index 100% rename from src/scene_verifier/automaton/hybrid_automaton.py rename to dryvr_plus_plus/scene_verifier/automaton/hybrid_automaton.py diff --git a/src/scene_verifier/automaton/hybrid_io_automaton.py b/dryvr_plus_plus/scene_verifier/automaton/hybrid_io_automaton.py similarity index 90% rename from src/scene_verifier/automaton/hybrid_io_automaton.py rename to dryvr_plus_plus/scene_verifier/automaton/hybrid_io_automaton.py index 74f2c963c7ec16095d2ecbc846da58a21e336702..44d074777da46883ebc59e222ffc6c4ceed265b4 100644 --- a/src/scene_verifier/automaton/hybrid_io_automaton.py +++ b/dryvr_plus_plus/scene_verifier/automaton/hybrid_io_automaton.py @@ -1,4 +1,4 @@ -from src.scene_verifier.automaton.hybrid_automaton import HybridAutomaton +from dryvrpy.scene_verifier.automaton.hybrid_automaton import HybridAutomaton class HybridIoAutomaton(HybridAutomaton): def __init__( diff --git a/src/scene_verifier/automaton/reset.py b/dryvr_plus_plus/scene_verifier/automaton/reset.py similarity index 100% rename from src/scene_verifier/automaton/reset.py rename to dryvr_plus_plus/scene_verifier/automaton/reset.py diff --git a/src/scene_verifier/code_parser/__init__.py b/dryvr_plus_plus/scene_verifier/code_parser/__init__.py similarity index 100% rename from src/scene_verifier/code_parser/__init__.py rename to dryvr_plus_plus/scene_verifier/code_parser/__init__.py diff --git a/src/scene_verifier/code_parser/pythonparser.py b/dryvr_plus_plus/scene_verifier/code_parser/pythonparser.py similarity index 100% rename from src/scene_verifier/code_parser/pythonparser.py rename to dryvr_plus_plus/scene_verifier/code_parser/pythonparser.py diff --git a/src/scene_verifier/dryvr/__init__.py b/dryvr_plus_plus/scene_verifier/dryvr/__init__.py similarity index 100% rename from src/scene_verifier/dryvr/__init__.py rename to dryvr_plus_plus/scene_verifier/dryvr/__init__.py diff --git a/src/scene_verifier/dryvr/common/__init__.py b/dryvr_plus_plus/scene_verifier/dryvr/common/__init__.py similarity index 100% rename from src/scene_verifier/dryvr/common/__init__.py rename to dryvr_plus_plus/scene_verifier/dryvr/common/__init__.py diff --git a/src/scene_verifier/dryvr/common/config.py b/dryvr_plus_plus/scene_verifier/dryvr/common/config.py similarity index 100% rename from src/scene_verifier/dryvr/common/config.py rename to dryvr_plus_plus/scene_verifier/dryvr/common/config.py diff --git a/src/scene_verifier/dryvr/common/constant.py b/dryvr_plus_plus/scene_verifier/dryvr/common/constant.py similarity index 100% rename from src/scene_verifier/dryvr/common/constant.py rename to dryvr_plus_plus/scene_verifier/dryvr/common/constant.py diff --git a/src/scene_verifier/dryvr/common/io.py b/dryvr_plus_plus/scene_verifier/dryvr/common/io.py similarity index 97% rename from src/scene_verifier/dryvr/common/io.py rename to dryvr_plus_plus/scene_verifier/dryvr/common/io.py index bf864448b0ab522a1f5e17df03d67e2be0512390..c0662420c8617c665537d1fe250d556e9903cf21 100644 --- a/src/scene_verifier/dryvr/common/io.py +++ b/dryvr_plus_plus/scene_verifier/dryvr/common/io.py @@ -4,7 +4,7 @@ This file contains IO functions for DryVR import six -from src.scene_verifier.dryvr.common.utils import DryVRInput, RrtInput, checkVerificationInput, checkSynthesisInput +from dryvrpy.scene_verifier.dryvr.common.utils import DryVRInput, RrtInput, checkVerificationInput, checkSynthesisInput def writeReachTubeFile(result, path): diff --git a/src/scene_verifier/dryvr/common/utils.py b/dryvr_plus_plus/scene_verifier/dryvr/common/utils.py similarity index 100% rename from src/scene_verifier/dryvr/common/utils.py rename to dryvr_plus_plus/scene_verifier/dryvr/common/utils.py diff --git a/src/scene_verifier/dryvr/core/__init__.py b/dryvr_plus_plus/scene_verifier/dryvr/core/__init__.py similarity index 100% rename from src/scene_verifier/dryvr/core/__init__.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/__init__.py diff --git a/src/scene_verifier/dryvr/core/distance.py b/dryvr_plus_plus/scene_verifier/dryvr/core/distance.py similarity index 100% rename from src/scene_verifier/dryvr/core/distance.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/distance.py diff --git a/src/scene_verifier/dryvr/core/dryvrcore.py b/dryvr_plus_plus/scene_verifier/dryvr/core/dryvrcore.py similarity index 94% rename from src/scene_verifier/dryvr/core/dryvrcore.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/dryvrcore.py index dfdefb7395e7b4a0b1de4cabdba083da509fc303..188e1e6b0fc5e1ed39bd920d95a06918cd7be8d3 100644 --- a/src/scene_verifier/dryvr/core/dryvrcore.py +++ b/dryvr_plus_plus/scene_verifier/dryvr/core/dryvrcore.py @@ -9,10 +9,10 @@ import numpy as np import igraph -from src.scene_verifier.dryvr.common.constant import * -from src.scene_verifier.dryvr.common.io import writeReachTubeFile -from src.scene_verifier.dryvr.common.utils import randomPoint, calcDelta, calcCenterPoint, trimTraces -from src.scene_verifier.dryvr.discrepancy.Global_Disc import get_reachtube_segment +from dryvrpy.scene_verifier.dryvr.common.constant import * +from dryvrpy.scene_verifier.dryvr.common.io import writeReachTubeFile +from dryvrpy.scene_verifier.dryvr.common.utils import randomPoint, calcDelta, calcCenterPoint, trimTraces +from dryvrpy.scene_verifier.dryvr.discrepancy.Global_Disc import get_reachtube_segment # from scene_verifier.dryvr.tube_computer.backend.reachabilityengine import ReachabilityEngine # from scene_verifier.dryvr.tube_computer.backend.initialset import InitialSet @@ -134,9 +134,9 @@ def simulate(g, init_condition, time_horizon, guard, sim_func, reset, init_verte g (obj): graph object init_condition (list): initial point time_horizon (float): time horizon to simulate - guard (src.core.guard.Guard): list of guard string corresponding to each transition + guard (dryvr_plus_plus.core.guard.Guard): list of guard string corresponding to each transition sim_func (function): simulation function - reset (src.core.reset.Reset): list of reset corresponding to each transition + reset (dryvr_plus_plus.core.reset.Reset): list of reset corresponding to each transition init_vertex (int): initial vertex that simulation starts deterministic (bool) : enable or disable must transition @@ -264,7 +264,7 @@ def calc_bloated_tube( bloating_method (str): determine the bloating method for reach tube, either GLOBAL or PW sim_trace_num (int): number of simulations used to calculate the discrepancy kvalue (list): list of float used when bloating method set to PW - guard_checker (src.core.guard.Guard or None): guard check object + guard_checker (dryvr_plus_plus.core.guard.Guard or None): guard check object guard_str (str): guard string Returns: diff --git a/src/scene_verifier/dryvr/core/dryvrmain.py b/dryvr_plus_plus/scene_verifier/dryvr/core/dryvrmain.py similarity index 96% rename from src/scene_verifier/dryvr/core/dryvrmain.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/dryvrmain.py index 7b085aab083f01e9af8b9fe52bd82857493d544c..7b0fc072627f2494f940305e2fc97c574c708c27 100644 --- a/src/scene_verifier/dryvr/core/dryvrmain.py +++ b/dryvr_plus_plus/scene_verifier/dryvr/core/dryvrmain.py @@ -4,21 +4,21 @@ This file contains a single function that verifies model from __future__ import print_function import time -import src.common.config as userConfig -from src.common.io import parseVerificationInputFile, parseRrtInputFile, writeRrtResultFile -from src.common.utils import buildModeStr, isIpynb, overloadConfig -from src.core.distance import DistChecker -from src.core.dryvrcore import * -from src.core.goalchecker import GoalChecker -from src.core.graph import Graph -from src.core.guard import Guard -from src.core.initialset import InitialSet -from src.core.initialsetstack import InitialSetStack, GraphSearchNode -from src.core.reachtube import ReachTube -from src.core.reset import Reset -from src.core.uniformchecker import UniformChecker -# from src.tube_computer.backend.reachabilityengine import ReachabilityEngine -# from src.tube_computer.backend.initialset import InitialSet +import dryvrpy.common.config as userConfig +from dryvrpy.common.io import parseVerificationInputFile, parseRrtInputFile, writeRrtResultFile +from dryvrpy.common.utils import buildModeStr, isIpynb, overloadConfig +from dryvrpy.core.distance import DistChecker +from dryvrpy.core.dryvrcore import * +from dryvrpy.core.goalchecker import GoalChecker +from dryvrpy.core.graph import Graph +from dryvrpy.core.guard import Guard +from dryvrpy.core.initialset import InitialSet +from dryvrpy.core.initialsetstack import InitialSetStack, GraphSearchNode +from dryvrpy.core.reachtube import ReachTube +from dryvrpy.core.reset import Reset +from dryvrpy.core.uniformchecker import UniformChecker +# from dryvr_plus_plus.tube_computer.backend.reachabilityengine import ReachabilityEngine +# from dryvr_plus_plus.tube_computer.backend.initialset import InitialSet def verify(data, sim_function, param_config=None): """ diff --git a/src/scene_verifier/dryvr/core/goalchecker.py b/dryvr_plus_plus/scene_verifier/dryvr/core/goalchecker.py similarity index 98% rename from src/scene_verifier/dryvr/core/goalchecker.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/goalchecker.py index ba84296c159c2d102123179eb75a5cb640e71dcc..93c354eb336b4c66f6d33cb78e205ebaa4254235 100644 --- a/src/scene_verifier/dryvr/core/goalchecker.py +++ b/dryvr_plus_plus/scene_verifier/dryvr/core/goalchecker.py @@ -2,7 +2,7 @@ This file contains uniform checker class for DryVR """ -from src.common.utils import handleReplace, neg +from dryvrpy.common.utils import handleReplace, neg from z3 import * diff --git a/src/scene_verifier/dryvr/core/graph.py b/dryvr_plus_plus/scene_verifier/dryvr/core/graph.py similarity index 100% rename from src/scene_verifier/dryvr/core/graph.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/graph.py diff --git a/src/scene_verifier/dryvr/core/guard.py b/dryvr_plus_plus/scene_verifier/dryvr/core/guard.py similarity index 99% rename from src/scene_verifier/dryvr/core/guard.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/guard.py index 76e7e8238defec4aaa34af58a41ce1609455306f..03e810d202991bbf2add27707d244acf7e844d91 100644 --- a/src/scene_verifier/dryvr/core/guard.py +++ b/dryvr_plus_plus/scene_verifier/dryvr/core/guard.py @@ -7,7 +7,7 @@ import random import sympy from z3 import * -from src.common.utils import handleReplace +from dryvrpy.common.utils import handleReplace class Guard: diff --git a/src/scene_verifier/dryvr/core/initialset.py b/dryvr_plus_plus/scene_verifier/dryvr/core/initialset.py similarity index 100% rename from src/scene_verifier/dryvr/core/initialset.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/initialset.py diff --git a/src/scene_verifier/dryvr/core/initialsetstack.py b/dryvr_plus_plus/scene_verifier/dryvr/core/initialsetstack.py similarity index 100% rename from src/scene_verifier/dryvr/core/initialsetstack.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/initialsetstack.py diff --git a/src/scene_verifier/dryvr/core/reachtube.py b/dryvr_plus_plus/scene_verifier/dryvr/core/reachtube.py similarity index 100% rename from src/scene_verifier/dryvr/core/reachtube.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/reachtube.py diff --git a/src/scene_verifier/dryvr/core/reset.py b/dryvr_plus_plus/scene_verifier/dryvr/core/reset.py similarity index 99% rename from src/scene_verifier/dryvr/core/reset.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/reset.py index 684b9c5e2b3af8de2ba8231d51e8d3dafdd32875..f6ed8f6b5b379ea2e5441b6989be18c4c9824854 100644 --- a/src/scene_verifier/dryvr/core/reset.py +++ b/dryvr_plus_plus/scene_verifier/dryvr/core/reset.py @@ -4,7 +4,7 @@ This file contains reset class for DryVR import sympy -from src.common.utils import randomPoint +from dryvrpy.common.utils import randomPoint class Reset: diff --git a/src/scene_verifier/dryvr/core/uniformchecker.py b/dryvr_plus_plus/scene_verifier/dryvr/core/uniformchecker.py similarity index 98% rename from src/scene_verifier/dryvr/core/uniformchecker.py rename to dryvr_plus_plus/scene_verifier/dryvr/core/uniformchecker.py index 57641ad630bed35fed0199d015a90b7af6ba9210..f85fe792e1526d448e87fbcf79374debf3acfbf5 100644 --- a/src/scene_verifier/dryvr/core/uniformchecker.py +++ b/dryvr_plus_plus/scene_verifier/dryvr/core/uniformchecker.py @@ -4,8 +4,8 @@ This file contains uniform checker class for DryVR import sympy from z3 import * -from src.common.constant import * -from src.common.utils import handleReplace, neg +from dryvrpy.common.constant import * +from dryvrpy.common.utils import handleReplace, neg class UniformChecker: diff --git a/src/scene_verifier/dryvr/discrepancy/Global_Disc.py b/dryvr_plus_plus/scene_verifier/dryvr/discrepancy/Global_Disc.py similarity index 100% rename from src/scene_verifier/dryvr/discrepancy/Global_Disc.py rename to dryvr_plus_plus/scene_verifier/dryvr/discrepancy/Global_Disc.py diff --git a/src/scene_verifier/dryvr/discrepancy/PW_Discrepancy.py b/dryvr_plus_plus/scene_verifier/dryvr/discrepancy/PW_Discrepancy.py similarity index 100% rename from src/scene_verifier/dryvr/discrepancy/PW_Discrepancy.py rename to dryvr_plus_plus/scene_verifier/dryvr/discrepancy/PW_Discrepancy.py diff --git a/src/scene_verifier/dryvr/discrepancy/__init__.py b/dryvr_plus_plus/scene_verifier/dryvr/discrepancy/__init__.py similarity index 100% rename from src/scene_verifier/dryvr/discrepancy/__init__.py rename to dryvr_plus_plus/scene_verifier/dryvr/discrepancy/__init__.py diff --git a/src/scene_verifier/map/__init__.py b/dryvr_plus_plus/scene_verifier/map/__init__.py similarity index 100% rename from src/scene_verifier/map/__init__.py rename to dryvr_plus_plus/scene_verifier/map/__init__.py diff --git a/src/scene_verifier/map/lane.py b/dryvr_plus_plus/scene_verifier/map/lane.py similarity index 96% rename from src/scene_verifier/map/lane.py rename to dryvr_plus_plus/scene_verifier/map/lane.py index cdc2551fa15ba974e820b6648d30adee4c6a4996..b482debdffdf838c3bb9bbc7781b8369a79f4883 100644 --- a/src/scene_verifier/map/lane.py +++ b/dryvr_plus_plus/scene_verifier/map/lane.py @@ -2,7 +2,7 @@ from typing import List import numpy as np -from src.scene_verifier.map.lane_segment import AbstractLane +from dryvrpy.scene_verifier.map.lane_segment import AbstractLane class Lane(): COMPENSATE = 3 diff --git a/src/scene_verifier/map/lane_map.py b/dryvr_plus_plus/scene_verifier/map/lane_map.py similarity index 96% rename from src/scene_verifier/map/lane_map.py rename to dryvr_plus_plus/scene_verifier/map/lane_map.py index e63fe31b837370777a17670ecc489805bba5b69f..658c49dca39fcc252981ded28119636177a9a304 100644 --- a/src/scene_verifier/map/lane_map.py +++ b/dryvr_plus_plus/scene_verifier/map/lane_map.py @@ -4,8 +4,8 @@ from enum import Enum import numpy as np -from src.scene_verifier.map.lane_segment import AbstractLane -from src.scene_verifier.map.lane import Lane +from dryvrpy.scene_verifier.map.lane_segment import AbstractLane +from dryvrpy.scene_verifier.map.lane import Lane class LaneMap: def __init__(self, lane_seg_list:List[Lane] = []): diff --git a/src/scene_verifier/map/lane_segment.py b/dryvr_plus_plus/scene_verifier/map/lane_segment.py similarity index 98% rename from src/scene_verifier/map/lane_segment.py rename to dryvr_plus_plus/scene_verifier/map/lane_segment.py index 3b841ae8950f2a96e7c93fafe3ed89e062e7b9b4..0c20dc9a06703c6e509e61f6200e4d86580cc7bd 100644 --- a/src/scene_verifier/map/lane_segment.py +++ b/dryvr_plus_plus/scene_verifier/map/lane_segment.py @@ -3,7 +3,7 @@ import numpy as np from abc import ABCMeta, abstractmethod from typing import Tuple, List, Optional, Union -from src.scene_verifier.utils.utils import wrap_to_pi, Vector, get_class_path, class_from_path,to_serializable +from dryvrpy.scene_verifier.utils.utils import wrap_to_pi, Vector, get_class_path, class_from_path,to_serializable class LineType: diff --git a/src/scene_verifier/scenario/__init__.py b/dryvr_plus_plus/scene_verifier/scenario/__init__.py similarity index 100% rename from src/scene_verifier/scenario/__init__.py rename to dryvr_plus_plus/scene_verifier/scenario/__init__.py diff --git a/src/scene_verifier/scenario/scenario.py b/dryvr_plus_plus/scene_verifier/scenario/scenario.py similarity index 96% rename from src/scene_verifier/scenario/scenario.py rename to dryvr_plus_plus/scene_verifier/scenario/scenario.py index 49453404022848b67f9e66466dfa1a7a7ca44262..095542954e1d34f742ef13aeeca0b72a063cff94 100644 --- a/src/scene_verifier/scenario/scenario.py +++ b/dryvr_plus_plus/scene_verifier/scenario/scenario.py @@ -5,14 +5,14 @@ import warnings import numpy as np -from src.scene_verifier.agents.base_agent import BaseAgent -from src.scene_verifier.automaton.guard import GuardExpressionAst -from src.scene_verifier.automaton.reset import ResetExpression -from src.scene_verifier.code_parser.pythonparser import Guard, Reset -from src.scene_verifier.analysis.simulator import Simulator -from src.scene_verifier.analysis.verifier import Verifier -from src.scene_verifier.map.lane_map import LaneMap -from src.scene_verifier.utils.utils import * +from dryvrpy.scene_verifier.agents.base_agent import BaseAgent +from dryvrpy.scene_verifier.automaton.guard import GuardExpressionAst +from dryvrpy.scene_verifier.automaton.reset import ResetExpression +from dryvrpy.scene_verifier.code_parser.pythonparser import Guard, Reset +from dryvrpy.scene_verifier.analysis.simulator import Simulator +from dryvrpy.scene_verifier.analysis.verifier import Verifier +from dryvrpy.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.utils.utils import * class Scenario: def __init__(self): diff --git a/src/scene_verifier/utils/__init__.py b/dryvr_plus_plus/scene_verifier/utils/__init__.py similarity index 100% rename from src/scene_verifier/utils/__init__.py rename to dryvr_plus_plus/scene_verifier/utils/__init__.py diff --git a/src/scene_verifier/utils/utils.py b/dryvr_plus_plus/scene_verifier/utils/utils.py similarity index 100% rename from src/scene_verifier/utils/utils.py rename to dryvr_plus_plus/scene_verifier/utils/utils.py diff --git a/example_controller1.py b/example_controller1.py index 5a870473b884ae50897f8fc7d4ea6fb409cd9216..d2064d0f6c28381e57b20b1be53851249ab7e9a6 100644 --- a/example_controller1.py +++ b/example_controller1.py @@ -1,6 +1,6 @@ from enum import Enum, auto import copy -from src.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.map.lane_map import LaneMap class LaneObjectMode(Enum): Vehicle = auto() diff --git a/example_controller2.py b/example_controller2.py index 0c09ce25e113c103a47c1e5c865f3e0d46e45cd6..4738b10146d7871759774acfbe073e6f3674f468 100644 --- a/example_controller2.py +++ b/example_controller2.py @@ -1,6 +1,6 @@ from enum import Enum, auto import copy -from src.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.map.lane_map import LaneMap class VehicleMode(Enum): Normal = auto() diff --git a/example_controller3.py b/example_controller3.py index 504995e3601fa244237c2c91e5edfe4e6d8f3716..d162f143f8a0e165114a93f596591ebd3e7e3401 100644 --- a/example_controller3.py +++ b/example_controller3.py @@ -1,6 +1,6 @@ from enum import Enum, auto import copy -from src.scene_verifier.map.lane_map import LaneMap +from dryvrpy.scene_verifier.map.lane_map import LaneMap class VehicleMode(Enum): Normal = auto() diff --git a/example_two_car_sign_lane_switch.py b/example_two_car_sign_lane_switch.py index a18b874cabc712e20fff2ca469222db551845dd8..cc895f1df86463130117ad9c9b9a68a28d30f3d4 100644 --- a/example_two_car_sign_lane_switch.py +++ b/example_two_car_sign_lane_switch.py @@ -68,12 +68,12 @@ def controller(ego: State, other: State, sign: State, lane_map): return output -from src.example.example_agent.car_agent import CarAgent -from src.example.example_agent.sign_agent import SignAgent -from src.scene_verifier.scenario.scenario import Scenario -from src.example.example_map.simple_map2 import SimpleMap3 -from src.plotter.plotter2D import plot_reachtube_tree, plot_simulation_tree -from src.example.example_sensor.fake_sensor import FakeSensor2 +from dryvrpy.example.example_agent.car_agent import CarAgent +from dryvrpy.example.example_agent.sign_agent import SignAgent +from dryvrpy.scene_verifier.scenario.scenario import Scenario +from dryvrpy.example.example_map.simple_map2 import SimpleMap3 +from dryvrpy.plotter.plotter2D import plot_reachtube_tree, plot_simulation_tree +from dryvrpy.example.example_sensor.fake_sensor import FakeSensor2 import matplotlib.pyplot as plt @@ -92,7 +92,7 @@ if __name__ == "__main__": scenario.set_init( [ [[10, 0, 0, 0.5],[10, 0, 0, 0.5]], - [[0, -0.2, 0, 1.0],[0.2, -0.2, 0, 1.0]], + [[0, -0.2, 0, 1.0],[0.2, 0.2, 0, 1.0]], [[20, 0, 0, 0],[20, 0, 0, 0]], ], [ diff --git a/setup.py b/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..25e99f51d402f9a5352c5203612e0aba391f0a52 --- /dev/null +++ b/setup.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +from setuptools import setup + +setup( + name='dryvr_plus_plus', + version='0.1', + description='DryVR++', + author='MaybeShewill-CV', + maintainer='Chiao Hsieh', + maintainer_email='chsieh16@illinois.edu', + license='Apache-2.0', + packages=["dryvr_plus_plus"], + python_requires='>=3.6', + install_requires=[ + "numpy~=1.22.1", + "scipy~=1.8.0", + "matplotlib~=3.4.2", + "polytope~=0.2.3", + "pyvista~=0.32.1", + "networkx~=2.2", + "sympy~=1.6.2", + "six~=1.14.0", + "astunparse~=1.6.3", + "treelib~=1.6.1", + "z3-solver~=4.8.17.0", + "igraph~=0.9.10", + ], + classifiers=[ + 'Development Status :: 2 - Pre-Alpha', + 'Intended Audience :: Science/Research', + 'Topic :: Scientific/Engineering', + 'License :: OSI Approved :: Apache License 2.0', + 'Programming Language :: Python :: 3.8', + ] +) \ No newline at end of file diff --git a/tests/testdpp.py b/tests/testdpp.py index e544e0493de355594d711f3a3ebf1410f6fb11b9..c425ca1dc20d6a2a9c33a085f0cc7f79bc7aa0b5 100644 --- a/tests/testdpp.py +++ b/tests/testdpp.py @@ -47,10 +47,10 @@ def controller(ego:State): return output_vehicle_mode, output_lane_mode -from src.example.example_agent.car_agent import CarAgent -from src.scene_verifier.scenario.scenario import Scenario -from src.example.example_map.simple_map import SimpleMap2 -from src.example.example_sensor.fake_sensor import FakeSensor1 +from dryvrpy.example.example_agent.car_agent import CarAgent +from dryvrpy.scene_verifier.scenario.scenario import Scenario +from dryvrpy.example.example_map.simple_map import SimpleMap2 +from dryvrpy.example.example_sensor.fake_sensor import FakeSensor1 import matplotlib.pyplot as plt import numpy as np