Booil Jung

ROS2 Humble 환경에서의 OMPL

현대 로보틱스 시스템, 특히 자율 매니퓰레이션(autonomous manipulation) 분야에서 모션 플래닝(motion planning)은 가장 근본적이고 도전적인 과제 중 하나로 자리 잡고 있다. 로봇이 주어진 작업을 성공적으로 수행하기 위해서는 자신의 기구학적, 동역학적 제약 조건을 만족시키면서 작업 공간 내의 장애물과 충돌하지 않는 유효한 경로를 생성해야 한다. 로봇 운영체제(Robot Operating System, ROS)의 두 번째 버전인 ROS2, 그중에서도 Humble Hawksbill 배포판은 강건하고 실시간성 높은 로보틱스 애플리케이션 개발을 위한 표준 플랫폼으로 부상하였다. 이 생태계의 중심에는 로봇 매니퓰레이션을 위한 통합 소프트웨어 프레임워크인 MoveIt2가 있으며, MoveIt2의 핵심적인 경로 계획 기능은 OMPL(Open Motion Planning Library)이라는 강력한 백엔드(backend) 라이브러리를 통해 구현된다.1

전통적인 그리드 기반(grid-based) 또는 조합적(combinatorial) 플래닝 방법들은 로봇의 자유도(Degrees of Freedom, DoF)가 증가함에 따라 설정 공간(Configuration Space, C-Space)의 크기가 기하급수적으로 팽창하는 ‘차원의 저주(curse of dimensionality)’ 문제에 직면한다.3 이로 인해 고차원 공간에서는 현실적인 시간 내에 해를 찾는 것이 거의 불가능해진다. 이러한 한계를 극복하기 위해 등장한 패러다임이 바로 샘플링 기반 플래닝(Sampling-Based Motion Planning, SBMP)이다. SBMP는 설정 공간 전체를 명시적으로 구성하는 대신, 무작위 샘플링을 통해 공간의 연결성을 확률적으로 탐색한다. OMPL은 이러한 샘플링 기반 플래닝 패러다임의 정점에 있는 라이브러리로서, 확률적 로드맵(Probabilistic Roadmap, PRM), 빠른 탐색 랜덤 트리(Rapidly-exploring Random Tree, RRT)와 같은 최첨단 알고리즘 및 그 변형들을 집대성한 포괄적인 도구 모음이다.2

본 보고서는 ROS2 Humble 환경에서 OMPL을 활용하고자 하는 로보틱스 연구자 및 고급 개발자를 대상으로 한다. 단순한 API 사용법이나 튜토리얼 수준을 넘어, OMPL의 근본적인 아키텍처, 핵심 이론, 그리고 MoveIt2와의 통합 과정에서 발생하는 미묘한 상호작용에 대한 심층적인 고찰을 제공하는 것을 목적으로 한다. 보고서는 다음과 같이 구성된다. 제1장에서는 MoveIt2의 플러그인 아키텍처 내에서 OMPL이 어떻게 통합되고 데이터가 처리되는지 구조적 관점에서 분석한다. 제2장에서는 OMPL 라이브러리 자체의 설계 철학과 핵심 구성 요소를 탐구하여 그 이론적 기반을 다진다. 제3장에서는 실제 설정 파일인 ompl_planning.yaml을 통해 플래너의 동작을 세밀하게 제어하고 튜닝하는 방법을 상세히 기술한다. 제4장에서는 RRT, PRM, FMT* 등 MoveIt2에서 널리 사용되는 주요 플래너들의 작동 원리와 장단점을 심도 있게 비교 분석한다. 제5장에서는 샘플링 기반 플래닝의 근본적인 난제인 차원의 저주와 좁은 통로 문제를 OMPL의 관점에서 고찰하고, 각 알고리즘의 계산 복잡도를 분석한다. 제6장에서는 운동학적 제약 조건 및 동적 환경과 같은 고급 플래닝 시나리오에서 OMPL의 적용 가능성과 한계를 논한다. 마지막으로, 결론에서는 전체 내용을 요약하고 머신러닝과의 통합 등 향후 발전 방향을 전망한다.

OMPL은 그 자체로 독립적인 라이브러리이지만, ROS2 생태계에서는 MoveIt2라는 거대한 프레임워크 내에서 핵심적인 플래닝 엔진으로 기능한다. 이 장에서는 OMPL이 MoveIt2의 유연한 아키텍처에 어떻게 통합되어 작동하는지를 구조적 관점에서 상세히 해부한다. 이 과정의 핵심에는 MoveIt2의 플러그인 기반 설계와, 두 시스템을 매개하는 ompl_interface 패키지의 역할이 있다.

MoveIt2의 모션 플래닝 프레임워크는 높은 수준의 모듈성과 확장성을 지향하도록 설계되었다. 이러한 설계 철학의 핵심은 플래너 플러그인 아키텍처에 있다. MoveIt2는 특정 플래닝 알고리즘에 종속되지 않고, planning_interface::PlannerManager라는 추상 기반 클래스를 통해 다양한 모션 플래너 라이브러리를 동적으로 로드하고 사용할 수 있는 인터페이스를 제공한다.1

