포인트 클라우드와 SLAM으로 구축하는 3차원 공간 인지

포인트 클라우드 표현부터 SLAM 프런트엔드·백엔드 최적화, 센서 융합과 맵 운영 전략까지 3차원 공간 인지 시스템의 구조를 정리한다.

2026-08-14 · 최초 발행 2024-04-29

위치 추정과 지도 생성을 함께 다루는 문제

자율주행, 로보틱스, AR/VR에서는 환경의 3차원 구조를 파악하면서 현재 위치를 안정적으로 추정해야 한다. 3D Vision은 포인트 클라우드를 비롯한 공간 데이터를 다루는 기반이고, SLAM(Simultaneous Localization and Mapping)은 센서 관측으로 자세를 추정하는 동시에 환경 지도를 만드는 문제다.

카메라, LiDAR, IMU를 함께 쓰는 시스템에서는 인식 알고리즘만으로 충분하지 않다. 센서 간 동기화와 캘리브레이션, 맵 갱신 방식, 추적 실패 시의 복구 흐름까지 설계 대상이 된다.

포인트 클라우드가 담는 공간 정보

포인트 클라우드는 3D 좌표의 집합이다. 좌표 외에도 색상, 강도, 노멀, 시간 같은 속성을 포함할 수 있으며, LiDAR, RGB-D, 스테레오 정합, 구조광 등으로 획득한다.

표현 방식은 원시 포인트 클라우드, Voxel Grid, TSDF/ESDF, OctoMap, Mesh 등으로 나뉜다. 어느 표현을 택하든 정밀도와 메모리, 연산량의 균형이 필요하다.

SLAM 파이프라인의 역할 분리

SLAM은 보통 프런트엔드와 백엔드로 나뉜 계층형 파이프라인으로 구성한다. 프런트엔드는 특징 추출, 정합, 오도메트리를 맡고, 백엔드는 포즈 그래프와 BA 최적화, 루프 클로저를 담당한다.

좌표계도 일관되게 유지해야 한다. Sensor frame, Body frame, Map/World frame, Gravity-aligned frame을 정합과 최적화 전 과정에서 혼동 없이 관리한다. 센서 구성은 Mono/Stereo/RGB-D 카메라, LiDAR(2D/3D), IMU, Wheel Odometry, GNSS를 포함할 수 있으며, 내부·외부 캘리브레이션과 동기화가 전제된다.

공간 데이터를 맵으로 바꾸는 과정

포인트 클라우드는 바로 지도에 넣기보다 전처리 과정을 거친다. voxel 다운샘플링, 노멀 추정, RANSAC 기반 지면 분리, statistical outlier 제거를 적용하고, 실시간 처리를 위해 스트리밍 파이프라인을 구성한다.

TSDF/ESDF는 표면 재구성에, Occupancy Grid는 경로 계획에, Surfels와 mesh는 경량 시각화에 쓸 수 있다. voxel size를 높이면 메모리와 연산 부담은 줄지만 공간 표현의 세부 정보도 함께 줄어든다.

정합과 전역 보정이 이어지는 방식

프런트엔드의 선택지는 장면 특성에 따라 달라진다. 특징 기반 방식은 ORB/SIFT/SURF를 활용하고, 직접법은 photometric 정보를 사용한다. LiDAR 환경에서는 ICP/NDT가 대표적인 정합 방법이다. 장면의 텍스처, 조명 변화, 기하 구조에 맞춰 선택해야 한다.

RANSAC과 LMedS는 외란 제거에 쓰이며, IMU 프리적분은 단기 드리프트 완화에 기여한다. 키프레임을 선별하면 계산량도 관리할 수 있다.

백엔드에서는 PGO와 번들 조정(BA)으로 전역 일관성을 맞춘다. Gauss-Newton, Levenberg-Marquardt, iSAM2 등이 최적화 기법으로 사용된다. 루프 클로저는 BoW 또는 딥학습 기반 장소인식으로 후보를 찾고, 지오메트리 검증으로 가짜 루프를 걸러낸다. 추적을 잃었을 때 다시 위치를 찾는 relocalization도 이 흐름에 포함된다.

센서 융합과 운영 경로

VIO/LIO(Visual/LiDAR-Inertial Odometry)는 시각 또는 LiDAR 정보와 관성 정보를 결합한다. 팩터 그래프 기반 융합을 사용할 수 있고, 칼만 필터(EKF/UKF)와 스무딩·매핑 중심의 최적화 방식 중 시스템 요구에 맞는 방식을 택한다.

