04-12-2022 11:34 AM
Hello,
Is there someone knowledgeable in the filed of 3D measuring and so on...? I have trouble programming the ICP algorithm and would really appreciate some help.
I think I understand the theory, but my implementation isn´t working at the moment..
Thank you
04-12-2022 01:48 PM
Do you have a typical set of 2 data clouds for testing.
04-12-2022 01:51 PM
I have created some basic 2D and 3D shapes for testing. Didn´t use the Stanford bunny or other point cloud.
04-12-2022 02:03 PM
Well, the actual meaning of my question was if you could share a typical dataset. i.e. attach it here.
Lets start with the 2D problem (fewer degrees of freedom)> I assume you allow translation and rotation.
04-12-2022 02:12 PM
Sure, I´ll attach them. Fix is the stationary one and Mov is to which I apply the calculated translation and rotation. Sadly the translation vector seem to be always wrong. Don´t know about the rotation matrix. I have tried to figure out the mistake, but no luck so far. The Mov file is just rotated and translated version of the first one (checked on that).
04-12-2022 02:14 PM
Can we assume that the points of the two sets are ordered the same way?
04-12-2022 02:19 PM
Yes, here they are in order. Though the real data will not be, so my application needs to work for both ordered and unordered clouds. I have coded a function to assign each point from Fix cloud a coresponding point in Mov cloud. So that I can minimize the error function based on euclidian distances between the corespondencees.
04-12-2022 02:59 PM - edited 04-12-2022 03:02 PM
04-12-2022 03:05 PM
Many thanks for your idea and your time spent on this. I will look into it and hopefully get something out of it for my work.
04-13-2022 11:50 AM
It would be trivial to rewrite the model to output N distances. The Y input would then be an array of N zeroes, i.e. you want to translate/rotate until all pairwise distances are as small as possible.