Booil Jung

OctoMap 라이브러리

자율 주행 자동차, 무인 항공기(UAV), 로봇 팔 조작 등 현대 로보틱스 응용 분야의 성공은 주변 환경을 얼마나 정확하고 신속하게 인식하고 이해하는지에 달려있다. 특히, 3차원 공간에 대한 완전한 부피적(volumetric) 표현은 로봇이 지능적인 결정을 내리는 데 있어 필수적인 전제 조건이다.1 이는 단순히 눈앞의 장애물을 감지하는 수준을 넘어, 안전하고 효율적인 경로를 계획하고, 로봇 팔이 도달 가능한 작업 공간을 분석하며, 미지의 환경을 자율적으로 탐사하는 등 고차원적인 지능적 행동의 기반이 되기 때문이다.4 로봇이 자신이 차지하는 공간 외에도 비어있는 공간(free space)과 아직 탐사하지 않은 미지의 공간(unknown space)을 명확히 구분할 수 있을 때, 비로소 진정한 의미의 자율성이 실현될 수 있다.

OctoMap이 등장하기 이전, 3차원 환경을 모델링하려는 여러 시도가 있었으나 각각 명확한 한계를 가지고 있었다.

첫째, 고정 복셀 그리드(Rigid Voxel Grids) 방식은 공간을 일정한 크기의 정육면체(복셀)로 나누어 표현한다. 이 방식은 직관적이고 구현이 용이하지만, 치명적인 단점을 내포한다. 가장 큰 문제는 막대한 메모리 요구량이다.1 맵의 전체 경계를 포함하도록 미리 메모리를 할당해야 하므로, 실제 장애물이나 구조물이 거의 없는 넓은 공간이라 할지라도 모든 복셀에 대한 메모리를 점유한다. 이로 인해 대규모 실외 환경이나 고해상도 맵핑이 필요한 경우 메모리 사용량이 감당할 수 없는 수준으로 증가하며, 맵의 크기를 확장해야 할 때마다 발생하는 비싼 데이터 복사 비용 또한 실시간 응용에 큰 부담이 되었다.1

둘째, 포인트 클라우드(Point Clouds) 방식은 레이저 스캐너나 깊이 카메라와 같은 센서가 측정한 3차원 점들의 집합을 그대로 저장한다. 이 방식은 원시 데이터(raw data)를 보존한다는 장점이 있지만, 두 가지 근본적인 문제를 해결하지 못한다. 가장 치명적인 단점은 ‘자유 공간’과 ‘미탐사 공간’을 구분할 수 없다는 점이다.1 센서 광선이 도달한 지점은 장애물로 간주되지만, 센서와 그 지점 사이의 공간이 비어있는지, 아니면 단지 관측되지 않았을 뿐인지 알 수 없다. 이는 안전한 경로 계획에 필수적인 정보를 제공하지 못함을 의미한다. 또한, 센서 노이즈에 취약하며, 측정 횟수가 늘어날수록 데이터가 무한정 누적되어 메모리 사용량에 상한선이 없다는 문제도 있다.6

셋째, 2.5D 맵(Elevation Maps) 방식은 2차원 그리드의 각 셀에 높이 값을 저장하는 형태이다. 이는 지면의 고저차를 표현하는 데 효과적이어서 야외 지형 주행 등 특정 응용 분야에서는 충분히 유용하다.6 하지만 나무 가지, 다리 밑, 건물의 처마와 같이 수직적으로 복잡한 구조물을 표현할 수 없다는 명백한 한계를 가진다.1 이는 로봇이 활동할 수 있는 공간을 완전한 3차원으로 이해해야 하는 대부분의 현대 로보틱스 응용에는 부적합하다.

OctoMap은 2010년 처음 소개된 이래, 앞서 언급된 기존 기술들의 단점들을 극복하기 위해 설계된 혁신적인 통합 프레임워크다.1 OctoMap의 핵심 목표는 명확했다. 첫째, 확률적 점유 추정(Probabilistic Occupancy Estimation)을 통해 센서 측정에 내재된 불확실성과 노이즈에 강건하게 대응한다. 둘째,

옥트리(Octree) 자료구조를 기반으로 3차원 공간을 효율적으로 표현하여 메모리 사용량을 최소화한다. 셋째, 이 두 가지를 결합하여 실시간으로 업데이트 가능하며, 유연하고(flexible), 컴팩트한(compact) 3D 환경 모델을 제공하는 것이다.2

