Tango-poses

什么是探戈体式?

当你的移动设备在3D空间,它计算它在哪里(位置),以及它如何旋转(方向)高达每秒100次。该组合计算的单个实例被称为设备的姿势。与运动跟踪,区学习,或深度知觉时姿势是一个重要的概念。

为了计算姿势,你必须选择的基础和目标的参考帧 ,这可能会使用不同的坐标系。可以查看姿势以从对象帧变换顶点到基架所需的平移和旋转。

下面是一个简化版本探戈构成结构 中的C:

struct PoseData {
    double orientation[4];
    double translation[3];
}

一个姿势的两个关键组成部分是:

定义相对于所述底座上的目标帧的转动四元数。
一个3D矢量定义目标框的翻译相对于该基架。
一个实际的姿态结构包含其它领域,如时间戳和框架对的复印件,你会看到下面。

注:此页面中的示例使用C API,但函数调用和数据结构是用于Java相似。在团结,有哪些处理很多这些细节为你预制件。
姿势数据

您可以通过两种方式来请求姿势数据:

请求方法#1

轮询使用姿势TangoService_getPoseAtTime()。这将返回最接近给定的时间戳从基座到目标帧的姿势。下面是C API在这个函数的代码:

TangoErrorType TangoService_getPoseAtTime(
    double timestamp,
     TangoCoordinateFramePair frame_pair,
     TangoPoseData* pose);

该TangoCoordinateFramePair 结构规定基准帧和目标帧。

注意:如果你正在增强现实应用程序,我们建议您使用TangoService_getPoseAtTime()或TangoSupport_getPoseAtTime() ,因为除了轮询姿势,它们允许你与视频帧对齐姿势时间戳。
以下代码获取相对于该启动OF-服务帧的装置框架的姿势:

TangoPoseData pose_start_service_T_device;
TangoCoordinateFramePair frame_pair;
frame_pair.base = TANGO_COORDINATE_FRAME_START_OF_SERVICE;
frame_pair.target = TANGO_COORDINATE_FRAME_DEVICE;
TangoService_getPoseAtTime(
    timestamp,
    frame_pair,
    &pose_start_service_T_device);

在本实施例,包括在姿势变量名的基础和目标帧的名称使名称更具描述:

TangoPoseData pose_start_service_T_device;

请求方法#2

接收姿势更新,因为他们成为可用。要做到这一点,附加一个onPoseAvailable()回调 TangoService_connectOnPoseAvailable()。该样本是从我们 hello_motion_tracking 示例项目,可以在找到 tango_handler.cc文件:

TangoCoordinateFramePair pair;
pair.base = TANGO_COORDINATE_FRAME_START_OF_SERVICE;
pair.target = TANGO_COORDINATE_FRAME_DEVICE;
if (TangoService_connectOnPoseAvailable(1, &pair, onPoseAvailable) !=
    TANGO_SUCCESS) {
  LOGE("TangoHandler::ConnectTango, connectOnPoseAvailable error.");
  std::exit(EXIT_SUCCESS);

在这两种情况下,您会收到一个TangoPoseData结构:

typedef struct TangoPoseData {
  int version;
  double timestamp;                // In milliseconds
  double orientation[4];           // As a quaternion
  double translation[3];           // In meters
  TangoPoseStatusType status_code;
  TangoCoordinateFramePair frame;
  int confidence;                  // Currently unused
  float accuracy;                  // Currently unused
} TangoPoseData;

姿势状态

TangoPoseData包含的状态下,由表示 TangoPoseStatusType 枚举,它提供了关于姿态估计系统的状态的信息。可用的TangoPoseStatusType成员有:

typedef enum {
  TANGO_POSE_INITIALIZING = 0,
  TANGO_POSE_VALID,
  TANGO_POSE_INVALID,
  TANGO_POSE_UNKNOWN
} TangoPoseStatusType;

INITIALIZING:运动跟踪系统或者启动或从无效状态中恢复,并且不应当被使用的姿态数据。

VALID:系统认为正在返回的姿势是有效的,并应使用。

INVALID:系统遇到某种困难,所以姿势估计都可能不正确。

UNKNOWN:系统处于未知状态。

姿势状态的生命周期

pose-lifecycle.png

图1:探戈姿势数据生命周期
该TANGO_POSE_INITIALIZING状态代码表示探戈框架初始化和姿态数据尚未公布。如果您在使用回调,您将收到只有一个姿势更新设置状态码 TANGO_POSE_INITIALIZING,而框架正在初始化。

初始化完成后,姿势都在TANGO_POSE_VALID状态。如果您在使用回调,你会那样频繁,因为他们都可以接收更新。

如果系统遇到的困难,并进入TANGO_POSE_INVALID状态,恢复初始化过程取决于您的配置。如果 config_enable_auto_recovery被设置为True,系统立即复位运动跟踪系统,并进入TANGO_POSE_INITIALIZING状态。如果 config_enable_auto_recovery设置为False,造成数据保持在 TANGO_POSE_INVALID一个国家,没有更新,直到收到你打电话 TangoService_resetMotionTracking()。

使用姿势状态

您的应用程序应该将状态正在作出反应的姿态数据中返回。例如,等到你有兴趣成为你的应用程序开始之前,互动的有效数据姿势。如果姿态变为无效,暂停交互,直至系统恢复后。根据您的应用程序,您系统后做什么恢复会有所不同。如果你只使用运动跟踪,你可以简单地恢复你的应用程序。如果您在使用区域学习还是ADF的,指导用户走动,直到设备可以本地化本身。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容