问题标签 [google-project-tango]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
225 浏览

android - 如何将 GLSurfaceview 渲染保存为 obj 文件?

我正在使用 Eclipse 在 Project Tango 平板电脑上制作应用程序。我无法了解如何将 GLSurfaceview 渲染保存为 obj 文件,以便我可以在 3DSMax 或 Maya 中使用该 obj 文件。

我试图保存为 png 或 jpeg,但它保存了一个没有用的黑色图像。

0 投票
4 回答
1969 浏览

google-project-tango - Google Tango:对齐深度和颜色框架

我想使用 Google Tango 平板电脑对齐(同步)深度/颜色帧对,这样,假设两个帧具有相同的分辨率,深度帧中的每个像素对应于颜色帧中的相同像素,即,我想实现一个视网膜专题映射。如何使用最新的 C API(Hilbert Release Version 1.6)来实现这一点?对此的任何帮助将不胜感激。

0 投票
1 回答
557 浏览

unity3d - 离开 Tango 场景时 Unity3D 崩溃

当离开使用Motion TrackingArea Learning和的场景WebcamTexture并移动到使用标准Camera且没有 Tango 预制件的菜单场景时,应用程序将崩溃。

Tango使用预制完成并离开现场时,是否必须调用任何方法?知道为什么会发生崩溃吗?

0 投票
3 回答
3490 浏览

google-project-tango - 区域描述文件 (ADF) 是什么样的?

我开始使用 Google Tango 平板电脑,希望能够从扫描区域创建(基本)2D / 3D 地图。但首先我想尽可能多地阅读有关 Tango(传感器/API)的信息,以便制定一个尽可能节省时间的计划。

我立即注意到学习区域的能力,这是一个非常有趣的概念,但是我找不到关于这些所谓的区域描述文件 (ADF) 的任何信息。

我知道 ADF 文件可以在地理上引用,它们包含元数据和唯一的 UUID。此外,我知道它们的基本功能,但仅此而已。

在模块的某些部分,ADF 文件被称为“地图”,在其他部分,它们只是被称为“描述”。

那么这些文件是什么样的呢?它们已经是基本 (GRID) (2D) 地图,还是只是描述?我知道有些人已经提取了 ADF 文件,因此我们将不胜感激!

0 投票
0 回答
355 浏览

google-project-tango - 黑暗环境中的探戈

对于 ATAP 团队:

我的 Yellowstone 设备的鱼眼镜头上似乎有一个 IR 滤光片。我在充满红外光的黑暗房间里试过探戈。彩色相机显示房间被点亮(如灰度),而鱼眼没有显示任何内容(只是黑色图像)。Tango 服务在此设置中不起作用。

鱼眼对于视觉里程计有多重要?我想知道从鱼眼镜头上取下红外滤光片是否会使 Tango 服务提供正确的位置/方向读数。但在我的 Tango 上执行这项操作很昂贵,所以我想在尝试之前先问这个问题。

仅供参考,Tango 服务会在此设置中提供诸如“FishEye 曝光不足”之类的状态消息。也许 Tango 服务已经停止尝试在这种状态下执行视觉里程计(即使 RGB-IR 相机可以看到房间是灰度的)。所以为了欺骗探戈服务,我用一个小手电筒把它照到鱼眼相机上。这摆脱了曝光不足的状态,但它没有启用正确的方向和定位。探戈还是很迷茫。据我所知,RGB-IR 相机没有进行视觉里程计(所以鱼眼可以完成所有工作)......或者由 IR 照明的相机帧对于视觉里程计来说是不可接受的(也许自然需要颜色特征识别???)。

Tango 团队能否提供有关如何仅通过红外光在暗室中执行视觉里程计的任何见解?或者这甚至可能吗?

0 投票
2 回答
2085 浏览

google-project-tango - 在 Jacobi Google Tango API 中使用 onFrameAvailable()

问题: 有谁知道如何使用 Tango Java ( Jacobi ) APIonFrameAvailable()回调来获取 Tango 的彩色相机图像缓冲区?

背景:

我有一个增强现实应用程序,可以在 Tango 的背景中显示视频。我已按照此示例使用 Java API (Jacobi) 成功创建了视频叠加示例。我的应用程序工作正常,视频在后台正确呈现。

作为应用程序的一部分,我想在用户按下按钮时存储视频后缓冲区的副本。因此,我需要访问相机的 RGB 数据。

根据Jacobi 发布说明,任何希望访问相机 RGB 数据的类都应该onFrameAvailable()OnTangoUpdateListener. 我这样做了,但我没有看到任何实际获取像素的句柄或参数:

Java API

如图所示,onFrameAvailable只有一个参数,整数表示生成视图的相机的 id。将此与 C 库回调进行对比,后者提供对图像缓冲区的访问:

C API

