Skip to content
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

Understanding ARCore Poses (with 3D Matlab viewer) #902

Closed
alexs7 opened this issue Oct 1, 2019 · 1 comment

Comments

@alexs7
Copy link

commented Oct 1, 2019

I am trying to plot the 3D point clouds from the hello_ar_java example and the camera (that is the phone).

I save the 3D points on a text file along with the camera pose frame.getCamera().getDisplayOrientedPose(). I have tried also frame.getCamera().getPose() and frame.getAndroidSensorPose().

The 3D points from frame.acquirePointCloud() are already in world space that is they have already been multiplied by a pose matrix (or model matrix as the ARCore docs say).

In Matlab have this:

figure;
plot3(points_raw(:,1),points_raw(:,2),points_raw(:,3),'r*');
hold on
plot3(0,0,0,'g*');  % origin
hold on
plotCamera('Location', posemtx(1:3,4), 'Orientation', posemtx(1:3,1:3), 'Size', 0.1);

This should plot the 3D point cloud and the camera pointing in a reasonable direction. If you check the image below it does not make sense:

arcore

You can see this makes no sense. The camera is not pointing even at the points. I used frame.getCamera().getDisplayOrientedPose() for this. The others give similar bad results.

Do I have to to "cancel" the pose first before plotting ? inv(pose) * points3D ?

Which is the correct pose that I should be using ?

@alexs7

This comment has been minimized.

Copy link
Author

commented Oct 3, 2019

Matlab uses different coordinate systems than OpenGL (the on ARCore uses).

@alexs7 alexs7 closed this Oct 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.