2014-11-21 89 views
10

剛拿到Project Tango Development Kit平板電腦,並通過一些演示和示例。如何導出Point Cloud Data(Project Tango)?

一些較早的博客文章使用應該預先加載到設備上的「Tango Mapper」應用程序的日誌文件。

不幸的是, 「探戈映射器」 應用程序沒有預裝我的設備上,似乎我不能上找到它Play商店。

是否有其他方法可簡單地導出或檢索PointCloud數據以進行下游渲染?

[型號:黃石,探戈Core版本:1.1:2014年11月14日 - 伯努利釋放]

回答

5

探戈映射器是一個內部的工具,這是目前尚未公開給開發者。我認爲記錄點雲數據的最好方法是使用提供的c或java示例代碼,並且可能會做一些小的修改以將數據記錄到文件中。

℃實施例:https://github.com/googlesamples/tango-examples-c

Java示例:https://github.com/googlesamples/tango-examples-java

+1

謝謝。已經這樣做了,但是想確保沒有更簡單的方法 – caspertm 2014-12-01 19:38:39

+0

好的,但是如果你想導出一個合適的pointcloud,你通常也想跟蹤,而不僅僅是記錄距離 – 2016-02-04 14:34:28

1

請看看GitHub上的Java Point Cloud示例 - 您想要查看的函數是PointXualActivity中的onXyzIsAvailable。提取一些相關線路....

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

此時buffer包含點雲數據 - 我強烈建議你通過二進制服務呼叫出貨這一關的設備,因爲我覺得讓可憐的東西嘗試並將其轉換爲JSON或XML將使事情變得比您想要的慢

0

謝謝馬克的建議。我是一個新手程序員,這是我第一次使用java ... 我有興趣將Tango獲取的PointCloud數據導出到一個文件中,我想問你對我的方法的反饋(我創建了一個Save按鈕,和onClick數據將被保存到外部驅動器上的文件)。請找到該部分的代碼波紋管應保存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

不知道如果你一定要解決這個問題,但我能找到的APK與方法一起使用的探戈更新的平板電腦出口版。我使用本博客中描述的方法成功導出點雲數據。

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

編輯

程序下載APK或使用源代碼在GitHub的項目文件夾中找到。

一旦完成,就像平常一樣啓動應用程序。會有一個滑塊記錄和自動。如果您滑動記錄,它只會等到您點擊快照按鈕才能記錄您當前正在查看的點雲數據。

如果您滑動自動,它將連續記錄點雲數據並創建文件,因爲它跟蹤您移動的位置。請記住,文件越大,保存爲zip所需的時間越長。

一旦完成滑動記錄,它會提示您保存併發送。

我發現保存到Google雲端硬盤更容易,因爲其他方法有時無法發送。

一旦完成下載免費的Paraview App發現http://www.paraview.org/download/加載您的點雲數據。

它應該是兩個文件一個你的姿勢數據和其他點雲。 (您可以使用您在導入之前看到的摺疊箭頭逐個加載每個數據。)

就是這樣,您將能夠看到您的數據並實際播放由於姿勢數據而錄製的動畫集。

(只寫出這個,因爲你正在尋找一種更簡單的方式來導出數據)這可能是最簡單的。你可以採取上述數據,並開始根據所收集的姿勢數據重建了房間。)

所有信貸源代碼和教程轉到該Kitware博客

如果鏈路斷開DM我和我將文件發送給你。

APK可以在這裏找到

APK DOWNLOAD

他們也已在博客的底部列出他們的源代碼。它基於在應用商店中發現的探戈探索者。

+0

你應該描述鏈接過程你的答案也是如此;有一天鏈接可能會中斷,但你的答案仍然可以在這裏找到。 – 2015-06-01 00:14:11

相關問題