ros-navigation/navigation2

ROS 2 Navigation Framework and System

Nav2 – ROS 2 내비게이션 스택

무엇인가요

  • Nav2(Navigation 2의 약자)는 로봇 운영 체제 2(Robot Operating System 2, ROS 2)의 공식 및 프로덕션 준비 완료된 내비게이션 시스템입니다. 이는 이동형 로봇이 장애물을 피하면서 점A에서 점B로 안전하게 이동할 수 있도록 하는 소프트웨어 빌딩 블록을 제공합니다. 로컬라이제이션과 경로 계획도 포함됩니다.

핵심 기능

구성 요소 기능
nav2_amcl Adaptive Monte‑Carlo 로컬라이제이션 – 레이저 또는 깊이 데이터를 사용하여 알려진 맵 위에서 로봇의 자세를 추정합니다.
nav2_controller 계획된 궤적을 실행하고 로봇의 운동학적 제약을 고려한 속도 명령을 생성합니다.
nav2_planner (nav2_behavior_tree를 통해) A* 또는 Dijkstra와 같은 알고리즘을 사용하여 2D 비용 맵에서 글로벌 경로 계획을 수행합니다.
nav2_costmap_2d 센서 데이터, 정적 맵, 동적 장애물을 융합한 2D 점유 그리드를 유지 관리합니다.
nav2_bt_navigator 행동 트리(Behavior Tree)를 통해 내비게이션 작업을 조율하여 계획 → 수행 → 복구의 전체 흐름을 쉽게 확장할 수 있습니다.
nav2_collision_monitor 로봇 주변을 실시간으로 모니터링하고 비상 정지 또는 회복 동작을 트리거할 수 있습니다.
nav2_docking / nav2_docking_bt 충전 스테이션 또는 기타 타겟에 자율적으로 도킹하는 전용 동작입니다.
nav2_constrained_smoother 운동 제약(예: 곡률 제한)을 고려하여 경로를 개선합니다.
nav2_bringup 단일 명령으로 전체 스택을 시작할 수 있는 런치 파일과 구성 유틸리티입니다.

왜 중요한가요

  • 모듈식 및 확장 가능 – 각 구성 요소는 독립적인 ROS 2 패키지이며 명확한 API를 제공하므로 개발자는 커스텀 플래너, 컨트롤러 또는 센서를 쉽게 교체할 수 있습니다.
  • 다중 배포판 지원 – Humble, Jazzy, Lyrical 등 여러 ROS 2 릴리스에 대한 사전 빌드된 바이너리가 제공되며, CI 배지로 각 릴리스의 빌드 상태를 확인할 수 있습니다.
  • 커뮤니티 및 산업계 지원 – Open Navigation 프로젝트에서 유지 보수되며 Nvidia, AMD, Polymath Robotics 등의 기업에서 후원하고 있습니다.
  • 풍부한 문서 – README에서 링크된 튜토리얼, 구성 가이드, API 문서, ROSCon 발표 자료 등이 모두 제공됩니다.

일반적인 사용 사례

  • 통로를 주행하고 사람을 피하며 충전을 위해 도킹해야 하는 자율 창고 로봇.
  • 병원이나 사무실에서 방 간을 이동하면서 동적 장애물에 반응해야 하는 서비스 로봇.
  • 새로운 로컬라이제이션, 계획, 회복 전략을 탐구하는 연구 플랫폼.

시작하기

  1. 문서 읽기 – 중심 사이트 https://docs.nav2.org/에는 Concepts 개요와 Getting Started 가이드가 있습니다.
  2. 설치 – 사용 중인 ROS 2 배포판용 Build & Install 지침을 따르거나, navigation2 컨테이너 레지스트리에서 사전 빌드된 Docker 이미지를 가져옵니다.
  3. 데모 실행 – nav2_bringup 패키지는 Gazebo와 같은 시뮬레이터에서 작동하는 시뮬레이션 로봇을 시작하는 런치 파일을 제공하며, 즉시 사용 가능한 내비게이션 스택이 포함되어 있습니다.
  4. 사용자 정의 – Configuration Guide를 사용해 파라미터를 조정하거나, Plugin Tutorials를 따라 자체 플래너나 컨트롤러를 추가합니다.

커뮤니티 및 지원

  • README에 링크된 Nav2 Slack에 참여하여 실시간 도움을 받으세요.
  • Open Navigation(info@opennav.org)에서 전문 서비스를 제공합니다.
  • 프로젝트는 Apache‑2.0 라이선스(ROS 패키지의 표준) 하에 오픈소스로 공개되어 있습니다.

위 정보는 모두 리포지토리의 README 및 링크된 문서에서 직접 가져왔습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트