2014-11-21 7 views
10

Ich habe gerade ein Projekt Tango Development Kit Tablet und habe einige der Demos und Beispiele durchgearbeitet.Wie kann ich Punktwolkendaten (Project Tango) exportieren?

Einige ältere Blogposts verwenden die Protokolldateien aus einer "Tango Mapper" -Anwendung, die auf dem Gerät vorinstalliert sein sollte.

Leider hat die "Tango Mapper" Anwendung nicht vorinstalliert auf dem Gerät kommen, und ich kann nicht scheinen, auf zu finden der Play Store.

Gibt es eine andere Methode zum einfachen Exportieren oder Abrufen der PointCloud-Daten für Downstream-Rendering?

[Modellnummer: Yellowstone, Tango Core Version: 1.1: 2014.11.14-Bernoulli-release]

Antwort

5

Tango Mapper ist ein internes Tool, und es ist derzeit nicht öffentlich an den Entwickler. Ich denke, der beste Weg, um die Punktwolkendaten zu protokollieren, ist die Verwendung des mitgelieferten c- oder java-Beispielcodes und vielleicht einige kleine Änderungen, um die Daten in einer Datei zu protokollieren.

c Beispiel: https://github.com/googlesamples/tango-examples-c

java Beispiel: https://github.com/googlesamples/tango-examples-java

+1

Danke. War schon dabei, wollte aber sichergehen, dass es keine einfachere Methode gab. – caspertm

+0

Ok, aber normalerweise wollen Sie auch Tracking durchführen, wenn Sie eine richtige Pointcloud exportieren wollen, nicht nur die Distanzen protokollieren. –

2

Sparse-Mapping: https://www.youtube.com/watch?v=x5C_HNnW_3Q

Weiteres Indoor-Mapping: https://www.youtube.com/watch?v=3BNOsxMZD14

es, dass mehr als ein paar der Teilnehmer an den Tango erscheint Projekt wurden von Google eingestellt oder gekauft. Als ein Beispiel sind die meisten Links zu Code und/oder Artikeln von Hidof MIA, nur eine Facebook-Seite mit wenigen Hinweisen bleibt übrig. Die Wayback-Maschine des Internetarchivs hat ein paar Schnappschüsse ihrer Website für Neugierige.

1

Werfen Sie einen Blick auf das Java Point Cloud-Beispiel auf GitHub - Die Funktion, die Sie betrachten möchten, ist onXyzIsAvailable in PointCloudActivity. Extrahieren von einigen relevanten Linien ....

public void onXyzIjAvailable(final TangoXyzIjData xyzIj) { 
.... 
       byte[] buffer = new byte[xyzIj.xyzCount * 3 * 4]; 
       FileInputStream fileStream = new FileInputStream(
         xyzIj.xyzParcelFileDescriptor.getFileDescriptor()); 
       try { 
        fileStream.read(buffer, 
          xyzIj.xyzParcelFileDescriptorOffset, buffer.length); 
        fileStream.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

An diesem Punkt buffer enthält die Datenpunktwolke - ich würde empfehlen Ihnen dringend, diese aus über einen binären Serviceanruf das Gerät versenden, wie ich glaube, das arme Ding zu machen versuchen, und konvertieren Sie es in JSON oder XML würde Dinge langsamer als Sie möchten

0

Vielen Dank Mark für Ihren Rat. Ich bin ein Anfänger Programmierer und ich arbeite zum ersten Mal mit Java ... Ich bin daran interessiert, die von Tango erworbenen PointCloud-Daten in eine Datei zu exportieren und ich möchte Sie um Ihr Feedback zu meinem Ansatz bitten (Ich habe einen Speichern-Knopf erstellt, und onClick die Daten würden in einer Datei auf einem externen Laufwerk gespeichert werden). Sie finden den Code unten für den Teil, der die xyzIj Daten speichern soll:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    ... 
     case R.id.save_button: 
      savePointCloud(); 
      break; 
     default: 
      Log.w(TAG, "Unrecognized button click."); 
     } 
} 


