VIS4ROB-lab / covins

COVINS-(G) -- A (Generic) Framework for Collaborative Visual-Inertial SLAM and Multi-Agent 3D Mapping
366 stars 63 forks source link

How to correct drift of ORB_SLAM3 #22

Closed WuZihao12 closed 1 year ago

WuZihao12 commented 2 years ago

Hi,I want to ask How to use the historical key frames returned by the server to the client to correct the drift of the client (ORB_SLAM3).

patriksc commented 2 years ago

There are several ways in the literature how this can be implemented. One simple option for example would be the following: Assuming you have an Agent A with KFs 0,...,i, where both KF0 (which defines the origin of A's coordinate frame) and i are present both on the agent and server side, since data is shared. Then you could communicate the (drift-corrected by BA) transform T_0_i(s) from the server to the agent, and compare it with the same (but drift-affected) transform that the agent sees, T_0_i(a). This would give you an estimate of the drift.

This is a very simple algorithm though - we would also encourage you to explore how different works in the literature (for example CCM-SLAM implement map re-use.

Also, please note that you need to take measures on the server side to correct for the drift, i.e. there should be additional information from other agents present, or a loop closure on the data from A should have been found, otherwise, the drift in the data shared by A cannot be corrected.

WuZihao12 commented 2 years ago

Thanks for your answer

patriksc commented 1 year ago

Problem seems resolved for the moment - closing this issue.