ESPNFollow live: Valkyries battle Dream in Game 1 of WNBA FinalsESPN DeportesRays y Guardians mantienen alineaciones del viernes para el sábadoRTP DesportoIúri Leitão é outra vez campeão do mundoThe Jerusalem PostRomanian F-16 fighter jets shoot down two drones over Romanian territorial watersZDF heuteEntdecken Sie das ZDF-NachrichtenstudioNHK 社会秋田 奈良 クマに襲われけが人相次ぐ 警察などが注意呼びかけMyJoyOnlineA proper reset would’ve been to clear the EC and set new standards – Suhuyini on EC appointmentsInteriaPłoną warte miliony rezydencje, pożary w Kalifornii. Wezwanie do ewakuacjiGuardian SportDaniel Dubois v Fabio Wardley II: WBO heavyweight title fight – liveFrance 24Looters seize on massive French protests to raid and vandalise shopsSRF NewsDie Kunst, loszulassen – Julia Steiner: «Scheitern war keine Option»NOS SportVan Veen met recordgemiddelde op Europese tour langs Bialecki, Van Gerwen meteen klaar
The Daily Newsstand · Free, Always
Saturday, October 17, 2026

Робот в тумане: лошадь оставить, туман удалить

Translate

Утром наш уличный SpeedyBot отказался ехать: вокруг препятствия. Перед ним свободно. Протёрли лидар. Лучше не стало. Зато на облаке точек обнаружилось почти аккуратное кольцо вокруг корпуса. Получился «Ёжик в тумане», которому вместо лошади привиделась круговая оборона.

Дальше были миллионы точек, поездки к скамейке, виртуальные сетки и фильтр, который сначала научился убирать туман, а потом слишком увлёкся. Рассказываю, как мы вернули ему чувство меры.

Лидар чистый. Призраки настоящие

Первое подозрение пало на грязь, корпус робота и старые препятствия на карте. Поэтому пошли по цепочке назад: костмапа → облако препятствий → облако после локализации → сырые измерения RoboSense Airy Lite.

Выбрали 731 подозрительную точку, попавшую в слой статических препятствий. Все проследились до сырых измерений. У всех отражательная способность оказалась 2 или 3. Призраков приносил сам сенсор; искать их источник в интерфейсе уже не имело смысла.

Начало расследования. Слева сырые измерения, справа точки, которые добрались до слоя препятствий. Лидар окружил робота слабым кольцом примерно метрового радиуса.

Начало расследования. Слева сырые измерения, справа точки, которые добрались до слоя препятствий. Лидар окружил робота слабым кольцом примерно метрового радиуса.

На улице был лёгкий туман. Для лидара капли могут стать источником ложных отражений; такую остановку робота описывают и в работе Heinzler и соавторов о погодном шуме. В наших данных подозрительное поле ещё и заметно менялось между кадрами. Гипотеза складывалась.

Пока туман не ушёл, записали минуту: 598 сканов, 5,81 миллиона точек. Теперь утро можно было переигрывать сколько угодно, не заказывая погоду заново.

Первая очистка в масштабе всей сцены. Дальние стены и ограждения остаются на месте, работа идёт в ближнем облаке вокруг робота. До окончательной победы здесь ещё далеко.

Первая очистка в масштабе всей сцены. Дальние стены и ограждения остаются на месте, работа идёт в ближнем облаке вокруг робота. До окончательной победы здесь ещё далеко.

97% — отличный результат. Только робот об этом не знает

Начали с простого: убирать слабые ближние отражения без убедительной поддержки соседей. Затем добавили поиск линий и плоскостей, чтобы оставлять точки предметов. Вторая версия подавила 97,19% слабых кандидатов в области 0,4–2,2 метра.

Один и тот же кадр: 797 слабых точек → 276 → 14. На картинке почти чисто. Для навигации слово «почти» оказалось очень дорогим.

Один и тот же кадр: 797 слабых точек → 276 → 14. На картинке почти чисто. Для навигации слово «почти» оказалось очень дорогим.

Костмапа раздувает каждое препятствие: оставляет вокруг него запас для габаритов робота. Несколько точек превращаются в несколько пятен запретной территории. Так что красивая цифра подавления ещё не означает свободный проезд. Нам понадобилось убрать кольцо целиком.

Возник соблазн: если основную массу уже признали туманом, дочистим одиночные остатки. Заодно отдельно исключили отражения собственного корпуса по его геометрическим границам. Картинка улучшилась. А потом мы подсунули фильтру сетку.

Контрпример для агрессивной версии: одна модель сетки на одном туманном фоне. В 2,5 метра видны все 15 отражений, в 2 метрах фильтр удаляет все. Вот тебе и плащ-невидимка.

Контрпример для агрессивной версии: одна модель сетки на одном туманном фоне. В 2,5 метра видны все 15 отражений, в 2 метрах фильтр удаляет все. Вот тебе и плащ-невидимка.

Редкий слабый сигнал бывает у тонкого столбика, проволоки, сетки, края доски. Просто вычесть всё слабое вокруг робота было бы слишком удобным способом получить чистую карту.

Пока писали фильтр, туман закончился

Зато появился отличный контрольный эксперимент. Повторили запись почти из той же позы, с прежним лидаром и настройками. Утром медиана слабых внешних точек была 809 на кадр. После рассеивания тумана стала нулевой; за целую минуту нашлось всего 45 таких точек. Кольцо исчезло вместе с погодой.