이 아키텍처 덕분에 OMPL은 MoveIt2의 ‘기본(default)’ 플래너로 기능하면서도, 필요에 따라 CHOMP(Covariant Hamiltonian Optimization for Motion Planning), STOMP(Stochastic Trajectory Optimization for Motion Planning) 등 다른 최적화 기반 플래너들과 동일한 인터페이스 상에서 교체되거나 함께 사용될 수 있다.7 ROS2 시스템의 중심 노드인 move_group은 이 플러그인 인터페이스를 통해 로드된 플래너들에게 ROS 액션(action) 또는 서비스(service) 형태로 모션 플랜 요청(MotionPlanRequest)을 전달한다. 사용자는 설정 파일을 통해 어떤 플래너 플러그인을 로드할지, 그리고 각 플래너를 어떻게 설정할지를 지정할 수 있다. 이와 같은 모듈식 설계는 MoveIt2가 특정 알고리즘의 발전에 얽매이지 않고 지속적으로 최신 플래닝 기술을 수용할 수 있게 하는 기반이 된다.

ompl_interface 패키지는 MoveIt2 프레임워크와 OMPL 라이브러리 사이의 핵심적인 교량 역할을 수행한다. 이 패키지는 두 시스템 간의 개념적, 데이터 구조적 차이를 해소하는 추상화 계층(abstraction layer)으로 기능한다.1 OMPL은 순수한 알고리즘 라이브러리로서 로봇의 기구학, 작업 공간의 장애물, 혹은 충돌이라는 구체적인 개념을 내장하고 있지 않다.2 반면 MoveIt2는 로봇 모델(moveit::core::RobotModel), 현재의 월드 상태를 나타내는 플래닝 씬(planning_scene::PlanningScene) 등 로보틱스 문제에 특화된 풍부한 컨텍스트를 가지고 있다.

ompl_interface는 바로 이 지점에서 다음과 같은 핵심적인 변환 및 관리 작업을 수행한다:

이처럼 ompl_interface는 OMPL의 추상적인 알고리즘을 실제 로봇 문제에 적용 가능하게 만드는 필수적인 매개체이다.

ompl_interface 패키지의 심장부에는 ompl_interface::OMPLPlannerManager 클래스가 있다. 이 클래스는 앞서 언급한 MoveIt2의 planning_interface::PlannerManager 추상 클래스를 상속받아 구체적으로 구현한 것으로, OMPL 기반 플래너들을 MoveIt2 프레임워크에 공식적으로 등록하고 그 생명주기를 관리하는 책임을 진다.9

이 클래스의 주요 메서드와 그 역할은 다음과 같다:

OMPLPlannerManager는 단순히 플래너를 생성하는 것을 넘어, MoveIt2의 동적인 플래닝 요청에 맞추어 적절한 OMPL 자원을 할당하고 설정하는 동적인 관리자의 역할을 수행한다.

ROS2 Humble 환경에서 OMPL을 이용한 모션 플래닝의 전체 데이터 흐름은 다음과 같은 단계로 요약할 수 있다.

  1. 요청 (Request): 사용자(예: RViz의 인터랙티브 마커, C++/Python으로 작성된 노드)가 특정 목표 자세(pose goal)나 관절 공간 목표(joint space goal)를 담은 MotionPlanRequestmove_group 노드의 액션 서버로 전송한다.
  2. 컨텍스트 생성 (Context Generation): move_group은 등록된 플래너 플러그인 중 OMPL을 담당하는 OMPLPlannerManager에게 getPlanningContext()를 호출한다. OMPLPlannerManager는 요청 내용과 현재 PlanningScene을 바탕으로 특정 OMPL 플래너(예: RRTConnect)와 문제 정의(ProblemDefinition)가 포함된 PlanningContext 객체를 생성한다.
  3. 플래닝 실행 (Planning Execution): PlanningContext 내에서 ompl_interface가 MoveIt2의 로봇 상태(관절 값)와 월드 정보(장애물)를 OMPL의 StateStateValidityChecker로 변환한다. 이후 선택된 OMPL 플래너의 solve() 메서드가 호출되어 경로 탐색을 수행한다.
  4. 후처리 및 반환 (Post-Processing & Return): OMPL이 경로를 반환하면, ompl_interface는 이를 MoveIt2의 RobotTrajectory 형식으로 변환한다. 이 시점에서 MoveIt2의 플래닝 어댑터(Planning Request Adapters) 체인이 작동하여, 경로에 시간 정보를 입히는 시간 매개변수화(AddTimeParameterization)나 경로를 부드럽게 만드는 스무딩(smoothing) 등의 후처리 작업이 수행될 수 있다.1
  5. 실행 (Execution): 최종적으로 생성된 궤적(trajectory)은 move_group을 통해 사용자에게 반환되며, 사용자가 실행을 명령하면 FollowJointTrajectoryAction 인터페이스를 통해 해당 로봇의 컨트롤러로 전송되어 실제 로봇이 움직이게 된다.11

이러한 일련의 과정은 잘 정의된 인터페이스와 추상화 계층을 통해 이루어지므로, 사용자는 OMPL의 복잡한 내부 동작을 모두 알지 못하더라도 MoveIt2를 통해 강력한 플래닝 기능을 활용할 수 있다.

이 아키텍처는 상당한 유연성을 제공하지만, 동시에 고려해야 할 점을 내포한다. OMPL 라이브러리는 독립적으로 매우 빠르게 발전하며 새로운 플래너나 최적화 기법이 지속적으로 추가된다.12 그러나 이러한 최신 기능이 MoveIt2 사용자가 즉시 활용 가능함을 의미하지는 않는다.

