簡體   English   中英

(探戈計划)點雲的旋轉和平移與區域學習

[英](Project Tango) Rotation and translation of point clouds with area learning

我有一個Java應用程序,當我按下按鈕時,它會記錄點雲xyz坐標以及正確的姿勢。

我想要的是選擇一個對象,在前面記錄一個pointCloud,在后面記錄一個pointCloud,然后合並2個雲。

顯然,要獲得合理的結果,我需要平移和旋轉記錄的一個或兩個雲。 但是我是Tango Project的新手,我應該缺少一些東西。

我已經在這篇文章中了解了這一點

那里,@ Jason Guo討論了這些矩陣:

start_service_T_deviceimu_T_deviceimu_T_depth

第一個矩陣是從服務開始設備 ,但是我正在使用區域學習,因此我的BaseFrame是TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION

  • 我是否也可以使用相同的策略?
  • 只需將start_service_T_device替換為area_description_T_device類的area_description_T_device

附帶問題

我想將此方法擴展為對象的3D重建。
我想獲取同一對象不同視圖的多個點雲,旋轉並平移它們以固定軸的形式。 然后我假設,如果x〜= x'&& y〜= y'&& z〜= z',則2個點(x,y,z)和(x',y',z')是相同的點。
這樣,我應該能夠獲得整個對象的點雲,對嗎?

  • 這種方法合適嗎?
  • 有更好的選擇嗎?

原始帖子有點過時了。 以前,我們沒有getMatrixTransformAtTime() 因此,您必須使用Tango.getPoseAtTime來查詢每個轉換,然后使用矩陣將它們鏈接起來。

但是現在,使用getMatrixTransformAtTime,即使在opengl框架中,您也可以直接查詢area_description_T_depth。 為了將點雲轉換為opengl中的ADF框架,可以使用以下代碼(偽代碼):

TangoSupport.TangoMatrixTransformData transform =
  TangoSupport.getMatrixTransformAtTime(pointCloud.timestamp,
          TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE,
          TangoPoseData.COORDINATE_FRAME_CAMERA_DEPTH,
          TangoSupport.TANGO_SUPPORT_ENGINE_OPENGL,
          TangoSupport.TANGO_SUPPORT_ENGINE_TANGO);

// Convert it into the matrix format you use in render.
// This is a pure data structure conversion, transform is
// in opengl world frame already.
Matrix4x4 model_matrix = ConvertMatrix(transform);

foreach (Point p in pointCloud) {
  p = model_matrix * p;
}

// Now p is in opengl world frame.

但請注意,在使用ADF重新定位或處於學習模式后,您必須具有有效的區域描述框架才能根據區域描述查詢姿勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM