NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

在这篇博文中,我们将了解如何使用无人机拍摄的照片在数字孪生中创建现实世界环境的 3D 模型。

数字孪生是物理系统的虚拟表示,定期更新数据以模仿其所表示的资产的结构、状态和行为。 数字孪生可以通过在单一管理平台中连接多个数据源并提供可行的见解来实现更快、更好的决策。

然而,从头开始构建和管理数字孪生非常耗时、复杂且成本高昂。 它需要具有不同专业技能的开发团队共同努力构建结合不同来源数据的集成解决方案。 开发人员必须从流数据中生成实时洞察并创建情境化可视化,以更好地将最终用户与数据连接起来。

借助 AWS IoT TwinMaker,可以轻松创建物理环境的数字孪生,并构建应用程序,通过浏览器提供大型复杂物理结构的交互式 3D 数字表示。

1、概述

AWS IoT TwinMaker 的主要功能之一是能够将现有 3D 模型(例如 CAD 和 BIM 模型或点云扫描)导入到 AWS IoT TwinMaker 场景中,然后将来自其他系统的数据叠加在此可视化上。

AWS IoT TwinMaker 场景使用实时 WebGL 视口并支持 glTF 格式。 虽然 CAD 和 BIM 模型代表设计的资产结构,但在某些情况下,此类模型可能不存在,或者构建的资产可能与设计不同。 在数字孪生中提供尽可能反映当前现实的 3D 模型非常有价值。 有多种机制可用于创建现实世界的 3D 模型,其中两种流行的方法是激光扫描和摄影测量。

激光扫描使用专门且通常昂贵的设备来创建高度精确的物理环境 3D 模型。 相比之下,摄影测量是使用计算机视觉技术(包括运动结构 (SfM))从重叠的 2D 照片中提取 3D 信息的过程。

本文重点介绍如何使用低成本航空摄影平台(消费级四轴飞行器 – DJI Phantom 4 Pro)与摄影测量相结合,创建大面积的逼真模型,代表在 AWS IoT TwinMaker 中建模的资产。

采用这种方法,你可以快速构建资产的 3D 模型,而使用激光扫描创建该模型可能非常昂贵或不可能。 该模型可以通过后续的无人机飞行快速而频繁地更新,以确保你的数字孪生密切反映现实。 首先需要注意的是,该模型将有利于照片级真实感而不是生成模型的绝对精度。

在本博客中,我们还将介绍如何通过自动飞行计划和执行来捕获地理参考照片数据集。 然后,你可以通过摄影测量处理管道提供这些照片,该管道会在 AWS IoT TwinMaker 中自动创建生成的 3D 可视化场景。

我们使用流行的免费开源摄影测量软件将数据处理为 glTF 格式,以便导入到 AWS IoT TwinMaker。 处理管道还支持可从 DroneDeploy 或其他摄影测量引擎导出的 OBJ 文件。

2、解决方案

2.1 数据采集

摄影测量依赖于源航空照片的某些特征来创建有效的 3D 模型,包括:

  • 图像之间高度重叠
  • 在任何照片中都看不到地平线
  • 捕捉最低点和非最低点照片
  • 捕获高度基于模型所需的分辨率

虽然熟练的无人机飞行员可以手动捕捉用于摄影测量的照片,但你可以通过自动化飞行和捕捉来获得更一致的结果。 飞行计划工具可以创建自主飞行计划,捕获相关位置、高度和重叠程度的图像,以进行有效的摄影测量处理。

下面显示的是 DroneDeploy 的飞行计划界面,DroneDeploy 是一个流行的现实捕获平台,用于捕获内部和外部空中和地面视觉数据,我们用它来捕获示例中的图像。

图 1 – DroneDeploy 飞行计划界面

我们使用 DroneDeploy 平台的飞行计划和自主操作功能来捕获代表要在 AWS IoT TwinMaker 中建模的资产的数据。 感兴趣的资产是西澳大利亚州弗里曼特尔的一座废弃发电站。

如之前的截图所示,该航班飞行高度为 160 英尺,覆盖面积为 6 英亩,飞行时间不到 9 分钟,拍摄了 149 张图像。 接下来,我们展示了从无人机飞行中捕获的航拍照片的两个示例,这些照片随后用于生成 3D 模型,说明了图像之间的高度重叠。

图 2 – 有效摄影测量的高度图像重叠

2.2 摄影测量处理管线

捕获航空图像后,必须将其输入摄影测量引擎以创建 3D 模型。 DroneDeploy提供了强大的摄影测量引擎,能够以OBJ格式导出引擎创建的3D模型,如下图所示

我们创建了一个摄影测量处理管线,利用流行的免费开源 OpenDroneMap 平台的 NodeODM 组件以完全无服务器的方式处理地理配准图像。 该管道利用 AWS Fargate 和 AWS Lambda 进行计算,在 AWS IoT TwinMaker 中创建一个场景作为输出,其中包含 OpenDroneMap 创建的 3D 模型。

该管道还支持处理由 DroneDeploy 摄影测量引擎创建的 3D 模型,通过从 DroneDeploy 导出的 OBJ 文件在 AWS IoT TwinMaker 中创建场景。

摄影测量处理管道架构如下图所示。

图 4 – 处理管线架构