ompl_interface라는 추상화 계층이 해당 기능을 MoveIt2의 설정 파일 및 API에 명시적으로 “노출(expose)”하도록 업데이트되어야만 비로소 사용이 가능해진다. 실제로 MoveIt2 문서에서도 OMPL에 존재하지만 아직 MoveIt2에서는 사용할 수 없는 최적화 플래너들이 언급되기도 한다.13 이는 고급 기능을 사용하려는 개발자가 MoveIt2와 OMPL의 버전 호환성 및 ompl_interface의 지원 범위를 반드시 확인해야 함을 시사한다. 이 간극은 때로는 최신 연구 결과를 실제 로봇에 적용하고자 할 때 기술적 장벽으로 작용할 수 있으며, 이 경우 ompl_interface 패키지를 직접 수정하거나 확장해야 할 필요성이 발생할 수 있다.

MoveIt2라는 프레임워크를 통해 OMPL을 사용하는 것을 넘어, 그 성능을 극한으로 끌어올리고 예상치 못한 문제에 대응하기 위해서는 OMPL 라이브러리 자체의 내부 철학과 핵심 구성 요소를 이해하는 것이 필수적이다. 이 장에서는 MoveIt2라는 래퍼(wrapper)를 벗겨내고 OMPL의 순수한 아키텍처를 탐구한다. 이 근본적인 이해는 이후 논의될 고급 튜닝과 문제 해결의 견고한 기반이 된다.

OMPL의 설계 철학의 핵심은 ‘알고리즘’과 ‘문제 정의’의 철저한 분리에 있다. OMPL은 특정 로봇, 특정 충돌 검사기, 혹은 특정 시각화 도구에 종속되지 않는, 순수한 모션 플래닝 알고리즘의 집합체로 설계되었다.2 라이브러리의 내용은 샘플링 기반 알고리즘 자체에 국한되며, 환경 명세나 충돌 감지와 같은 구체적인 구현은 외부에서 제공되어야 한다.

이러한 높은 수준의 추상성은 OMPL의 가장 큰 강점이다. 사용자는 자신의 문제, 예를 들어 특정 로봇의 기구학이나 작업 환경의 장애물 정보에 맞는 구체적인 구성 요소(예: 상태 유효성 검사기)를 마치 부품처럼 OMPL 프레임워크에 “주입(inject)”하여 사용할 수 있다.14 이 모듈성 덕분에 OMPL은 로봇 팔 매니퓰레이션뿐만 아니라, 모바일 로봇 내비게이션, 심지어는 단백질 접힘(protein folding)과 같은 비-로보틱스 분야의 고차원 경로 탐색 문제에도 성공적으로 적용될 수 있다. 플래닝 알고리즘의 로직과 문제의 특성이 코드 수준에서 명확히 분리되어 있기 때문에, 동일한 RRT* 알고리즘 코드가 아무런 변경 없이 다양한 도메인의 문제 해결에 재사용될 수 있다. 이는 OMPL을 단순한 ‘플래너 모음’이 아닌, 범용적인 ‘플래닝 프레임워크’로 만드는 핵심적인 설계 원칙이다.

OMPL에서 모션 플래닝 문제를 정의하기 위해서는 최소한 세 가지 핵심 요소가 필요하다. 이들은 플래닝 알고리즘이 작동할 운동장과 규칙을 설정한다.

위에서 정의된 3요소를 바탕으로, 실제 플래닝 프로세스를 구동하기 위한 추가적인 구성 요소들이 존재한다.

앞서 설명한 여러 구성 요소들을 개별적으로 생성하고 설정하는 과정은 번거로울 수 있다. 이를 위해 OMPL은 ompl::geometric::SimpleSetup (운동학적 플래닝용) 및 ompl::control::SimpleSetup (동역학적 플래닝용)이라는 유틸리티 클래스를 제공한다. SimpleSetup 클래스는 플래닝 문제 설정에 필요한 상용구 코드(boilerplate code)를 상당 부분 자동화해준다.

사용자는 StateSpaceStateValidityChecker와 같은 최소한의 정보만 SimpleSetup 객체에 제공하면 된다. 그러면 SimpleSetup이 내부적으로 SpaceInformation, ProblemDefinition 등의 객체를 자동으로 생성하고 올바르게 연결해준다. 또한 플래너 설정, 시작 및 목표 상태 설정, 플래닝 실행(solve()), 결과 경로 확인(getSolutionPath()) 등의 과정을 간결한 API를 통해 수행할 수 있게 해준다.14 이는 OMPL을 독립적으로 사용하여 빠르게 프로토타이핑하거나 특정 문제를 테스트할 때 매우 유용하다.

OMPL의 이론적 개념과 구성 요소들은 ROS2 Humble 환경에서 ompl_planning.yaml이라는 구체적인 설정 파일을 통해 제어된다. 이 파일은 MoveIt2 사용자가 OMPL의 강력하고 다양한 기능들을 자신의 로봇과 애플리케이션에 맞게 조정할 수 있는 핵심적인 인터페이스다. 각 파라미터가 플래닝의 속도, 경로의 품질, 그리고 안정성에 미치는 영향을 깊이 이해하는 것은 OMPL을 효과적으로 활용하기 위한 필수 과정이다.

MoveIt 설정 어시스턴트(moveit_setup_assistant)를 통해 생성된 moveit_config 패키지 안에는 config/ompl_planning.yaml 파일이 포함되어 있다. 이 파일의 구조는 계층적이며 직관적으로 설계되어 있다.

