hit.getDistance () не дает правильное расстояние - PullRequest
1 голос
/ 27 января 2020

Я пытаюсь измерить высоту HitPose в ARcore и обнаружил, что функция getDistance иногда возвращает то, что кажется неправильным значением для плоскостей. Любые мысли о том, почему это или как узнать, как getDistance вычисляет его значение?

Я использую функцию handleTap в HelloArActivity.java (https://github.com/google-ar/arcore-android-sdk), чтобы продемонстрировать это ,

Я добавил следующую функцию, чтобы вывести результаты попадания теста на попадание и вызвать его в handleTap. Пример вывода показывает, что расстояние время от времени далеко, но при этом вычисляется расстояние, но функция примера calcillDoToPlane показывает правильное расстояние. Пример выходных данных соответствует коду

private String DumpHitList(List<HitResult> hitResultList, Frame frame){
    String str = new String();
    double angle[] = getAngleofthedevice();
    int index = 0;


    str = ".......Hit list size:"+hitResultList.size()+"..";

    for (HitResult hit : hitResultList){
        Trackable trackable = hit.getTrackable();
        // stuff to dump

        str += "\n[hit"+index++ +":";
        if (trackable instanceof Plane){
            str += "PLANE," + ((Plane) trackable).getType().toString()
                    +",inPolyGon:"+((Plane) trackable).isPoseInPolygon(hit.getHitPose())
                    +",normdist:" + PlaneRenderer.calculateDistanceToPlane(hit.getHitPose(), frame.getCamera().getPose())
            ;
        }
        else if (trackable instanceof Point) {
            str += "POINT," +((Point) trackable).getOrientationMode()
                    +",adjDist:"+ hit.getDistance()
                                  * (float)( Math.cos(Math.toRadians(angle[1])) * Math.cos(Math.toRadians(angle[2])))
            ;
        }
        else{
            str+= "OTHER TRACKABLE TYPE";
        }

        str += " trackDist:" + hit.getDistance() + " state:" + hit.getTrackable().getTrackingState();
        //str += ",hitXYZ:" + hit.getHitPose().tx() +","+hit.getHitPose().ty() +","+hit.getHitPose().tz()
        str += "\nhitPose:" + hit.getHitPose().toString();
        str += ",\ncamPose:" + frame.getCamera().getPose().toString()
        +"]\n ";

    }
    str +="........";


    return str;

}

Пример выходных данных (обратите внимание, что «trackdist» находится далеко от нормального расстояния).

2020-01-27 14:43:16.285 23970-24023/? D/Ahab: in create colored anchor plane:HORIZONTAL_UPWARD_FACING hit dist:0.13333696, anchorDist: 0.23327702, hitlist size:1.......Hit list size:1..
    [hit0:PLANE,HORIZONTAL_UPWARD_FACING,inPolyGon:true,normdist:0.23327702 trackDist:0.13333696 state:TRACKING
    hitPose:t:[x:0.167, y:-0.783, z:-0.821], q:[x:0.00, y:-0.59, z:-0.00, w:0.81],
    camPose:t:[x:0.161, y:-0.549, z:-0.819], q:[x:0.43, y:0.56, z:0.56, w:-0.44]]
     ........
2020-01-27 14:43:21.326 23970-24023/? D/Ahab: in create colored anchor pt:ESTIMATED_SURFACE_NORMAL hit dist:0.2452918, anchorDist: 0.24518394, hitlist size:2.......Hit list size:2..
    [hit0:POINT,ESTIMATED_SURFACE_NORMAL,adjDist:0.24518394 trackDist:0.2452918 state:TRACKING
    hitPose:t:[x:-0.091, y:-0.792, z:-0.789], q:[x:0.00, y:0.62, z:0.01, w:0.78],
    camPose:t:[x:-0.095, y:-0.547, z:-0.789], q:[x:0.53, y:0.46, z:0.46, w:-0.54]]

    [hit1:PLANE,HORIZONTAL_UPWARD_FACING,inPolyGon:true,normdist:0.2366659 trackDist:0.13668406 state:TRACKING
    hitPose:t:[x:-0.091, y:-0.783, z:-0.789], q:[x:0.00, y:-0.64, z:-0.00, w:0.77],
    camPose:t:[x:-0.095, y:-0.547, z:-0.789], q:[x:0.53, y:0.46, z:0.46, w:-0.54]]

=====more sample output notice in one dump, "trackdist" is accurate but next dump, it is wrong. 
2020-01-27 14:43:16.285 23970-24023/? D/Ahab: in create colored anchor plane:HORIZONTAL_UPWARD_FACING hit dist:0.13333696, anchorDist: 0.23327702, hitlist size:1.......Hit list size:1..
    [hit0:PLANE,HORIZONTAL_UPWARD_FACING,inPolyGon:true,normdist:0.23327702 trackDist:0.13333696 state:TRACKING
    hitPose:t:[x:0.167, y:-0.783, z:-0.821], q:[x:0.00, y:-0.59, z:-0.00, w:0.81],
    camPose:t:[x:0.161, y:-0.549, z:-0.819], q:[x:0.43, y:0.56, z:0.56, w:-0.44]]
     ........
2020-01-27 14:43:21.326 23970-24023/? D/Ahab: in create colored anchor pt:ESTIMATED_SURFACE_NORMAL hit dist:0.2452918, anchorDist: 0.24518394, hitlist size:2.......Hit list size:2..
    [hit0:POINT,ESTIMATED_SURFACE_NORMAL,adjDist:0.24518394 trackDist:0.2452918 state:TRACKING
    hitPose:t:[x:-0.091, y:-0.792, z:-0.789], q:[x:0.00, y:0.62, z:0.01, w:0.78],
    camPose:t:[x:-0.095, y:-0.547, z:-0.789], q:[x:0.53, y:0.46, z:0.46, w:-0.54]]

    [hit1:PLANE,HORIZONTAL_UPWARD_FACING,inPolyGon:true,normdist:0.2366659 trackDist:0.13668406 state:TRACKING
    hitPose:t:[x:-0.091, y:-0.783, z:-0.789], q:[x:0.00, y:-0.64, z:-0.00, w:0.77],
    camPose:t:[x:-0.095, y:-0.547, z:-0.789], q:[x:0.53, y:0.46, z:0.46, w:-0.54]]
...