Я делаю некоторые основы для проекта, и у меня есть вопрос о текущем состоянии техники SLAM.
Когда устройство, оборудованное SLAM, обнаруживает объект, позиция этого объекта сохраняется. Если вы посмотрите на облако точек, которое генерирует устройство, вы увидите точки для этого объекта, и модели, сгенерированные из него, будут включать геометрию здесь.
Если объект помещен в ранее пустое пространство, он обнаруживается и точки добавляются. Последующие модели будут иметь геометрию, описывающую этот новый объект.
Как реагирует устройство, если этот объект удален? Насколько я видел, системы SLAM будут склонны оставлять точки на месте, что приведет к «призрачной» геометрии. Существуют алгоритмы, которые игнорируют одиночные точки, вызванные переходными контактами, но объекты, которые оставались достаточно длинными, чтобы построить твердотельную модель, останутся в памяти устройства. Существуют ли какие-либо системы, способные обнаружить, что ранее занятое пространство теперь пусто?
Ответы:
Это очень многое зависит. Поскольку SLAM - это проблема (или, по крайней мере, методика), а не решение, нет определенного алгоритма SLAM. Семантически, вы должны решить, что происходит на «карте» среды, и это определяет, как ваш алгоритм должен обрабатывать переходные (то есть движущиеся) сигналы. Но это отступление.
Постоянные карты:
Постоянные карты должны содержать достаточно информации, чтобы локализовать себя относительно известной геометрии. Обычно используется в зданиях. Типично для человека. Смотрите работы Уиллоу-Гараж. или что-нибудь Трун в своем довольно известном учебнике. Если вы потеряете эту карту, вам придется снова ее строить.
Удаление объектов. Да, объект появится на статической карте на некоторое время. Если не будет предпринято никаких мер для удаления ранее обнаруженных объектов, оно будет сохраняться. Типичное двухмерное сеточное представление будет использовать каждую ячейку сетки для представления вероятности объекта, поэтому со временем объект будет «исчезать».
Добавление объектов. То же, что и выше.
Местные карты:
В действительности SLAM обычно используется для локализации робота во время его движения, и карта не сохраняется постоянно (или она сохраняется постоянно, но используются только самые близкие объекты Y). Локальные карты - это все, что нужно знать роботу, чтобы определить, как он двигался за последние X минут, где X зависит от приложения. Если вы потеряете карту, вы все равно сможете летать очень хорошо, используя те функции, которые вы видите прямо сейчас.
Пакетные методы, такие как Bundle Adjustment с использованием визуальных функций, являются очень распространенной техникой в этом направлении. Функции могут сохраняться со временем и даже пересматриваться, но движущаяся функция - просто ненадежная функция, и она будет игнорироваться при попытке выяснить, где находится робот.
Visual SLAM именно это. Это дельта-P (изменение в позе), а не алгоритм локализации на основе карты.
Короче говоря, до тех пор, пока большинство вещей в данный момент не движутся, не имеет значения, удаляете ли вы объект, когда робот не «смотрит» на него.
пример
Так сделай это. Когда вы читаете документ SLAM, решите следующее:
Они действительно строят карту?
Они просто хранят список функций и мест?
Если так, какие «особенности» идут на карте? Линии, точки, визуальные особенности?
Эти функции могут двигаться?
Если так, как они могут справиться с этим?
Наконец, шум датчика часто «выглядит» как движущиеся объекты. Как они справляются с шумом датчика? Потому что это часто будет определять, что происходит с движущимися объектами.
Вы получите разные ответы для каждой статьи / автора / книги / приложения. Короче говоря, они обычно опускаются, так как они не помогают роботу локализоваться, и их можно избежать, просто имея несколько планировщиков пути низкого уровня, которые используют только локальную информацию.
Удачи, шлем - огромная тема.
источник