简体   繁体   English

Google Tango-使用IMU作为基础框架获取姿势数据

[英]Google Tango - Getting pose data with IMU as base frame

I am working with Google Project Tango and I tried a basic example with getting pose data: 我正在使用Google Project Tango,并且尝试了一个获取姿势数据的基本示例:

TangoCoordinateFramePair pair;
pair.base = TANGO_COORDINATE_FRAME_START_OF_SERVICE;
pair.target = TANGO_COORDINATE_FRAME_CAMERA_COLOR;
base = TANGO_SUPPORT_ENGINE_OPENGL;
target = TANGO_SUPPORT_ENGINE_OPENGL;
error = TangoSupport_getPoseAtTime(poseTimestamp, pair.base, pair.target, base, target, ROTATION_0, &pose);

This gives TANGO_SUCCESS. 这给出了TANGO_SUCCESS。

However, if I only change base to this 但是,如果我仅将基准更改为此

pair.base = TANGO_COORDINATE_FRAME_IMU;

...I keep getting TANGO_INVALID. ...我一直得到TANGO_INVALID。

I tried using C API and Unity SDK, and both have a same invalid result. 我尝试使用C API和Unity SDK,但两者都有相同的无效结果。
Why is that? 这是为什么? Why can't I use TANGO_COORDINATE_FRAME_IMU? 为什么不能使用TANGO_COORDINATE_FRAME_IMU?

I am trying to fix Camera offset as mentioned here: 我正在尝试修复相机偏移,如下所述:
Camera-Offset | 相机偏移| Project Tango 探戈计划
but without any success... 但没有成功...

TangoSupport_getPoseAtTime only works for getting a pose between a fixed coordinate frame and a moving coordinate frame. TangoSupport_getPoseAtTime仅用于在固定坐标系和移动坐标系之间获取姿势。 The TANGO_INVALID error results from the fact that TANGO_COORDINATE_FRAME_CAMERA_COLOR and TANGO_COORDINATE_FRAME_IMU are both moving coordinate frames. TANGO_INVALID错误是由于TANGO_COORDINATE_FRAME_CAMERA_COLORTANGO_COORDINATE_FRAME_IMU均为移动坐标系这一事实造成的。

In order to find the offset between TANGO_COORDINATE_FRAME_IMU and TANGO_COORDINATE_FRAME_CAMERA_COLOR (or between any pair of moving coordinate frames), you need to use TangoService_getPoseAtTime instead. 为了找到TANGO_COORDINATE_FRAME_IMUTANGO_COORDINATE_FRAME_CAMERA_COLOR之间(或任何一对移动坐标系之间)的偏移,您需要改用TangoService_getPoseAtTime

This code snippet should give you the transform you're looking for: 此代码段应为您提供所需的转换:

TangoCoordinateFramePair pair;
pair.base = TANGO_COORDINATE_FRAME_IMU;
pair.target = TANGO_COORDINATE_FRAME_CAMERA_COLOR;
TangoPoseData pose;
TangoErrorType result = TangoService_getPoseAtTime(0.0, pair, &pose);

Note also that since both of these coordinate frames are moving (ie in a fixed position with respect to the device, and each other) the pose resulting from this call will not change as the device moves. 还应注意,由于这两个坐标系都在移动(即,相对于设备处于固定位置,并且彼此相对),因此该调用产生的姿势不会随着设备的移动而改变。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM