首先感谢作者贡献的代码。
我阅读VIO的LRU后,只看到作者在“InsertPointIntoFeatureMapLRU”函数中,将TYPE_POINTCLOUD的视觉点放在了列表的最前面,
但是“RetrieveFromVisualSparseMapLRU”中TYPE_MAP的视觉点似乎并未在列表中更新,实际上这些点本来就在vp_map_ 中也是被视觉ESIKF使用了,需要被放在列表前面。
当我将VIO部分的lru_size_ 设置的较小的时候(大于一次视觉更新最多获取和添加的视觉点),发现似乎需要更新TYPE_MAP的视觉点,才会好一些,而不是仅仅更新TYPE_POINTCLOUD的视觉点。这是因为TYPE_MAP的视觉点如果不放在前面,后续进来TYPE_POINTCLOUD的视觉点会将原有的TYPE_MAP的视觉点排挤出去,导致后续UpdateVisualMapPoints出错。
我尝试在vio.cpp的RetrieveFromVisualSparseMapLRU函数中作出以下改动,希望是正确的。
感谢作者,期待作者回复,希望有帮助。
首先感谢作者贡献的代码。
我阅读VIO的LRU后,只看到作者在“InsertPointIntoFeatureMapLRU”函数中,将TYPE_POINTCLOUD的视觉点放在了列表的最前面,
但是“RetrieveFromVisualSparseMapLRU”中TYPE_MAP的视觉点似乎并未在列表中更新,实际上这些点本来就在vp_map_ 中也是被视觉ESIKF使用了,需要被放在列表前面。
当我将VIO部分的lru_size_ 设置的较小的时候(大于一次视觉更新最多获取和添加的视觉点),发现似乎需要更新TYPE_MAP的视觉点,才会好一些,而不是仅仅更新TYPE_POINTCLOUD的视觉点。这是因为TYPE_MAP的视觉点如果不放在前面,后续进来TYPE_POINTCLOUD的视觉点会将原有的TYPE_MAP的视觉点排挤出去,导致后续UpdateVisualMapPoints出错。
我尝试在vio.cpp的RetrieveFromVisualSparseMapLRU函数中作出以下改动,希望是正确的。
感谢作者,期待作者回复,希望有帮助。