poseGraph

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

Описание

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

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

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

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

Создание

Описание

пример

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

addRelativePoseДобавьте относительное положение, чтобы изложить график
edgesРебра в графике положения
edgeConstraintsОграничения ребра в графике положения
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]

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

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

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

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

Ссылки

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

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

Введенный в R2019b