exponenta event banner

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);

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

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 должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'MaxIterations',300 устанавливает максимальное количество итераций равным 300.

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

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

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

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

свернуть все

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

Совет

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

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

Алгоритмы

optimizePoses функция использует алгоритм оптимизации Левенберга-Марквардта с разреженной декомпозицией Холески из общей (гипер) библиотеки оптимизации графов (G2o), [1].

Ссылки

[1] Кюмерле, Райнер, Джорджо Гризетти, Хауке Страсдат, Курт Конолиже и Вольфрам Бургард. «G2o: Общая структура оптимизации графов». В 2011 году Международная конференция IEEE по робототехнике и автоматизации, 3607-13, 2011. https://doi.org/10.1109/ICRA.2011.5979949.

См. также

Функции

Объекты

Представлен в R2020a