在先前保存的点云中重新定位

时间:2018-12-18 15:22:16

标签: unity3d point-clouds arcore

我目前正在使用ARcore开发室内导航应用。我想做类似this的操作,但是由于学校项目的限制,我必须在Android上工作,因此无法使用Placenote。因此,我想尝试使用点云来做类似的事情。我试图保存点云,并想问一下以后是否可以重新定位它?否则,有可能像标记一样使用它吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于评论时间太长,我想发表一个答案以表达我对一般问题的想法。

ARCore和扫描房间或在房间中安装设置的主要问题是存储和解决早期Session中使用的锚点。 Cloud anchors可以为您解决这两个问题,但是您的锚点只能存储24小时。

OP的另一个问题是ARCore每次启动应用程序时都会更改其坐标系。因此,相对于设备的右侧为forEach,上侧为+x,而手机所面对的方向为+y。因此,为了完成here,您需要锚定这些路径点,并将这些锚点存储在应用程序的扫描阶段中。然后,在另一个+z中,您需要将这些航路点放置在相同的物理位置。为此,您需要在扫描相位坐标系和新的Session坐标系之间进行转换,并考虑到ARCore在每个Session中都更改坐标系。

为了解决这个问题,我的建议是使用位于房间位置的增强图像。该图像将用于计算两个坐标系之间的转换矩阵。在扫描阶段,您必须跟踪图像并记录 图像的3个位置(例如中心,左上和左下)以及锚点的位置。然后,当用户要使用室内导航时,他/她必须先跟踪图像,然后在不同的坐标系中再次使用相同3点计算转换矩阵。您可以将“刚性变换”用于此任务。

一旦找到了转换矩阵,您便可以在现实世界中的相同物理位置再次定位航路点(但请记住,在Unity中它们将具有不同的坐标)。之后,您可以使用这些锚点实现导航。 只要两个坐标系中都有 3个公共点,您还可以使用更多的增强图像来提高精度。