하드 트리거나 타임스탬프 기반의 하드웨어 동기화, 초기·온라인 보정 파이프라인도 필요하다. Extrinsic drift는 모니터링하고 재보정 절차를 갖춰야 한다.

운영 환경에서는 ROS 2 노드 그래프, CPU/GPU 파이프라인 병렬화, 맵 저장·로드와 증분 업데이트 트랜잭션을 함께 설계한다. 센서 드롭아웃에는 관성 또는 휠 오도메트리로 폴백하고, 추적 상실에는 재지역화를 사용한다. 여러 주체가 맵을 수정할 때는 쓰기 락과 버전 관리가 필요하다.

센서 입력부터 맵 갱신까지의 흐름

외란 제거센서 드롭아웃추적 상실원자적 커밋입력: Camera/LiDAR/IMU전처리: 동기화·보정노이즈 필터·다운샘플프런트엔드: 특징/패치/ICP정합단기 추정: 오도메트리(VIO/LIO)백엔드 최적화: PGO/BA(Gauss-Newton, iSAM2) 업데이트:TSDF/Occupancy/Surfels루프 클로저 탐지: BoW/딥러닝출력: 정렬 포즈·일관폴백: IMU/휠재지역화/글로벌 매칭

이 흐름에서는 루프 클로저가 전역 최적화로 다시 연결된다. 외란 제거, 센서 드롭아웃 폴백, 재지역화가 예외 처리 경로를 이루며, 백엔드 최적화 뒤에는 맵을 원자적으로 커밋하고 쓰기 락을 적용한다.

환경별로 달라지는 정합 방식

접근 성능 확장성 일관성 안정성 운영 편의
특징 기반 비주얼 SLAM 질감 풍부 환경에서 정확도 우수, 30–60 FPS 가능 키프레임·맵 분할로 수 km 확장 루프 클로저+BA로 전역 일관성 양호 조명 변화·모션 블러에 민감 오픈소스 풍부, 튜닝 다소 필요
직접법 비주얼 SLAM 텍스처 빈약 환경에서 강점, 광류 활용 해상도↑ 시 연산량 급증 포토메트릭 모델 정확도에 의존 노출 변화·HDR에 취약 정밀 캘리브레이션 요구
LiDAR SLAM(ICP/NDT) 기하 기반으로 야간/무광택에 강인 스캔 서브맵/voxel로 대규모 확장 포즈 그래프+ICP refine로 안정 동적 객체에 민감, 지면/물체 분리 필요 실외 대규모 운영 용이
비주얼-관성(VIO/VINS) 단기 드리프트 최소화, 고속 동작 추적 맵 공유·분산 최적화로 확장 인자 그래프로 일관성 유지 IMU 바이어스/동기화 민감 모바일/AR 실무 적용 용이

공간 인지 시스템이 쓰이는 현장

물류 자율주행 로봇은 RGB-D, IMU, 바퀴 오도메트리를 구성하고 로컬 VIO와 LiDAR 라이트 또는 RGB-D ICP로 정합할 수 있다. 구역별 로컬맵(occupancy)을 구축한 뒤 라우팅과 충돌회피에 사용하고, 루프 클로저로 드리프트를 보정한다. 교대나 배터리 교체 시에는 맵 스냅샷을 원자적으로 커밋한다.

건설 현장과 디지털 트윈 스캔에서는 UAV LiDAR, RTK-GNSS, IMU로 대면적을 스캔하고 TSDF 또는 메시로 재구성한다. 지면 분리와 노이즈 제거 후 슈퍼글루 또는 FPFH+RANSAC으로 글로벌 정합을 수행하고, 포즈 그래프 정련을 거쳐 As-built와 BIM의 편차를 분석한다.

실내 AR 내비게이션은 경량 VIO(VINS/Fisheye)와 클라우드 맵 서버를 결합할 수 있다. 온디바이스에서 오도메트리를 수행하고, 서버에서 루프 클로저와 맵 병합을 처리한다. 얼굴·텍스트 마스킹 같은 프라이버시 필터를 거친 뒤 맵을 버전 관리하고 증분 배포한다.

포인트 클라우드 ICP 정합 코드

전제조건은 Python 3.10, open3d>=0.17, numpy다. 아래 코드는 두 포인트 클라우드를 전처리한 뒤 ICP 정합과 품질 지표를 확인한다.

# pip install open3d==0.17.0 numpy
import open3d as o3d
import numpy as np

def preprocess(pcd, voxel=0.05):
    pcd = pcd.voxel_down_sample(voxel)
    pcd.estimate_normals(o3d.geometry.KDTreeSearchParamHybrid(radius=voxel*2, max_nn=30))
    pcd.remove_statistical_outlier(nb_neighbors=20, std_ratio=2.0)
    return pcd

