Brainrot_Muxa/ros2_ws/src/flyguard/config/flyguard.yaml

126 lines
11 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Параметры ноды FlyGuard.
# Меняются при запуске: ros2 launch flyguard detect.launch.py fov_deg:=35.0
flyguard:
ros__parameters:
# --- вход -------------------------------------------------------------
# В предоставленных записях встречаются оба имени топика, поэтому нода
# подписывается и на основной, и на запасные: какой появится, с тем и работает.
input_topic: /lidar_points
fallback_topics:
- /sensing/lidar/hesai128/pointcloud
- /points_raw
# Кадр лидара весит до 24 МБ и уходит по UDP десятками тысяч фрагментов.
# При BEST_EFFORT потеря одного фрагмента отбрасывает всё сообщение целиком,
# поэтому по умолчанию надёжная доставка.
best_effort: false
queue_depth: 10
# Сырые байты CDR вместо сборки Python-объекта sensor_msgs: на 24 МБ она
# стоит дороже всей обработки. Разбор идёт своим парсером, без копирования.
raw_subscription: true
# Обработка в колбэке, а не в отдельном потоке: поток боролся за GIL
# с приёмом и ронял выработку с 10 до 2 Гц при такте конвейера 32 мс.
async_worker: false
frame_id: "" # пусто — берётся из заголовка сообщения
# --- габарит и зона поиска -------------------------------------------
# Полуширина габарита: так его задают организаторы в синтетике 24.09
# («у края» — до 1.13 м от оси, «вне, но близко» — с 1.14). Было 1.6:
# ложная тревога на предмете вне габарита. EXPERIMENTS п. 18.4.
half_width: 1.2 # полуширина габарита приближения, м
h_lo: 0.28 # нижняя граница над головкой рельса, м
h_hi: 2.3 # верхняя граница, м
# Верхняя секция: от h_hi до h_top, но уже, |u| < half_width_top, и не
# дальше top_d_max — то, что свисает со свода в путь вагона. У стен на этой
# высоте кабели и светильники, поэтому основной ширины там нет. 0 — выкл.
h_top: 3.3
half_width_top: 1.0
top_d_max: 90.0
# Пол между рельсами (|u| <= 0.85 м) опущен, но только дальше core_from:
# лежащий человек высотой 0.30 м при поле 0.28 м виден верхушкой в два
# сантиметра. Ближе пол прежний — там в полосу 0.16…0.28 м попадают
# головки рельсов, рельс собирается в одну компоненту от кабины, и
# предмет выбрасывается вместе с ней. EXPERIMENTS п. 16.3.
h_lo_core: 0.16 # пол в колее, м
core_from: 30.0 # с какой дальности он опускается, м
# Кластеризация ведётся по области выше габарита, чтобы увидеть, что колонна
# или рама крепи продолжается до свода: без этого срез конструкции по верхней
# границе сам выглядит компактным предметом ростом с габарит.
ctx_up: 4.0 # насколько контекст поднимается выше h_hi, м
# Разделение фигуры и фона по скорости сближения вдоль луча. Стена,
# параллельная движению, вдоль луча не приближается; предмет приближается
# ровно на пройденный путь. Поднимает рабочую дальность с 62 до 80 м, но
# вчетверо увеличивает ложные тревоги — в тоннеле много поверхностей,
# обращённых к поезду. 0 — выключено, рабочее значение 0.6.
split_adv: 0.0
# Разделение фигуры и фона по контрасту ламины. Гладкая стена даёт нулевой
# центр-окружение по построению, предмет на стене — ступеньку. Разрезаются
# только компоненты, растёкшиеся вдоль стены (глубже max_depth), и только
# по лучам, торчащим из своего окружения дальше этого порога, м.
# 0 — выключено.
split_gap: 6.0
split_near: 55.0 # ближе этого не резать: там предмет виден и так, м
# Сколько фигур выносить из одной компоненты. Разрез отрезает фон, и
# протяжённость кандидата вдоль пути падает с 6.9 до 0.8 м — вместе с ней
# пропадает множитель компактности, давивший конструкции вдесятеро. Поэтому
# каждая лишняя фигура дорога: без ограничения 9.4 ложных трека на км, при
# двух 7.4, при одной 6.4 — и дальность обнаружения при этом одна и та же.
split_top: 1
# --- привыкание внутри проезда (кратковременная память) -------------
# Замысел: гасить формы, встретившиеся в нескольких разных точках пути, без
# единого прошлого проезда. ВЫКЛЮЧЕНО: измерено, что избирательности нет —
# при неснасыщающейся ёмкости механизм не меняет ничего (7.5 против 7.5
# ложных треков на км), а видимый эффект маленькой популяции был насыщением,
# которое давит предмет сильнее обстановки. EXPERIMENTS п. 10.
enable_habituation: false
hab_rate: 0.25 # депрессия KC→MBON за одно новое место
hab_place_m: 5.0 # разнос, с которого место считается другим, м
hab_recover_m: 800.0 # путь, за который привыкание сходит наполовину, м
# --- накопление слабых улик (веерное тело) --------------------------
# Предмет неподвижен в мире, тоннель проплывает мимо: лучи из габарита
# складываются в сетку, привязанную к пути. На дальностях, где локальный
# контраст структурно равен нулю (кольцо окружения упирается в стену той
# же дальности), это единственная доступная улика. Удваивает рабочую
# дальность ценой роста ложных треков с 5.2 до 9.1 на километр.
enable_accumulator: true
acc_near: 55.0 # ближе этого покадровый тракт справляется сам, м
acc_gain: 1.5 # опора, засчитываемая за полный контраст
# --- обученное считывание MBON ---------------------------------------
# Те же слои грибовидного тела, другой учитель: веса KC→MBON обучены
# различать предмет и обстановку на метках, изготовленных физикой
# (tools/make_training_set.py). Заменяет ручную формулу веса улики.
# Путь подставляется launch-файлом (artifacts/mbon_readout.npz в пакете);
# пустой — работает прежняя ручная формула.
mbon_path: ""
enable_mbon: true
# Резкость вероятности: вес наблюдения p**1.5. Ложных на незнакомой линии
# 23.5 → 14.7 на км почти без потери дальности (EXPERIMENTS п. 17.4).
mbon_power: 1.5
mbon_blend: 1.0 # 1 — только модель, 0 — только ручная формула
# --- вычисления ----------------------------------------------------------
# Сетчатка, ламина и кластеризация — на видеокарте, если PyTorch её видит
# (контейнер с --gpus all), иначе и при любом сбое — на процессоре.
# Результат одинаков: те же операции в тех же типах (EXPERIMENTS п. 21).
# Видеокарта поднимается в фоне: пока греются ядра CUDA, кадры считает процессор.
device: auto # auto | cuda | cpu
d_min: 4.0 # ближе этого не смотрим, м
d_max: 220.0 # дальше физического предела прибора смысла нет, м
fov_deg: 30.0 # полусектор обработки по азимуту, °
min_rays: 4 # минимум лучей на кандидата
# --- память тоннеля ---------------------------------------------------
# Без неё штатные конструкции тоннеля не подавляются и ложных тревог заметно больше.
memory_path: "" # путь подставляется launch-файлом
# --- вывод ------------------------------------------------------------
publish_markers: true
publish_debug_cloud: false
brain_view: false # вид мозга: для демонстрации, не для замеров задержки
# scheme — нарисованная схема нейропилей;
# cloud — 139 255 нейронов коннектома FlyWire на своих местах;
# hybrid — панели решётки сверху и облако нейронов снизу (по умолчанию).
brain_style: hybrid
brain_period: 0.2
brain_scale: 1 # масштаб вида мозга: 2–3 — картинка для 2K/4K (атласы x2, x3)