in this line: ``` Phi_tr.block(3, 0, 3, 3) = -R_3D.transpose() * skew_x(R_3D.transpose() * (new_p - p_3D)); ``` I think `new_p` is equal to `(p_3D + R_3D.transpose()*v*dt)`, then the line comes to: ``` Phi_tr.block(3, 0, 3, 3) = -R_3D.transpose() * skew_x(R_3D.transpose() * (R_3D.transpose()*v*dt)); ``` But it seems that the final result should be: ``` Phi_tr.block(3, 0, 3, 3) = -R_3D.transpose() * skew_x(v*dt)); ``` So I think the origin line should be the following code: ``` Phi_tr.block(3, 0, 3, 3) = -R_3D.transpose() * skew_x(R_3D * (new_p - p_3D)); ``` Just remove the `.transpose()`