기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 mep 역설계 자동화 방안...

22
가가가가 가가가 3 가가 가가가 가가 가가 가가 MEP 가가가 가가가 가가 KICT 2016.10.22 한한한한한한한한한 ICT 한한한한한 한 한 한 [email protected] https://www.facebook.com/ laputa999 ※MEP(Mechanical, Electrical, and Plumbing): 한한 , 한한 , 한한 한 한한한 2015 한 한한한한한한한 (3D 한한 한한한 한한 MEP 한한 한한한한 한한한 한한 ) 한 한한한한한 한한한한한 . Segm entation

Upload: -

Post on 17-Jan-2017

126 views

Category:

Engineering


8 download

TRANSCRIPT

Page 1: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

가변성을 고려한 3 차원 이미지 스캔 기반 건축 MEP 역설계 자동화 기술

KICT

2016.10.22한국건설기술연구원 ICT 융합연구소강 태 욱

[email protected]://www.facebook.com/laputa999

※MEP(Mechanical, Electrical, and Plumbing): 기계 , 전기 , 배관

본 연구는 2015 년 산업통상자원부 (3D 객체 역설계 기반 MEP 설비 유지관리 시스템 개발 ) 에 지원에의해 수행되었음 .

3) Test Sample-CInput Segmentation

Cylinder ExtractionRevit Output

Page 2: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

개요최근 3 차원 이미지 스캔 작업을 통해 획득된 3 차원 Point Cloud (PCD) 를 활용하는 사례가 점차 많아지고

있다 . 이는 3 차원 이미지를 손쉽게 획득할 수 있는 LiDAR, 드론 등 기술이 발전하고 , 3 차원 공간정보 컨텐츠

요구가 증가했기 때문이다 . 다만 , 아직은 역설계 시 , 많은 수작업이 필요한 상황이다 . MEP 역설계는 건축

다른 분야에 비해 작업이 복잡하고 , 스캔 데이터가 불완전하며 , 대용량 데이터이다 . 본 연구는 MEP 분야에서

역설계 작업량이 상대적으로 많은 배관 파이프를 대상으로 불완전한 대용량 MEP 3D PCD-SEMM(Split-Extrac-tion-Merge-Mapping) 알고리즘과 역설계 작업흐름 가변성을 지원하는 RWDL(Reverse engineering Workflow De-

scription Language) 를 제안한다 .

3D 포인트 클라우드 기반 역설계 ( 출처 : 미국 Bethesda 병원 , FARO 라이다 장비 활용 . Kevin P. Corbley, 2012.8)

파이프 형상 반자동 추출

Page 3: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

3 차원 이미지 스캔 기반 역설계 기술 소개 및 발전 방향

P 2

LiDAR 기반 스캔

포토그래메트리기반 스캔

3차원 이미지 스캔 노이즈 필터링 / 정합

역설계 형상 모델링

BIM 모델링

로보틱스 기반 3차원이미지 스캔

형상 자동/반자동모델링

BIM 자동/반자동역설계

작업 진입불가 영역

노동집약적스캔 작업

노동집약적모델링 작업

기존 3차원 이미지 스캔

Drone-based 3D image scan

Rover-based scan

문제 개선 방향

…작업 및 문제점 인터뷰/조사

다양한작업대상물

Scan Segment BIM object

Page 4: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

유스케이스 시나리오 정의

engineer

viewer

BIM modeler

login RE3D BIM server<<viewer>>

importing RE3D project file<<viewer>>

loading RE3D project file including point cloud from BIM server<<viewer>>

converting shape to BIM pipe object<<console>>

loading RE3D project file<<addin>>

loading point cloud file<<addin>>

generating BIM pipe object from RE3D project’s model information<<addin>>

<<call>>

creating RE3D project file<<console>>

segmentation<<console>>

extracting straight cylinder<<console>>

extracting L-bow cylinder<<console>>

saving point cloud file into file system (.pcd)

adding point cloud file (.xyz, .pcd)

loading point cloud file into memory

1. Basic function support

2. Script support (python)

3. Performance

upgrade

4. Web-based RE3D App support

Major API Pipe extraction Python support Spatial indexing REST APIProject file management Customization LOD support Cloud supportUploading files into server Pipe accessories Streaming support Mesh up withVisualizing point clouds Object matching using ICP Google earth...Measuring point clouds

Data exchange PCD file-based exchange between RE3D, Viewer, Addin.Memory File-based exchangeInterface call consideration

Page 5: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

역설계 데이터 평활화 처리 아키텍처 설계 / 알고리즘 구현

P 11

Database-Name: string+CreateIndexing()

Pipe-Point1: PointXYZ-Point2: PointXYZ-Radius: real

Object-Name:string

PropertySet-Name: string-Category:string

*

Property-Name:string-Type-Value:string

*

*

