当前位置: 主页 > 新闻资讯 > 陵园解答

位姿图(Pose Graph)优化的测量值是什么?

2024-07-11 18:42   作者:佚名

看到高博《视觉SLAM十四讲》关于位姿图优化的部分,不理解的一点是,我们估计了每个关键帧的位姿Ti(i=1,2,3……),可以得到每两个关键帧之间的位姿变换Tij的估计值,那么要得到误差的话,Tij的测量值应该是什么?

根据题主说的要的是位姿(pose-pose)图优化,不是图优化,最后一次更新:

位姿图优化与普通图优化不同的是位姿图优化只有帧位姿作为顶点,没有3D地图点参与优化。

顶点呢,是各个帧位姿,按书中和题主理解就是Twc嘛,然后,根据不同位姿之间变换矩阵Tij就是题注说的估计值。

边,是实际的根据直接法或者间接法获取的两帧之间的变换矩阵Tij2,这就是题主说的测量值。

按道理Tij*Tij2的逆是应该为某种意义上的0,然而由于误差,不会为0,那最小化这个误差项,就是构建的约束方程。

补充一句:位姿图优化在实际中貌似用得不多,一般是闭环检测后得到一个位姿约束再进行位姿图优化吧。不知道还有没有别的地方用到。

-----------------------------------------------------------------

额,说下我的理解,如果按kalman滤波那样解释的话,预测值就是根据运动方程和之前的位姿算出来的新帧位姿,通常运动方程不可知,一般假设为与之前的运动相同,即上一个参考帧到新帧的变换矩阵与上上一个参考帧到上一个参考帧的变换矩阵相同。这是非常不准的,把预测值作为输入初值再利用直接法或者间接法根据对极几何的方法求取的位姿就是测量值。但是现在的后端都没有用kalman滤波的方式了,所以并没有更新的过程。

高博书中称得到的是估计值是因为我们算出来的位姿还是不准确的,再根据图优化的方式,还能进一步优化,当然也不可能达到真实值。

不知道理解的对不对,还请别的大神也说下。。。

答主修改了问题,你是说图优化中的约束方程嘛,那就是根据地图中3D点和帧位姿构成的投影关系来约束的。

在图优化中就是点与边,以及点边关系,点可以是3D点或者帧,边可以是一元边,即只有一个顶点,例如根据若干个固定3D点来优化单独一帧,那么单独一帧的位姿就是一个顶点,一元边就是3D点在帧中的2D投影,优化的就是投影几何误差;可以是二元边,即有两个顶点,例如根据若干个不固定3D点来优化若干帧,一个3D点可以与多个帧构成投影关系,一个帧上也有多个点,那么每一对关联的3D点和帧都可以构成一个二元边,与一元边类似,实质也是优化的3D点在帧中的2D投影几何误差。

好吧,总结了一下,题主理解的“测量值”就是:已知3D地图点、帧位姿以及3D点在该帧的2D投影点,构建一个最小化几何误差约束方程。

因场景而异,最简单的是用里程记。


如果有点云,也可以用 ICP 来算。

暂时把问题限定到基于视觉传感器的里程计或者SLAM问题。

pose graph的“测量”就是局部优化得出的各帧位姿,再计算得出的相邻关键帧间相对位姿,其实也就题主说的Tij。测量为什么打引号,后面来看。

局部优化的时候,假如算法没什么毛病的话,间隔短的帧间相对位姿是可以解算得比较准确的。但VO总是有累计误差,一直一帧一帧的跟踪下去,两个时间上离得很远的帧(先不考虑回环),它们之间基于之前的计算结果得出的的相对位姿就不可靠了。

pose graph利用前面那种短间隔可靠的相对位姿“测量”来构建一个涵盖长时间跨度的关键帧们的全局优化问题,平摊累积误差,以各关键帧位姿为节点,以前面的关键帧间(时间间隔要短)相对位姿计算结果作为测量进行极大似然估计。这样设计的最主要出发点其实还是避免优化海量地图点,减小计算规模。

所以前面测量加上引号,就是因为这个相对位姿并不是一个天然的测量值,它是个原始测量经过加工得到的二手测量值(由局部的里程计得到)。

单看书的话确实不好理解。但是结合实际看一些开源方案的源代码就好理解了。

以ORB-SLAM中的位姿图优化为例。首先位姿图优化发生在回环的时候。这个时候,受到回环影响的关键帧就有两个位姿:一个是回环前带有漂移的位姿,一个是回环后将这个漂移消去的位姿。

抛开它构建essential graph这些过程,ORB-SLAM在位姿图优化的时候,把回环前带有漂移的位姿作为了初值,但利用回环后的位姿计算了帧间的相对位姿作为约束,也就是测量值,来进行优化。

简单明了的 来说

posegraph的 测量值 是约束就是 相对pose,优化的是 构建地图的过程中的 原始位置姿态(比如没有经过 闭环矫正)

约束就是 相对pose, 对于 非闭环的地方,就是两帧相对, 对于闭环的地方就是 当前帧和闭环帧或者 neigbor 之间的相对。

如果没有闭环,那么就没有误差需要优化, 存在闭环的时候的优化的是什么?

我们可以看到 当前帧和闭环帧 之间的相对(icp 或者 pnp 或者sim3 ), 以及 当前帧和闭环帧原始的相对pose,这两个肯定是有较大的差异的。

优化的目的就是 把这种差异 均摊到其他的相对中,最终把pose以及map变换之后得到粗略的闭环,然后经过gba 优化一下,得到最终结果,实用g2o或者ceres 一般优化的量是 原始位置姿态,得到的及果实经过pose graph 优化之后的位置姿态。

同类文章推荐
程序员到底要不要读研,过来人给你几点建议!
重庆大学研究生招生信息网(测试版)
留学生英国英语专业就业
艺术留学要什么条件?
出国留学的英文推荐信_34
海外留学想要换专业,这三种方法可以考虑

咨询登记

平台注册入口