我正在使用JPointCloud示例应用程序,并对其进行一些修改:
在JPointCloud.java:SetUpExtrinsics()中,我添加了:
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();
应用程序在到达该行时崩溃:
depth2devicePose = mTango.getPoseAtTime(0.0, framePair);
我尝试使用其他框架组合,但每次包含COORDINATE_FRAME_CAMERA_DEPTH时,应用程序都会崩溃。
我忘了什么吗?也许要问深度相机的某种特殊许可?
答案 0 :(得分:1)
它确实也在我身上崩溃了。
然而,根据Java pointcloud example code (extrinsic query part),查询DEPTH_CAMERA wrt(相对于)DEVICE转换的正确方法是使用'与IMU相反的设备'与'CAMAER wrt IMU'相乘,即:< / p>
deive_T_camera = inverse(imu_T_device)* imu_T_camera
另外,请注意彩色相机,深度相机和相机在硬件级别上是相同的相机,因此它们实际上共享相同的外在。
希望这有帮助。
编辑:崩溃实际上会抛出com.google.atap.tangoservice.TangoInvalidException。这可能只是API级别不支持的帧对,如前所述,在这种情况下,建议的方法是使用其他两个矩阵来组成所需的矩阵。