Plane-A: real-B: real-C: real-D: real

ReverseDesignStrategy-Name:string+begin()+action()+end()

PointReferenceCloud-PointCloudID: integer-Name: string-LOD: integer

PointXYZ-PointCloudID: integer-PointCloudZone: interger-X: real-Y: real-Z: real

* Filtering

ReverseDesignProgram-Name: string

*

ShapeMatchingRuleSet-Name:string

RANSACSegmentation

ShapeMatchingRule-Name:string

*

Validation

Skeletonization

Recognization*

PointCloud-Name: string

PointCloudZone-LOD: integer

-Zones

*

PointNormal-PointID: integer-X: real-Y: real-Z: real

*RegionGrowingSegmentation RegionFiltering LaplacianSkelationization

Page 6: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

역설계 데이터 평활화 처리 아키텍처 설계 / 알고리즘 구현

P 11

Database-Name: string+CreateIndexing()

Pipe-Point1: PointXYZ-Point2: PointXYZ-Radius: real

Object-Name:string

PropertySet-Name: string-Category:string

*

Property-Name:string-Type-Value:string

*

*

Plane-A: real-B: real-C: real-D: real

ReverseDesignStrategy-Name:string+begin()+action()+end()

PointReferenceCloud-PointCloudID: integer-Name: string-LOD: integer

PointXYZ-PointCloudID: integer-PointCloudZone: interger-X: real-Y: real-Z: real

* Filtering

ReverseDesignProgram-Name: string

*

ShapeMatchingRuleSet-Name:string

RANSACSegmentation

ShapeMatchingRule-Name:string

*

Validation

Skeletonization

Recognization*

PointCloud-Name: string

PointCloudZone-LOD: integer

-Zones

*

PointNormal-PointID: integer-X: real-Y: real-Z: real

*RegionGrowingSegmentation RegionFiltering LaplacianSkelationization

2D ShapeExtraction

Pipe RD Data Acquisition

3D PointCloud Point Cloud Data Processing

3D PolyhedronExtraction

Physical Shape

2D ShapeExtraction

Architectural MEPPipe Shape RD

3D PolyhedronConversion

Architectural MEP PipeObject Modeling

3D ObjectExtraction

Architectural MEP PipeObject Library

Architectural MEP Pipe RD Error Analysis

Pipe ObjectShape

RDData

Shape Decision / Modeling

Error PositionAnalysis Analysis/Valid-

ationReport

Generation

Architectural MEP Pipe RD Data Pre-processing

ObjectValidation

Shape[Segment] = PCD2Shape(PCD)

Segments = Segmentation(PCD)

IF Type == PrimitiveType

Shapes = RANSAC(Segments)

return Shapes

IF Type == SweepingType

Paths[Segment] = Skeletonization(Segments)

Sections[Segment, Section] = SectionExtraction(Segments, Paths)

FST[Segment, Section] = FTS(FST, Sections, Paths)

FSTfitting[Segment, Section] = Fitting(FST, Sections, Paths)

return Sweeping(FSTfitting, Paths)

|| np · ns || > cos(θth)

argminX ฮxi − qjฮθ(ฮxi − qjฮ)j∈J + R(X)i∈I

FTS={FT, ...}FT={FTname, FTtolerance, FTpattern}FTtolerance ={Tlength or Tangle or Tradius}FTpattern={FTelement, ...}FTelement ={Dim or Base or Geometry}Dim={Dname, Dvalues}Dvalues={values, ...}Base={Ename, Px, Py}Geometry ={Gtype, Gconstraints, Gdim}Gtype={Line or Arc or Last}Gconstraint={On or Tangent}Gdim={L or A or R}

Page 7: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

노이즈있는 포인트 클라우드 세그먼테이션 / 형상 / 뼈대 추출

P 12

Num = 70

Page 8: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

Segmentation Path = Skeletonization

FTS computation

Section features

Section features fitting Sweeping

Segment sections extraction

PCD

FST

A=10

.0

Sweeping object

유사도 기반 SWEEPING 객체 역설계 알고리즘 모델 정의

P 13

Shape[Segment] = PCD2Shape(PCD)

Segments = Segmentation(PCD)

Paths[Segment] = Skeletonization(Segments) Sections[Segment, Section] = SectionExtraction(Segments, Paths) FST[Segment, Section] = FTS(FST, Sections, Paths)

FSTfitting[Segment, Section] = Fitting(FST, Sections, Paths)

return Sweeping(FSTfitting, Paths)

|| np · ns || > cos(θth)

argminX ฮxi − qjฮθ(ฮxi −qjฮ)j∈J + R(X)i∈I

