我试图找到 , 和 之间的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_DEPTH
用TANGO_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 的粘合中崩溃了。
有什么办法可以让它工作吗?有没有人碰巧知道为开发人员平板电脑在这些帧之间进行转换的转换?