기존 기술들이 ‘메모리’, ‘공간 표현력’, ‘불확실성 처리’ 중 하나 이상의 약점을 가졌던 반면, OctoMap은 이 문제들을 개별적으로 접근하지 않았다. 대신, 옥트리라는 효율적인 공간 분할 구조와 베이즈 필터 기반의 확률 모델을 하나의 프레임워크 안에서 유기적으로 결합함으로써, 3D 맵핑의 핵심 요구사항들을 종합적으로 해결하는 시스템 아키텍처의 성공적인 사례를 제시했다. 이는 단편적인 기술 개선을 넘어, 문제 해결을 위한 종합적 설계의 결과물이라 할 수 있다.

더욱 중요한 것은 OctoMap이 오픈소스로 공개되었다는 점이다. 당시 로보틱스 연구 분야에서는 신뢰성 있고 효율적인 3D 맵핑 구현체가 부족하여 많은 연구팀이 “기초적인 소프트웨어 구성 요소를 재창조”하는 데 시간과 노력을 낭비하고 있었고, 이는 연구 발전의 병목 현상으로 지적되었다.1 OctoMap이 관대한 BSD 라이선스를 따르는 C++ 라이브러리로 공개되면서 1, 연구자들은 ‘바퀴를 재발명’하는 대신, 안정적인 3D 맵을 기반으로 경로 계획, 자율 탐사, 객체 인식 등 더 고차원적인 문제에 집중할 수 있게 되었다. 이처럼 OctoMap은 하나의 뛰어난 알고리즘을 넘어, 로보틱스 연구 생태계 전체를 활성화하고 그 발전을 가속화하는 중요한 ‘공공재(public good)’로서의 역할을 수행했다.8

OctoMap의 효율성과 강건함은 두 가지 핵심 이론, 즉 공간 표현을 위한 ‘옥트리 자료구조’와 불확실성 처리를 위한 ‘확률적 점유 모델링’의 정교한 결합에서 비롯된다.

옥트리는 3차원 공간을 효율적으로 표현하기 위한 계층적 자료구조이다. OctoMap은 이 구조를 채택하여 메모리 문제를 근본적으로 해결한다.

옥트리의 기본 아이디어는 3차원 공간 전체를 나타내는 하나의 큰 정육면체(루트 노드)에서 시작하여, 공간을 재귀적으로 8개의 동일한 크기의 하위 정육면체(자식 노드, 또는 Octant)로 분할하는 것이다.10 각 정육면체 노드는 ‘복셀(Voxel)’이라 불린다. 이 재귀적 분할 과정은 사용자가 미리 정의한 최소 복셀 크기, 즉 맵의 최종 해상도(resolution)에 도달할 때까지 계속된다.11 이 계층적 구조 덕분에, 필요에 따라 특정 깊이에서 트리를 잘라내어 다양한 해상도의 맵을 유연하게 얻을 수 있다.

옥트리가 고정 그리드 방식에 비해 압도적인 메모리 효율성을 보이는 이유는 두 가지 핵심적인 최적화 기법 덕분이다.

첫째, 프루닝(Pruning) 기법이다. 만약 어떤 노드의 8개 자식 노드가 모두 동일한 점유 상태(예: 모두 ‘점유’ 또는 모두 ‘비점유’)를 가질 경우, 이 8개의 자식 노드를 메모리에서 제거하고 부모 노드 하나로 상태를 통합하여 표현한다.1 예를 들어, 넓은 빈 공간이나 거대한 빌딩 벽면은 수많은 작은 복셀들로 채워지는 대신, 소수의 큰 복셀 노드로 압축되어 표현될 수 있다. 이는 특히 장애물이 드문드문 있거나 넓은 개활지가 포함된 환경에서 극적인 메모리 절감 효과를 가져온다.

둘째, 동적 확장(Dynamic Expansion) 방식이다. 고정 그리드와 달리, OctoMap은 맵의 전체 범위를 미리 가정하고 메모리를 할당하지 않는다.4 대신, 로봇의 센서 데이터가 들어오는 영역에 대해서만 동적으로 노드를 생성하고 트리를 확장해 나간다. 이는 탐사되지 않은 미지의 공간에 대해서는 메모리를 전혀 사용하지 않음을 의미하며, 맵의 크기나 형태를 미리 알 수 없는 자율 탐사 시나리오에 매우 적합한 특성이다.5

실세계의 로봇 센서는 완벽하지 않다. LiDAR나 RGB-D 카메라로부터 얻는 측정값에는 항상 노이즈, 반사로 인한 오류, 움직이는 물체로 인한 오측정 등 다양한 불확실성이 포함된다.1 OctoMap은 이러한 불확실성을 다루기 위해 각 복셀의 상태를 ‘점유(occupied)’ 또는 ‘비점유(free)’라는 이진(binary) 값으로 결정하지 않고, 해당 복셀이 점유되었을 확률 값으로 표현한다.4

