使用摄影测量和 AWS IoT TwinMaker 构建数字双胞胎 官方博客 物联网
利用摄影测量和AWS IoT TwinMaker构建数字双胞胎
关键要点
在这篇博客中,我们将介绍如何通过无人机拍摄的照片,创建物理环境的3D模型并构建数字双胞胎。数字双胞胎是物理系统的虚拟表示,能够实时更新数据,模拟所代表资产的结构、状态和行为。借助AWS IoT TwinMaker,你可以轻松创建物理环境的数字双胞胎,并通过浏览器构建应用程序,以提供大型复杂物理结构的交互式3D数字表示。
引言
在这篇博客中,你将学习如何利用无人机拍摄的照片,创建实际环境的3D模型,形成一个数字双胞胎。数字双胞胎是物理系统的虚拟表现,能够定期更新数据,以模拟所代表资产的结构、状态和行为。数字双胞胎可以通过整合多个数据源于一个界面,提供可操作的洞察,从而加快和改善决策过程。然而,从零开始构建和管理数字双胞胎既耗时又复杂,并且成本高昂。这需要一支由不同专业技能的开发人员组成的团队,共同创建整合来自不同来源的数据的解决方案。开发者需从流媒体数据中生成实时洞察,并创建上下文化的可视化,以更好地将终端用户与数据连接起来。
有了 AWS IoT TwinMaker,你可以轻松创建物理环境的数字双胞胎,并构建应用提供大型复杂物理结构的交互式3D数字表示。
概述
AWS IoT TwinMaker 的一大关键特性是能够将现有的3D模型例如CAD和BIM模型或点云扫描导入AWS IoT TwinMaker场景,并在此可视化上叠加来自其他系统的数据。AWS IoT TwinMaker场景使用实时WebGL视口,支持 glTF 格式。虽然CAD和BIM模型表示设计的资产结构,但在某些情况下,这些模型可能不存在,或已建成的资产可能与设计不符。提供一个尽可能反映当前现实的3D模型在数字双胞胎中是非常有价值的。
创建现实世界3D模型有多种机制,其中两种流行的方法是 激光扫描 和 摄影测量。激光扫描使用专业且通常昂贵的设备,创建物理环境的高精度3D模型。相比之下,摄影测量则是利用计算机视觉技术从重叠的2D照片中提取3D信息的过程,其中包括运动结构SfM。
这篇文章专注于利用低成本的航拍摄影平台消费者级四旋翼无人机DJI Phantom 4 Pro,结合摄影测量技术,创建一个大型区域的真实模型,并将其建模在AWS IoT TwinMaker中。通过这种方式,你可以快速构建资产的3D模型,而不是使用激光扫描,这样的做法既昂贵又困难。此模型可以通过后续的无人机飞行快速且频繁地更新,以确保你的数字双胞胎与现实紧密相连。值得注意的是,此模型将偏向于真实感而非生成模型的绝对准确性。
在这篇博客中,我们还将描述如何通过自动航班规划和执行捕获一组地理参考的照片。然后,你可以将这些照片输入到摄影测量处理管道中,从而自动创建AWS IoT TwinMaker中的3D场景。我们使用流行的开源摄影测量软件将数据处理为glTF格式,便于导入AWS IoT TwinMaker。该处理管道同样支持可以从DroneDeploy或其他摄影测量引擎导出的OBJ文件。
解决方案讲解
数据采集
摄影测量依赖于一定特性的航空照片,以创建有效的3D模型,包括:
图片之间的高度重叠度照片中不显示地平线捕获水平和非水平照片捕获高度基于所需模型的分辨率虽然熟练的无人机飞行员可以手动拍摄照片以用于摄影测量,但通过自动化飞行和捕获,可以获得更一致的结果。飞行规划工具可以创建自动化的飞行计划在相关地点、海拔和重叠度上捕获图像,以便进行有效的摄影测量处理。下图显示了我们用于捕获示例图像的DroneDeploy的飞行规划界面。
图1 DroneDeploy飞行规划界面
我们利用DroneDeploy平台的飞行规划和自主操作功能捕获了代表一个资产的数据,该资产为位于澳大利亚弗里曼特尔的一个废弃电站。如前面的截图所示,飞行高度为160英尺,覆盖了6英亩的区域,整个过程不到9分钟,并捕获了149张图片。接下来,我们展示了两张来自无人机飞行的航空照片示例,这些照片随后用于生成3D模型,展示了图片之间的高度重叠度。
图2 高度重叠的图像以实现有效摄影测量
摄影测量处理管道架构
一旦捕获了航空图像,就必须通过摄影测量引擎创建3D模型。DroneDeploy 提供了一个 强大的摄影测量引擎,具备以 OBJ 格式 导出通过该引擎创建的3D模型的能力,如下图所示。

