How to return the RMSE using the pcregistericp function?

I have been using the pcregistericp function with MATLAB R2021a to align two 3d scans. So far, through visual inspection, the function has aligned the scans correctly. However, I would like a quantitative measure of the alignment of the two scans. I tried to get the function to return the RMSE using the command found in the MATLAB documentation, [t,rmse] = pcregistericp(moving,fixed). This, however, did not work as the RMSE variable was returned as a point cloud rather than a positive scalar representing the RMSE between the data sets.
At first, I thought the RMSE wasn't being returned because the data sets were not the same size (hence the use of the open form of ICP). To test this theory, I made the two point clouds from the same data set (thus, ensuring that the number of points are the same). After doing this, the RMSE was still not returned.
I would appreciate any insight into this issue.

 Accepted Answer

Carter Taylor
Carter Taylor on 23 Jun 2023
Edited: Carter Taylor on 23 Jun 2023
I found this answer on Stack Overflow:
"The problem is already solved. The previous outcome variable "rmse" is actually a point cloud. I tried to modify the variable rmse to the third output argument.
[tform,temp,rmse] =pcregrigid(ptCloud,ptCloud2,'Metric','PointToPoint','Extrapolate',true)"
This seemed to work; however, if anyone has any other solutions, I would be happy to see them.
It should also be noted that making a third argument in [t,rmse,RMSE_Real] = pcregistericp(moving,fixed); returns the rmse of the data and fixes my issue.
I'm just writing this solution here in case anyone is having the same issue!

More Answers (0)

Products

Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!