2016-05-21 4 views
0

UPDATE:Überprüfen Sie, ob Bereich wird in loaded ADF lokalisierte

fand ich die Linien für die Wieder Lokalisierung, aber de das Gerät nicht lokalisieren nicht selbst. Ich bekomme immer den Statuscode POSE_INITIALIZING zurück nach dem Laden des ADF. Auch die Neulokalisierung im Java Area_Description_Example funktioniert nicht. Jeder mit dem gleichen Problem? Die einzigen Apps mit funktionierender Re-Locozation sind "Explorer" und "ADF Inspector", aber ich habe keinen Quellcode dafür. Hier

ist die Lösung meiner ersten Frage, die eine Neuprogrammierung Lokalisierung nach dem Laden eines ADF zu überprüfen:

TangoPoseData lastFramePose = mTango.getPoseAtTime(mRgbTimestampGlThread, 
          FRAME_PAIR); 
    if (lastFramePose.statusCode == TangoPoseData.POSE_VALID) { 

      // Device is re-located!    

      // Update the camera pose from the renderer 
      mRenderer.updateRenderCameraPose(lastFramePose); 
      mCameraPoseTimestamp = lastFramePose.timestamp; 
    } else { 
      Log.w(TAG, "Can't get device pose at time: " + mRgbTimestampGlThread); 
    } 

OLD:

In meiner Anwendung kann der Benutzer entscheiden, ob er starten eine neue Sitzung oder laden Sie eine zuvor aufgezeichnete ADF (Bereichsbeschreibungsdatei). Ich lud die ADF (adfUUID) aufgelöst und es in das Tango-Klasse-Objekt (mTango) wie unten:

TangoConfig config = mTango.getConfig(TangoConfig.CONFIG_TYPE_CURRENT); 
config.putString(TangoConfig.KEY_STRING_AREADESCRIPTION, adfUUID); 
mTango.setRuntimeConfig(config); 

Also meine Frage ist nun, wie kann ich überprüfen, ob der Bereich mit dem geladenen ADF lokalisiert ist? Ich möchte einen Koordinatenreferenzrahmen zum Start des Dienstes der geladenen ADF und nicht meiner neuen Sitzung haben. Dies sind meine Einstellungen in meinem connectTango() Funktion:

TangoConfig config = mTango.getConfig(TangoConfig.CONFIG_TYPE_DEFAULT); 
config.putBoolean(TangoConfig.KEY_BOOLEAN_LOWLATENCYIMUINTEGRATION, true); 
config.putBoolean(TangoConfig.KEY_BOOLEAN_DEPTH, true); 
config.putBoolean(TangoConfig.KEY_BOOLEAN_LEARNINGMODE, true); 
config.putBoolean(TangoConfig.KEY_BOOLEAN_COLORCAMERA, true); 
mTango.connect(config); 

Und das Fram Paar I verwendet wird:

private static final TangoCoordinateFramePair FRAME_PAIR = new TangoCoordinateFramePair(
     TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION, 
     TangoPoseData.COORDINATE_FRAME_DEVICE); 

Antwort

1

Sowohl "Eingelegter ADF bei aktiviertem Lernmodus" als auch "ADF bei aktiviertem Lernmodus laden" sind gut. Derzeit verwenden sie unterschiedliche Standort-Pipeline. So wird die erste viel lokalisierter dauern als die zweite. ADF-Inspektor für Load ADF ist mit Lern ​​off laden ADF auf mit Lernen auf ‚

für Fragen zu“ Tango Explorer mit mit Re-lokalisiert werden soll‘, wie der ADF zu überprüfen lokalisierte bitte das Beispiel Java-Code sehen:

// Check for Device wrt ADF pose, Device wrt Start of Service pose, 
       // Start of Service wrt ADF pose (This pose determines if the device 
       // is relocalized or not). 
       if (pose.baseFrame == TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION 
         && pose.targetFrame == TangoPoseData 
         .COORDINATE_FRAME_START_OF_SERVICE) { 
        if (pose.statusCode == TangoPoseData.POSE_VALID) { 
         mIsRelocalized = true; 
        } else { 
         mIsRelocalized = false; 
        } 

Pose Daten auf den dritten diejenigen:

ArrayList<TangoCoordinateFramePair> framePairs = new ArrayList<TangoCoordinateFramePair>(); 
    framePairs.add(new TangoCoordinateFramePair(
      TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE, 
      TangoPoseData.COORDINATE_FRAME_DEVICE)); 
    framePairs.add(new TangoCoordinateFramePair(
      TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION, 
      TangoPoseData.COORDINATE_FRAME_DEVICE)); 
    framePairs.add(new TangoCoordinateFramePair(
      TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION, 
      TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE)); 
+0

Dank für Ihre Antwort danken Aber gibt es eine Möglichkeit, die Zeit für ** „Loaded ADF auf mit Lernmodus auf“ ** zu reduzieren.? Weil es in diesem Fall total unbrauchbar ist, wenn du 5 warten musst Minuten, bis das Gerät lokalisiert ist. – Konsti

+0

Und ist es sogar möglich, den Lernmodus während der Laufzeit zu aktivieren, nachdem eine Neulokalisierung stattgefunden hat? – Konsti

+0

Entschuldigung, im Moment gibt es keine Möglichkeit, dass Sie das tun können –

0

ich ein paar ziemlich ähnlich Fragen zum gleichen Thema hier:

1. question

2. question

3. question

4. question

Also ich denke, die Antwort ist folgende: Re-Lokalisierung mit einem geladenen ADF und Lernmodus auf funktioniert, aber es dauert eine ganze Weile (bis zu 3-5 Minuten) . Gehe herum und gib nicht auf.

Re-Lokalisierung mit einem geladenen ADF und Lernmodus aus funktioniert.