최상위 레벨에서는 로봇의 플래닝 그룹(planning group), 예를 들어 매니퓰레이터 팔을 지칭하는 panda_arm이나 그리퍼를 의미하는 hand 등으로 설정이 구분된다.18 각 플래닝 그룹은 독립적인 플래닝 파라미터를 가질 수 있다.

각 그룹 내부에는 두 가지 주요 섹션이 존재한다:

각 개별 플래너 설정은 type 필드를 통해 사용할 OMPL 플래너의 클래스 이름을 지정하고(예: geometric::RRTConnect), 그 외에는 해당 플래너의 동작을 제어하는 다양한 파라미터들을 포함한다.18

대부분의 샘플링 기반 플래너, 특히 RRT 계열에서 공통으로 사용되는 핵심 파라미터들은 다음과 같으며, 이들의 상호작용을 이해하는 것이 튜닝의 첫걸음이다.

성능 튜닝은 단순히 개별 파라미터를 조정하는 것을 넘어, 이들 간의 복잡한 상호작용을 이해하는 과정이다. 예를 들어, range 값을 키워 탐색 속도를 높이는 공격적인 전략을 선택했다면, 두 노드 사이의 거리가 멀어지므로 그 사이에 위치한 장애물과의 충돌을 놓칠 위험이 커진다. 이러한 위험을 상쇄하기 위해서는 longest_valid_segment_fraction 값을 더 작게 설정하여 충돌 검사의 정밀도를 높이는 보수적인 전략을 함께 취해야 한다. 이처럼 플래닝의 ‘속도’, ‘경로 품질’, ‘안전성’이라는 세 가지 상충하는 목표 사이에서, 주어진 로봇과 작업 환경에 맞는 최적의 균형점을 찾는 것은 과학적 분석과 경험적 직관이 모두 요구되는 섬세한 과정이다.

단순히 가능한 경로를 찾는 것을 넘어, ‘더 좋은’ 경로를 찾기 위해 OMPL은 다양한 최적화 기능을 제공하며, 이는 ompl_planning.yaml을 통해 설정할 수 있다.

플래닝 프로세스의 종료 시점과 결과 경로의 최종 품질은 다음 파라미터들에 의해 결정된다.

아래 표는 ompl_planning.yaml에서 사용되는 주요 파라미터들을 요약하고, 그 기능과 성능에 미치는 영향을 정리한 것이다.

파라미터 이름 설명 적용 플래너 일반적인 값 성능 영향
type 사용할 OMPL 플래너 클래스 지정 모든 플래너 geometric::RRTConnect 플래닝의 기본 전략(속도, 최적성 등)을 결정한다.
range 트리 확장 시 최대 전진 거리 RRT 계열 0.0 ~ (상태 공간에 따라 다름) (+): 값이 크면 탐색 속도 증가. (-): 값이 크면 좁은 통로 통과 실패율 증가.
goal_bias 목표 상태를 직접 샘플링할 확률 RRT 계열 0.0 ~ 1.0 (주로 0.05) (+): 수렴 속도 향상. (-): 값이 크면 지역 최적해에 빠질 위험 증가.
longest_valid_segment_fraction 경로 유효성 검사 시 최대 간격 (비율) 모든 플래너 0.001 ~ 0.1 (+): 값이 크면 충돌 검사 감소로 속도 향상. (-): 값이 크면 충돌 놓칠 위험 증가.
maximum_waypoint_distance 경로 유효성 검사 시 최대 간격 (절대값) 모든 플래너 0.0 ~ (상태 공간에 따라 다름) longest_valid_segment_fraction과 유사. 더 보수적인 쪽이 선택된다.
projection_evaluator 저차원 투영에 사용할 관절/링크 지정 KPIECE, PDST 계열 joints(j1, j2) 특정 플래너의 탐색 효율성을 높이는 데 사용된다.
optimization_objective 경로 최적화 기준 최적화 플래너 (RRT* 등) PathLengthOptimizationObjective 경로의 품질(길이, 안전성 등)을 결정한다.
termination_condition 추가적인 플래너 종료 조건 최적화 플래너 CostConvergence[...] 불필요한 계산을 줄여 플래닝 효율성을 높일 수 있다.

OMPL은 수십 가지의 다양한 플래닝 알고리즘을 제공하지만, 실제 MoveIt2 환경에서는 몇 가지 핵심적인 플래너들이 주로 사용된다. 이 장에서는 그중 가장 대표적인 RRT, PRM 계열 및 최신 최적화 플래너인 FMT*의 내부 작동 원리를 수학적, 알고리즘적 관점에서 깊이 있게 탐구한다. 각 플래너가 가진 고유의 철학과 특성을 이해하는 것은, 주어진 플래닝 문제에 가장 적합한 도구를 전략적으로 선택하기 위한 필수적인 과정이다.

RRT 계열 알고리즘들은 단일 질의(single-query) 문제, 즉 주어진 시작점과 목표점에 대한 하나의 경로를 찾는 데 특화되어 있다. 이들은 트리를 점진적으로 확장해 나가며 설정 공간을 탐색하는 공통된 구조를 가진다.

