2014-11-21 18 views
10

Ho appena acquistato un tablet Project Tango Development Kit e ho lavorato con alcune demo ed esempi.Come esportare i dati Point Cloud (Project Tango)?

Alcuni post precedenti del blog utilizzano i file di registro da un'applicazione "Tango Mapper" che deve essere precaricata sul dispositivo.

Purtroppo, l'applicazione "Tango Mapper" non sono venuto precaricati sul mio dispositivo e io non riesco a trovare su il Play Store.

Esiste un altro metodo per esportare o recuperare semplicemente i dati di PointCloud per il rendering downstream?

[Numero di modello: Yellowstone, Tango Core Version: 1.1: 2014/11/14-Bernoulli-release]

risposta

5

Tango Mapper è uno strumento interno, e non è attualmente pubblica per gli sviluppatori. Penso che il modo migliore per registrare i dati della nuvola di punti sia usare il codice di esempio c o java fornito, e magari fare qualche piccola modifica per registrare i dati in un file.

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

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

+1

Grazie. Lo stavo già facendo, ma volevo assicurarmi che non esistesse un metodo più semplice – caspertm

+0

Ok, ma normalmente vuoi anche fare il tracking se vuoi esportare un pointcloud appropriato, non solo registrare le distanze –

2

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

Più mappatura interna: https://www.youtube.com/watch?v=3BNOsxMZD14

Sembra che più di alcuni dei collaboratori di Tango progetto sono stati assunti o acquistati da google. Ad esempio la maggior parte dei link a codice e/o articoli di Hidof sono MIA, rimane solo una pagina facebook con pochi indizi. La macchina del wayback dell'archivio internet ha alcune istantanee del loro sito Web per i curiosi.

1

Vai a dare un'occhiata all'esempio di Java Point Cloud su GitHub - La funzione che vuoi vedere è onXyzIsDisponibile in PointCloudActivity. Estrazione poche righe rilevanti ....

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(); 
       } 

A questo punto buffer contiene i dati nuvola di punti - consiglio vivamente di spedire questo spegnere il dispositivo tramite una chiamata di servizio binario, come credo che fare la cosa povera provare e convertirlo in JSON o XML renderebbe le cose più lente di quanto desideri

0

Grazie Marco per il tuo consiglio. Sono un programmatore alle prime armi ed è la prima volta che lavoro con java ... Sono interessato ad esportare i dati PointCloud acquisiti da Tango in un file e vorrei chiedere il tuo feedback sul mio approccio (ho creato un pulsante Salva, e onClick i dati verrebbero salvati in un file su un'unità esterna). Si prega di trovare il codice muggito per la parte che dovrebbe salvare i dati xyzIj:

@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

Non so se avete mai avuto modo di risolvere questo problema, ma sono stato in grado di trovare l'APK insieme a un metodo per esportare utilizzando tablet Tango aggiornato versione.Ho esportato con successo i dati della nuvola di punti utilizzando il metodo descritto in questo blog.

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

Modifica

Procedura scaricare l'APK o utilizzare il codice sorgente trovato trova nella cartella del progetto GitHub.

Una volta fatto, avviare l'app normalmente. Ci sarà un record di scorrimento e automatico. Se si scorre la registrazione, esso aspetterà solo fino a quando non si preme il pulsante Istantanea per registrare i dati della nuvola di punti che si stanno visualizzando.

Se si fa scorrere l'auto, registrerà continuamente i dati della nuvola di punti e creerà i file mentre tiene traccia di dove si sta spostando. Tieni presente che più grande è il file, più grande è il tempo necessario per salvare come zip.

Una volta fatto scorrere il record e verrà richiesto di salvare e inviare.

Trovo più facile salvare su Google Drive come altri metodi a volte non riescono a inviare.

Una volta terminato il download, l'app Paraview gratuita trovata http://www.paraview.org/download/ carica i dati della nuvola di punti.

Dovrebbero essere due file uno i tuoi dati di posa e l'altra nuvola di punti. (puoi caricare individualmente ogni dato utilizzando la freccia di compressione che vedi prima di importarlo.)

Sarà così che potrai vedere i tuoi dati e riprodurre effettivamente l'animazione di te che lo registra a causa dei tuoi dati di posa raccolto.

(l'ho scritto solo perché cercavi un modo più semplice per esportare i dati) Questo è probabilmente il più semplice. Si potrebbe prendere tali dati e cominciano a ricostruire la stanza in base ai dati posa raccolti.)

tutto il merito per il codice sorgente e esercitazione va al blog Il Kitware

DM Se i collegamenti sono rotti me e io invierà il file a te.

APK si trova qui

APK DOWNLOAD

anche loro hanno elencato il loro codice sorgente alla base del blog. Si basa sul Tango Explorer che si trova nell'app store.

+0

Dovresti descrivere la procedura collegata in anche la tua risposta; un giorno il collegamento potrebbe interrompersi, ma la tua risposta dovrebbe essere ancora disponibile qui. –

Problemi correlati