feat: min-ref-distance
This commit is contained in:
41
main.py
41
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,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)
|
||||
|
||||
Reference in New Issue
Block a user