poseGraph

Создайте 2D график положения

Описание

poseGraph объект сохраняет информацию для 2D представления графика положения. График положения содержит nodes соединенный edges, с ограничениями ребра, которые задают относительное положение между узлами и неопределенностью на том измерении. optimizePoseGraph функция изменяет узлы с учетом неопределенности, и улучшите полный график.

Для 3-D графиков положения смотрите poseGraph3D.

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

lidarSLAM (основанная на лидаре одновременная локализация и картография), создается вокруг оптимизации 2D графика положения.

Создание

Описание

пример

poseGraph = poseGraph создает 2D объект графика положения. Добавьте использование положений addRelativePose создать график положения итеративно.

poseGraph = poseGraph('MaxNumEdges',maxEdges,'MaxNumNodes',maxNodes) задает верхнюю границу на количестве ребер и узлов, позволенных в графике положения при генерации кода. Этот предел только требуется при генерации кода.

Свойства

развернуть все

Это свойство доступно только для чтения.

Количество узлов в графике положения в виде положительного целого числа. Каждый узел представляет положение в графике положения как [x y theta] вектор с позиционным xy и угол ориентации, theta. Чтобы задать относительные положения между узлами, использовать addRelativePose. Чтобы получить список всех узлов, использовать nodes.

Это свойство доступно только для чтения.

Количество ребер в графике положения в виде неотрицательного целого числа. Каждое ребро соединяет два узла в графике положения. Ребра закрытия цикла включены.

Это свойство доступно только для чтения.

Количество закрытий цикла в графике положения в виде неотрицательного целого числа. Чтобы получить идентификаторы ребра закрытий цикла, используйте LoopClosureEdgeIDs свойство.

Это свойство доступно только для чтения.

Идентификаторы ребер закрытия цикла в виде вектора из идентификаторов ребра.

Функции объекта

addRelativePoseДобавьте относительное положение в график положения
edgesРебра в графике положения
edgeConstraintsОграничения ребра в графике положения
edgeResidualErrorsВычислите остаточные ошибки ребра графика положения
findEdgeIDНайдите ID ребра ребра
nodesПоложения узлов в графике положения
optimizePoseGraphОптимизируйте узлы в графике положения
removeEdgesУдалите ребра закрытия цикла из графика
showПостройте график положения

Примеры

свернуть все

Оптимизируйте график положения на основе ограничений ребра и узлов. График положения, используемый в этом примере, от научно-исследовательской лаборатории Intel Набор данных и был сгенерирован от собирающейся одометрии колеса и лазерной информации о датчике средства поиска области значений во внутренней лаборатории.

Загрузите набор данных Intel, который содержит 2D график положения. Смотрите poseGraph возразите, чтобы просмотреть количество закрытий цикла и узлов.

load intel-2d-posegraph.mat pg
disp(pg)
  poseGraph with properties:

               NumNodes: 1228
               NumEdges: 1483
    NumLoopClosureEdges: 256
     LoopClosureEdgeIDs: [1x256 double]

Постройте график положения с отключенными идентификаторами. Красные линии указывают на закрытия цикла, идентифицированные в наборе данных.

show(pg,'IDs','off');
title('Original Pose Graph')

Оптимизируйте график положения. Узлы настроены на основе ограничений ребра и закрытий цикла. Постройте оптимизированный график положения, чтобы видеть корректировку узлов с закрытиями цикла.

updatedPG = optimizePoseGraph(pg);
figure
show(updatedPG,'IDs','off');
title('Updated Pose Graph')

Ссылки

[1] Гризетти, G., Р. Каммерл, К. Стэкнисс и В. Бергард. "Пример на Основанном на графике SLAM". IEEE Интеллектуальный Системный Журнал Транспортировки. Издание 2, № 4, 2010, стр 31–43. doi:10.1109/mits.2010.939925.

Расширенные возможности

Введенный в R2019b