src = o3d.io.read_point_cloud("frame_001.pcd")
tgt = o3d.io.read_point_cloud("frame_020.pcd")

src, tgt = preprocess(src), preprocess(tgt)

threshold = 0.2
trans_init = np.eye(4)

loss = o3d.pipelines.registration.TukeyLoss(k=0.1)
robust_kernel = o3d.pipelines.registration.RobustKernel(loss)
est = o3d.pipelines.registration.TransformationEstimationPointToPlane(robust_kernel)

reg = o3d.pipelines.registration.registration_icp(
    src, tgt, threshold, trans_init, estimation_method=est,
    criteria=o3d.pipelines.registration.ICPConvergenceCriteria(max_iteration=50))

print("fitness:", reg.fitness, "inlier_rmse:", reg.inlier_rmse)
print("T:\n", reg.transformation)

src_t = src.transform(reg.transformation)
o3d.visualization.draw_geometries([src_t.paint_uniform_color([1,0,0]), tgt.paint_uniform_color([0,1,0])])

품질은 fitness(겹침 비율) 0.5 이상과 센서 노이즈 수준 이하의 inlier_rmse를 기준으로 볼 수 있다. 생산 환경에서는 키프레임 서브맵에 ICP를 적용하고, 전역 루프에서는 강체 검증 뒤 포즈 그래프에 팩터를 추가한다.

메모리와 지연 시간을 함께 계산하기

포인트만 저장할 경우 메모리는 Npoints × 3좌표 × 4바이트로 계산하며, 이는 12N 바이트다. 10M 포인트는 120MB에 해당한다. 좌표(12B), 노멀(12B), 색상(3B, 패딩 고려 4B), 인덱스 등 메타(816B)를 가정하면 포인트당 약 3644B, 전체 약 360~440MB가 필요하다.

실시간 카메라 처리에서는 30 FPS를 기준으로 프런트엔드 15 ms, 백엔드 15 ms, 여유 5 ms를 목표로 잡을 수 있다. 루프 클로저는 비동기 배경 처리로 분리하는 편이 적합하다.

정확도와 자원 제약 사이의 선택

시간 동기화와 캘리브레이션에는 하드웨어 트리거, 정밀 타임스탬프, 온라인 IMU 바이어스 추정을 적용한다. 동적 객체 마스킹, 지면·벽 플래닛 모델링, 마할라노비스 거리 기반 outlier gating은 정합의 강건성을 높인다. 맵은 원자적 커밋과 버전 태깅, 롤백 전략을 갖추고 ROS 2 QoS 설정은 신뢰와 최소 지연 요구를 분리한다.

voxel 5 cm는 세부 정보를 보존하는 대신 메모리와 연산량을 키운다. 10 cm는 경로 계획에 충분한 수준으로 경량 운영에 맞는다. 루프 클로저 빈도와 키프레임 수를 조절하면 정확도와 실시간성 사이를 조정할 수 있으며, iSAM2는 증분 처리, 배치 BA는 정확도 측면의 선택지가 된다.

특징 기반 방식은 조명 민감도가 낮고 직접법은 텍스처가 빈약한 장면에서 강점이 있다. LiDAR는 광 조건에 영향을 덜 받지만 카메라는 비용 측면에서 유리하다.

신경장 기반 맵핑과 학습형 장소인식

NeRF와 가우시안 스플래팅을 SLAM과 결합하는 신경장 기반 맵핑 연구가 활성화되고 있다. 다만 실시간성과 안정성은 “최신 정보 확인 필요” 상태다.

딥 임베딩과 시맨틱 정보를 장소인식·루프 클로저에 도입해 장면 변화에 대응하는 흐름도 이어지고 있다.

기대할 수 있는 변화

루프 클로저를 도입하면 장거리 드리프트가 3070% 감소 가능하며, 이는 데이터셋과 환경에 의존한다. VIO/LIO 융합은 고속 구간의 자세 추정 오차를 2040% 줄이는 경향이 있다. 맵 해상도를 최적화한 사례에서는 메모리 4060% 절감과 경로 계획 속도 24배 향상이 보고된다.

정성적으로는 복잡한 환경에서도 안정적인 위치 추정과 재현 가능한 맵 일관성을 확보할 수 있다. 맵 생명주기를 확장 가능하게 관리하면 다기기·다현장 운영이 쉬워지고, 드롭아웃 상황에서도 폴백과 재지역화로 서비스 가용성을 높일 수 있다.

SLAM컴퓨터 비전포인트 클라우드로보틱스센서 융합