当前位置: 首页 > 面试题库 >

(探戈计划)点云的旋转和平移与区域学习

高宸
2023-03-14
问题内容

我有一个Java应用程序,当我按下按钮时,它会记录点云xyz坐标以及正确的姿势。

我想要的是选择一个对象,在前面记录一个pointCloud,在后面记录一个pointCloud,然后合并2个云。

显然,要获得合理的结果,我需要平移和旋转记录的一个或两个云。但是我是Tango Project的新手,我应该缺少一些东西。

那里,@ Jason Guo讨论了这些矩阵:

start_service_T_deviceimu_T_deviceimu_T_depth

  • 我怎么能得到他们?
  • 我应该使用getMatrixTransformAtTime()吗?

第一个矩阵是从 服务开始设备
,但是我正在使用区域学习,所以我的BaseFrame是TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION

  • 我是否也可以使用相同的策略?
  • 只是用start_service_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重新定位或处于学习模式后,您必须具有有效的区域描述框架才能根据区域描述查询姿势。



 类似资料:
  • 在用CV::SolvePnPransac估计摄像机姿态时,输入是objectPoints和ImagePoints。输出是旋转和平移矩阵,加上内点数 利用遗传算法生成一个新的旋转平移矩阵。我喜欢用我的新的旋转和平移来计算内点的数目。 谢谢你的支持

  • 我正在尝试创建一个在EST时区运行的调度程序。为此,我在Scheduled方法上添加了@Scheduled注释。方法如下所示。我希望这个方法在周一到周五的美国东部时间早上5:00运行,但它在美国东部时间凌晨3:30(美国东部时间下午6:00)运行。

  • 我在过去几周的工作申请,其中涉及一些三角学,目前卡住了。如下图所示,我有一个圆形项目(位于#1位置的绿色圆),我知道它的中心点(让我们称之为X1,Y1)。这个圆圈有另一个点(橙色圆圈),它有点偏离中心--在另外两个标记(蓝色圆圈)之间。这些痕迹可以到处移动。计算出橙色点的坐标(我们称之为X2,Y2),计算出蓝色线相对于圆圈水平方向的角度(称之为角)。 我可以通过以下方法计算圆心与点之间的差值: d

  • 我目前正在研究示例sceneform应用程序,我注意到当我运行它时,当我用一个手指拖动它和用两个手指旋转它时,我可以翻译模型。 我要做的是两个手指在屏幕上和移动时要做的平移,以及只有一个手指左/右移动的旋转。

  • 基本上,我想做的过程描述在这里(特别是看到图像接近尾声),但从一个已知的相机模型和姿态开始。 是否有一个直接的函数调用来获取相机的内部和外部参数,并计算透视矩阵以用于? 在对图像调用之后,我将调用。 原则上,在指定约束之后,我可以通过求解opencv摄像机校准文档顶部定义的方程组来导出解决方案,但我认为必须有一个罐装例程来允许我正射校正我的测试图像。 在我的搜索中,我发现很难通过所有的立体声校准结

  • 我目前正在处理一个关于如何在元素旋转之前找到初始点的问题。 在我的项目中,我有两个div,它们不能在同一个容器中,这导致了我遇到的问题。 我试图计算一个已经旋转的元素的初始点,这样我就可以正确地将另一个元素放置在它上面,然后应用相同的旋转度。为了确保使用正确的坐标,我有一个div,它在每次旋转时都会标记一个小正方形。蓝色方块表示初始点,红色方块表示元素旋转的中心点。我以为Javascript中有公