使用谷歌探戈区域学习标记对象

时间:2017-07-28 14:26:40

标签: google-project-tango tango

完成区域学习并将数据存储在ADF文件中后,我们是否可以在ADF文件中标记对象。例如,让我们说应用程序学习包含咖啡机的区域。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

除此之外,现在没有简单的方法来进行动态物体识别,这对2018年来说是一个有趣的问题。

答案 1 :(得分: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;
}

然后您需要做的就是使用关联的标签保存和加载对象。在我链接的示例中,这样做的方式非常清楚。