matthieu
matthieu

Reputation: 1591

Application crashes when asking for a frame that involves COORDINATE_FRAME_CAMERA_DEPTH

I'm using the JPointCloud sample app, and modifying it a little bit:

In JPointCloud.java : SetUpExtrinsics(), I added:

TangoPoseData depth2devicePose = new TangoPoseData();
framePair.baseFrame = TangoPoseData.COORDINATE_FRAME_DEVICE;
framePair.targetFrame = TangoPoseData.COORDINATE_FRAME_CAMERA_DEPTH;
try {
    depth2devicePose = mTango.getPoseAtTime(0.0, framePair);
} catch (TangoErrorException e) {
    Toast.makeText(getApplicationContext(), R.string.TangoError,
            Toast.LENGTH_SHORT).show();

The application crashes when reaching the line:

depth2devicePose = mTango.getPoseAtTime(0.0, framePair);

I tried with other combinations of frame, but each time COORDINATE_FRAME_CAMERA_DEPTH is included, the app crashes.

Did I forget something ? Maybe to ask some kind of special permission for the depth camera ?

Upvotes: 0

Views: 174

Answers (1)

xuguo
xuguo

Reputation: 1826

It indeed crashes on me as well.

However, according to the Java pointcloud example code (extrinsic query part), the correct way of querying the DEPTH_CAMERA w.r.t(with respect to) DEVICE transformation is using 'the inverse of DEVICE w.r.t IMU' multiply 'CAMAER w.r.t IMU', which is:

deive_T_camera = inverse(imu_T_device) * imu_T_camera

Also, note that the color camera, depth camera and camera are the same camera on the hardware level, so they actually share the same extrinsic.

Hope this helps.

Edit: the crashes actually throw an com.google.atap.tangoservice.TangoInvalidException. This might just be a frame pair not supported from API level, as mentioned before, the suggested way would be using other two matrices to compose the desired matrix in this case..

Upvotes: 1

Related Questions