Closed GabrieleGalimberti-GaleSelector closed 3 years ago
I think that icp_fine is an object with inliers rms among others, and you want to pass just the icp_fine.transformation in that line. Also make sure that you have normals
Hi @cbenitez81,
The function arguments are incorrect for o3d.pipelines.registration.registration_icp
reg_p2p = o3d.pipelines.registration.registration_icp(
source, target, threshold, trans_init,
o3d.pipelines.registration.TransformationEstimationPointToPoint(),
o3d.pipelines.registration.ICPConvergenceCriteria(max_iteration=2000))
Here reg_p2p
and trans_init
have different types.
reg_p2p is a class having reg_p2p.transformation, reg_p2p.fitness, reg_p2p.rmse, whereas trans_init is a {4,4} matrix.
[reg_p2p.transformation and trans_init are same type and shape (both are transformation matrix)].
So, I am not sure why you are using
icp_fine = o3d.pipelines.registration.registration_icp(
source, target, max_correspondence_distance_fine, icp_fine,
o3d.pipelines.registration.TransformationEstimationPointToPlane())
Just removing it will solve your issue.
Thanks.
Thank you, I wasn't careful enough
Hi,
I want to make a Point-To-Plane Registration with this code:
but I find this error: