2015-09-04 64 views
0

當使用Tango時,我會使用什麼,回調或其他方式來檢測設備何時已定位到之前加載的ADF?我如何檢測到本地化已經發生?

這主要是爲了與Tango UX結合的UI目的,告訴用戶在環境中走動。

回答

0

當您的TangoPoseData與ADF的frame恢復有效時,可能會檢測到本地化。

看的AreaLearningActivity這種簡化的邏輯探戈Java示例:

//tell tango to provide pose for ADF 
ArrayList<TangoCoordinateFramePair> framePairs = new ArrayList<TangoCoordinateFramePair>(); 
framePairs.add(new TangoCoordinateFramePair(
     TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION, 
     TangoPoseData.COORDINATE_FRAME_DEVICE)); 

//register a listener for the frames chosen 
mTango.connectListener(framePairs, new OnTangoUpdateListener() { 

    //listens for updates from tango pose 
    public void onPoseAvailable(TangoPoseData pose) { 

    //base frame of ADF provides coordinates relative to the origin of the ADF 
    if (pose.baseFrame == TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION 
     && pose.targetFrame == TangoPoseData.COORDINATE_FRAME_DEVICE) 

     //if the status is valid then localization has succeeded 
     if(pose.statusCode == TangoPoseData.POSE_VALID){ 
     Log.i(TAG,"Successfully localized with ADF"); 
     } 
    } 
    } 

你的配置必須註明其ADF是感興趣:

config.putString(TangoConfig.KEY_STRING_AREADESCRIPTION,adfId); 

這個過程是不容易從代碼觀察,但我發現它調試了AreaLearningActivity示例。

TangoLocalizer.builder().register(myListener).adfId(myAdfId).build(); 
0

在Unity3D,你可以使用pose.status_codeOnTangoPoseAvailable(TangoPoseData)用於檢查檢查狀態(有效/無效:Java的API將使得常見的場景,你要求更明顯,更易於使用受益於更高的抽象水平)的姿勢定義座標框架對。 對於設備本地化需要設置targetFrameTANGO_COORDINATE_FRAME_DEVICEbaseFrameTANGO_COORDINATE_FRAME_AREA_DESCRIPTION

public void OnTangoPoseAvailable(TangoPoseData pose) 
{ 
    // Define the frame-pair 
    if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION 
     && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE) 
    { 

    // Check if the pose is VALID or INVALID 
     if (pose.status_code == TangoEnums.TangoPoseStatusType.TANGO_POSE_VALID) 
     { 
      ////......if pose is VALID 
     } 
     else 
     { 
      ////......if pose is INVALID 
     } 
    } 
} 

您還需要使用m_tangoApplication.Startup (m_selectedADF);以及加載ADF。

相關問題