private static void savePointCloud(final TangoXyzIjData xyzIj, String file) { 
    File directoryName = getAlbumStorageDir(file); 
    FileOutputStream out = new FileOutputStream(directoryName,"text.txt"); 
    byte[] buffer = new byte[xyzIj.xyzCount * 3 * 4]; 
    FileInputStream fileStream = new FileInputStream(
      xyzIj.xyzParcelFileDescriptor.getFileDescriptor()); 
    int read; 
     while ((read=fileStream.read(buffer))!=1){ 
      try{ 
      out.write(buffer, 0, read); 
      out.close(); 
      System.out.println("Printed to file"); 
     }catch(IOException e){e.printStackTrace();} 
     } 
} 

public File getAlbumStorageDir(String dirName) { 
    if (!isExternalStorageWritable()) { 
     return null; 
    } else { 
     // Get the directory for the user's public downloads directory. 
     File file = new File(Environment.getExternalStoragePublicDirectory(
       Environment.DIRECTORY_DOWNLOADS), dirName); 
     if (!file.mkdirs() || !file.exists()) { 
      Log.e(TAG, "Directory not created"); 
      return null; 
     } 
     return file; 
    } 
} 

public boolean isExternalStorageWritable() { 
    String state = Environment.getExternalStorageState(); 
    if ((Environment.MEDIA_MOUNTED.equals(state) 
      && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))) { 
     return true; 
    } else { 
     Log.e(TAG, "External storage is not mounted READ/WRITE."); 
     return false; 
    } 
} 
8

Nicht sicher, ob Sie jemals dieses Problem zu lösen habe, aber ich konnte die APK finden zusammen mit einem Verfahren unter Verwendung von Tango aktualisiert Tablette exportieren Ausführung.Ich habe die Daten der Punktwolke mit der in diesem Blog beschriebenen Methode erfolgreich exportiert.

http://www.kitware.com/blog/home/post/838

bearbeiten

Verfahren die APK herunterladen oder verwenden Sie fand den Quellcode im Github Projektordner.

Sobald dies erledigt ist, starten Sie die App wie gewohnt. Es wird ein Schieberegler aufnehmen und automatisch. Wenn Sie den Datensatz verschieben, wird nur gewartet, bis Sie auf die Schaltfläche "Schnappschuss" klicken, um die Punktwolkendaten aufzunehmen, die Sie gerade betrachten.

Wenn Sie das Auto schieben, zeichnet es kontinuierlich die Punktwolkendaten auf und erstellt Dateien, während es die Position verfolgt, an der Sie sich bewegen. Denken Sie daran, je größer die Datei ist, desto größer ist es, um sie als Zip zu speichern.

Sobald Sie fertig sind, schieben Sie den Datensatz und Sie werden aufgefordert, zu speichern und zu senden.

Ich finde es einfacher, auf Google Drive zu speichern, da andere Methoden manchmal nicht gesendet werden können.

Sobald getan, laden Sie die kostenlose Paraview App gefunden http://www.paraview.org/download/ laden Sie Ihre Point Cloud-Daten.

Es sollte zwei Dateien eine Pose Daten und die andere Punktwolke sein. (Sie können die einzelnen Daten einzeln mit dem Pfeil vor dem Import laden.)

Dadurch können Sie Ihre Daten sehen und die Animation, die Sie aufgenommen haben, aufgrund Ihrer Posedaten wiedergeben gesammelt.

(schrieb dies nur aus, weil Sie nach einem einfacheren Weg zum Export von Daten suchten) Dies ist wahrscheinlich der einfachste Weg. Sie könnten nehmen die Daten und beginnen, den Raum zu rekonstruieren, basierend auf den Stellungsdaten gesammelt.)

alle Kredit für Quellcode und Tutorials auf den Blog Die Kitware geht

Wenn Links gebrochen DM sind mir und ich wird die Datei an Sie senden.

APK ist hier

APK DOWNLOAD

sie auch ihren Quellcode an der Unterseite des Blogs aufgeführt haben. Es basiert auf dem Tango Explorer im App Store.

+0

Sie sollten die verknüpfte Prozedur in beschreiben deine Antwort auch; Eines Tages könnte der Link kaputt gehen, aber Ihre Antwort sollte hier noch verfügbar sein. –