CogRob / distributed-mapper

This library is an implementation of the algorithm described in Distributed Trajectory Estimation with Privacy and Communication Constraints: a Two-Stage Distributed Gauss-Seidel Approach.
https://cognitiverobotics.github.io/distributed-mapper/
110 stars 32 forks source link

confusing about test error #7

Closed NatureLan-sudo closed 2 years ago

NatureLan-sudo commented 2 years ago

when I run ./runDistributedMapper --nrRobots 4 --dataDir ../../data/example_4robots/ I can get results like this: Initial Error: 20.5862 Centralized Two Stage Error: 1.9521 Centralized Two Stage + GN Error: 1.94262 Distributed Error: 1.95323 1、I don't quite understand the meaning of these errors, does it represent the error between the final estimate and the ground truth, or is there another meaning? How can I get the ground truth? 2、If it doesn't mean the error between the final estimate and groundtruth, how should I test the error between the optimized pose and the ground truth. 3、I observed that the file only outputs the result of the whole graph, is this the result of fusing multiple robot graphs? How should I test the error from the ground truth? Hope to get your help! Thank you very much! @itzsid

itzsid commented 2 years ago

Hi @lantianran,

  1. It is the linearized error given all the constraints in the pose graph. graph.error(estimate) returns that. You can think of it as the sum of all the constraint errors between relative pose constraints and the estimate. Checkout https://gtsam.org/tutorials/intro.html for more details on what graph.error(...) represents. Ideally for distributed optimizer, the error should be the same as centralized two stage. Centralized two stage + GN represents running a few gauss-newton iteration starting from centralized 2 stage estimate.
  2. I do not have GT saved for this dataset. One solution is to assume the centralized estimator's output as the GT and compare against that. Another solution is to create your own synthetic dataset with noisy constraints and use that.
  3. Yes, a vertex only belongs to one robot, so you concatenate each robot's estimate to get the final centralized estimate.

Let me know if it's not clear. Thanks!

NatureLan-sudo commented 2 years ago

Thank you so much for your kind help. I have been sick recently and I'm sorry to get back to you so late. After your explanation, I have fully understood.