通过计算机视觉为室内导航系统绘制大面积地图的解决方案是什么?

问题描述 投票:1回答:1

对于最初使用基于计算机视觉的室内导航,我们需要扫描区域并放置模型,对象和路径。保存我们以后打开应用程序时可以加载的地图。问题是当要映射的区域很大并且有几个地板,用移动设备扫描该区域将很困难。

有没有另一种方法来映射大面积?如果有基于3d地图的解决方案?。问题是设备识别场景并放置模型和对象。如果我可以创建一个精确的三维地图并将其整合为统一我可以将对象和模型放在一起并创建一个app.So当我们打开应用程序时,设备扫描并识别场景并将对象放在那里而不是进入场景并使用移动设备进行映射。

swift unity3d computer-vision augmented-reality arkit
1个回答
0
投票

获得点云世界地图最强大的方法是使用带有ARKit的Apple设备多次扫描整个区域,并将其作为世界地图数据保存到本地存储。

对于持久性AR体验,您可以保存扫描的世界地图:

func writeWorldMap(_ worldMap: ARWorldMap, to url: URL) throws {
    let data = try NSKeyedArchiver.archivedData(withRootObject: worldMap, 
                                         requiringSecureCoding: true)
    try data.write(to: url)
}

然后在需要时检索它:

func loadWorldMap(from url: URL) throws -> ARWorldMap {
    let mapData = try Data(contentsOf: url)
    guard let worldMap = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self, 
                                                                   from: mapData) else { 
        throw ARError(.invalidWorldMap) 
    }
    return worldMap
}

除此之外,您还必须使用打印/绘制的视觉内容(也就是基于预先训练的ML模型用于CoreMLVision框架)来检测用户在该世界地图中的确切位置(您可以使用交通标志那个目的,如下图所示)。

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.