两个子图分别计算之后如何合成?
- 把公有变量链接起来? (identidyFactor)
- 子图应该有一个自己的命名空间?给变量一个命名空间label xB1 暂且先用 x num num
unsigned char uc_num3 = 65; uint8 unsigned int 0-255
for (size_t i = 0; i < 255; i++)
{
unsigned char uc_num3 = i;
std::cout << i << “=” << uc_num3 << " revert to:" << std::uint64_t(uc_num3) << std::endl;
}
- 重复factor去除:例如car会被rsu和robot同时加上motion model约束
- merge factor graph = merge factor graph + FG1 + FG1
- 把merge factor graph 看作一个GBA过程最终还得把更新后的值返回给其他子图!!!![多图融合技术] 更新初始值是非常容易做到的!!
子图合成之后local子图和merge子图的变量的一致性如何保证?
- method1:
- 参考orb的localmap 和 globalmap如何协调吧。给单个变量加读写锁? 读取之后没有写就先不能读出来? 布局比操作性 loopcloser会先确保LBA GBA暂停。避免了重写的发生。
- 参考catographer submap如何操作的?类似于关键帧 submap里面的约束都是相对与关键帧的?
- method2:
- 前向传播:local子图如果已经计算那么计算结果作为 merge子图的初始值。( 这不就相当于串行? 先定位 把定位结果作为初始值进行跟踪)(每个子图都要把算的结果 和 约束关系发送出去 , 有能力使用原始约束关系更好没有能力的话就使用计算的结果就行)
- 反向传播:merge子图计算结束后要用估计值 更新自己的初始值,进而触发更新local子图的初始值 ( 也即要想办法把后面子图里的结果返回给之前的子图) (返回的变量自带有更多信息量??)
- 那个变量更新更可信呢?图越大(约束越多)更新时间越新的更可信?
- method3:
- 只考虑前向传播 merge子图只使用local子图里面的新增变量初始值,其它变量初始值使用自己计算的(图更大信息更准确)但是如果没有全局子图的更新的话局部子图会越来越偏。。除非只利用局部子图里面的相对关系,且 新增变量的初始值在计算时也要考虑先全局修正一下!!
- method4:
- 只考虑前向传播 但是local子图的约束是相对一个局部坐标系的 + 给出这个坐标系的初始值