主要内容

optimizePoseGraph

优化节点构成图

描述

例子

updatedGraph= optimizePoseGraph (poseGraph)调整提出了基于边缘约束定义在指定的图来提高整体图。你优化二维或三维构成图。返回的姿势图与更新节点具有相同的拓扑结构。

这个姿势图优化假设所有边缘约束和循环闭包是有效的。考虑削减边缘基于坏循环闭包,看到trimLoopClosures函数。

updatedGraph= optimizePoseGraph (poseGraph,解算器)指定优化的解算器类型构成图。

(updatedGraph,solutionInfo)= optimizePoseGraph (___)返回额外的统计数据的优化过程solutionInfo使用任何以前的语法。

(___)= optimizePoseGraph (___,名称,值)使用一个或多个指定附加选项名称,值对。例如,“MaxIterations”, 1000年增加的最大迭代数到1000。

例子

全部折叠

优化一个姿势图基于节点和边缘约束。这个示例中使用的姿势图是来自麻省理工学院的数据集生成和使用信息从一个停车场。

从麻省理工学院数据集加载构成图。检查poseGraph3D对象查看的节点数和循环闭包。

负载parking-garage-posegraph.matpgdisp (pg);
poseGraph3D属性:NumNodes: 1661 NumEdges: 6275 NumLoopClosureEdges: 4615 LoopClosureEdgeIDs: [128 129 130 132 133 134 135 137 138 139 140…]LandmarkNodeIDs (x0 1双):

情节构成图与IDs,红线表示循环闭包中标识的数据集。

标题(“原来的姿势图”)显示(pg,“id”,“关闭”);视图(-30,45)

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。

优化构成图。基于约束和边缘节点调整循环闭包。情节优化构成图的调整节点与循环闭包。

updatedPG = optimizePoseGraph (pg);图的标题(“更新姿势图”)显示(updatedPG“id”,“关闭”);视图(-30,45)

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。

输入参数

全部折叠

2 d或3 d图,指定为一个poseGraph,poseGraph3D,有向图对象。

使用有向图使用对象,生成构成图createPoseGraph从一个imageviewsetpcviewset对象。你必须有计算机视觉工具箱™和解算器必须设置为“builtin-trust-region”。的“LoopClosuresToIgnore”“FirstNodePose”如果指定的名称-值对将被忽略。

的边缘有向图对象被affine3d(图像处理工具箱)rigid3d(图像处理工具箱)对象。

构成图求解程序,指定为“builtin-trust-region”“g2o-levenberg-marquardt”。优化解算器,使用名称-值对参数的解算器。

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“MaxTime”, 300年

请注意

根据解算器输入,支持不同的功能名称-值对。金宝app

如果解算器输入设置为“builtin-trust-region”:

全部折叠

最长时间允许的,指定为逗号分隔组成的“MaxTime”和积极的数字标量在几秒钟内。优化器退出后,超过这个时间。

下界的标准梯度,指定为逗号分隔组成的“GradientTolerance”和一个标量。梯度的标准是基于成本函数的优化计算。如果标准低于这个值,优化器退出。

下界的变化成本函数,指定为逗号分隔组成的“FunctionTolerance”和一个标量。如果成本函数变化低于这个值之间的优化步骤,优化器退出。

下界的步长,指定为逗号分隔组成的“StepTolerance”和一个标量。如果优化步骤的标准低于这个值,优化器退出。

最初的信赖域半径,指定为一个标量。

在MATLAB显示中间迭代信息®命令行指定为逗号分隔组成的“VerboseOutput”,要么“关闭”“上”

IDs循环闭包边的poseGraph,指定为逗号分隔两人组成的“LoopClosuresToIgnore”和一个向量。从构成图,得到边缘IDs使用findEdgeID

带来的第一个节点poseGraph,指定为逗号分隔两人组成的“FirstNodePose”和一个向量。

poseGraph(2 - d),构成一个(x yθ)向量,它定义了相对的xy-安置和方向角,θ

poseGraph3D构成是一个[x y z qw qx qy求)向量,它定义了相对的xyz-安置和四元数取向,(qw qx qy求)

请注意

许多其他来源的3 d图,包括.g2o格式,指定四元数方向以不同的顺序,例如,[qx qy求qw]。之前检查你的姿势图数据的来源将节点添加到您的poseGraph3D对象。

如果解算器输入设置为“g2o-levenberg-marquardt”:

全部折叠

最大迭代次数,指定为逗号分隔组成的“MaxIterations”和一个正整数。优化器退出后,超过这个数字的迭代。

最长时间允许的,指定为逗号分隔组成的“MaxTime”和积极的数字标量在几秒钟内。优化器退出后,超过这个时间。

下界的变化成本函数,指定为逗号分隔组成的“FunctionTolerance”和一个标量。如果成本函数变化低于这个值之间的优化步骤,优化器退出。

MATLAB命令行上显示中间迭代信息,指定为逗号分隔组成的“VerboseOutput”,要么“关闭”“上”

IDs循环闭包边的poseGraph,指定为逗号分隔两人组成的“LoopClosuresToIgnore”和一个向量。从构成图,得到边缘IDs使用findEdgeID

带来的第一个节点poseGraph,指定为逗号分隔两人组成的“FirstNodePose”和一个向量。

poseGraph(2 - d),构成一个(x yθ)向量,它定义了相对的xy-安置和方向角,θ

poseGraph3D构成是一个[x y z qw qx qy求)向量,它定义了相对的xyz-安置和四元数取向,(qw qx qy求)

请注意

许多其他来源的3 d图,包括.g2o格式,指定四元数方向以不同的顺序,例如,[qx qy求qw]。之前检查你的姿势图数据的来源将节点添加到您的poseGraph3D对象。

输出参数

全部折叠

优化2 d或3 d图,作为一个返回poseGraphposeGraph3D对象。

优化过程的统计数据,作为结构返回这些字段:

  • 迭代——用于优化的迭代次数。

  • ResidualError——成本函数当优化器出口的价值。

  • 出口标志-退出条件优化:

    • 1——局部最小值。

    • 2——最大迭代次数达到了。看到MaxIterations名称-值对的论点。

    • 3——算法在操作超时。

    • 4——最小步长。下面的步骤大小StepTolerance名称-值对的论点。

    • 5——错误低于最低的变化。

    • 8——信赖域半径是低于最低InitialTrustRegionRadius

引用

[1]Grisetti G。,R. Kummerle, C. Stachniss, and W. Burgard. "A Tutorial on Graph-Based SLAM."IEEE智能交通系统杂志。2卷,4号,2010,pp。31-43。doi: 10.1109 / mits.2010.939925。

[2]Carlone,卢卡·罗伯托•特隆Kostas Daniilidis,弗兰克Dellaert。“初始化技术对3 d大满贯:调查旋转姿势图优化估计和它的使用。”2015年IEEE机器人与自动化国际会议上)举行(“国际机器人与自动化会议”。2015年,页4597 - 4604。

扩展功能

版本历史

介绍了R2019b