레이저 스캐너는 방을 수십만 개의 점으로 기록합니다. 가상의 방을 이 브라우저에서 직접 스캔하고, 두 번 찍은 스캔을 ICP로 맞추고, RANSAC으로 벽과 바닥을 찾은 뒤, 설계 모델과 몇 cm 다른지 재 봅니다.
지상 레이저 스캐너는 돌면서 정해진 각도 간격으로 빛을 쏩니다. 돌아온 빛 하나가 점 하나입니다. 빛이 닿은 곳과 그 거리입니다. 이웃한 빛줄기가 멀어질수록 벌어지므로 스캐너 가까이는 점이 촘촘하고 멀리는 성깁니다. 물체 뒤는 비고(스캔 그림자), 문과 창 같은 구멍에서는 돌아오는 빛이 없습니다. 여기 가상의 방은 6 × 4 m에 기둥, 탁자, 문, 창이 있고, 스캐너 자리는 직접 정합니다.
평면도를 눌러 스캐너(원)를 옮깁니다. 점선은 문과 창 구멍.
한 자리에서는 모든 것이 보이지 않으므로 방을 여러 곳에서 스캔합니다. 스캔마다 자기 스캐너를 중심으로 한 좌표로 나옵니다. 정합은 스캔 B를 스캔 A 위에 올리는 회전과 이동을 찾습니다. ICP(iterative closest point)는 두 단계를 되풀이합니다. B의 점마다 가장 가까운 A의 점과 짝을 짓고, 짝들을 가장 잘 겹치게 하는 강체 운동을 계산합니다(Horn의 쿼터니언 방법으로 정확히 풂). 대략적인 시작값이 필요하고, 너무 멀리서 시작하면 엉뚱한 짝에 붙습니다.
점 하나: 참 위치에서 x축의 각도만큼 돌려 놓고 ICP 50번(d_max 0.8 m, 뒤에 0.2 m). y는 끝에 남은 회전 오차.
건물은 대부분 평면입니다. RANSAC(random sample consensus)은 점 세 개를 무작위로 골라 그 평면을 만들고, 평면에서 작은 거리 안에 든 점이 몇 개인지 셉니다. 여러 번 시도한 뒤 지지가 가장 많은 평면을 남기고 최소제곱으로 다듬습니다. 그 점들을 빼고 되풀이하면 다음 평면이 나옵니다. 가구 같은 이상점이 결과를 끌어당기지 않아서, 한 번의 큰 최소제곱 대신 RANSAC을 씁니다.
디지털 트윈은 설계 모델(BIM)에서 시작해, 측정으로 실제 건물과 맞춰 갑니다. 스캔에서 찾은 평면은 위치를 잰 벽, 바닥, 천장이 됩니다. 이것을 설계와 비교하면 시공이 어디서 달라졌는지 보입니다. 이 방은 동쪽 벽이 4 cm 밖으로, 천장이 2 cm 낮게, 기둥이 7 cm 비켜 지어졌고, 모델에 없는 탁자가 있습니다. 이 숫자들은 방을 만들 때 손으로 정한 것이고, 이 페이지는 점만 보고 그것을 찾아내야 합니다.
교육용 페이지입니다. 방과 스캔은 코드로 만든 합성 자료이고(설계값과 '지어진' 값 모두 손으로 정함), 실제 스캐너의 오차 특성을 단순하게 흉내 낸 것입니다.