Тот же сенсор утром и днём. Оранжевое — слабые отражения, синее — более сильные. Центральные отражения корпуса есть в обоих сырых облаках, а метровый ореол только в утреннем.

Тот же сенсор утром и днём. Оранжевое — слабые отражения, синее — более сильные. Центральные отражения корпуса есть в обоих сырых облаках, а метровый ореол только в утреннем.

За реальными предметами отправили робота в две точки: к скамейке и на площадку. Записали подъезд, повороты и остановки. Ориентации отличаются почти на 180 градусов, рядом фасад, ступени, опоры и вещи у крыльца. Фильтру предстояло сохранить эту геометрию при обоих ракурсах.

Наш полигон: две реальные поездки, два направления взгляда и соответствующие облака. Подписи дат на самих камерах сбиты; снимки относятся к этим контрольным выездам.

Наш полигон: две реальные поездки, два направления взгляда и соответствующие облака. Подписи дат на самих камерах сбиты; снимки относятся к этим контрольным выездам.

«Матрица» для робота: загрузи мне столб

Для повторяемых опытов подмешивали предметы прямо в записанное облако после LIO, то есть после оценки движения по лидару и IMU. Столб, доска, сетка, горизонтальная перекладина и диагональная проволока. Двигали их в данных, добавляли шум, совмещали с настоящим утренним туманом. У каждого предмета заранее известны координаты: исчезновение нельзя списать на неудачный ракурс.

Так проверяли и первую видимость нового предмета, и его сохранность в следующих кадрах. Плотный столб оказался слишком лёгким экзаменом. Перекладина и проволока заставили переделать защиту геометрии.

Пять виртуальных препятствий на настоящем туманном фоне: входная геометрия и точки, сохранённые финальным ARM64-классификатором. Каждый тип остаётся видимым во всех 80 кадрах своего присутствия.

Пять виртуальных препятствий на настоящем туманном фоне: входная геометрия и точки, сохранённые финальным ARM64-классификатором. Каждый тип остаётся видимым во всех 80 кадрах своего присутствия.

Кольцо — улика, четыре точки — алиби

Полезную идею подсказала сама форма шума: туман окружает робота широким облаком, тогда как предметы чаще собираются в отдельные структуры. Разделили круг на 24 сектора и стали оценивать заполнение ближней области. В финальном профиле анализируем сферу 0,4–1,65 метра; для кольцевого контекста нужны минимум 32 точки, 13 занятых секторов и 9 секторов хотя бы с двумя точками.

Но круг сам по себе не даёт права всё стереть: круглыми бывают и реальные конструкции. Поэтому внутри распознанного кольца отдельно ищем геометрию предметов. Пара случайных точек легко изображает отрезок. Для защиты линии потребовали минимум четыре пространственно различные опоры, протяжённость от 20 сантиметров и отклонение от прямой до 1,2 сантиметра.

Здесь подвела обычная PCA по соседям: туман попадал в окрестность перекладины и портил оценку её направления. Перешли к гипотезам прямых по парам с последующим поиском согласованных точек. Случайная пара перестала быть пропуском через фильтр, а перекладина получила устойчивую поддержку.

Изменения собрали в классификаторе препятствий. Исходный поток лидара, IMU и LIO сохранили: за шум для навигации теперь отвечает тот участок цепочки, где формируется облако препятствий. Радиусы и пороги вынесли в изменяемый профиль, чтобы следующий эксперимент обходился без пересборки бинарника.

Последний босс — костмапа

Финальную проверку делали настоящими ARM64-бинарниками классификатора и штатной костмапы в QEMU, воспроизводя записанные сообщения и преобразования координат. В полном туманном прогоне все 590 кадров дали ноль выходных точек препятствий в исследуемой сфере. На двух ясных поездках сохранились все 877 наблюдений контрольных геометрических компонентов.

Финальное облако препятствий: весь участок 50 × 50 метров и увеличение центра. В этом кадре внутри исследуемой сферы было 18 точек, стало 0. Внешние ограждения сохранились.

Финальное облако препятствий: весь участок 50 × 50 метров и увеличение центра. В этом кадре внутри исследуемой сферы было 18 точек, стало 0. Внешние ограждения сохранились.

Затем пропустили результат через два DepthLayer и InflationLayer. Для наглядности взяли свободную статическую подложку: на ней виден именно вклад текущих препятствий. Во всех 28 опубликованных костмапах туманного фрагмента внутри кольца 0,4–1,65 метра осталось ноль занятых ячеек. А все пять добавленных типов предметов создавали препятствие на каждой из 19 костмап, выпущенных во время их присутствия.

Та самая развязка. Слева несколько ложных точек раздулись в оранжевые острова вокруг робота. Справа центр свободен, наружные препятствия и их зоны обхода на месте. Время обоих снимков совпадает.

Та самая развязка. Слева несколько ложных точек раздулись в оранжевые острова вокруг робота. Справа центр свободен, наружные препятствия и их зоны обхода на месте. Время обоих снимков совпадает.

Получилось 57 тестов и 2489 входных кадров в финальных нативных прогонах. Но главная картинка здесь последняя: у робота больше нет стены из воздуха прямо под носом.

Утреннего «Ёжика в тумане» мы научили отличать облако капель от предмета внутри него. Лошадь оставляем. Туман убираем.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.