VINS-Mono icon indicating copy to clipboard operation
VINS-Mono copied to clipboard

Question about CalibrationExRotation in initial_ex_rotation.cpp

Open zhanghanduo opened this issue 5 years ago • 1 comments

Hi. When I read the paper "Monocular Visual–Inertial State Estimation With Initialization and Camera–IMU Calibration", the equation (5)(6) and (7) should correspond to the function CalibrationExRotation(...) in src/initial/initial_ex_rotation.cpp:

  double w = Quaterniond(Rc[i]).w();
        Vector3d q = Quaterniond(Rc[i]).vec();
        L.block<3, 3>(0, 0) = w * Matrix3d::Identity() + Utility::skewSymmetric(q);
        L.block<3, 1>(0, 3) = q;
        L.block<1, 3>(3, 0) = -q.transpose();
        L(3, 3) = w;
      Quaterniond R_ij(Rimu[i]);
        w = R_ij.w();
        q = R_ij.vec();
        R.block<3, 3>(0, 0) = w * Matrix3d::Identity() - Utility::skewSymmetric(q);
        R.block<3, 1>(0, 3) = q;
        R.block<1, 3>(3, 0) = -q.transpose();
        R(3, 3) = w;

        A.block<4, 4>((i - 1) * 4, 0) = huber * (L - R);

However, according to the paper, shouldn't it be: L represents Rimu[i] and R represents Rc[i])?

image

Additionally how did you derive equation (6)? Chould you give a reference? Thank you!

zhanghanduo avatar Jul 22 '19 09:07 zhanghanduo

I think maybe there is the roation from imu(body cooradinate) to camera coordinate in code , rather than camer to imu rotation expressed as in paper . So, there just a transpose in indication.

zhaoworking avatar Dec 02 '20 02:12 zhaoworking