Ekumen-OS/beluga

A general implementation of Monte Carlo Localization (MCL) algorithms written in C++17, and a ROS package that can be used in ROS 1 and ROS 2.

Beluga – C++17 Monte Carlo Localization 라이브러리

개요 – Beluga는 **&extensible C++17 library&**로, Monte Carlo Localization (MCL) 계열의 파티클 필터 알고리즘을 구현합니다. **&ROS-agnostic&**하게 설계되어 선택적인 ROS 바인딩을 제공하며, 신뢰할 수 있는 포즈 추정(예: TurtleBot 2, Andino)이 필요한 로봇을 대상으로 합니다. 코드베이스는 철저히 테스트되었으며 벤치마킹 도구를 포함하고 있습니다.

주요 구성 요소

Package Role
beluga 코어, ROS와 무관한 라이브러리 – 범용 파티클 필터 프레임워크와 유틸리티를 제공합니다.
beluga_ros 얇은 ROS 래퍼 – ROS 노드가 코어 라이브러리를 사용할 수 있게 합니다(메시지 변환, 파라미터 처리).
beluga_amcl 인기 있는 nav2_amcl/amcl 패키지의 인터페이스를 미러링하여 마이그레이션을 쉽게 만드는, 즉시 실행 가능한 ROS 노드/컴포넌트입니다.
beluga_example 로봇에서 Beluga 기반 AMCL 노드를 시작하는 방법을 보여주는 샘플 런치 파일입니다.
beluga_benchmark 성능 프로파일링 및 Beluga를 다른 MCL 구현체와 비교하기 위한 스크립트입니다.
beluga_system_tests 시뮬레이션 또는 실제 하드웨어에서 전체 스택을 실행하는 통합 테스트입니다.
beluga_vdb OpenVDB를 라이브러리에 연결하여 3D 복셀 기반 위치 추정을 가능하게 하는 선택적 확장 기능입니다.

왜 중요한가

  • 모듈식 설계 – 알고리즘은 직교하는 구성 요소(모션 모델, 센서 모델, 리샘플링 등)로 구축되어, 필터를 전체적으로 다시 작성하지 않고도 부분을 교체할 수 있습니다.
  • 테스트 주도 개발 – CI 파이프라인(Colcon, Bazel)과 코드 커버리지 배지를 통해 회귀 안전성에 대한 강력한 집중을 보여줍니다.
  • 즉시 사용 가능한 벤치마킹beluga_benchmark 패키지를 통해 개발자는 다양한 구성에 대해 지연 시간, 메모리 사용량 및 정확도를 정량화할 수 있습니다.
  • ROS 호환성 – 코어는 ROS와 독립적이지만, beluga_rosbeluga_amcl 패키지는 기존 ROS 내비게이션 스택을 위한 드롭인 교체품을 드립니다.
  • OpenVDB를 통한 3D 지원beluga_vdb 확장은 볼륨 맵에서 파티클 필터를 실행하는 것을 가능하게 하여 드론이나 다족 로봇에 유주용합니다.

일반적인 워크플로우

  1. 라이브러리를 CMake 워크스페이스에 추가 (Colcon 및 Bazel 빌드를 모두 지원합니다).
  2. 파티클 필터를 구성하기 위해 코어 패키지에서 모션 및 센서 모델을 선택합니다.
  3. ROS로 래핑하기 위해 메시지/서비스가 필요한 경우 beluga_ros를 사용하거나, 커스텀 C++ 프로그램에서 독립형 필터를 실행합니다.
  4. beluga_amcl 노드를 실행 (nav2_amcl 파라미터 형식을 미러링하는 YAML 파일과 함께)하여 실행합니다.
  5. 검증 제공된 시스템 테스트 또는 벤치마크 스위트를 사용하여 검증합니다.

시작하기 – README는 상세한 빌드 지침, API 참조 및 예제 런치 파일에 대해 온라인 문서 사이트 (https://ekumen-os.github.io/beluga)를 참조하도록 안내합니다. CONTRIBUTING.md 가이드를 통해 기여가 환영됩니다.


Beluga는 일반적인 AI/LLM 프로젝트가 아니라, Monte Carlo Localization에 집중하는 진정한, 프로덕션급 로보틱스 라이브러리입니다.",

관련

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