0

我在开发 Tango 应用程序时遇到以下问题,不确定我是否走在正确的轨道上。

我想要达到的目标:

  1. 用户拍照。在后台,应用程序保存以持久化当前的点云和姿势。
  2. 服务器正在获取该图像并在幕后进行一些魔术处理并将(x,y)坐标发送回应用程序(异步且与当前 Tango 会话无关)。
  3. 重新启动应用程序,开始一个新的探戈会话,并使用点云和姿势的持久副本在 (x,y) 处显示一个 3d 对象。

我希望我能够在以下算法中使用这些参数 - (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 会话的纯算法,但我无法确定,因为我没有它的实现。

任何帮助将不胜感激。

4

1 回答 1

0

好吧,这完全是我的错。

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

于 2016-11-13T13:13:11.093 回答