[英](Project Tango) Rotation and translation of point clouds with area learning
我有一個Java應用程序,當我按下按鈕時,它會記錄點雲xyz坐標以及正確的姿勢。
我想要的是選擇一個對象,在前面記錄一個pointCloud,在后面記錄一個pointCloud,然后合並2個雲。
顯然,要獲得合理的結果,我需要平移和旋轉記錄的一個或兩個雲。 但是我是Tango Project的新手,我應該缺少一些東西。
那里,@ Jason Guo討論了這些矩陣:
start_service_T_device
,imu_T_device
,imu_T_depth
getMatrixTransformAtTime()
嗎? 第一個矩陣是從服務開始到設備 ,但是我正在使用區域學習,因此我的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.