Is your local coordinate derivative wrong?

Issue #448 resolved
冯悠扬 created an issue

I am reading your GTSAM4.0 code about using Betweenfactor and pose3d type to get pose graph optimization results. I read the book and paper you mentioned in the code: "Chirikjian11book2" and "Barfoot14tro". In these two papers, the SE3 Expmap derivative matrix should be: [J_(w) Q; Z_3x3 J_(w)] But in your code the SE3 Expmap derivative matrix is: [J_(w) Z_3x3; Q J_(w)] Is your code wrong? or I am wrong? The code I mentioned is in Pose3.cpp/computeQforExpmapDerivative

Comments (4)

  1. Frank Dellaert

    Could be :-) But conventions often differ in the literature. Two things to know about GTSAM conventions:

    • we update using exponential map on the right, e.g. T <- T * Exp(\xi)
    • 6-dim \xi is laid out rotation first, then . translation.

    Still convinced? Also, is there no unit test that checks this? Tagging @thduynguyen

  2. Duy-Nguyen Ta

    We do have unit tests for this. I also think the difference is in the order of rotation and translation in se3 vectors as you said. Barfoot14tro uses the first part for translation (See eq. 4 in their paper).

  3. Frank Dellaert

    OK, reporter, if you're convinced by this, please close the issue, or give arguments why our unit test is flawed.

  4. Frank Dellaert

    We think derivatives are correct, and reporter is confused about Lie algebra convention used by GTSAM. Unit tests confirm. Open to re-opening if reporter can provide new evidence.

  5. Log in to comment