平面拟合与之前Tango会话的数据

时间:2016-11-08 16:55:03

标签: android google-project-tango tango

我在开发Tango应用程序时面临以下问题,并且不确定我是否在正确的轨道上。

我想要实现的目标:

  1. 用户拍照。在后台,应用程序会保存当前的点云和姿势。
  2. 服务器正在获取该图像并在场景后面进行一些魔术处理,并将(x,y)坐标发送回应用程序(异步并与当前的Tango会话无关)。
  3. 重启应用,启动新的探戈会话,并使用点云和姿势的持久副本在(x,y)显示一个3d对象。
  4. 我希望我能够在以下算法中使用这些参数 - (x,y),点云和Pose,并获得一个Pose,这是RajawaliRenderer知道如何渲染的Rajawali对象。

    探戈初始化符合以下坐标系:

    TANGO_WORLD_BASE_COORDINATE_FRAME = new TangoCoordinateFramePair(
                    TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION,
                    TangoPoseData.COORDINATE_FRAME_DEVICE
            );
    
    • 使用交叉点计划适合 -

        private void convertByIntersectionPoint(float x, float y,
        TangoPointCloudData tangoPointCloudData, TangoPoseData devicePose,
        TangoPoseData colorTdepthPose) {
          if (tangoPointCloudData != null) {
      
              TangoSupport.IntersectionPointPlaneModelPair intersectionPointPlaneModelPair =
                      TangoSupport.fitPlaneModelNearPoint(tangoPointCloudData,
                              colorTdepthPose, x, y);
      
              if (devicePose.statusCode == TangoPoseData.POSE_VALID) {
                  mRenderer.updateObjectPose(
                          intersectionPointPlaneModelPair.intersectionPoint,
                          intersectionPointPlaneModelPair.planeModel,
                          devicePose);
                  } 
          } 
      }
      

    它在TangoSupport.fitPlaneModelNearPoint上抛出TangoErrorException。

    据我所知,fitPlaneModelNearPoint方法应该做纯算法,不依赖于当前的Tango会话,但我不能确定,因为我没有它的实现。

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

好的,这完全是我的错误。

序列化点云有一个错误。 Gson库不知道如何反序列化为子类并始终构造成父类 - 在这种情况下会创建损坏的数据