主要内容

optimizePoses

使用相对姿势约束优化绝对姿势

描述

例子

vSetOptim=优化(vSet返回一个点云视图集,它的绝对姿态是优化的。vSetOptimvSetpcviewset对象。

optimizePoses函数对绝对姿势执行姿势图优化的观点属性建立的相对位姿约束连接财产。您可以使用optimizePoses在检测回路封闭后,在测量内纠正漂移。

vSetOptim=优化(vSet名称,值使用一个或多个名称值对参数指定选项。例如,'宽容'0.2设置优化成本函数的公差0.2

例子

全部折叠

创建视图集。

vSet = pcviewset;

添加四个节点并指定绝对姿态。

abspses = reelem (rigid3d, 4, 1); / /absPoses(1)。翻译= [0 0 0];absPoses(2)。翻译= [1 0 0];absPoses(3)。翻译= [2 0 0];absPoses(4)。翻译= [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个环闭合。

relpose = reelem (rigid3d, 4, 1); / /relPoses(1)。翻译= [1 0 0];relPoses(2)。翻译= [1 0 0];relPoses(3)。翻译= [-1.9 0 0];relPoses(4)。翻译= [0.2 0 0];vSet = addConnection(vSet, 1, 2, relPoses(1));%测程法vset = addConnection(vset,2,3,relpose(2));%测程法vSet = addConnection(vSet, 3, 4, relPoses(3));%测程法vSet = addConnection(vSet, 4, 1, relPoses(4));%循环关闭

优化视图集。

vSetOptim = optimizePoses (vSet);

显示原始和优化的位置。

DISP(“原始绝对翻译:”
原始绝对翻译:
disp (vertcat (vSet.Views.AbsolutePose.Translation))
000 1000 2 0000 0000 0
DISP(“优化绝对翻译:”
优化的绝对翻译:
disp (vertcat (vSetOptim.Views.AbsolutePose.Translation))
0 0 0 0.9250 0 0 1.8500 0 0 -0.1250 0 0

输入参数

全部折叠

点云视图集,指定为apcviewset目的。

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值是相应的价值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:MaxIterations',300将最大迭代次数设置为300

函数终止优化之前的最大迭代次数,指定为包括的逗号分隔对“MaxIterations”一个正整数。增加这个值可以提高结果的准确性。减少这个值以获得更快的结果。

在两个连续迭代之间的优化成本函数的公差,指定为由“逗号分离的对”宽容'和一个正标量。如果成本函数的变化小于宽容'的值,函数终止优化。

显示进度信息,由逗号分隔的对组成详细的和数字或逻辑0)或1真的).若要显示进度信息,请设置'详细的真的

输出参数

全部折叠

点云视图集,包含优化的绝对姿态,指定为pcviewset目的。

提示

  • 要用优化的姿势更新视图集,请使用updateView对象的功能。

  • optimizePoses对象函数保持第一个视图固定。

算法

optimizePoses函数使用Levenberg-Marquardt优化算法和稀疏Cholesky分解,从一般(超)图优化(G2o)库,[1]。

参考

[1] Kümmerle, Rainer, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige和Wolfram Burgard。G2o:图形优化的通用框架在2011年IEEE机器人和自动化国际会议,3607-13,2011年。https://doi.org/10.1109/ICRA.2011.5979949。

另请参阅

功能

对象

介绍了R2020a