feat: min-ref-distance

This commit is contained in:
2026-01-12 13:54:41 +03:00
parent 05c249ed78
commit 7cd700c1fa

41
main.py
View File

@@ -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,6 +140,8 @@ def run(name: str, map_name: str):
chunks: list[VisionChunk] = []
for i in range(len(data['chunk_positions'])):
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)
@@ -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)