0

在完成区域学习并将数据存储在 ADF 文件中之后,我们有什么方法可以标记 ADF 文件中的对象。例如,假设应用程序学习了一个包含咖啡机的区域。

我可以用一些文本“咖啡机”标记该咖啡机,以便下次识别/本地化该区域时,我可以看到“咖啡机”标签

4

2 回答 2

0

首先,您应该知道您使用的是 Unity、C++ 还是 Java。在 Unity 下,来自Tango 示例中的AreaLearningInGameController,在文件的最后,您可以看到它们保存在 XML 文件中的数据结构。保存的结构只需要可序列化,并且字符串是可序列化的,因此在您的情况下,您可以执行以下操作:

/// <summary>
/// Data container for Objects.
/// 
/// Used for serializing/deserializing objects to xml.
/// </summary>
[System.Serializable]
public class ObjectData
{
    [XmlElement("tag")]
    public string m_tag;

    [XmlElement("position")]
    public Vector3 m_position;

    [XmlElement("orientation")]
    public Quaternion m_orientation;
}

然后您所要做的就是保存并加载您的对象及其相关标签。在我链接的示例中,执行此操作的方法非常清楚。

于 2017-07-31T18:51:34.917 回答
0

您可以使用 SDK 的 Unity 示例中的区域学习功能,在加载的 ADF 上放置标记。这些标记保存在 XML 文件中,您可以在其中检查该标记的坐标。这些坐标保存在 Unity 坐标系中。(参见 [此处][1] - 与探戈坐标相比,y 和 z 反转)

因此,对于您的示例,如果您在咖啡机上放置一个标记,您可以获取坐标并在这些坐标处放置一个标签。

坐标是从 ADF 起点开始的三个轴上的值(以米为单位)。此起点 (0,0,0) 是您按下 Learn 创建新 ADF 时设备的位置。

除此之外,目前还没有简单的方法来进行动态对象识别,这是 2018 年的一个有趣问题。

于 2017-07-29T09:44:45.343 回答