OctoMap은 새로운 센서 측정값(zt)이 주어질 때마다 각 복셀(n)의 점유 확률을 갱신하기 위해 베이즈 필터(Bayes filter)를 사용한다. 특정 복셀 n이 시간 t까지의 모든 측정값 $z_{1:t}$가 주어졌을 때 점유될 확률 $P(n | z_{1:t})$는 다음과 같은 재귀적인 식으로 업데이트된다.1 \(P(n | z_{1:t}) = \left[ 1 + \frac{1-P(n|z_t)}{P(n|z_t)} \frac{1-P(n|z_{1:t-1})}{P(n|z_{1:t-1})} \frac{P(n)}{1-P(n)} \right]^{-1}\) 여기서 $P(n | z_{1:t-1})$은 이전 시간까지의 믿음(prior belief), $P(n|z_t)$는 현재 측정값 zt에 대한 센서 모델, 그리고 $P(n)$은 초기 사전 확률(보통 0.5로 가정)을 의미한다.

위의 확률 업데이트 식은 여러 개의 곱셈 연산을 포함하고 있어 계산 비용이 높고, 확률 값이 0 또는 1에 가까워질수록 수치적으로 불안정해질 수 있다. OctoMap은 이 문제를 해결하기 위해 확률을 직접 다루는 대신 로그 오즈(log-odds) 표현을 사용한다. 확률 p는 다음과 같이 로그 오즈 L로 변환된다. \(L(n) = \log\left(\frac{P(n)}{1-P(n)}\right)\) 로그 오즈 표현의 가장 큰 장점은 확률 업데이트가 매우 간단한 덧셈 연산으로 바뀐다는 점이다.1 \(L(n | z_{1:t}) = L(n | z_{1:t-1}) + L(n | z_t)\) 이 변환 덕분에 각 복셀의 업데이트는 단 한 번의 덧셈으로 완료되어 계산이 매우 효율적이고 빨라진다. 각 노드는 확률 값 대신 이 로그 오즈 값을 저장하며, 필요할 때 언제든지 다시 확률 값으로 변환할 수 있다.

이처럼 OctoMap의 효율성은 단순히 하나의 기술에 기인하는 것이 아니다. 옥트리 구조는 ‘어디를 업데이트할 것인가’의 문제를 효율적으로 해결한다. 즉, 넓은 빈 공간과 같이 변화가 없는 영역은 상위 레벨 노드에서 한 번에 처리함으로써 불필요한 계산을 대폭 줄여준다. 동시에, 로그 오즈 업데이트 방식은 ‘어떻게 업데이트할 것인가’의 문제를 효율적으로 해결한다. 복잡한 확률 곱셈을 단순 덧셈으로 치환하여 각 노드 업데이트 자체의 계산 비용을 최소화한다. 이 두 가지 핵심 원리가 결합되어, OctoMap은 ‘불필요한 영역에 대한 계산은 생략’하고 ‘필요한 영역의 계산은 빠르게’ 수행하는 이중의 최적화를 달성하는 것이다.

OctoMap은 클램핑이라는 실용적인 기법을 도입하여 맵의 안정성과 강건성을 높인다. 각 복셀의 로그 오즈 값이 특정 상한 및 하한 임계값(clamping thresholds)에 도달하면, 그 노드는 ‘안정된(stable)’ 상태로 간주되어 더 이상 업데이트되지 않는다.1 이 임계값은 ROS 환경에서 sensor_model/[min|max] 파라미터를 통해 조절할 수 있다.12

클램핑은 단순한 최적화를 넘어, 맵의 실용성을 보장하는 핵심 철학을 담고 있다. 이론적으로 베이즈 필터는 무한한 데이터를 통해 확률을 0 또는 1에 수렴시킬 수 있지만, 현실 세계는 동적 객체나 센서 오류와 같은 예측 불가능한 요소로 가득하다. 만약 클램핑이 없다면, 한때 벽으로 확신했던 공간(점유 확률이 1에 매우 가까움)을 사람이 지나갈 때, 그 공간이 ‘자유’ 상태로 바뀌는 데 매우 오랜 시간이 걸릴 수 있다. 클램핑은 확률을 일정 범위 내로 제한함으로써, 맵이 새로운 정보에 적절히 반응할 수 있는 ‘유연성’을 부여한다. 이는 이론적 완벽성보다 실제 환경에서의 강건함(robustness)을 우선시하는 실용적인 설계 결정이다. 더 나아가, 이렇게 안정화된(clamped) 노드들은 앞서 설명한 프루닝(pruning)의 대상이 되어 메모리 압축을 더욱 촉진하는 직접적인 연관성을 가진다.1

OctoMap은 이론적 우수성뿐만 아니라, 개발자들이 쉽게 접근하고 활용할 수 있는 잘 구축된 소프트웨어 생태계를 통해 로보틱스 커뮤니티의 표준 도구로 자리 잡았다. 이 생태계는 독립적인 C++ 라이브러리, ROS와의 깊은 통합, 그리고 시각화 도구로 구성된다.

OctoMap의 핵심은 플랫폼에 독립적인 C++ 라이브러리다. 이는 ROS와 같은 특정 프레임워크에 의존하지 않고도 사용할 수 있음을 의미한다.

OctoMap의 진정한 잠재력은 세계 최대의 로봇 소프트웨어 플랫폼인 ROS와의 깊은 통합에서 발현된다.

이러한 octomap_server와 외부 SLAM 시스템 간의 ‘느슨한 결합(Loose Coupling)’은 높은 유연성을 제공한다. 개발자는 자신이 선호하는 어떤 SLAM 알고리즘과도 octomap_server를 조합하여 사용할 수 있다. 하지만 이는 잠재적인 문제의 원인이 되기도 한다. 예를 들어, SLAM 시스템이 루프 클로저(loop closure)를 감지하여 과거의 전체 경로를 대대적으로 수정했을 때, octomap_server는 이미 잘못된 위치 정보로 맵에 기록된 ‘유령(ghost)’ 장애물들을 자동으로 수정하지 못한다.20 이는 맵의 일관성을 해치는 주요 원인이 될 수 있다. 반면,

RTAB-Map과 같이 SLAM과 3D 맵핑이 긴밀하게 통합된 시스템은 포즈 그래프 최적화가 발생하면 맵 자체를 수정하여 이러한 문제를 해결한다. 이 차이는 소프트웨어 아키텍처 설계에서 ‘모듈성’과 ‘통합성’ 사이의 고전적인 트레이드오프를 명확히 보여준다.

아래 표는 octomap_server를 ROS 환경에서 사용하고자 하는 개발자에게 필수적인 정보를 요약한 것이다.

구분 이름/경로 타입 설명
구독 토픽 cloud_in sensor_msgs/PointCloud2 3D 맵 생성을 위해 입력받는 포인트 클라우드 데이터. 12
발행 토픽 octomap_binary octomap_msgs/Octomap 점유/비점유 정보만 포함하는 압축된 이진 맵. 파일 크기가 작다. 12
  octomap_full octomap_msgs/Octomap 모든 노드의 완전한 확률 정보를 포함하는 맵. 12
  occupied_cells_vis_array visualization_msgs/MarkerArray RViz에서 점유된 복셀을 시각화하기 위한 마커 배열. 12
  map nav_msgs/OccupancyGrid 3D 맵을 2D 평면에 투영한 2D 점유 격자 지도. 12
서비스 octomap_binary octomap_msgs/GetOctomap 현재 맵을 이진 형태로 요청하고 응답받는다. 12
  clear_bbx octomap_msgs/BoundingBoxQuery 지정된 경계 상자(Bounding Box) 내의 모든 복셀을 ‘자유’ 상태로 초기화한다. 12
  reset std_srvs/Empty 전체 맵을 초기화한다. 12
주요 파라미터 resolution float 맵의 해상도(최소 복셀 크기, 미터 단위). 12
  frame_id string 맵이 생성될 기준 좌표계 (예: /map). 12
  sensor_model/max_range float 센서 데이터 통합 시 고려할 최대 거리. 이 값을 넘는 측정값은 무시된다. 12
  sensor_model/hit float 측정된 지점이 점유되었을 확률. 12
  sensor_model/miss float 광선이 통과한 지점이 비어있을 확률. 12
  filter_ground bool 지면으로 판단되는 평면을 필터링하여 맵에서 제외할지 여부. 12

이 두 가지 파일 포맷은 ‘정확성/확장성’과 ‘효율성/이식성’ 사이의 명확한 트레이드오프를 사용자에게 제공한다. .ot는 맵핑 작업을 계속 이어가야 하는 연구 개발 단계에 적합하며, .bt는 맵핑이 완료된 후 경로 계획이나 다중 로봇 간 맵 공유와 같이 최종 결과물만 필요한 응용 단계에 적합하다. 라이브러리가 이 두 가지 옵션을 모두 제공한다는 것은 개발자가 응용 프로그램의 특정 요구에 맞게 저장 전략을 선택할 수 있도록 배려한 성숙한 설계임을 보여준다.

OctoMap은 3D 맵핑 분야에서 큰 성공을 거두었지만, 만능 해결책은 아니다. 그 성능 특성과 내재적 한계를 정확히 이해하고, 최신 대안 기술과 비교하여 장단점을 파악하는 것은 기술을 올바르게 선택하고 적용하기 위해 필수적이다.

최근 로보틱스, 특히 고속 자율 비행 및 최적화 기반 경로 계획 분야에서는 OctoMap의 대안으로 Signed Distance Fields (SDF) 계열의 맵 표현 방식이 주목받고 있다.

이 차이는 특히 최신 경로 계획 알고리즘에서 중요해진다. CHOMP나 TrajOpt와 같은 최적화 기반 플래너는 경로의 안전성, 평활도(smoothness) 등을 정량화한 비용 함수(cost function)를 정의하고, 경사도 하강법(gradient descent)과 같은 수치 최적화 기법을 사용하여 비용을 최소화하는 경로를 찾는다. 이 과정에서 비용 함수와 그 경사도(gradient)를 계산하기 위해서는 ESDF가 제공하는 연속적인 거리와 방향 정보가 필수적이다.34 OctoMap은 이러한 정보를 직접 제공하지 못하므로, 이러한 최신 플래너와의 통합에 근본적인 한계가 있다.

기술의 ‘우수성’은 절대적인 기준이 아니라 시대적 요구에 따라 상대적으로 정의된다. OctoMap은 ‘확률적 로보틱스’ 패러다임이 주류였던 시대의 산물로, 불확실한 환경에서 강건한 지도를 구축하는 데 중점을 두었다. 당시의 A*나 RRT와 같은 경로 계획 알고리즘은 점유/비점유 정보만으로도 충분히 동작했다. 그러나 최근 로보틱스 분야의 패러다임이 ‘최적화 기반 제어’로 이동하면서, 로봇의 움직임을 더욱 정교하고 동역학적으로 제어하려는 요구가 커졌다. 이 새로운 요구에 TSDF/ESDF가 더 적합한 해답을 제공하게 된 것이다. 즉, OctoMap의 한계는 기술 자체의 결함이라기보다, 로보틱스 패러다임이 진화함에 따라 발생하는 ‘요구사항과의 불일치’로 해석하는 것이 타당하다.

역설적이게도, OctoMap의 이러한 성능 및 기능적 한계는 오히려 새로운 연구를 촉진하는 계기가 되었다. 실시간 처리의 병목 현상은 OMU와 같은 하드웨어 가속 연구를 촉발했고 31, 정적 환경 가정의 한계는 동적 OctoMap 29, 순수 기하학적 표현의 한계는 시맨틱 OctoMap 36이라는 새로운 연구 분야를 낳았다. 이는 OctoMap이 ‘완성된 기술’이 아니라, 커뮤니티에 의해 지속적으로 확장되고 개선되는 ‘살아있는 플랫폼’임을 보여준다. 그 한계점들이 오히려 후속 연구자들에게 명확한 도전 과제와 연구 목표를 제시하는 역할을 한 것이다.

아래 표는 세 가지 3D 맵 표현 방식의 핵심적인 특징을 비교하여 기술 선택에 도움을 주고자 한다.

특징 OctoMap TSDF (Truncated Signed Distance Field) ESDF (Euclidean Signed Distance Field)
핵심 데이터 점유 확률 (Log-Odds) 표면까지의 투영 거리 (Projective Distance) 가장 가까운 장애물까지의 유클리드 거리 (Euclidean Distance)
공간 표현 점유/비점유/미탐사 표면 근처의 연속적인 거리 필드 전체 공간의 연속적인 거리 필드
메모리 효율성 높음 (넓은 빈/미탐사 공간 압축) 중간 (표면 근처만 저장, Voxel Hashing으로 최적화) 낮음 (전체 공간에 대한 거리 정보 저장 필요)
쿼리 속도 $O(\log n)$ (트리 탐색) $O(1)$ (Voxel Hashing 사용 시) $O(1)$ (그리드 직접 접근)
주요 장점 - 불확실성 처리 능력 - 미탐사 영역 명시적 표현 - 성숙한 오픈소스 생태계 - 빠른 업데이트 속도 - 서브 복셀 정밀도의 표면 재구성 - ESDF 생성의 효율적인 중간 단계 - 경로 최적화에 필수적인 거리 및 경사도 정보 제공 - 충돌 검사 비용 계산에 용이
주요 단점 - 최적화 기반 플래너와 부적합 - 동적 환경에 취약 - 시각 센서 모델 부정확 - 전체 공간에 대한 거리 정보 부재 - 경로 계획에 직접 사용하기 어려움 - 생성 및 업데이트 비용이 높음 - 미탐사 영역을 직접 표현하지 않음
주요 응용 자율 탐사, 기본 장애물 회피, 조작 고품질 3D 재구성, Visual SLAM 고속 주행, 최적화 기반 경로 계획 (예: CHOMP, TrajOpt)

