ROS Motion Planning
40개 이상의 고전 및 학습 기반 경로 플래너를 ROS 플러그인으로 구현한 단일 저장소
라이선스
GPL-3.0
개요
ros_motion_planning은 ROS 내비게이션 스택의 플러그인으로 구현된 로봇 모션 플래닝 알고리즘의 종합 컬렉션입니다: A, Theta, D, JPS부터 RRT, Informed RRT*, Voronoi 플래너까지의 전역 플래너; DWA, TEB 스타일, PID, LQR, MPC를 포함한 로컬 플래너; 곡선 생성(Bezier, Dubins, Reeds-Shepp, B-spline); 그리고 DDPG 같은 학습 기반 플래너까지. 모든 알고리즘이 동일한 Gazebo/RViz 환경에서 실행되어, 플래너들을 동등한 조건에서 비교할 수 있는 보기 드물게 실용적인 레퍼런스입니다.
이 저장소는 표준 ROS nav_core 플러그인 인터페이스 뒤에 수십 개의 플래너를 패키징하여, 어떤 알고리즘이든 move_base(ROS 1)에 바로 끼워 넣고 — 대응하는 ROS 2 구현도 함께 — 동일한 코스트맵, 로봇, Gazebo 월드에서 테스트할 수 있습니다. 전역 계획은 그래프 탐색(Dijkstra, A, D, LPA, D Lite, Theta, Lazy Theta, JPS, GBFS), 샘플링 기반 방법(RRT, RRT, Informed RRT, RRT-Connect), 지능형/진화 접근(ACO, GA, PSO), Voronoi 다이어그램 계획을 포괄합니다. 로컬 계획은 PID, DWA, APF, LQR, MPC 컨트롤러에 걸치고, 곡선 생성 모듈은 Dubins, Reeds-Shepp, Bezier, 스플라인 경로를 구현합니다. 학습 기반 플래너(예: DDPG 기반 RL 내비게이션)가 세트를 완성합니다. Docker 이미지, 알고리즘별 방대한 애니메이션, 짝을 이루는 Python 시각화 저장소 덕분에 강의 자료로도, 프로덕션 플래너 개발의 출발점으로도 똑같이 유용합니다.
중요한 이유
이 프로젝트는 고전 모션 플래닝 정전(canon)을 실제 동작하는 ROS 코드로 구현한 것 중 가장 완전한 단일 구현입니다: 논문에서는 보통 의사코드로만 존재하는 교과서 알고리즘들이 여기서는 하나의 일관된 스택에서 모두 실행되며, 그래서 내비게이션 엔지니어와 로보틱스 학생 모두에게 대표 레퍼런스가 되었습니다.
해결하는 문제
경로 플래너를 공정하게 비교하려면 각각을 동일한 내비게이션 스택 안에 구현해야 합니다 — 수개월이 걸리는 플러그인 엔지니어링입니다. ros_motion_planning은 40개 이상의 알고리즘에 대해 이미 그 작업을 끝내 놓아, 플래너 선택과 교육을 설정 변경 수준으로 바꿔 놓았습니다.
핵심 요점
- 40개 이상의 플래너: 그래프 탐색, 샘플링 기반, 진화, 곡선 생성, 학습 기반
- 모두 표준 ROS 내비게이션 플러그인으로 구현되어 동일한 Gazebo/RViz 환경에서 실행 가능
- 빠른 시작을 위한 Docker 이미지와 함께 ROS 1 및 ROS 2 지원
- 로컬 플래너로 DWA, APF, PID, LQR, MPC 컨트롤러 포함
- 짝을 이루는 Python 저장소가 학습용 알고리즘 시각화를 제공
대상
- AMR/AGV용 플래너를 선정하는 내비게이션 엔지니어
- 경로 계획 알고리즘을 배우는 로보틱스 학생
- 새 플래너를 고전 알고리즘들과 벤치마크하는 연구자
- 모션 플래닝 강의 자료를 만드는 교육자
한계
- 깊이보다 폭 — 개별 플래너는 튜닝된 프로덕션 컨트롤러가 아닌 레퍼런스 구현
- GPL-3.0 라이선스가 클로즈드소스 재사용을 제한
- 주로 2D 바퀴형 로봇 내비게이션 대상(매니퓰레이션 계획 없음)