-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Confusion with alignment matrix #31
Comments
Hi Tiago, The variable names are a bit ambiguous here, and I see how this can be confusing. The function trajectory_alignment() aligns the "source" camera trajectory with our known "target" trajectory and in addition puts it in real-world coordinates (LiDAR coordinates). This target trajectory (gt_traj_col = e.g. Ignatius_COLMAP_SfM.log) still lives in an arbitrary COLMAP outputted reference frame, therefore we transform it to the LiDAR reference frame using "gt_trans" and do the ICP between the camera positions to get the final trajectory alignment afterwards (its a precursor for the final refinement with the dense point cloud later). The GT in the name gt_traj_col here just means that it is the camera trajectory we want to get our traj_to_register aligned to, so its basically the camera trajectory, where we know how it aligns to the GT reconstruction.
let me know if there are still questions, |
Hi Arno, Thank you for the detailed reply! Does this mean that – besides
And so, |
Exactly: |
Awesome, thank you for the replies! |
Hi, while I was going through the code in
python_toolbox/evaluation/
to better understand how the evaluation metrics are computed I got a little confused by the way alignment / transformation matrices are applied.From what I understand, the adopted convention is that the matrices align the reconstructed pose to the ground-truth (as mentioned in #12 (comment) and on section 3-1. of the tutorial), i.e., using Open3D's parameter names: "source = reconstructed / estimate" and "target = ground-truth".
Hence, in
run_evaluation()
the transformation matrixgt_trans
should align the reconstruction to the ground-truth (right?).However, in
trajectory_alignment()
the transformation is applied to the ground-truth trajectory:https://github.com/intel-isl/TanksAndTemples/blob/90cd206d6991acec775cf8a2788517d7ecc30c2f/python_toolbox/evaluation/registration.py#L65-L69
Does it make sense to apply a "reference to ground-truth" transform to data in the ground-truth coordinate frame? Shouldn't this use the inverse transform, effectively taking "ground-truth to reference" (i.e.
traj_pcd_col.transform(np.linalg.inv(gt_trans))
)? Or instead, apply the transformation to the reference data (traj_to_register_pcd
in this case)?Thank you.
The text was updated successfully, but these errors were encountered: