BLOG
소개
오늘 포스팅에서는 드론으로 촬영한 사진을 사용하여 디지털 트윈 내에서 실제 환경의 3D 모델을 만드는 방법을 알려드리려고 합니다. 디지털 트윈은 그들이 나타내는 자산의 구조, 상태 및 동작을 모방하기 위해 데이터로 정기적으로 업데이트되는 물리적 시스템의 가상 표현입니다. 디지털 트윈은 단일 창 내에서 여러 데이터 소스를 연결하고 실행 가능한 통찰력을 제공함으로써 더 빠르고 더 나은 의사 결정을 가능하게 할 수 있습니다. 그러나 처음부터 디지털 트윈을 구축하고 관리하는 것은 시간이 많이 걸리고 복잡하며 비용이 많이 듭니다. 서로 다른 소스의 데이터를 결합하는 통합 솔루션을 구축하기 위해 함께 일하는 다양하고 전문적인 기술을 가진 개발자 팀이 필요합니다. 개발자는 스트리밍 데이터에서 실시간 통찰력을 생성하고 상황에 맞는 시각화를 생성하여 최종 사용자를 데이터에 더 잘 연결해야 합니다. AWS IoT TwinMaker를 사용하면 물리적 환경의 디지털 트윈을 쉽게 생성하고 브라우저를 통해 크고 복잡한 물리적 구조의 대화형 3D 디지털 표현을 제공하는 애플리케이션을 구축할 수 있습니다.
개요
AWS IoT TwinMaker의 주요 기능 중 하나는 기존 3D 모델(예: CAD 및 BIM 모델 또는 포인트 클라우드 스캔)을 AWS IoT TwinMaker 장면으로 가져온 다음 이 시각화 위에 다른 시스템에서 가져온 데이터를 오버레이하는 기능입니다. AWS IoT TwinMaker 장면은 실시간 WebGL 뷰포트를 사용하고 glTF 형식을 지원합니다. CAD 및 BIM 모델은 설계된 대로 자산의 구조를 나타내지만 경우에 따라 그러한 모델이 존재하지 않거나 구축된 자산이 설계와 다를 수 있습니다. 현재 현실을 최대한 반영한 디지털 트윈 내 3D 모델을 제공하는 것이 중요합니다. 실제 세계의 3D 모델을 생성하는 데 사용할 수 있는 여러가지 메커니즘이 있으며 두 가지 인기있는 접근 방식은 레이저 스캐닝과 사진 측량입니다.
레이저 스캐닝은 물리적 환경의 매우 정확한 3D 모델을 만들기 위해 특수하고 종종 값비싼 장비를 사용합니다. 반대로 사진 측량은 SfM(Structure from Motion)을 비롯한 컴퓨터 비전 기술을 사용하여 겹치는 2D 사진에서 3D 정보를 추출하는 프로세스입니다.
오늘은 AWS IoT TwinMaker에서 모델링된 자산을 나타내는 넓은 영역의 사실적인 모델을 생성하기 위해 사진 측량법과 결합된 저비용 항공 사진 플랫폼(소비자 수준 쿼드콥터 – DJI Phantom 4 Pro)을 사용하는 것을 중점적으로 배우겠습니다. 이 접근 방식을 따르면 비용이 엄청나게 많이 들거나 레이저 스캐닝을 사용하여 생성할 수 없는 자산의 3D 모델을 신속하게 구축할 수 있습니다. 이 모델은 디지털 트윈이 현실을 밀접하게 반영하도록 후속 드론 비행에서 빠르고 자주 업데이트할 수 있습니다. 처음부터 이 모델이 생성된 모델의 절대적인 정확도보다 포토리얼리즘을 선호한다는 점에 유의하는 것이 중요합니다.
아울러 자동 비행 계획 및 실행을 통해 지리 참조 사진 데이터 세트를 캡처하는 방법도 설명할 예정입니다. AWS IoT TwinMaker 내에서 결과 3D 시각화 장면을 자동으로 생성하는 사진 측량 처리 파이프라인을 통해 해당 사진을 공급할 수 있습니다. 인기 있는 무료 오픈 소스 사진 측량 소프트웨어를 사용하여 데이터를 AWS IoT TwinMaker로 가져오기 위해 glTF 형식으로 처리합니다. 처리 파이프라인은 DroneDeploy 또는 기타 사진 측량 엔진에서 내보낼 수 있는 OBJ 파일도 지원합니다.
솔루션 연습
데이터 취득
사진 측량은 다음을 포함하여 효과적인 3D 모델을 생성하기 위해 원본 항공 사진의 특정 특성에 의존합니다.
- 이미지 간의 높은 수준의 중첩
- 어떤 사진에도 지평선이 보이지 않는다.
- 천저 및 천저가 아닌 사진 모두 캡처
- 캡처 고도는 모델의 원하는 해상도를 기반으로 합니다.
숙련된 드론 조종사가 사진 측량에 사용할 사진을 수동으로 캡처할 수 있지만 비행 및 캡처를 자동화하면 보다 일관된 결과를 얻을 수 있습니다. 비행 계획 도구는 효과적인 사진 측량 처리를 위해 관련 위치, 고도 및 중첩 정도에서 이미지를 캡처하는 자율 비행 계획을 생성할 수 있습니다. 아래는 예시 이미지를 캡처하는데 사용한 내부 및 외부 항공 및 지상 시각 데이터를 위한 인기 있는 리얼리티 캡처 플랫폼인 DroneDeploy의 비행 계획 인터페이스입니다.
우리는 DroneDeploy 플랫폼의 비행 계획 및 자율 운영 기능을 사용하여 AWS IoT TwinMaker에서 모델링할 자산을 나타내는 데이터를 캡처했습니다. 관심 자산은 서호주 프리맨틀에 있는 버려진 발전소입니다. 이전 스크린샷에서 볼 수 있듯이 비행은 160피트 높이에서 9분 미만 동안 6에이커의 면적을 비행하고 149개의 이미지를 캡처했습니다. 다음은 3D 모델을 생성하는 데 사용된 드론 비행에서 캡처한 항공 사진의 두 가지 예를 보여주며 이미지 간의 높은 중첩 정도를 보여줍니다.
사진 측량 처리 파이프라인 아키텍처
항공 이미지가 캡처되면 사진 측량 엔진을 통해 공급되어 3D 모델을 생성해야 합니다. DroneDeploy는 다음 스크린샷과 같이 엔진에서 생성한 3D 모델을 OBJ 형식으로 내보낼 수 있는 강력한 사진 측량 엔진을 제공합니다.
인기 있는 무료 오픈 소스 OpenDroneMap 플랫폼의 NodeODM 구성 요소를 활용하여 완전한 서버리스 방식으로 지리 참조 이미지를 처리 하는 사진 측량 처리 파이프라인을 만들었습니다 . 파이프라인은 컴퓨팅에 AWS Fargate 및 AWS Lambda를 활용하여 OpenDroneMap에서 생성된 3D 모델을 포함하는 AWS IoT TwinMaker의 장면을 출력으로 생성합니다.
또한 이 파이프라인은 DroneDeploy 사진 측량 엔진에서 생성된 3D 모델의 처리를 지원하여 DroneDeploy에서 내보낸 OBJ 파일에서 AWS IoT TwinMaker의 장면을 생성합니다. 사진 측량 처리 파이프라인 아키텍처는 다음 다이어그램에 설명되어 있습니다.
OpenDroneMap 사진 측량 처리 엔진을 사용한 파이프라인 실행은 다음 단계를 따릅니다.
- 공개 docker.io 레지스트리에서 OpenDroneMap의 NodeODM 이미지를 사용하여 Fargate 작업이 시작됩니다.
- 드론 비행으로 얻은 일련의 지리 참조 이미지는 착륙 Amazon S3 버킷에 .zip 파일로 업로드됩니다.
- zip 파일을 업로드하면 데이터 프로세서 Lambda 실행을 트리거하는 Amazon S3 이벤트 알림이 게시됩니다.
- 데이터 프로세서 Lambda는 파일 압축을 풀고 Fargate에서 실행 중인 NodeODM에서 새 처리 작업을 시작하고 모든 이미지를 NodeODM 작업에 업로드합니다.
- 상태 확인 Lambda는 주기적으로 NodeODM 작업을 폴링하여 처리 작업 완료를 확인합니다.
- NodeODM 처리 작업이 완료되면 작업의 출력이 처리된 S3 버킷에 저장됩니다.
- 출력 zip 파일을 저장하면 glTF 변환기 Lambda를 트리거하는 Amazon S3 이벤트 알림이 게시됩니다.
- glTF Lamba는 NodeODM 처리 작업의 OBJ 출력을 바이너리 glTF 파일로 변환하고 이를 AWS IoT TwinMaker 작업 공간과 연결되고 CloudFormation 스택에 의해 작업 공간이 생성될 때 생성되는 작업 공간 S3 버킷에 업로드합니다.
- glTF Lambda는 glTF 파일을 사용하여 AWS IoT TwinMaker 작업 공간에 새 장면을 생성합니다.
DroneDeploy 사진 측량 엔진을 사용하여 3D 모델을 생성하는 경우 내보낸 OBJ zip 파일을 처리됨 버킷에 직접 업로드할 수 있으며 6-8단계가 정상적으로 완료됩니다.
사진 측량 처리 파이프라인이 실행을 완료하면 관심 자산에 대해 아래와 같이 생성된 3D 모델을 포함하는 AWS IoT TwinMaker 작업 공간에 새 장면이 생성됩니다.
전제 조건
오늘 포스팅의 단계를 설정하고 실행하려면 AWS 계정이 필요합니다. AWS CloudFormation 템플릿은 필요한 VPC 및 네트워킹 구성, AWS Lambda 함수, AWS Identity and Access Management(IAM) 역할, Amazon S3 버킷, AWS Fargate 작업, Application Load Balancer, Amazon DynamoDB 테이블 및 AWS IoT TwinMaker 작업 공간을 구성하고 설치합니다. 이 템플릿은 버지니아 북부 지역(us-east-1)에서 실행되도록 설계되었습니다. 다음 서비스 중 일부에 대해 비용이 발생할 수 있습니다.
- Amazon Simple Storage Service(Amazon S3)
- 아마존 다이나모DB
- 아마존 VPC
- 아마존 클라우드워치
- AWS Lambda 처리 및 변환 기능
- AWS 파게이트
- AWS IoT 트윈메이커
단계
사진 측량 처리 파이프라인 배포
- 샘플 Lambda 배포 패키지를 다운로드합니다 . 이 패키지에는 위에서 설명한 데이터 프로세서 Lambda, 상태 확인 Lambda 및 glTF 변환기 Lambda에 대한 코드가 포함되어 있습니다.
- Amazon S3 콘솔 로 이동
- S3 버킷 생성
- 이전 단계에서 생성한 S3 버킷에 다운로드한 Lambda 배포 패키지를 업로드합니다. 압축된 파일을 그대로 둡니다.
- Lambda 배포 패키지가 S3에 배치되면 이 CloudFormation 템플릿을 시작합니다.
- 스택 세부 정보 지정 화면 의 매개 변수 섹션에서 다음을 수행합니다.
- Prefix 파라미터 값을 버킷 이름의 고유한 접두사로 업데이트합니다 . 이 접두사는 스택의 버킷 이름이 전역적으로 고유하도록 합니다.
- DeploymentBucket 파라미터 값을 Lambda 배포 패키지를 업로드한 버킷의 이름으로 업데이트합니다.
- 대규모 데이터 세트를 처리하는 경우 여기에 설명된 대로 허용 가능한 값을 기준으로 Fargate 작업에 대한 메모리 및 CPU 값을 늘립니다.
- 스택 생성 을 선택 하여 사진 측량 처리 파이프라인을 위한 리소스를 생성합니다.
- 완료되면 새 S3 랜딩 버킷으로 이동합니다. 아래와 같이 리소스 탭 에서 링크를 찾을 수 있습니다.
- 이미지가 포함된 zip 파일을 S3 버킷에 업로드합니다.
사진 측량 처리 파이프라인 실행
지리 참조 이미지가 포함된 zip 파일을 업로드하면 사진 측량 처리 파이프라인이 자동으로 시작됩니다. 처리 작업은 한 시간 이상 걸릴 수 있으며(제공된 이미지 수와 Fargate 처리 작업 내에서 제공되는 CPU 및 메모리에 따라 다름) 상태의 Amazon CloudWatch 로그 내에서 상태를 확인하여 작업 진행 상황을 추적할 수 있습니다. 처리 작업이 활성화되면 상태 확인 Lambda가 실행될 때 작업의 상태를 출력합니다(5분 소요). 출력에는 아래와 같이 처리 작업의 진행률이 백분율 값으로 포함됩니다.
3D 모델 기반 디지털 트윈 구축
사진 측량 처리 파이프라인이 완료되고 AWS IoT TwinMaker 작업 공간에 새 장면이 생성 되면 3D 모델을 사용하여 데이터 소스에 바인딩된 구성 요소를 연결하여 데이터 에 대한 시각적 컨텍스트를 제공하고 데이터 기반 기반의 시각적 신호를 제공할 수 있습니다.
Grafana용 AWS IoT TwinMaker 애플리케이션 플러그인을 사용하여 대시보드를 구성하여 디지털 트윈을 다른 사용자와 공유할 수 있습니다.
정리
비용이 청구되지 않도록 오늘의 작업을 정리해야 합니다. 이 순서대로 완료한 뒤 다음 자원도 삭제하십시오.
- AWS IoT TwinMaker 작업 공간에서 생성된 모든 장면 삭제
- Landing, Processed 및 Workspace S3 버킷의 모든 파일 삭제
- CloudFormation 스택 삭제
결론
오늘 포스팅에서는 오픈 소스 소프트웨어를 통해 드론 이미지를 3D 모델로 처리할 수 있는 서버리스 사진 측량 처리 파이프라인을 생성하고 생성된 3D 모델을 기반으로 AWS IoT TwinMaker에서 장면을 생성했습니다. 또한 파이프라인은 DroneDeploy에서 제공하고 OBJ로 내보낸 것과 같은 다른 사진 측량 엔진에서 생성된 3D 모델을 처리할 수 있습니다. 드론 이미지 처리를 시연하기 위해 파이프라인이 사용되었지만 모든 지리 참조 이미지 데이터를 사용할 수 있습니다. 소비자급 하드웨어만 사용하여 실제 대형 자산의 사실적인 3D 모델을 신속하게 생성할 수 있는 기능을 통해 데이터 소스에 연결하고 다른 사용자와 공유할 수 있는 최신 모델을 유지 관리할 수 있습니다. 오늘 포스팅에서 설명한 파이프라인은 이 GitHub 저장소에서 확인할 수 있습니다.
이제 시각적 자산이 있으므로 내장 커넥터를 사용하거나 AWS IoT Twinmaker 사용 설명서 에 설명된 대로 직접 생성하여 다양한 소스의 실제 데이터와 결합할 수 있습니다 .