问题标签 [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.
unity3d - 使用 Unity 和 Tango 'Leibniz' 访问色框
我刚刚开始修补 Tango 和 Unity。不幸的是,似乎没有任何文档或示例说明如何使用最新版本在 Unity 中访问颜色数据。
我一直使用来自 GitHub ( https://github.com/googlesamples/tango-examples-unity ) 的运动跟踪示例作为起点,尝试以与读取姿势和深度数据相同的方式读取传入的颜色帧。我假设最好的方法是通过“ITangoVideoOverlay”接口和“OnTangoImageAvailableEventHandler”回调。
我现在要做的就是让“OnTangoImageAvailableEventHandler”回调工作,但我无法弄清楚。我在 Tango 管理器上选中了“启用视频叠加”,并将以下脚本连接到 GUI 文本对象以进行调试。
是否有一些我缺少的相机初始化?或者仍然是在这个旧代码中使用 VideoOverlayListener 的首选方法:Getting color data in Unity
我知道也可以通过 Unity 直接访问相机(禁用深度)。但我想先学习“正确的方式”。
感谢您的时间!
2015 年 4 月 28 日更新 - 脚本的最新版本,回调有效!仍然需要转换为 RGB 颜色
该脚本是作为 GitHub 上 Google Tango Motion Tracking 示例的补充而编写的。将脚本附加到 Unity 摄像机,然后将公共字段“m_viewScreen”链接到网格对象(如平面)以显示视频纹理。
opencv - 什么是 Project Tango 镜头畸变模型?
Project Tango C API 文档说TANGO_CALIBRATION_POLYNOMIAL_3_PARAMETERS
镜头失真建模为:
x_corr_px = x_px (1 + k1 * r2 + k2 * r4 + k3 * r6) y_corr_px = y_px (1 + k1 * r2 + k2 * r4 + k3 * r6)
也就是说,未失真坐标是失真坐标的幂级数函数。Java API中还有另一个定义,但该描述不够详细,无法说明函数映射的方向。
我在正确注册事物时遇到了很多麻烦,而且我怀疑映射实际上可能朝相反的方向发展,即失真坐标是未失真坐标的幂级数。如果相机校准是使用 OpenCV 生成的,那么问题的原因可能是 OpenCV 文档自相矛盾。最容易找到和理解的描述是OpenCV 相机校准教程,它与 Project Tango 文档一致:
但另一方面,OpenCV API 文档指定映射采用另一种方式:
我对 OpenCV 的实验表明,它的 API 文档看起来是正确的,而教程是错误的。正数k1
(所有其他失真参数设置为零)表示枕形失真,负数k1
表示桶形失真。这与Wikipedia 关于 Brown-Conrady 模型的说法相吻合,并且与Tsai 模型相反。请注意,失真可以通过任何一种方式建模,具体取决于使数学更方便的方式。我针对这种不匹配打开了一个针对 OpenCV的错误。
所以我的问题是:Project Tango 镜头失真模型是否与 OpenCV 中实现的模型相同(尽管有文档)?
这是我从彩色相机拍摄的图像(可以看到轻微的枕形):
以下是 Tango 服务报告的相机校准:
以下是如何在 python 中使用 OpenCV 去扭曲:
这会产生这个,这可能在顶部边缘有点过度校正,但比我使用反向模型的尝试要好得多:
java - 如何在使用探戈项目感应深度的同时拍摄高分辨率照片
如何使用项目探戈拍照?
我读了这个答案:在 Jacobi Google Tango API 中使用 onFrameAvailable()
这适用于抓取框架,但图片质量不是很好。有没有 takePicture 等价物?
注意java API
不提供 RGB 数据。如果我使用安卓相机拍照,探戈无法感知深度。在那里我将不得不使用 TangoCameraPreview。
谢谢
java - ijParcelFileDescriptor 在 java API 中始终为空
在 onXyzIjAvailable(TangoXyzIjData xyzIj) 中,我可以访问 xyz 但不能访问 ij 数据。为什么它总是 null ?还是将其暴露给java层只是时间问题?
google-project-tango - 构建 Tango Unity 示例失败
我最近得到了一个 Tango 平板设备,从 Github 下载了 tango-examples-unity开始学习。非常兴奋,我在 Unity 中打开了 MeshBuilder 项目并尝试构建它,但它失败了。我的 Android SDK 和 jdk 是最新的,并且在 Unity 首选项中设置的路径是正确的。我在 64 位 Windows 8 系统上使用 Unity 5.0.1f。Leibniz 发布说明说他们将样本迁移到 Unity 5,所以我在 Unity 5 中尝试它们。并不是说我在尝试构建同一个项目时在 Unity 4.6.3f1 中没有得到完全相同的错误。
错误:
DirectoryNotFoundException:找不到路径的一部分“C:\path\tango-examples-unity-master\ExperimentalProjects\MeshBuilder\Assets\Plugins\Android\tango-native-service-client-helperlib\bin\aidl\com\ google\atap\tangoservice\ITangoLogRequestListener.aidl”或“Temp\StagingArea\android-libraries\tango-native-service-client-helperlib\bin\aidl\com\google\atap\tangoservice\ITangoLogRequestListener.aidl”
构建播放器时出错:DirectoryNotFoundException:找不到路径的一部分“C:\path\tango-examples-unity-master\ExperimentalProjects\MeshBuilder\Assets\Plugins\Android\tango-native-service-client-helperlib\bin\ aidl\com\google\atap\tangoservice\ITangoLogRequestListener.aidl”或“Temp\StagingArea\android-libraries\tango-native-service-client-helperlib\bin\aidl\com\google\atap\tangoservice\ITangoLogRequestListener.aidl”
到目前为止我已经尝试过:
- 下载项目的不同版本。我能够从这个其他版本构建的唯一项目是 PointCloud。无法建造其他任何东西。
- 用新下载的 leibniz unity 包替换包含的 TangoSDK。这没有帮助。
- 从两个 url 下载的源代码构建其他项目。不去。
- 尝试来自 [developers dot google dot com/project-tango/apis/unity/unity-depth-perception] 的 Tango Unity 教程。由于未找到此类组件,因此在“创建 PointCloud 对象”步骤失败。我确实导入了 TangoSDK,所以我认为本教程可能属于旧版本的 SDK,不适用于 Leibniz。如果我错了,请纠正我。
- 尝试打开 PointCloudUnity 项目的 Kalman 版本。得到一个错误:
打开文件失败。它正在寻找 /MotionDetectionHelper$MotionDetectionListener.class 而没有找到它。
- 通过电子邮件发送 Tango 帮助。还没有回应。
感谢您阅读这篇长文并提供帮助。
c# - 在新的 Unity api 中从 Tango 获取 RGB
对于旧版本的 Tango Unity API,似乎有很多答案,但对于 Leibniz,它似乎已经改变了。我想获取背面非鱼眼镜头相机的 RGB 信息。
我在继承自 ITangoVideoOverlay 的类中使用此方法。但是图像缓冲区在 HAL_PIXEL_FORMAT_YV12 中返回一个字节 [],我只是不知道如何处理它,没有任何示例代码。
java - Project Tango onPoseAvailable() 和 getPoseAtTime() 差异
我看到onPoseAvailable()
回调和Tango.getPoseAtTime()
. 我编写了一个测试程序,在其中onPoseAvailable()
记录了传递的姿势,并使用getPoseAtTime()
之前 2 个回调的时间戳来请求姿势。KEY_BOOLEAN_SMOOTH_POSE
已配置false
。这是执行此操作的代码(timestamps_
成员变量是 a LinkedList<Double>
):
这是实际日志的摘录(为了清楚起见,我对记录的调用进行了去交错处理):
看看最后一个getPoseAtTime()
条目,时间戳为 2733.062994。onPoseAvailable
请注意,它的位置值与具有相同时间戳的姿势不匹配。这里有些不对劲。
我确实认为样条拟合姿势不一定需要通过控制点,但我认为这不是一个可以接受的解释。首先,拥有一个为相同测量提供不同值的 API 没有多大意义。但除此之外,实际数字并不支持该猜想。
查看getPoseAtTime()
Y 值,0.460060。这在之前和之后的所有 Y 值的 Y 范围之外onPoseAvailable()
(事实上,在整个日志中)。没有合理的插值模型可以产生这个值。
我想问题是这里发生了什么?姿势不一致,因此至少其中一个是错误的(如果不是两个)。我的猜测onPoseAvailable()
是更有可能是正确的。
这是两种姿势方法(Nash 释放)的 Y 位置与时间的关系图,其中平板电脑在其底座中静止:
蓝线是onPoseAvailable()
回调,红线是getPoseAtTime()
轮询。这些结果有点奇怪。如果姿势完全不同,我希望轮询值会更平滑,因为它可以在轮询时间之前和之后使用来自样本的贡献进行过滤,而回调值将未过滤或仅使用先验过滤样品。但这不是我们所看到的 - 轮询值看起来更嘈杂。
这是我上下移动平板电脑时捕获的类似图表。轮询值仍然具有更高的频率,并且两个信号的跟踪不是特别紧密。
java - Project Tango 的深度、显示和设备参考框架有何关联?
我试图找到 , 和 之间的TANGO_COORDINATE_FRAME_CAMERA_DEPTH
相对TANGO_COORDINATE_FRAME_DISPLAY
变换TANGO_COORDINATE_FRAME_DEVICE
。文档建议我可以用它来getPoseAtTime()
查找这些转换,但我无法让它工作。onPoseAvailable()
我刚刚使用以下代码在 tango_handler.cc 中增加了 hello-tango-jni-example回调:
参考帧文档上的表格表明这是一个有效的帧对。但是,当我运行时,我在日志中得到了这个:
当我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 的粘合中崩溃了。
有什么办法可以让它工作吗?有没有人碰巧知道为开发人员平板电脑在这些帧之间进行转换的转换?
google-project-tango - 探戈项目上的 USB OTG
有谁知道 Project Tango 平板电脑是否支持 USB OTG?或者,如果扩展坞上的 USB 3.0 端口可以用作 OTG 集线器?网上只说这些端口是用来充电的,所以我不确定是否还包括 OTG 功能。如果 Tango 还能够与其他设备交互,它肯定会增加 Tango 跟踪功能的实用性。
android-ndk - Project Tango Point Cloud 奇怪的崩溃,以及密集的深度图
我正在尝试使用 Project Tango C API,但如果点云的数量超过 ~6.5k(经过一些测试),应用程序崩溃且没有错误,代码如下
但是,如果我使用for (int i = 0; i < XYZ_ij->xyz_count && i < 6500; i++)
一切正常。我只是想知道是否有使用 C API 的接入点云的上限,或者我做错了什么?
(宽度为 320,高度为 180,其他内部函数从 Tango API 加载)
另外,谷歌在此页面底部提到使用最近邻过滤器获取密集深度图,Tango API 中是否有用于此的接口?或者有人会建议它的开源实现。
我还想知道是否有任何方法可以在 onXYZijAvailable 中“拉”彩色图像(1280x720),因为我需要一个密集的同步彩色点云。我是否需要应用外部矩阵来对齐两个坐标系,或者我只需要对彩色图像进行二次采样(假设它们的坐标系相同)?
感谢您的任何建议!