From 329df21fcecf46ae08bb6431670524cbb5f73f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D0=B8=D0=BB=20=D0=9E=D0=BC=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D1=87=D0=BA=D0=BE?= Date: Tue, 22 Sep 2026 14:55:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=81=D1=8C=20=D0=BF=D1=83=D1=82=D0=B8:?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=80=D0=B8=D0=BB=20=D1=83=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D0=B9=D1=87=D0=B8=D0=B2=D0=BE=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?=D0=B8=20=D0=B3=D0=BE=D1=80=D0=B8=D0=B7=D0=BE=D0=BD=D1=82,=20?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=D0=B2=D0=BE=D1=80=D0=BA=D0=B0=20=D0=BA=20?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D1=8C=D0=BD=D0=B8=D0=BC=20=D1=86=D0=B8=D1=84?= =?UTF-8?q?=D1=80=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/EXPERIMENTS.md | 60 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/docs/EXPERIMENTS.md b/docs/EXPERIMENTS.md index 1ada1b7..dbc64b6 100644 --- a/docs/EXPERIMENTS.md +++ b/docs/EXPERIMENTS.md @@ -1570,3 +1570,63 @@ P@150 0.32), а на всём, что меньше, — заметно хуже: четвертью ложных треков на обеих сценах. Механизм оставлен в коде выключенным (`near_long: 0`): на линии без платформ у самого габарита он может оказаться дешевле — но проверять это надо замером на той линии. + +## 13. Ось пути вдаль: устойчивость, горизонт и чего полигон не мерит + +В общем чате организаторов участники пишут, что не могут устойчиво вести +путь с габаритом за 100 м — «облако очень разрежённое». Посылка верна: +рельсы на 100 м дают единицы точек. Мы их и не прослеживаем — ось берётся +из **дрейфа центра сечения тоннеля** с дальностью, а свод даёт тысячи точек +там, где рельсы не дают ничего. + +Замер устойчивости: сдвиг оси в одной и той же точке пути между соседними +кадрами, 160 кадров на бэг. + +| бэг | ось видна до | скачок @100 м, медиана/p90 | @150 м | ошибка касательной @150 | +|---|---:|---:|---:|---:| +| `doubleT_platform` | 86 м | 0.07 / 0.35 м | 0.10 / 0.67 | 0.16 м | +| `roundT_doubleT` | 107 м | 0.08 / 0.33 | 0.18 / 0.65 | 0.30 | +| `roundT_pressureGate_roundT` | 77 м | 0.07 / 0.31 | 0.11 / 0.85 | 0.51 | +| `roundT_squareT_pressureGate_squareT` | 69 м | 0.01 / 0.04 | 0.02 / 0.09 | 0.33 | +| `squareT_platform_squareT_switch` | 62 м | 0.04 / 0.28 | 0.05 / 0.57 | 0.91 | + +На 100 м ось **не перескакивает**: худший p90 — 0.35 м при полуширине +габарита 1.6 м. Настоящее ограничение другое: сечение наблюдается только до +62–107 м, дальше ось продолжается касательной, и касательная расходится с +кривой до 1.19 м на 150 м. + +### 13.1. Почему не продолжать кривизну + +Напрашивается продолжать за горизонт не касательную, а измеренную кривизну: +железнодорожная кривая — длинная дуга постоянного радиуса. Проверено: + +| бэг | разброс c₂ по кадрам (p10…p90) | расхождение на 150 м | +|---|---:|---:| +| `doubleT_obstacle` | 1.4·10⁻⁴ | 0.77 м | +| `doubleT_platform` | 3.9·10⁻⁴ | 0.70 м | +| `roundT_doubleT` | 10.3·10⁻⁴ | 1.87 м | +| `roundT_pressureGate_roundT` | 7.7·10⁻⁴ | **5.03 м** | +| `roundT_squareT_pressureGate_squareT` | 0.9·10⁻⁴ | 0.58 м | +| `squareT_platform_squareT_switch` | 8.0·10⁻⁴ | **6.25 м** | + +Кривизна оценивается на коротком плече (до 62–107 м) и гуляет между кадрами; +её продолжение до 150 м даёт до 6 м расхождения против 0.16–1.19 м у +касательной. Нынешнее поведение `Corridor.centre` — линейное продолжение по +касательной — **лучшее из двух**, и теперь это подтверждено замером, а не +только рассуждением в комментарии. + +### 13.2. Чего размеченный полигон не мерит + +Предмет вставляется в точку `corridor.centre(d) + смещение`, то есть **на +нашу же оценку оси**. Поэтому полигон по построению не может обнаружить +ошибку оси: где бы мы ни считали путь, предмет окажется там же. + +В эксплуатации это не так. Настоящий предмет стоит на настоящем пути, и на +150 м он может оказаться в 0.16–1.19 м от того места, где мы путь считаем — +при полуширине габарита 1.6 м этого хватает, чтобы предмет у края габарита +выпал за него. Дальние цифры полигона поэтому **оптимистичны по этой +причине**, и честно это назвать: не из-за алгоритма обнаружения, а из-за +того, что дальше 62–107 м мы путь не наблюдаем, а продолжаем. + +Закрыть это можно только видимостью: накопление по кадрам не поможет, +потому что за горизонтом прямой видимости данных нет ни в одном кадре.