RRT-Connect와 RRT의 비교는 샘플링 기반 플래닝이 직면한 근본적인 딜레마, 즉 ‘탐색(exploration)’과 ‘최적화(optimization)’ 사이의 상충 관계를 명확히 보여준다. RRT-Connect는 ‘어떻게든 길을 찾는 것’에 집중하여 속도를 극대화하는 반면, RRT는 ‘가장 좋은 길을 찾는 것’에 집중하여 경로 품질을 보장하지만 속도를 희생한다. 이 둘 사이의 선택은 단순히 기술적 선호의 문제가 아니라, 애플리케이션의 핵심 요구사항(예: 실시간 반응성이 중요한 동적 장애물 회피 vs. 에너지 효율이 중요한 반복적인 제조 공정)에 따라 결정되어야 하는 근본적인 설계상의 결정이다.

PRM 계열 알고리즘들은 주로 다중 질의(multi-query) 문제, 즉 동일한 환경 내에서 여러 다른 시작점-목표점 쌍에 대한 경로를 반복적으로 찾아야 하는 상황에 적합하다.

아래 표는 본 장에서 분석한 주요 플래닝 알고리즘들의 핵심적인 특성을 비교 요약한 것이다.

플래너 기본 패러다임 질의 유형 최적성 보장 핵심 장점 핵심 단점 대표적인 ROS2 Humble 사용 사례
RRT 트리 기반 단일 질의 아니요 빠른 탐색 속도, 고차원 공간에 효율적 경로 품질 낮음, 좁은 통로에 취약 동적 장애물 회피를 위한 빠른 초기 경로 생성
RRT-Connect 트리 기반 (양방향) 단일 질의 아니요 매우 빠른 수렴 속도, MoveIt2 기본 플래너 경로 품질 낮음, 최적성 보장 안됨 대부분의 일반적인 단일 경로 계획 문제
RRT* 트리 기반 단일 질의 점근적 최적 경로 품질 우수, 애니타임(Anytime) 특성 계산 비용 높음, 수렴 속도 느림 에너지 효율이 중요한 반복 작업의 오프라인 경로 최적화
PRM 로드맵 기반 다중 질의 아니요 다중 질의에 매우 빠름, 환경 재사용 초기 구축 비용 높음, 좁은 통로에 취약 정적 환경(예: 공장)에서 다양한 작업을 위한 경로 라이브러리 구축
LazyPRM 로드맵 기반 다중 질의 아니요 충돌 검사 최소화로 매우 빠름(특히 빈 공간) 복잡한 환경에서는 비효율적일 수 있음 장애물이 적고 넓은 공간에서의 다중 질의
FMT* 하이브리드 단일 질의 점근적 최적 RRT*보다 빠른 최적 경로 수렴 속도 알고리즘 복잡도 높음 복잡하고 장애물이 많은 환경에서의 고품질 경로 계획

샘플링 기반 플래닝 알고리즘은 고차원 공간 문제에 대한 실용적인 해법을 제시했지만, 그 자체로 모든 문제를 해결하는 만병통치약은 아니다. 이 장에서는 샘플링 기반 플래너들이 공통적으로 직면하는 근본적인 난제들, 즉 ‘차원의 저주’와 ‘좁은 통로 문제’를 심도 있게 다룬다. 또한, OMPL 내에서 이러한 문제들을 완화하기 위한 접근법을 살펴보고, 주요 알고리즘들의 이론적 계산 복잡도를 분석하여 성능의 한계를 명확히 한다.

이러한 고급 주제들은 모든 샘플링 기반 플래너의 성능이 알고리즘 자체의 우수성뿐만 아니라, 해결하고자 하는 ‘문제의 기하학적 구조’에 얼마나 깊이 의존하는지를 명확히 보여준다. 따라서 “모든 상황에 최적인 만능 플래너”는 존재하지 않는다. 성공적인 플래닝은 문제의 특성(고차원, 좁은 통로 존재 여부 등)을 정확히 파악하고, 그에 맞는 샘플링 전략이나 다단계 플래닝과 같은 문제 분해 기법을 선택적으로 적용하는 능력에 달려있다. 이는 플래닝 문제를 단순히 ‘어떤 플래너를 쓸 것인가’의 문제를 넘어, ‘문제를 어떻게 구조화하여 플래너에게 힌트를 줄 것인가’의 문제로 전환시킨다.

알고리즘의 성능을 평가하는 또 다른 중요한 척도는 계산 복잡도이다. 샘플링 기반 플래너의 복잡도는 주로 샘플의 수 $n$에 대한 함수로 표현된다.

이러한 복잡도 분석은 알고리즘의 확장성(scalability)을 이해하는 데 도움을 주지만, 실제 성능은 구현 방식, 자료구조의 효율성, 그리고 무엇보다도 문제 자체의 복잡성에 의해 크게 좌우된다는 점을 유념해야 한다.

지금까지의 논의는 주로 장애물 회피라는 기본적인 제약만을 고려한 정적 환경에서의 플래닝에 초점을 맞추었다. 그러나 실제 로보틱스 애플리케이션은 훨씬 더 복잡한 요구사항을 가진다. 이 장에서는 기본 OMPL 플래너들의 가정을 넘어서는 두 가지 중요한 시나리오, 즉 운동학적 제약 조건이 있는 플래닝과 동적 장애물이 존재하는 환경에서의 플래닝에 대해 OMPL의 능력과 근본적인 한계를 논한다.

