1

我试图找到 , 和 之间的TANGO_COORDINATE_FRAME_CAMERA_DEPTH相对TANGO_COORDINATE_FRAME_DISPLAY变换TANGO_COORDINATE_FRAME_DEVICE文档建议我可以用它来getPoseAtTime()查找这些转换,但我无法让它工作。onPoseAvailable()我刚刚使用以下代码在 tango_handler.cc 中增加了 hello-tango-jni-example回调:

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_IMU, TANGO_COORDINATE_FRAME_DISPLAY, or替换时会出现类似的错误TANGO_COORDINATE_FRAME_CAMERA_COLOR(所有这些都表明应该有效)。TANGO_COORDINATE_FRAME_START_OF_SERVICE当我使用 ( , )的帧对时,我确实得到了有效的输出,TANGO_COORDINATE_FRAME_DEVICE所以我知道初始化、配置和调用序列正在工作。

我尝试使用 ( TANGO_COORDINATE_FRAME_START_OF_SERVICE, TANGO_COORDINATE_FRAME_CAMERA_DEPTH) 的帧对作为解决方法,但返回的状态为TANGO_POSE_INVALID. 我也尝试过使用 Java API,但是在 JNI 与 C API 的粘合中崩溃了。

有什么办法可以让它工作吗?有没有人碰巧知道为开发人员平板电脑在这些帧之间进行转换的转换?

4

0 回答 0