我期待 Java 方法具有类似于 C API 调用中的缓冲区对象的东西。

我试过的

我尝试扩展TangoCameraPreview类并将图像保存在那里,但我只得到黑色背景。

我要去哪里

我正准备根设备,然后使用该onFrameAvailable方法提示外部根进程,例如以下之一:

邮政23610900

发布 10965409

发布 4998527

我希望我能找到一种方法来避免root hack。

先感谢您!

0 投票
0 回答
238 浏览

google-project-tango - Jacobi 更新:使用 Tango.getCameraIntrinsics 时崩溃

在 Jacobi 更新之前,我以这种方式毫无问题地获取相机内在函数:

Jacobi 更新后,我尝试通过以下方式调用相同的函数来获取相机内在函数:

现在,在 Jacobi 版本中调用该函数会在运行应用程序时产生此崩溃:

关于如何解决这个问题的任何想法?

0 投票
1 回答
525 浏览

google-project-tango - Tango 图像帧的计时问题

当我尝试同时获取深度数据、图像数据和姿势数据时,Tango 似乎正在丢弃图像帧。

我正在尝试捕获深度和图像帧并将它们与姿势数据同步。使用 C point-cloud-jni-example 我添加了代码以将点云数据转储到内存缓冲区,然后转储到文件中。我为 onFrameAvailable() 添加了一个回调,并将图像数据复制到缓冲区,然后复制到文件。由于图像数据为 30 Hz,深度数据为 ~5 Hz,我天真地期望最新图像与最新的深度帧非常接近。时间戳不是很接近。在某些情况下,它们的差异超过 100 毫秒。所以我开始研究 onXYZijAvailable()、onFrameAvailable() 和 onPoseAvailable() 回调的时间以及相应的数据时间戳。

我将 logcat 转储添加到每个回调并打印出系统时间 (std::chrono::system_clock::now()) 和返回数据的 TangoSystem 时间戳,无论是深度、图像还是姿势。其中一些在我们如何计算时间戳差异中进行了描述?.

这是一些姿势时间。sys 时间是执行回调时的当前时钟时间。姿势时间戳来自实际的姿势结构。

这里显示了不同姿势的相应差异。根据记录的时间戳,姿势计时在 33 毫秒处坚如磐石。回调时间变化很大,可能是由于应用程序的负载。

这是一些深度时间和相应的差异。时间戳非常稳定,大约为 0.2 秒。

这是一些图像时间。标有“---”的行是问题框架。

这是上述列表的相应时差。

请注意,每 4 帧图像时间有一个很大的延迟,大约 100 毫秒。随后是具有相同或几乎相同时间戳的两个帧。即使在两个连续图像上的时间戳相同的情况下,回调仍然会触发以指示新帧。结果是我错过了每五帧视频。这对于试图匹配深度和图像数据的应用程序来说很糟糕。

我已经从代码中删除了任何额外的处理。在回调中,唯一发生的事情是将数据复制到静态缓冲区。点云的渲染仍在正常渲染线程中完成。

那么,什么给了?Tango 设备不能处理同时运行的深度、图像和姿势回调吗?我是否需要使用 UpdateTexture() 而不是 onFrameAvailable()?

0 投票
4 回答
2495 浏览

android - Project Tango:在坐标系之间转换和合并点云

我正在尝试将采样并存储在 XYZij 数据中的点云(根据文档,将数据存储在相机空间中)转换为世界坐标系,以便它们可以合并。我用于 Tango 监听器的帧对COORDINATE_FRAME_START_OF_SERVICE作为基本帧和COORDINATE_FRAME_DEVICE目标帧。

这是我实现转换的方式:

  1. 从as检索旋转四元数,从TangoPoseData.getRotationAsFloats()as检索q_r点位置。XYZijp

  2. 应用以下旋转,其中q_mult是计算两个四元数的 Hamilton 乘积的辅助方法(我已针对另一个数学库验证了此方法):

    p_transformed = q_mult(q_mult(q_r, p), q_r_conjugated);

  3. 将检索到的翻译添加TangoPoseData.getTranslationAsFloats()p_transformed

但最终,点p_transformed似乎总是以部分重叠的点云而不是对齐的合并点云而告终。

我在这里错过了什么吗?转换中是否存在概念错误?

提前致谢。

0 投票
2 回答
214 浏览

google-project-tango - 探戈深度测试不顺利

我刚刚发现我的探戈平板电脑的深度传感器在我的项目中没有按预期工作。然后我按照https://developers.google.com/project-tango/hardware/depth-test的说明进行了深度测试,在屏幕中找到了点云的右上角区域(大约是矩形的1/4)总是比其他人更接近,并且充满错误。我在不同的照明条件下进行了测试,还测试了一些干净的地板区域,并在该区域发现了类似的错误。那么深度传感器出了什么问题呢?

太感谢了!

陈思源