图3 导出模型
我们创建了一个摄影测量处理管道,利用开源平台OpenDroneMap的 NodeODM 组件以完全无服务器的方式处理地理参考的图像。该管道利用 AWS Fargate 和 AWS Lambda 进行计算,输出一个包含 OpenDroneMap 创建的3D模型的场景到 AWS IoT TwinMaker。
此管道还支持处理由 DroneDeploy 摄影测量引擎创建的3D模型,通过从 DroneDeploy 导出的 OBJ 文件生成一个场景到 AWS IoT TwinMaker中。
飞鱼加速器官网下载入口摄影测量处理管道架构在下图中进行了说明。
图4 管道架构
利用 OpenDroneMap 摄影测量引擎执行管道的步骤如下:
启动一个 Fargate 任务,使用来自公共 dockerio 注册表的 OpenDroneMap 的 NodeODM 图像。将无人机飞行获取到的地理参考图像作为 zip 文件上传到指定的 Amazon S3 存储桶。上传 zip 文件后,发布一个 Amazon S3 事件通知,触发 Data Processor Lambda 的执行。Data Processor Lambda 解压缩文件,在 Fargate 中启动新的处理作业,并将所有图像上传到 NodeODM 任务中。状态检查 Lambda 会定期轮询 NodeODM 任务,以查看处理作业的完成情况。当 NodeODM 处理作业完成时,作业的输出将保存在处理后的 S3 存储桶中。输出 zip 文件的保存会导致发布 Amazon S3 事件通知,触发 glTF 转换器 Lambda。glTF Lambda 将 NodeODM 处理作业的 OBJ 输出转换为二进制的 glTF 文件,并上传到与 AWS IoT TwinMaker 工作区相关联的工作区 S3 存储桶中,该存储桶在 CloudFormation 堆栈创建时生成。 glTF Lambda 在 AWS IoT TwinMaker 工作区中创建一个新的场景,使用 glTF 文件。如果你使用 DroneDeploy 摄影测量引擎创建3D模型,可以直接将导出的 OBJ zip 文件上传到 Processed 存储桶中,步骤68将按正常流程完成。
当摄影测量处理管道完成执行后,将在 AWS IoT TwinMaker 工作区中创建一个包含生成的3D模型的新场景,如下图所示。
图5 AWS IoT TwinMaker中的生成3D场景
前提条件
在本博客中设置和执行步骤需要一个AWS账户。AWS CloudFormation模板将配置并安装所需的VPC和网络配置、AWS Lambda函数、AWS身份与访问管理(IAM)角色、Amazon S3存储桶、AWS Fargate任务、应用负载均衡器、Amazon DynamoDB表格和AWS IoT TwinMaker工作区。该模板设计为在北弗吉尼亚地区useast1运行。使用某些以下服务可能会产生费用:
Amazon Simple Storage Service (Amazon S3)Amazon DynamoDBAmazon VPCAmazon CloudWatchAWS Lambda 处理和转换函数AWS FargateAWS IoT TwinMaker步骤
部署摄影测量处理管道
下载示例的 Lambda 部署包。此包包含 Data Processor Lambda、Status Check Lambda 和上文描述的 glTF Converter Lambda 的代码。导航至 Amazon S3 控制台。创建一个S3存储桶。将已下载的 Lambda 部署包以压缩文件的方式上传到先前创建的存储桶中。一旦 Lambda 部署包已置于 S3 中,启动此 CloudFormation 模板。在 指定堆栈详细信息 页面中的参数部分执行以下操作:更新 Prefixt 参数值为你的存储桶名称的独特前缀。该前缀将确保堆栈的桶名称在全球唯一。更新 DeploymentBucket 参数值为你上传 Lambda 部署包的存储桶名称。如果你处理大量数据集,根据 此处 描述的允许值增加 Fargate 任务的 Memory 和 CPU 值。选择 创建堆栈 来创建摄影测量处理管道的资源。操作完成后,导航至新的 S3 登陆存储桶。可以在 资源 选项卡中找到链接,如下图所示。图6 上传桶资源
上传一个包含你的图像的 zip 文件到 S3 存储桶。运行摄影测量处理管道
上传包含地理参考图像的zip文件后,摄影测量处理管道将自动启动。处理作业可能需要超过一小时具体取决于提供的图像数量以及Fargate 处理任务中的CPU和内存配置,你可以通过查看 CloudWatch 日志中的 Status Check Lambda 来跟踪作业进度。当处理作业处于活动状态时,状态检查 Lambda 将在每5分钟的调度中输出作业状态。输出包括处理作业的进度,显示为百分比值,如下所示。
图7 摄影测量作业进度
基于3D模型构建数字双胞胎
当摄影测量处理管道完成并在 AWS IoT TwinMaker 工作区中创建新场景时,你可以开始 关联绑定到数据源的组件,利用3D模型提供数据的可视上下文,并根据数据驱动的条件提供视觉提示。
你可以使用 AWS IoT TwinMaker 应用插件 for Grafana 配置仪表盘,与其他用户共享你的数字双胞胎。
清理
完成后,请确保清理本博客中的工作以避免产生费用。按照以下顺序删除以下资源:
从 AWS IoT TwinMaker 工作区中删除任何已创建的场景。删除所有登台、处理和工作区 S3 存储桶中的文件。删除 CloudFormation 堆栈。结论
在这篇博客中,你创建了一个无服务器摄影测量处理管道,可以通过开源软件处理无人机图像,将其转化为3D模型,并在 AWS IoT TwinMaker 中基于生成的3D模型创建一个场景。此外,该管道还可以处理由其他摄影测量引擎例如 DroneDeploy 提供的创建的3D模型,并导出为OBJ。尽管该管道已用于演示无人机图像处理,但任何地理参考图像数据都可以使用。仅使用消费级硬件快速创建大型现实世界资产的逼真3D模型的能力,使你能够维护最新模型,并与数据源绑定并共享给其他用户,从而让他们能够基于展示在丰富视觉上下文中的数据作出决策。这篇博客中描述的管道可在 这个 GitHub 仓库 中找到。
现在你有了一个可视资产,可以通过使用内置连接器或根据 AWS IoT Twinmaker 用户指南 描述的方式创建自己的连接器,将其与来自不同源的现实世界数据相结合。
关于作者
Greg Biegel 是 AWS 专业服务的高级云架构师,位于澳大利亚珀斯。他热衷于与客户一起工作,尤其在矿业、能源和工业领域,帮助他们实现有价值的商业成果。他在都柏林三一学院获得博士学位,并拥有20多年软件开发经验。