使用 OpenDroneMap 摄影测量处理引擎执行管道的步骤如下:

  • 使用来自公共 docker.io 注册表的 OpenDroneMap 的 NodeODM 映像启动 Fargate 任务
  • 无人机飞行获得的一组地理参考图像以 .zip 文件上传到 Amazon S3 存储桶
  • 上传 zip 文件会导致发布 Amazon S3 事件通知,从而触发数据处理器 Lambda 的执行
  • 数据处理器 Lambda 解压缩文件,在 Fargate 中运行的 NodeODM 中启动新的处理作业,并将所有图像上传到 NodeODM 任务
  • 状态检查 Lambda 定期轮询 NodeODM 任务以检查处理作业是否完成
  • 当 NodeODM 处理作业完成时,作业的输出将保存在处理后的 S3 存储桶中
  • 保存输出 zip 文件会导致发布触发 glTF Converter Lambda 的 Amazon S3 事件通知
  • glTF Lamba 将 NodeODM 处理作业的 OBJ 输出转换为二进制 glTF 文件,并将其上传到工作区 S3 存储桶,该存储桶与 AWS IoT TwinMaker 工作区关联,并在 CloudFormation 堆栈创建工作区时生成
  • glTF Lambda 使用 glTF 文件在 AWS IoT TwinMaker 工作区中创建一个新场景

如果你使用 DroneDeploy 摄影测量引擎创建 3D 模型,则可以将导出的 OBJ zip 文件直接上传到“已处理”存储桶,步骤 6-8 将正常完成。

当摄影测量处理管道完成执行时,将在包含生成的 3D 模型的 AWS IoT TwinMaker 工作区中创建一个新场景,如下所示为感兴趣的资产。

图 5 – AWS IoT TwinMaker 中生成的 3D 场景

3、先决条件

需要一个 AWS 帐户来设置和执行本博客中的步骤。 AWS CloudFormation 模板将配置和安装必要的 VPC 和网络配置、AWS Lambda 函数、AWS Identity and Access Management (IAM) 角色、Amazon S3 存储桶、AWS Fargate 任务、应用程序负载均衡器、Amazon DynamoDB 表和 AWS IoT TwinMaker 工作区 。 该模板设计为在北弗吉尼亚地区 (us-east-1) 运行。 你可能会因以下某些服务而产生费用:

  • Amazon Simple Storage Service(Amazon S3)
  • Amazon DynamoDB
  • Amazon VPC
  • Amazon CloudWatch
  • AWS Lambda processing and conversion functions
  • AWS Fargate
  • AWS IoT TwinMaker

4、部署摄影测量处理管线

下载示例 Lambda 部署包。 此软件包包含上述数据处理器 Lambda、状态检查 Lambda 和 glTF 转换器 Lambda 的代码

导航到 Amazon S3 控制台

创建 S3 存储桶

将下载的 Lambda 部署包上传到上一步中创建的 S3 存储桶。 保持文件原样压缩

将 Lambda 部署包放入 S3 后,启动此 CloudFormation 模板

在“指定堆栈详细信息”屏幕的“参数”部分下,执行以下操作:

  • 将 Prefix 参数值更新为存储桶名称的唯一前缀。 此前缀将确保堆栈的存储桶名称全局唯一
  • 将 DeploymentBucket 参数值更新为你上传 Lambda 部署包的存储桶的名称
  • 如果你正在处理大型数据集,请根据允许的值增加 Fargate 任务的内存和 CPU 值,如此处所述
  • 选择创建堆栈来创建摄影测量处理管道的资源
  • 完成后,导航到新的 S3 着陆桶。 可以在资源选项卡中找到链接,如下所示
图 6 – 上传存储桶资源

将包含图像的 zip 文件上传到 S3 存储桶

5、运行摄影测量处理管线

上传包含地理参考图像的 zip 文件后,摄影测量处理管道将自动启动。

处理作业可能需要一个多小时(取决于提供的图像数量以及 Fargate 处理任务中提供的 CPU 和内存),你可以通过查看状态的 Amazon CloudWatch 日志中的状态来跟踪作业的进度 检查Lamda。

当处理作业处于活动状态时,状态检查 Lambda 将在作业运行时输出作业的状态(按 5 分钟计划)。 输出包括以百分比值表示的处理作业的进度,如下所示。

图 7 – 摄影测量作业进度

6、基于 3D 模型构建数字孪生

当摄影测量处理管道完成并在 AWS IoT TwinMaker 工作区中创建新场景后,你可以开始使用 3D 模型将绑定到数据源的组件关联起来,为数据提供视觉上下文,并提供基于数据驱动的视觉提示 状况。

可以使用适用于 Grafana 的 AWS IoT TwinMaker 应用程序插件配置仪表板,以与其他用户共享你的数字孪生。

7、清理

请务必清理此博客中的工作以避免收费。 按此顺序完成后删除以下资源

  • 从 AWS IoT TwinMaker 工作区删除任何创建的场景
  • 删除 Landing、Processed 和 Workspace S3 存储桶中的所有文件
  • 删除 CloudFormation 堆栈

8、结束语

在本博客中,我们创建了一个无服务器摄影测量处理管道,该管道可以通过开源软件将无人机图像处理为 3D 模型,并根据生成的 3D 模型在 AWS IoT TwinMaker 中创建场景。此外,该管道还可以处理其他摄影测量引擎(例如 DroneDeploy 提供的引擎)创建的 3D 模型,并导出到 OBJ。

尽管该管道已用于演示无人机图像的处理,但可以使用任何地理参考图像数据。 仅使用消费级硬件即可快速创建大型现实世界资产的逼真 3D 模型,使你能够维护最新的模型,这些模型可以绑定到数据源并与其他用户共享,从而使他们能够根据数据做出决策 在丰富的视觉环境中显示的数据。

本博客中描述的管道可在此 GitHub 存储库中找到。


原文链接:Building a Digital Twin with Photogrammetry and AWS IoT TwinMaker

BimAnt翻译整理,转载请标明出处