FTS={FT, ...}FT={FTname, FTtolerance, FTpattern}FTtolerance ={Tlength or Tangle or Tradius}FTpattern={FTelement, ...}FTelement ={Dim or Base or Geometry}Dim={Dname, Dvalues}Dvalues={values, ...}Base={Ename, Px, Py}Geometry ={Gtype, Gconstraints, Gdim}Gtype={Line or Arc or Last}Gconstraint={On or Tangent}Gdim={L or A or R}

Section2D = Mp Segment∙ 3D

Section3D = I(Mp) Sec∙ -tion2D

Rtrace

No X Y Z R#1 -6.481 31.98

3 26.94

0 0.646 … … … … …

#59 -5.568 31.888

25.806 0.611

#60 -6.061 31.941

25.004 0.615

편차   0.025

Page 9: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

실험용 MEP 모델 포인트 클라우드 취득

P 14

스캔 차수 대상 목적1 차 건설연 본관 MEP 장비 테스트 및 샘플 획득2 차 건설연 외부 MEP 3 차원 이미지 스캔 장비 특성 분석3 차 건설연 외부 MEP 3 차원 이미지 스캔 프로세스 분석4 차 건설연 외부 MEP 3 차원 이미지 스캔 정합 고려사항 분석5 차 영등포 동사무소 건물 외관 및 구조 스캔 프로세스 분석6 차 건설연 외부 MEP 3 차원 이미지 스캔 정밀도 확인7 차 제로 에너지 빌딩 MEP 3 차원 이미지 MEP 스캔 데이터 획득 8 차 건설본 본관 MEP 상동9 차 제로 에너지 빌딩 MEP 작업자 진입 불가 영역 스캔 가능성 확인

Page 10: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

실험용 MEP 모델 포인트 클라우드 취득

P 14

Page 11: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

실험용 MEP 모델 포인트 클라우드 취득

P 14

Page 12: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

실험용 MEP 모델 포인트 클라우드 취득

P 14

Page 13: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

역설계 자동화 알고리즘 PCD-SEMM 및 역설계 작업 정의 언어 RWDL 제안

Scan to BIM algorithm (PCD-

SEMM)

BIM_objects scan_to_BIM(PCD = 3D point cloud)begin function

splited_shapes = {};merged_shapes = {};grids = create_spatial_grid(PCD); // 대용량 PCD 분할for(grid in grids) // 그리드 별 형상 추출{

segments = grid.segmenation(); // 세그먼테이션segments = noise_filtering(segments); // 필터링shapes = RANSAC(segments) or sweeping_feature_template_based_extraction(segments);splited_shapes.add(shapes);

}merged_shapes = merge_shapes(splited_shapes); // 병합merged_shapes.update_fitting_shapes(); // ex) L-bow BIM_objects = BIM_object_mapping(merged_shapes); // BIM 맵핑

end function

|| np · ns || > cos(θth) argminX ฮxi −qjฮθ(ฮxi −qjฮ)j∈J +R(X)i∈I

FTS={FT, ...}FT={FTname, FTtolerance, FTpattern}FTtolerance ={Tlength or Tangle or Tradius}FTpattern={FTelement, ...}FTelement ={Dim or Base or Geometry}Dim={Dname, Dvalues}

Section2D = Mp ∙Segment3DSection3D = I(Mp) ∙Section2D

PCD section Rtrace

Dvalues={values, ...}Base={Ename, Px, Py}Geometry ={Gtype, Gconstraints, Gdim}Gtype={Line or Arc or Last}Gconstraint={On or Tangent}Gdim={L or A or R}

Feature trace template

skeletonization

Disk

Page 14: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

역설계 자동화 알고리즘 PCD-SEMM 및 역설계 작업 정의 언어 RWDL 제안

Data structure

Database

#name: string

PointCloud

#name: string#path: string+load()

Point<XYZ>

Segment

#name: string#path: string

*

*

*

Project

+name: string

PointCloud<XYZ>

Point<RGB>PointCloud<RGB>

PointCloud<Normal> Point<Normal>

*

*

PointIndices

#indices

Shape

#<<Unique>> name: string

ShapeList

#name: string+load()

*

CylinderShape

#radius: doubleLBowCylinderShape

PlaneShape

StrightCylinderShape

RWDL_Rule

-name: string-path: string+Rule(name: string)<<virtual>>+parsing(path: string)<<virtual>>+execute()

#qualityCheckRules

#objectMappingRules*

Grid*

RWDL_RuleSet<<enumeration>>

QualityCheckRule

ObjectMappingRule

Page 15: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

역설계 자동화 알고리즘 PCD-SEMM 및 역설계 작업 정의 언어 RWDL 제안

Data structure

Data for-mat

Page 16: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

역설계 자동화 알고리즘 PCD-SEMM 및 역설계 작업 정의 언어 RWDL 제안

다양한 역설계 대상물과 작업흐름 가변성을 고려한 RWDL