OctoMap은 그 견고함과 효율성을 바탕으로 다양한 로보틱스 분야에서 성공적으로 활용되어 왔으며, 그 한계를 극복하기 위한 최신 연구들을 통해 끊임없이 진화하고 있다.

실제 세계는 정적이지 않다. 사람, 자동차, 다른 로봇 등 수많은 동적 객체들이 존재하며, 이는 정적 맵핑의 가정을 무너뜨린다.32 이러한 한계를 극복하기 위해 ‘Dynamic OctoMap’ 또는 ‘Time-aware OctoMap’과 같은 연구들이 활발하게 진행되고 있다.

로봇 지능의 다음 단계는 단순히 공간의 기하학적 구조를 이해하는 것을 넘어, 그 공간을 구성하는 객체들의 ‘의미(semantics)’를 이해하는 것이다. “이곳에 장애물이 있다”에서 한 걸음 더 나아가, “이것은 ‘의자’이고, 저것은 ‘테이블’이며, 저 사람은 ‘동료 작업자’이다”와 같이 맵에 의미론적 정보를 부여하려는 연구가 바로 시맨틱 맵핑이다. 이는 로봇이 환경을 더 깊이 이해하고, 인간과 자연스럽게 상호작용하며, 고차원적인 임무를 수행하는 데 필수적이다.37

OctoMap의 연구 동향은 로봇 지능의 발달 과정을 명확하게 보여준다. 초기 OctoMap은 공간의 기하학(Geometry)을 표현하는 데 집중했다. Dynamic OctoMap 연구는 여기에 시간(Time) 차원을 더하여 맵이 과거에 얽매이지 않고 현재를 정확히 반영하도록 만들었다. 그리고 Semantic OctoMap 연구는 의미(Semantics) 차원을 추가하여 맵을 단순한 공간 모델에서 환경에 대한 ‘지식 베이스(knowledge base)’로 격상시켰다.

더 나아가, 시맨틱 맵핑은 SLAM의 정확도를 역으로 향상시키는 선순환 구조를 만들 잠재력을 가진다. 한 연구에서는 시맨틱 맵을 기반으로 위치 추정 정확도를 향상시켰다고 보고했다.36 이는 매우 중요한 시사점을 가진다. 기존에는 정확한 SLAM이 좋은 맵핑의 전제 조건이었지만, 시맨틱 맵핑은 이 관계를 역전시킬 수 있다. 예를 들어, 로봇이 이전에 봤던 ‘특정한 포스터가 붙은 벽’이나 ‘독특한 모양의 소파’를 다시 인식한다면, 이는 수백 개의 평범한 기하학적 특징점보다 훨씬 더 강력하고 신뢰성 있는 루프 클로저의 단서가 될 수 있다. 즉, ‘의미’가 ‘위치’를 보정하는 것이다. 이는 SLAM과 고수준 장면 이해(scene understanding) 기술이 깊이 융합되는 미래 로보틱스 연구의 방향을 제시한다.

OctoMap은 지난 10여 년간 로보틱스 3D 맵핑 분야에서 표준적인 도구로 자리매김하며 수많은 연구와 응용에 기여해왔다. 본 보고서는 OctoMap의 이론적 기반부터 실제 활용, 한계, 그리고 최신 연구 동향까지 다각적으로 심층 분석하였다. 이를 바탕으로 종합적인 평가와 함께, 실제 응용을 위한 기술 선택 가이드라인을 제언하고자 한다.

어떤 기술이든 모든 상황에 완벽한 해결책은 될 수 없다. 따라서 응용 프로그램의 구체적인 요구사항에 따라 적절한 3D 맵핑 기술을 선택하는 것이 중요하다.

OctoMap은 앞으로도 중요한 역할을 계속 수행하겠지만, 그 역할은 점차 변화할 것이다. 독립적인 맵핑 솔루션으로서의 역할보다는, 더 크고 복잡한 시스템의 ‘기반 레이어(foundational layer)’로서의 역할이 더욱 강화될 것으로 전망된다.

