exponenta event banner

poseGraph3D

Создать график 3-D позы

Описание

A poseGraph3D объект сохраняет информацию для 3-D представления графика позы. График позы содержит узлы, связанные рёбрами. Каждая оценка узла связана с графиком граничными ограничениями, которые определяют относительную позу между узлами и неопределенность этого измерения.

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

Figure showing relative poses between node poses. Each sequential pose is connected by an edge. Poses are specified as x,y, theta relative to the previous node.

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

Figure showing loop closures and mulitedges as constraints between nodes. Loop closures connect to previous non-sequential nodes. Multiedges are multiple constraints between the same node pair.

Чтобы добавить узлы точек ориентира, используйте addPointLandmark функция. Эта функция определяет узлы как точки xyz без оценок ориентации. Ориентиры должны указываться относительно узла позы.

Figure showing a landmark position as an xy point relative to two nodes with an edge between each node. to.

Для получения 2-D графиков позы см. раздел poseGraph.

Пример построения и оптимизации графика 3-D позы на основе реальных данных датчиков см. в разделе Landmark SLAM Using WitchingTag Markers.

Создание

Описание

пример

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

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

Свойства

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

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

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

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

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

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

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

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

Идентификаторы кромок замыкания контура, заданные как вектор идентификаторов кромок.

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

Идентификаторы узлов ориентиров, определяемые как вектор идентификаторов для каждого узла.

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

addPointLandmarkДобавление узла точки ориентира для представления графика
addRelativePoseДобавить относительную позу к графу позы
copyСоздание копии графика позы
edgeNodePairsПары рёберных узлов в графе позы
edgeConstraintsОграничения ребер на графике позы
edgeResidualErrorsВычислить остаточные ошибки ребра графика позы
findEdgeIDНайти идентификатор края
nodeEstimatesПоложения узлов в графе позы
removeEdgesУдаление кромок замыкания контура из графика
showГрафик позы графика

Примеры

свернуть все

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

Загрузите график позы из набора данных MIT. Осмотрите poseGraph3D объект для просмотра количества узлов и замыканий цикла.

load parking-garage-posegraph.mat pg
disp(pg);
  poseGraph3D with properties:

               NumNodes: 1661
               NumEdges: 6275
    NumLoopClosureEdges: 4615
     LoopClosureEdgeIDs: [1x4615 double]
        LandmarkNodeIDs: [1x0 double]

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

title('Original Pose Graph')
show(pg,'IDs','off');
view(-30,45)

Figure contains an axes. The axes contains 3 objects of type line.

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

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

Figure contains an axes. The axes contains 3 objects of type line.

Ссылки

[1] Карлоне, Лука, Роберто Трон, Костас Даниилидис и Фрэнк Деллаерт. «Методы инициализации для 3D SLAM: исследование по оценке ротации и ее использованию в оптимизации графика позы». 2015 IEEE Международная конференция по робототехнике и автоматизации (ICRA). 2015, стр 4597–4604.

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

.
Представлен в R2019b