diff --git a/main.py b/main.py index f1c1c12..6934b04 100644 --- a/main.py +++ b/main.py @@ -120,11 +120,11 @@ def build(name: str, map_name: str, lat: float, lon: float): sleep(15) online_map.destroy() -def run(name: str, map_name: str): +def run(name: str, map_name: str, ref_min_distance: float): dir = Path('trajectories') assert dir.exists() dir /= name - assert dir.exists() + assert dir.exists(), "Укажите корректное название маршрута" dir_chunks = dir / 'chunks' file_positions = dir / 'positions.pkl' @@ -140,9 +140,11 @@ def run(name: str, map_name: str): chunks: list[VisionChunk] = [] for i in range(len(data['chunk_positions'])): - chunk = VisionChunk.load_image(dir_chunks / f"chunk_{i}.png") - chunk.pos = data['chunk_positions'][i] / online_map.pixel_ratio - chunks.append(chunk) + pos = data['chunk_positions'][i] + if len(chunks) == 0 or np.hypot(chunks[-1].pos.x - pos.x, chunks[-1].pos.y - pos.y) > ref_min_distance: + chunk = VisionChunk.load_image(dir_chunks / f"chunk_{i}.png") + chunk.pos = data['chunk_positions'][i] / online_map.pixel_ratio + chunks.append(chunk) points = data['points'] / online_map.pixel_ratio print("READ POINTS:", points) @@ -214,16 +216,6 @@ def run(name: str, map_name: str): print("Average FPS:", 1 / proc_time.mean()) vis_manager.show_final() -def main(mode: str, name: str, lat: float, lon: float, ref: str, sim: str): - if name is None: - name = utility.generate_folder_name() - - if mode == 'build' or mode == 'standalone': - build(name, ref, lat, lon) - - if mode == 'run' or mode == 'standalone': - run(name, sim) - def parse_args(): """Парсер аргументов командной строки""" parser = argparse.ArgumentParser(description='Обработка траекторий') @@ -241,7 +233,8 @@ def parse_args(): parser.add_argument( '--name', type=str, - help='Название траектории (обязательно для режимов build и run)' + default=utility.generate_folder_name(), + help='Название траектории' ) # Координаты @@ -277,6 +270,14 @@ def parse_args(): help='Где проводится симуляция: google или yandex (по умолчанию yandex)' ) + # Место проведения симуляции + parser.add_argument( + '--ref-min-distance', + type=float, + default=100, + help='Минимальное расстояние между эталонами' + ) + # Парсим аргументы args = parser.parse_args() @@ -289,4 +290,16 @@ def parse_args(): if __name__ == "__main__": args = parse_args() - main(args.mode, args.name, args.lat, args.lon, args.reference, args.simulation) + name = args.name + mode = args.mode + sim: str = args.simulation + ref: str = args.reference + lat: float = args.lat + lon: float = args.lon + rmd: float = args.ref_min_distance + + if mode == 'build' or mode == 'standalone': + build(name, ref, lat, lon) + + if mode == 'run' or mode == 'standalone': + run(name, sim, rmd)