미래의 지능형 로봇은 단순히 현재 환경을 기하학적으로 표현하는 것을 넘어, 보이지 않는 부분을 추론하여 완성하고(3D scene completion), 동적 객체의 미래 움직임을 예측하며(prediction), 객체와 환경의 의미를 이해하는(semantic understanding) 능력을 갖추어야 한다. OctoMap의 유연하고 확장 가능한 노드 구조는 이러한 풍부한 정보들을 저장하기 위한 훌륭한 백본(backbone)을 제공할 수 있다. 점유 확률뿐만 아니라, 시맨틱 레이블, 객체 ID, 예측 궤적, 통행 가능성 비용 등 다양한 데이터를 복셀에 통합하는 ‘월드 모델(world model)’로 진화하는 데 있어 OctoMap의 기본 철학과 구조는 여전히 유효할 것이다.2 결국 OctoMap은 그 자체의 한계를 극복하는 연구들과 함께, 차세대 로봇 지능을 뒷받침하는 핵심 데이터 구조로서 그 생명력을 이어갈 것이다.

  1. OctoMap: An Efficient Probabilistic 3D Mapping Framework Based on Octrees - Washington, accessed July 31, 2025, https://courses.cs.washington.edu/courses/cse571/16au/slides/hornung13auro.pdf
  2. OctoMap: An efficient probabilistic 3D mapping framework based on octrees - ResearchGate, accessed July 31, 2025, https://www.researchgate.net/publication/257523133_OctoMap_An_efficient_probabilistic_3D_mapping_framework_based_on_octrees
  3. Autonomous Multi-Robot Exploration Strategies for 3D Environments with Fire Detection Capabilities - arXiv, accessed July 31, 2025, https://arxiv.org/html/2411.15953v1
  4. OctoMap - 3D occupancy mapping, accessed July 31, 2025, https://octomap.github.io/
  5. Introduction - OctoMap, accessed July 31, 2025, https://octomap.github.io/octomap/doc/
  6. OctoMap: A Probabilistic, Flexible, and Compact 3D Map Representation for Robotic Systems - ResearchGate, accessed July 31, 2025, https://www.researchgate.net/publication/235008236_OctoMap_A_Probabilistic_Flexible_and_Compact_3D_Map_Representation_for_Robotic_Systems
  7. Benchmarking Occupancy Mapping libraries - Nicolò Valigi, accessed July 31, 2025, https://nicolovaligi.com/articles/occupancy-mapping-benchmarks/
  8. octomap Documentation - the official ROS docs, accessed July 31, 2025, https://docs.ros.org/diamondback/api/octomap/html/index.html
  9. octomap - ROS Wiki, accessed July 31, 2025, http://wiki.ros.org/octomap
  10. 3DVFH+: Real-Time Three-Dimensional Obstacle Avoidance Using an Octomap - CEUR-WS.org, accessed July 31, 2025, https://ceur-ws.org/Vol-1319/morse14_paper_08.pdf
  11. tejalbarnwal/octomap_tutorial: Practicing using octomap - GitHub, accessed July 31, 2025, https://github.com/tejalbarnwal/octomap_tutorial
    1. ORB_SLAM2_Octomap - Yahboom, accessed July 31, 2025, http://www.yahboom.net/public/upload/upload-html/1743490362/9.%20ORB_SLAM2_Octomap.html
  12. octomap/octomap/README.md at devel / OctoMap/octomap / GitHub, accessed July 31, 2025, https://github.com/OctoMap/octomap/blob/devel/octomap/README.md
  13. ROS Package: octomap, accessed July 31, 2025, https://index.ros.org/p/octomap/
  14. octomap/octovis/README.md at devel - GitHub, accessed July 31, 2025, https://github.com/OctoMap/octomap/blob/devel/octovis/README.md
  15. Octomap - A probabilistic, flexible, and compact 3D mapping library for robotic systems, accessed July 31, 2025, https://octomap.github.io/octomap/doc/md_README.html
  16. octomap_msgs/Octomap Message - ROS documentation, accessed July 31, 2025, http://docs.ros.org/en/noetic/api/octomap_msgs/html/msg/Octomap.html
  17. ROS stack for mapping with OctoMap, contains octomap_server package - GitHub, accessed July 31, 2025, https://github.com/OctoMap/octomap_mapping
  18. octomap_server - ROS Wiki, accessed July 31, 2025, http://wiki.ros.org/octomap_server
  19. octomap_ros on ros 2 humble - Robotics Stack Exchange, accessed July 31, 2025, https://robotics.stackexchange.com/questions/103089/octomap-ros-on-ros-2-humble
  20. 3D Mapping with OctoMap - ArminHornung.de, accessed July 31, 2025, https://www.arminhornung.de/Research/pub/hornung13roscon.pdf
  21. how to improve maps from octomap? - ros - Robotics Stack Exchange, accessed July 31, 2025, https://robotics.stackexchange.com/questions/65945/how-to-improve-maps-from-octomap
  22. octovis - ROS Wiki, accessed July 31, 2025, http://wiki.ros.org/octovis
  23. Robots/TIAGo/Tutorials/MoveIt/Planning_Octomap - ROS Wiki, accessed July 31, 2025, http://wiki.ros.org/Robots/TIAGo/Tutorials/MoveIt/Planning_Octomap
  24. octomap/octomap/src/graph2tree.cpp at devel - GitHub, accessed July 31, 2025, https://github.com/OctoMap/octomap/blob/devel/octomap/src/graph2tree.cpp
  25. Accessing 3D map data saved in bt file/formats to save octomap - Robotics Stack Exchange, accessed July 31, 2025, https://robotics.stackexchange.com/questions/41712/accessing-3d-map-data-saved-in-bt-file-formats-to-save-octomap
  26. Improvements To 3D Navigation Using Octomap And ROS RoboticsTomorrow, accessed July 31, 2025, https://www.roboticstomorrow.com/story/2011/09/improvements-to-3d-navigation-using-octomap-and-ros/309/
  27. Voxblox: Incremental 3D Euclidean Signed … - Helen Oleynikova, accessed July 31, 2025, https://helenol.github.io/publications/iros_2017_voxblox.pdf
  28. Timebased local OctoMaps - TU Chemnitz, accessed July 31, 2025, https://www.tu-chemnitz.de/etit/proaut/en/research/octomap.html
  29. Comparison of the Octomap representation for two different voxel sizes… - ResearchGate, accessed July 31, 2025, https://www.researchgate.net/figure/Comparison-of-the-Octomap-representation-for-two-different-voxel-sizes-05-m-and-02-m_fig3_330426624
  30. OMU: A Probabilistic 3D Occupancy Mapping Accelerator for Real-time OctoMap at the Edge - arXiv, accessed July 31, 2025, https://arxiv.org/pdf/2205.03325
  31. ERASOR2: Instance-Aware Robust 3D Mapping of the Static World in Dynamic Scenes - Robotics, accessed July 31, 2025, https://www.roboticsproceedings.org/rss19/p067.pdf
  32. (PDF) Data frame aware optimized Octomap-based dynamic object detection and removal in Mobile Laser Scanning data - ResearchGate, accessed July 31, 2025, https://www.researchgate.net/publication/371978146_Data_frame_aware_optimized_Octomap-based_dynamic_object_detection_and_removal_in_Mobile_Laser_Scanning_data
  33. Signed Distance Field - Dibyendu Biswas - Medium, accessed July 31, 2025, https://dibyendu-biswas.medium.com/signed-distance-field-14d829d8103e
  34. Signed Distance Fields: A Natural Representation for Both Mapping and Planning - Research Collection, accessed July 31, 2025, https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/128029/eth-50477-01.pdf
  35. Semantic SLAM based on Object Detection and Improved Octomap - ResearchGate, accessed July 31, 2025, https://www.researchgate.net/publication/328114559_Semantic_SLAM_based_on_Object_Detection_and_Improved_Octomap
  36. Continuous Online Semantic Implicit Representation for … - MDPI, accessed July 31, 2025, https://www.mdpi.com/2218-6581/13/7/108
  37. Example of a UAV updating its own OctoMap when entering communication… Download Scientific Diagram - ResearchGate, accessed July 31, 2025, https://www.researchgate.net/figure/Example-of-a-UAV-updating-its-own-OctoMap-when-entering-communication-range-with-other_fig3_385484744
  38. Autonomous Full 3D Coverage Using an Aerial Vehicle, Performing …, accessed July 31, 2025, https://www.mdpi.com/2218-6581/13/6/83
  39. A Comparison of Segmentation Methods for Semantic OctoMap Generation - MDPI, accessed July 31, 2025, https://www.mdpi.com/2076-3417/15/13/7285
  40. 3D Perception for Mobile Manipulation with OctoMap - MoveIt, accessed July 31, 2025, https://moveit.ai/assets/pdfs/2013/icra2013tutorial/octomap_planning.pdf