scriptp = new project(‘new_project’) # script based on pythonin = p.add(‘point_cloud_1.pcd’)p.load(in)p.del(in)f1 = in.filtering(“region”, (x1, y1, z1), (x2, y2, z2), 30)filters.add(f1)in = filters.execute()segs = in.segmentation(‘curvature’, 1.0, 1.5)cylinders = segs.extract(‘cylinder’, ‘plant_command_parameters.xml’)

Lcylinders = segs.extract(‘L-bow’, ‘plant_command_parameters.xml’)report = cylinders.checkDistance(‘report.xml’)p.template(‘plant_template.xml’)objects = cylinders.mappingObject(“0.1 <= C.R <= 0.2 => [KS or JS or DIN] 0.1 pipe w=0.01 with C.P1, C.P2“)BIMobjects = objects.mappingBIM(‘BIMobject_mapping_ruleset.xml’)

Page 17: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

PCD-SEMM 및 RWDL 기반 역설계 작업 자동화 효율 비교

Test results (Sample: A, B, C, D Plant)Test Item A Sample B Sample C Sample D Plant Sample Average

Total Points 480,220 364,340 807,509 2,181,234 -Total St-Cylinders in PCD 60 60 90 220 -

R1. Straight pipes extraction (%) 51 (85.00) 55 (91.66) 78 (86.66) 182 (82.72) 86.51%Total L-Cylinders in PCD 40 41 59 104R2. Fitting pipes (L-bow)

extraction (%) 29 (72.50) 27 (65.85) 52 (88.13) 89 (85.57) 78.01%

R3. Straight pipes extraction time (sec)

17.14 42.88 20.25 70.16 37.60

R4. Fitting pipe extraction time (sec) R3 + 0.36 R3 + 0.37 R3 + 0.55 R3 + 1.1 38.20

기술이전을 통한 상용화 (S 사 기술 이전 및 RE3D 상용화 / 테스트 결과 )

Page 18: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

PCD-SEMM 및 RWDL 기반 역설계 작업 자동화 효율 비교Comparison results

C- company solution (1053 pipes extraction. 55 mins)

Proposed method (1100 pipes extraction. 8 mins)

Improvement ra-tio=1.04%Time=687%

<

기술이전을 통한 상용화 (S 사 기술 이전 및 RE3D 상용화 / 테스트 결과 )

Page 20: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

Appendix – 기술 / 특허 조사 및 연구한 기술에 대한 특허 출원

그림 . FOCUS 도구 특허 결과 맵

• FOCUS 특허 분석 ( 국내 6 건 / 해외 14 건 )• 건축 MEP 파이프 객체 추출 기술은 해당 특허 없음• RANSAC 같은 기본 기술 기반 역설계 시스템은 특허로 등록 - 국내 아이너스 기술 ( 현재 쓰리디시스템즈 코리아 ) / 해외 제록스 등

그림 . 국내외 특허 검색 결과 ※ Keyword – Reverse engineering, MEP, Vectorization, Point cloud, Pipe, Segmentation, Feature

• 기술 이전 특허 (3 건 )

Page 21: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

Appendix – 연구 조사 결과 기술 논문 31 중 8 건 상세 분석 / 알고리즘 코드 분석

구분 기술 문헌 (31) 목적Data acquisition RANSAC (RANdom SAmple Consensus),

PFH (Point Feature Histogram) 16, 25 포인트 클라우드 데이터 취득 방법에 관한 기술

Registration / Filtering RANSAC, PHF 20 취득한 포인트 클라우드 정합Segmentation Surface smoothing, PHF, Projection 1, 23, 24, 26, 27,

28, 29 포인트 클라우드에서 유사도에 따라 세그먼트 분류

Skeletonization Laplacian, Delanuany Trianglation 5, 12, 13, 31 세그먼트에서 뼈대 추출Pipe geometry recognition

RANSAC/ 커브피팅 7, 8, 9, 19 형상 모델 파라메터 획득뼈대 추출 3, 4, 6, 11, 14 뼈대 기반 파이프 연결성 획득피쳐 / 템플릿 매칭 10, 17, 22 다양한 피쳐 기반 형상 매칭기타 2, 18 조합된 기법을 통해 형상 인식Pipe object recognition Topology, Pattern Matching 30 객체와 형상 유사도 계산

Case study - 15, 21 기술 및 역설계 사례 조사

CP

P1 P2

PLN2PLN1

N1N2

N3=V1xN1

V1

CP

※ Keyword – Reverse engineering, MEP, Vectorization, Point cloud, Pipe, Segmentation, Feature

Segmentation Skeletonization RANSAC / Feature Matching

Page 22: 기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 MEP 역설계 자동화 방안 연구

KICT

Appendix – 3 차원 스캐닝 장애 요인 및 대안 연구

P 14

P 17

높은

고도

3D스

캔시

험진

입불

가영

역스

캔센

서처

리장

치시

P 25