Project Tango的深度,显示和设备框架如何相关?

时间:2015-05-09 23:01:42

标签: java c google-project-tango

我正在尝试查找TANGO_COORDINATE_FRAME_CAMERA_DEPTHTANGO_COORDINATE_FRAME_DISPLAYTANGO_COORDINATE_FRAME_DEVICE之间的相对转换。 docs建议我可以 使用getPoseAtTime()查找这些转换,但我无法使其工作。我只是使用以下代码在tango_handler.cc中扩充了hello-tango-jni-example onPoseAvailable()回调:

static void onPoseAvailable(void*, const TangoPoseData* pose) {
  LOGI("Position: %f, %f, %f. Orientation: %f, %f, %f, %f",
       pose->translation[0], pose->translation[1], pose->translation[2],
       pose->orientation[0], pose->orientation[2], pose->orientation[3],
       pose->orientation[3]);

  TangoCoordinateFramePair depthPair;
  depthPair.base = TANGO_COORDINATE_FRAME_DEVICE;
  depthPair.target = TANGO_COORDINATE_FRAME_CAMERA_DEPTH;

  TangoPoseData depthPose;
  TangoService_getPoseAtTime(0.0, depthPair, &depthPose);
  if (depthPose.status_code == TANGO_POSE_VALID) {
    LOGI("depth (%f, %f, %f) (%f, %f, %f, %f)",
         depthPose.translation[0], depthPose.translation[1], depthPose.translation[2],
         depthPose.orientation[0], depthPose.orientation[1], depthPose.orientation[2],
         depthPose.orientation[3]);
  }
  else
    LOGI("depth status %d", depthPose.status_code);
}

参考文档框架上的表格表明这是一个有效的帧对。但是,当我跑步时,我会在日志中得到这个:

05-09 15:30:58.418    9569-9786/com.google.tango.hellotangojni I/hello-tango-jni﹕ Position: 0.002639, 0.075693, 0.031650. Orientation: 0.569572, -0.040792, 0.820440, 0.820440
05-09 15:30:58.419   16639-9782/? W/tango-api-context﹕ Requested extrinsic parameter was not available: base: 40, target: 3
05-09 15:30:58.420    9569-9786/com.google.tango.hellotangojni W/tango_client_api﹕ TangoErrorType TangoService_getPoseAtTime(double, TangoCoordinateFramePair, TangoPoseData*): Failed to query a pose.
05-09 15:30:58.420    9569-9786/com.google.tango.hellotangojni I/hello-tango-jni﹕ depth status 1205139920

使用TANGO_COORDINATE_FRAME_CAMERA_DEPTHTANGO_COORDINATE_FRAME_IMUTANGO_COORDINATE_FRAME_DISPLAY替换TANGO_COORDINATE_FRAME_CAMERA_COLOR时会出现类似的错误(所有文档都指出应该有效)。当我使用(TANGO_COORDINATE_FRAME_START_OF_SERVICETANGO_COORDINATE_FRAME_DEVICE的帧对时,我得到有效的输出,所以我知道初始化,配置和调用序列正在工作。

我尝试使用一对(TANGO_COORDINATE_FRAME_START_OF_SERVICETANGO_COORDINATE_FRAME_CAMERA_DEPTH)作为解决方法但返回状态TANGO_POSE_INVALID。我也尝试使用Java API,但是在JNI粘合剂中崩溃到C API。

有什么方法可以让它发挥作用吗?有没有人碰巧知道为开发者平板电脑在这些帧之间转换的转换?

0 个答案:

没有答案