PointCloudLibrary / PointCloudLibrary/pcl
ICP different result depending if cloud is in [mm] or [m]
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 4.7k
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 6
Description
I have two identical clouds, with a translation diff on Z-axis about 200mm(0.2m).
When clouds are in [m], ICP::IterativeClosestPointsWithNormals gives me perfect alignment, which is expected as clouds are the same.
The problem occurs when I have clouds in millimeters. With the same scenario, I am not able to get alignment.
The only parameters I am setting are:
setRansacOutlierRejectionThreshold for both is half of uniform sampling leaf size. [Meter] cloud leaf is 0.05, a [millimeter] is 50
setMaxCorrespondenceDistance [Meter] cloud leaf is 0.5, [millimeter] is 500
I would expect the result should be the same, especially clouds are the same.
I also tried to increase transformationEpsilon and euclideanFitnessEpsilon -by multiplying the default value by 1000 - in the case of millimeters.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at ICP::IterativeClosestPointsWithNormals and reproduce the reported comparison using identical clouds translated by about 200 mm, once represented in metres and once in millimetres. Check the configured setRansacOutlierRejectionThreshold, setMaxCorrespondenceDistance, transformationEpsilon, and euclideanFitnessEpsilon values; done means both unit scales produce equivalent alignment.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-vision
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100