解读DP-SLAM (7)

解读DP-SLAM (7)


上次分析了一般情况下Map的操作,

今天还是继续讲解Map的操作,然后讲解Map和ancestry tree的关系

We can now describe the effects of collapsing an ancestor with a single child in the ancestry tree more

precisely:

1, The set of squares updated by the child is merged into the parent's set

2, For each square visited by the child, we change the ID key stored in the balanced tree to match that of

     parent

     If both the child and parent have made an update to the same square, the parent's update is replaced

     with the child's

3, The child is then removed from the tree and the parent's grandchildren become its direct children

     Note that this ensures that the number of items stored in the balanced tree at each grid square is O(P)


似乎并不太明白上面这三个步骤的意思,必须再做一些思考,

举个例子,假设有一个4×5的栅格地图,那么每一个格子都对应一个ancestry tree,在ancestry tree中最长的

那棵分支决定这个格子究竟是墙壁还是空地;

诚然,每一个格子都对应一个ancestry tree,那么这个tree是怎样生成的?


简单说,比如说(2,3)这个格子,(2,3)相对应的ancestry tree怎样生成呢?

在第N个时刻,有K个粒子观察到(2,3)这个格子,K个粒子中每一个粒子都会对格子(2,3)给出一个说法,

即它是墙壁还是空地。把这些结果保存起来,就是一棵树。这棵树深度为1,有K个叶子

在第N+1个时刻,K个粒子会根据观测信息更新对格子(2,3)的认识,使得之前的那K个叶子有很多的

“孩子”,有的节点有很多孩子,有的节点没有孩子,

于是对格子(2,3)上的ancestry tree 进行一次剪枝操作,最后得到一棵深度为二的树

于此类推,

第N+M个时刻,格子(2,3)上的ancestry tree的深度为M+1,根据剪枝的结论,必有一个长长的枝干,

而这个长长枝干对应的结果,就是格子(2,3)是“墙壁”还是“空地”的最终答案!


作者在论文的后续部分分析了DP-SLAM的算法复杂度,

这一方面,不必做更深的分析,

当务之急,是把与之相应的project代码弄懂!


在分析代码之前,欣赏一下实验结果,


下次开始分析代码!







猜你喜欢

转载自blog.csdn.net/qq_39732684/article/details/80644154