-
Notifications
You must be signed in to change notification settings - Fork 16
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
E57 did not use MM as unit #6
Comments
Hi, thanks for the issue. Actually I don't deal anymore with E57 data, so I don't have any dataset to test with, to verify if also my data is in meters or not. |
here is the free dataset: https://lasers.leica-geosystems.com/blk360-data-set-downloads by the way, why not read rgb data from e57 ( to pcl::PointXYZRGBA ) |
https://github.com/dogod621/E57Converter Hi, I write a new E57 converter. I fix the issue, and further:
|
Hi @dogod621 As I developed it on my own time ago, I haven't used OutOfCore because I had only the possibility to test with smaller point clouds and I was using Intensity instead of RGB because my original dataset wasn't with RGB information, therefore I used the XYZI format. Anyway thanks for the inputs, I will try to fix my code as soon as I can but I will accept happily merge requests |
@madduci I found the correct way to read scaled integer.... jean-noelp: |
Hi @dogod621 thank you very much for the hint. I'm doing (slowly) a refactoring of code supporting newer PCL and newer C++ standard |
E57 use meters as unit (You can check the translation value of pose data.).
But cartesianX, cartesianY, cartesianZ are "ScaledIntegerNode",
so you should scale the values.
for example , I got my E57 data from BLK360 scanner.
scaleX, scaleY, scaleZ of following Example code is 1e-5.
after multiply the scale, the final XYZ is in meters. ( And then it can match the pose translation )
Example:
e57::CompressedVectorNode scanPoints(scan.get("points"));
e57::StructureNode proto(scanPoints.prototype());
e57::ScaledIntegerNode protoX(proto.get("cartesianX"));
e57::ScaledIntegerNode protoY(proto.get("cartesianY"));
e57::ScaledIntegerNode protoZ(proto.get("cartesianZ"));
double scaleX = protoX.scale();
double scaleY = protoY.scale();
double scaleZ = protoZ.scale();
The text was updated successfully, but these errors were encountered: