робототехника. PoseGraph

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

Описание

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

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

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

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

Создание

Синтаксис

poseGraph = robotics.PoseGraph
poseGraph = robotics.PoseGraph('MaxNumEdges',maxEdges,'MaxNumNodes',maxNodes)

Описание

пример

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

poseGraph = robotics.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 график положения. Осмотрите объект robotics.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.

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

Введенный в R2018a