我正在尝试查找TANGO_COORDINATE_FRAME_CAMERA_DEPTH
,TANGO_COORDINATE_FRAME_DISPLAY
和TANGO_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_DEPTH
,TANGO_COORDINATE_FRAME_IMU
或TANGO_COORDINATE_FRAME_DISPLAY
替换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。
有什么方法可以让它发挥作用吗?有没有人碰巧知道为开发者平板电脑在这些帧之间转换的转换?