簡體   English   中英

調用TangoSupport.transformPointCloud(transform.matrix,pointCloud)時Tango Java應用程序崩潰

[英]Tango Java app crash when calling TangoSupport.transformPointCloud(transform.matrix, pointCloud)

我是Google Tango開發的新手,我正在嘗試將多個點雲壓縮為一個。 為此,我構建了以下代碼:

for (int i = 0; i < mPointCloudList.size(); ++i) {

    TangoPointCloudData pointCloud = mPointCloudList.get(i);

    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,
                                TangoSupport.ROTATION_IGNORED);

    TangoPointCloudData pcd = TangoSupport.transformPointCloud(transform.matrix, pointCloud);

    int numPoints = pcd.numPoints;

    if (numPoints != 0) {
        int numFloats = 4 * numPoints;
        for (int j = 0; j < numFloats; j = j + 4) {
            myOutWriter.write(String.format("v %f %f %f\n", pcd.points.get(j),
                                pcd.points.get(j), pcd.points.get(j + 2)));
        }
    }
}

我不確定代碼是否正確。 但是,我在這里的原因是因為當我運行這段代碼時,TangoSupport.transformPointCloud(transform.matrix,pointCloud)調用使應用程序崩潰。 錯誤我得到:

A/libc: Fatal signal 11 (SIGSEGV), code 2, fault addr 0x7f61830000 in tid 14384 (.javapointcloud)

關於如何解決此問題或如何解決此問題的任何想法?

謝謝!

我設法通過以下方法解決了這個問題:

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,
                                TangoSupport.ROTATION_IGNORED);

if (transform.statusCode == TangoPoseData.POSE_VALID) {
    int numPoints = pointCloud.numPoints;
    Vector3 point = new Vector3(0f, 0f, 0f);

    double dTransformMatrix[] = new double[transform.matrix.length];

    for (int k = 0; k < transform.matrix.length; k++) {
        dTransformMatrix[k] = (double) transform.matrix[k];
    }

    if (numPoints != 0) {
        int numFloats = 4 * numPoints;
        for (int j = 0; j < numFloats; j = j + 4) {
             if (pointCloud.points.get(j + 3) >= 0.5) {
                 point.x = pointCloud.points.get(j);
                 point.y = pointCloud.points.get(j + 1);
                 point.z = pointCloud.points.get(j + 2);
                 point = point.multiply(dTransformMatrix);
                 myOutWriter.write(String.format("v %f %f %f\n", point.x, point.y, point.z));
             }
         }
     }
}

暫無
暫無

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

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