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

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

Описание

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

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

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

Создание

Синтаксис

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

Описание

пример

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

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

Свойства

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

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

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

Примечание

Порядок кватерниона [qw qx qy qz] использует стандартное соглашение. Некоторые системы координат робота вместо этого задают порядок как [qx qy qz qw]. Проверяйте источник своих данных о графике положения перед добавляющими узлами к вашему объекту PoseGraph3D.

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

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

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

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

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

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

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

Ссылки

[1] Carlone, Лука, Роберто Трон, Костас Даниилидис и Франк Деллэерт. "Методы инициализации для 3D SLAM: Обзор Оценки Вращения и ее Использования в Оптимизации Графика Положения". 2 015 Международных конференций IEEE по вопросам Робототехники и Автоматизации (ICRA). 2015, стр 4597–4604.

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

Смотрите также

Функции

Объекты

Введенный в R2018a