기능 가변성을 고려한 3차원 이미지 스캔 기반 건축 mep 역설계 자동화 방안...
TRANSCRIPT
가변성을 고려한 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
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)
파이프 형상 반자동 추출
KICT
3 차원 이미지 스캔 기반 역설계 기술 소개 및 발전 방향
P 2
LiDAR 기반 스캔
포토그래메트리기반 스캔
3차원 이미지 스캔 노이즈 필터링 / 정합
역설계 형상 모델링
BIM 모델링
로보틱스 기반 3차원이미지 스캔
형상 자동/반자동모델링
BIM 자동/반자동역설계
작업 진입불가 영역
노동집약적스캔 작업
노동집약적모델링 작업
기존 3차원 이미지 스캔
Drone-based 3D image scan
Rover-based scan
문제 개선 방향
…작업 및 문제점 인터뷰/조사
다양한작업대상물
Scan Segment BIM object
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
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
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}
KICT
노이즈있는 포인트 클라우드 세그먼테이션 / 형상 / 뼈대 추출
P 12
Num = 70
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
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 작업자 진입 불가 영역 스캔 가능성 확인
KICT
실험용 MEP 모델 포인트 클라우드 취득
P 14
KICT
실험용 MEP 모델 포인트 클라우드 취득
P 14
KICT
실험용 MEP 모델 포인트 클라우드 취득
P 14
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
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
KICT
역설계 자동화 알고리즘 PCD-SEMM 및 역설계 작업 정의 언어 RWDL 제안
Data structure
…
Data for-mat
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’)
…
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 상용화 / 테스트 결과 )
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 상용화 / 테스트 결과 )
KICT
Thanks for your interest
BIM principle Makers
KICT
Appendix – 기술 / 특허 조사 및 연구한 기술에 대한 특허 출원
그림 . FOCUS 도구 특허 결과 맵
• FOCUS 특허 분석 ( 국내 6 건 / 해외 14 건 )• 건축 MEP 파이프 객체 추출 기술은 해당 특허 없음• RANSAC 같은 기본 기술 기반 역설계 시스템은 특허로 등록 - 국내 아이너스 기술 ( 현재 쓰리디시스템즈 코리아 ) / 해외 제록스 등
그림 . 국내외 특허 검색 결과 ※ Keyword – Reverse engineering, MEP, Vectorization, Point cloud, Pipe, Segmentation, Feature
• 기술 이전 특허 (3 건 )
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
KICT
Appendix – 3 차원 스캐닝 장애 요인 및 대안 연구
P 14
P 17
높은
고도
3D스
캔시
험진
입불
가영
역스
캔센
서처
리장
치시
험
P 25