이러한 고급 주제들을 통해 OMPL의 역할과 위치가 더욱 명확해진다. OMPL은 주어진 정적인 문제 정의 하에서 매우 효율적으로 경로를 생성하는 강력한 ‘저수준 플래닝 엔진’이다. 그러나 문제 자체를 동적으로 수정하거나(예: 움직이는 장애물 반영), 복잡한 제약 조건을 해석하고 공식화하는 것은 OMPL의 책임 범위를 벗어난다. 이는 MoveIt2와 OMPL을 사용하는 개발자가 이들을 모든 것을 자동으로 해결해주는 ‘블랙박스’로 여겨서는 안 되며, 자신의 복잡한 문제에 맞게 상위 레벨에서 적절히 문제를 모델링하고 제어 로직을 구현해야 하는 ‘도구 상자’로 이해해야 함을 시사한다.

본 보고서는 ROS2 Humble 환경에서 MoveIt2 프레임워크를 통해 사용되는 OMPL에 대한 심층적인 기술적 고찰을 제공하였다. 분석을 통해 다음과 같은 핵심 사항들을 도출하였다.

첫째, OMPL은 MoveIt2의 유연한 플러그인 아키텍처 내에서 ompl_interface 패키지를 통해 긴밀하게 통합된다. 이 아키텍처는 높은 모듈성을 제공하지만, 동시에 OMPL 라이브러리의 최신 기능과 MoveIt2에서 실제 사용 가능한 기능 간에 시간적, 기능적 간극이 존재할 수 있음을 인지해야 한다.

둘째, OMPL의 강력함은 개별 알고리즘뿐만 아니라, ‘알고리즘’과 ‘문제 정의’를 철저히 분리하는 모듈식 설계 철학에서 비롯된다. 이는 OMPL을 다양한 로보틱스 문제에 적용할 수 있는 범용적인 플래닝 프레임워크로 만든다.

셋째, ompl_planning.yaml 파일은 OMPL의 성능을 사용자의 요구에 맞게 튜닝할 수 있는 강력한 인터페이스다. range, goal_bias와 같은 파라미터들은 속도, 경로 품질, 안전성 간의 복잡한 상충 관계를 가지며, 최적의 설정은 문제의 특성에 따라 달라지므로 경험적인 튜닝이 필수적이다.

넷째, RRT-Connect와 RRT*와 같은 주요 플래너들은 각각 ‘빠른 만족해 탐색’과 ‘점근적 최적해 탐색’이라는 뚜렷한 철학적 차이를 가지며, 애플리케이션의 근본적인 요구사항에 따라 전략적으로 선택되어야 한다.

다섯째, ‘차원의 저주’와 ‘좁은 통로 문제’는 모든 샘플링 기반 플래너가 직면하는 근본적인 난제이며, OMPL의 성능은 알고리즘 자체뿐만 아니라 문제의 기하학적 구조에 깊이 의존한다. 다단계 플래닝이나 편향 샘플링과 같은 기법은 이러한 문제를 완화하는 데 효과적이다.

마지막으로, OMPL은 본질적으로 정적 환경을 가정한 저수준 플래닝 엔진이다. 제약 조건부 플래닝이나 동적 환경 대응과 같은 고급 기능은 상위 레벨의 애플리케이션(예: MoveIt2, 사용자 노드)에서 문제를 적절히 모델링하고 제어 루프를 구현함으로써 달성된다.

OMPL과 샘플링 기반 모션 플래닝 분야는 앞으로도 계속해서 빠르게 발전할 것으로 예상되며, 다음과 같은 방향이 주요 흐름이 될 것으로 전망된다.

