optimizePoses

Оптимизируйте абсолютные положения с помощью относительных ограничений положения

Описание

пример

vSetOptim = optimizePoses(vSet) возвращает набор представления облака точек, абсолютные положения которого оптимизированы. vSetOptim и vSet pcviewset объекты.

optimizePoses функция выполняет оптимизацию графика положения на абсолютных положениях для Views в наборе представления с помощью относительных ограничений положения устанавливается Connections свойство. Можно использовать optimizePoses откорректировать дрейф в одометрии после обнаружения закрытий цикла.

vSetOptim = optimizePoses(vSet,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение". Например, 'Tolerance',0.2 устанавливает погрешность функции стоимости оптимизации к 0.2.

Примеры

свернуть все

Создайте набор представления.

vSet = pcviewset;

Добавьте четыре узла и задайте абсолютные положения.

absPoses = repelem(rigid3d, 4, 1);   

absPoses(1).Translation = [ 0   0 0];
absPoses(2).Translation = [ 1   0 0];
absPoses(3).Translation = [ 2   0 0];
absPoses(4).Translation = [ 0.1 0 0];

vSet = addView(vSet, 1, absPoses(1));
vSet = addView(vSet, 2, absPoses(2));
vSet = addView(vSet, 3, absPoses(3));
vSet = addView(vSet, 4, absPoses(4));

Задайте 4 ребра, 3 одометрии и 1 закрытие цикла.

relPoses = repelem(rigid3d, 4, 1);

relPoses(1).Translation = [ 1   0 0];
relPoses(2).Translation = [ 1   0 0];
relPoses(3).Translation = [-1.9 0 0];
relPoses(4).Translation = [ 0.2 0 0];

vSet = addConnection(vSet, 1, 2, relPoses(1)); % odometry
vSet = addConnection(vSet, 2, 3, relPoses(2)); % odometry
vSet = addConnection(vSet, 3, 4, relPoses(3)); % odometry
vSet = addConnection(vSet, 4, 1, relPoses(4)); % loop closure

Оптимизируйте набор представления.

vSetOptim = optimizePoses(vSet);

Отобразите исходные и оптимизированные местоположения.

disp('Original absolute translations:')
Original absolute translations:
disp(vertcat(vSet.Views.AbsolutePose.Translation))
         0         0         0
    1.0000         0         0
    2.0000         0         0
    0.1000         0         0
disp('Optimized absolute translations:')
Optimized absolute translations:
disp(vertcat(vSetOptim.Views.AbsolutePose.Translation))
         0         0         0
    0.9250         0         0
    1.8500         0         0
   -0.1250         0         0

Входные параметры

свернуть все

Представление облака точек установлено в виде pcviewset объект.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'MaxIterations' ',300 определяет максимальный номер итераций к 300.

Максимальное количество итераций перед функцией отключает оптимизацию в виде разделенной запятой пары, состоящей из 'MaxIterations' и положительное целое число. Увеличьте это значение для большей точности в результатах. Уменьшите это значение для более быстрых результатов.

Допуск функции стоимости оптимизации между двумя последовательными итерациями в виде разделенной запятой пары, состоящей из 'Tolerance'и положительная скалярная величина. Если функция стоимости изменяется меньше, чем 'Tolerance'значение между двумя последовательными итерациями, функция отключает оптимизацию.

Отобразите информацию о прогрессе в виде разделенной запятой пары, состоящей из Verbose и числовой или логический 0 ложь) или 1 TRUE). Чтобы отобразить информацию о прогрессе, установите 'Verbosetrue.

Выходные аргументы

свернуть все

Набор представления облака точек, который содержит оптимизированные абсолютные положения в виде pcviewset объект.

Советы

  • Чтобы обновить набор представления с оптимизированными положениями, используйте updateView объектная функция.

  • optimizePoses объектная функция придерживается первого зафиксированного взгляда.

Алгоритмы

optimizePoses функционируйте использует алгоритм оптимизации Levenberg-Marquardt с разреженным разложением Холесского от общей (hyper) библиотеки (G2o) оптимизации графика, [1].

Ссылки

[1] Kümmerle, Рэйнер, Джорджо Гризетти, Hauke Strasdat, Курт Конолиге и Вольфрам Burgard. “G2o: Общие рамки для Оптимизации Графика”. На 2 011 Международных конференциях IEEE по вопросам Робототехники и Автоматизации, 3607–13, 2011. https://doi.org/10.1109/ICRA.2011.5979949.

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

Функции

Объекты

Введенный в R2020a