결론적으로, ROS2 Humble 환경에서의 OMPL은 이미 성숙하고 강력한 도구이지만, 여전히 해결해야 할 도전 과제와 무한한 발전 가능성을 동시에 가지고 있다. 머신러닝 및 안전성 공학과 같은 인접 분야와의 융합을 통해, OMPL은 미래의 자율 로봇이 더욱 복잡하고 동적인 환경에서 지능적으로 움직일 수 있게 하는 핵심 기술로서 그 역할을 계속해서 확장해 나갈 것이다.

  1. Motion Planning - MoveIt Documentation: Humble documentation, accessed August 6, 2025, https://moveit.picknik.ai/humble/doc/concepts/motion_planning.html
  2. The Open Motion Planning Library, accessed August 6, 2025, https://ompl.kavrakilab.org/
  3. Sampling-Based Motion Planning: A Comparative Review - Kavraki Lab, accessed August 6, 2025, https://www.kavrakilab.org/publications/orthey2024-review-sampling.pdf
  4. Chapter 10. Motion planning in higher dimensions, accessed August 6, 2025, https://motion.cs.illinois.edu/RoboticSystems/MotionPlanningHigherDimensions.html
  5. Search-based versus Sampling-based Robot Motion Planning: A Comparative Study - arXiv, accessed August 6, 2025, https://arxiv.org/html/2406.09623v2
  6. OMPL - Wikipedia, accessed August 6, 2025, https://en.wikipedia.org/wiki/OMPL
  7. Error while Demo launch - on ROS2 Humble and 22.04 Ubuntu / Issue #1814 / moveit/moveit2 - GitHub, accessed August 6, 2025, https://github.com/moveit/moveit2/issues/1814
  8. OMPL Planner - moveit_tutorials Kinetic documentation, accessed August 6, 2025, http://docs.ros.org/en/kinetic/api/moveit_tutorials/html/doc/ompl_interface/ompl_interface_tutorial.html
  9. ompl: ompl_interface::OMPLPlannerManager Class Reference, accessed August 6, 2025, http://docs.ros.org/en/noetic/api/moveit_planners_ompl/html/classompl__interface_1_1OMPLPlannerManager.html
  10. moveit_planners/ompl/ompl_interface/src/planning_context_manager.cpp File Reference - moveit2, accessed August 6, 2025, https://moveit.picknik.ai/humble/api/html/planning__context__manager_8cpp.html
  11. Concepts MoveIt, accessed August 6, 2025, https://moveit.ai/documentation/concepts/
  12. Release Notes - The Open Motion Planning Library, accessed August 6, 2025, https://ompl.kavrakilab.org/releaseNotes.html
  13. OMPL Planner - MoveIt Documentation - PickNik Robotics, accessed August 6, 2025, https://moveit.picknik.ai/main/doc/examples/ompl_interface/ompl_interface_tutorial.html
  14. API Overview - The Open Motion Planning Library - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/api_overview.html
  15. Member List - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1base_1_1Planner-members.html
  16. Optimal Planning - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/optimalPlanning.html
  17. Python Bindings - The Open Motion Planning Library, accessed August 6, 2025, https://ompl.kavrakilab.org/python.html
  18. Build a MoveIt! Package - ROS Industrial Training - Read the Docs, accessed August 6, 2025, https://industrial-training-master.readthedocs.io/en/humble/_source/session3/3-Build-a-MoveIt-Package.html
  19. OMPL Planner - MoveIt Documentation: Humble documentation, accessed August 6, 2025, https://moveit.picknik.ai/humble/doc/examples/ompl_interface/ompl_interface_tutorial.html
  20. Tuning Parameters OMPL (ompl_planning.yaml) - Google Groups, accessed August 6, 2025, https://groups.google.com/g/moveit-users/c/u5FroQ0UnsQ
  21. Benchmarking planners - The Kautham Project Tutorials, accessed August 6, 2025, https://sir.upc.edu/projects/kautham_tutorials/intermediate/benchmarking/benchmarking.html
  22. ompl::geometric::RRT Class Reference - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1geometric_1_1RRT.html
  23. ompl::control::RRT Class Reference - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1control_1_1RRT.html
  24. RRT–Path: a guided Rapidly exploring Random Tree - Computation Robotics Laboratory, accessed August 6, 2025, https://comrob.fel.cvut.cz/papers/romoco09rrt.pdf
  25. Available Planners - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/planners.html
  26. Rapidly-Exploring Random Trees: A New Tool for Path Planning - Steven M. LaValle, accessed August 6, 2025, https://msl.cs.illinois.edu/~lavalle/papers/Lav98c.pdf
  27. Robotic Path Planning using Rapidly exploring Random Trees, accessed August 6, 2025, https://www.araa.asn.au/acra/acra2003/papers/36.pdf
  28. Fast-RRT: A RRT-Based Optimal Path Finding Method - MDPI, accessed August 6, 2025, https://www.mdpi.com/2076-3417/11/24/11777
  29. ompl::geometric::RRTConnect Class Reference - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1geometric_1_1RRTConnect.html
  30. RRT-Connect: An Efficient Approach to Single … - Steven M. LaValle, accessed August 6, 2025, https://lavalle.pl/papers/KufLav00.pdf
  31. HyRRT-Connect: An Efficient Bidirectional Rapidly-Exploring Random Trees Motion Planning Algorithm for Hybrid Dynamic, accessed August 6, 2025, https://hybrid.soe.ucsc.edu/sites/default/files/preprints/315.pdf
  32. : Almost-Surely Asymptotically Optimal Planning with RRT-Connect - arXiv, accessed August 6, 2025, https://arxiv.org/html/2505.10542v2
  33. ompl::geometric::RRTstar Class Reference - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1geometric_1_1RRTstar.html
  34. Robotic Path Planning: RRT and RRT* by Tim Chinenov Medium, accessed August 6, 2025, https://theclassytim.medium.com/robotic-path-planning-rrt-and-rrt-212319121378
  35. Near vertices and rewiring operations in RRT*; a finding near vertices - ResearchGate, accessed August 6, 2025, https://www.researchgate.net/figure/Near-vertices-and-rewiring-operations-in-RRT-a-finding-near-vertices-b-selection-of_fig3_318896231
  36. [1105.1186] Sampling-based Algorithms for Optimal Motion Planning - arXiv, accessed August 6, 2025, https://arxiv.org/abs/1105.1186
  37. Sampling-based Algorithms for Optimal Motion Planning - People @EECS, accessed August 6, 2025, https://people.eecs.berkeley.edu/~pabbeel/cs287-fa19/optreadings/rrtstar.pdf
  38. RRT* for Robotics: A Linear Algebra Perspective - Number Analytics, accessed August 6, 2025, https://www.numberanalytics.com/blog/rrt-star-linear-algebra-robotics-path-planning
  39. ompl::geometric::PRM Class Reference - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1geometric_1_1PRM.html
  40. Probabilistic Roadm IEEE Trans. on Robotics and Automation, 12(4 …, accessed August 6, 2025, https://www.kavrakilab.org/publications/kavraki-svestka1996probabilistic-roadmaps-for.pdf
  41. Probabilistic roadmaps for path planning in high-dimensional configuration spaces - SciSpace, accessed August 6, 2025, https://scispace.com/pdf/probabilistic-roadmaps-for-path-planning-in-high-dimensional-45s4l7x8cl.pdf
  42. Difference between Single-Query and Multiple Query Algorithms?, accessed August 6, 2025, https://robotics.stackexchange.com/questions/18433/difference-between-single-query-and-multiple-query-algorithms
  43. Probabilistic Roadmaps - KAIST, accessed August 6, 2025, https://sgvr.kaist.ac.kr/~sungeui/MPA_F15/Slides/Lecture5.pdf
  44. Sensory Steering for Sampling-Based Motion Planning - University of Pennsylvania, accessed August 6, 2025, https://repository.upenn.edu/server/api/core/bitstreams/9a910ad6-4136-4ca4-bdba-62e7481667e2/content
  45. ompl::geometric Namespace Reference - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/namespaceompl_1_1geometric.html
  46. ompl::geometric::LazyPRM Class Reference - Kavraki Lab, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1geometric_1_1LazyPRM.html
  47. ompl::geometric::FMT Class Reference - The Open Motion Planning Library, accessed August 6, 2025, https://ompl.kavrakilab.org/classompl_1_1geometric_1_1FMT.html
  48. Fast Marching Trees: A Fast Marching Sampling-Based Method for …, accessed August 6, 2025, https://stanfordasl.github.io/wp-content/papercite-data/pdf/Janson.Pavone.ISRR13.pdf
  49. Motion Planning for Reconfigurable Mobile Robots Using Hierarchical Fast Marching Trees - Parasol Lab, accessed August 6, 2025, https://parasollab.web.illinois.edu/events/wafr/wafr2016/papers/WAFR_2016_paper_130.pdf
  50. a Fast Marching Sampling-Based Method for Optimal Motion Planning in Many Dimensions - Lucas Janson, accessed August 6, 2025, https://lucasjanson.fas.harvard.edu/papers/Fast_Marching_Tree_A_Fast_Marching_Sampling_Based_Method-Janson_ea-2015.pdf
  51. Multilevel Planning Framework - The Open Motion Planning Library, accessed August 6, 2025, https://ompl.kavrakilab.org/multiLevelPlanning.html
  52. Minimising Computational Complexity of the RRT Algorithm A Practical Approach - Aalborg Universitets forskningsportal, accessed August 6, 2025, https://vbn.aau.dk/files/52820007/minimise_complexity_of_rrt.pdf
  53. An Empirical Study of Optimal Motion Planning, accessed August 6, 2025, https://motion.cs.illinois.edu/papers/IROS2014-OptimalBenchmarking.pdf
  54. Redalyc.Sampling-Based Motion Planning: A Survey, accessed August 6, 2025, https://www.redalyc.org/pdf/615/61513253002.pdf
  55. Narrow Passage Sampling for Probabilistic Roadmap Planning - Duke Computer Science, accessed August 6, 2025, https://users.cs.duke.edu/~reif/paper/sunz/bridge/bridge.pub.pdf
  56. Learning Sampling Distributions for Robot Motion Planning - Autonomous Systems Laboratory, accessed August 6, 2025, https://stanfordasl.github.io/wp-content/papercite-data/pdf/Ichter.Harrison.Pavone.ICRA18.pdf
  57. Improving Path Planning Methods Using Machine Learning - ČVUT DSpace, accessed August 6, 2025, https://dspace.cvut.cz/bitstream/handle/10467/115117/F3-BP-2024-Tsoy-Artyom-main.pdf
  58. Machine learning for fast motion planning - ČVUT DSpace, accessed August 6, 2025, https://dspace.cvut.cz/bitstream/handle/10467/108552/F3-BP-2023-Kriz-Jonas-Thesis.pdf
  59. 7.3 Path planning algorithms: A*, RRT, and PRM - Robotics - Fiveable, accessed August 6, 2025, https://library.fiveable.me/robotics/unit-7/path-planning-algorithms-a-rrt-prm/study-guide/2Y6L25zBjDRe24Df
  60. Time and space complexities of RRT and RRT* - Stack Overflow, accessed August 6, 2025, https://stackoverflow.com/questions/49482108/time-and-space-complexities-of-rrt-and-rrt
  61. Using OMPL Constrained Planning - MoveIt Documentation: Humble documentation, accessed August 6, 2025, https://moveit.picknik.ai/humble/doc/how_to_guides/using_ompl_constrained_planning/ompl_constrained_planning.html
  62. Constrained Planning - The Open Motion Planning Library, accessed August 6, 2025, https://ompl.kavrakilab.org/constrainedPlanning.html
  63. A Dynamic Multiple-Query RRT Planning Algorithm for Manipulator Obstacle Avoidance, accessed August 6, 2025, https://www.mdpi.com/2076-3417/13/6/3394
  64. OMPL Blog - The Open Motion Planning Library, accessed August 6, 2025, https://ompl.kavrakilab.org/blog.html
  65. Reinforcement learning-based dynamic obstacle avoidance and integration of path planning, accessed August 6, 2025, https://pmc.ncbi.nlm.nih.gov/articles/PMC8493784/
  66. Roadmap Learning for Probabilistic Occupancy Maps with Topology-Informed Growing Neural Gas - Oregon State University, accessed August 6, 2025, https://research.engr.oregonstate.edu/rdml/sites/research.engr.oregonstate.edu.rdml/files/20-2050_03_ms.pdf
  67. moveit/moveit2: :robot: MoveIt for ROS 2 - GitHub, accessed August 6, 2025, https://github.com/moveit/moveit2
  68. The Open Motion Planning Library (OMPL) - GitHub, accessed August 6, 2025, https://github.com/ompl/ompl
  69. MoveIt 2 Documentation - MoveIt Documentation: Rolling documentation, accessed August 6, 2025, https://moveit.picknik.ai/