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_ros와beluga_amcl패키지는 기존 ROS 내비게이션 스택을 위한 드롭인 교체품을 드립니다. - OpenVDB를 통한 3D 지원 –
beluga_vdb확장은 볼륨 맵에서 파티클 필터를 실행하는 것을 가능하게 하여 드론이나 다족 로봇에 유주용합니다.
일반적인 워크플로우
- 라이브러리를 CMake 워크스페이스에 추가 (Colcon 및 Bazel 빌드를 모두 지원합니다).
- 파티클 필터를 구성하기 위해 코어 패키지에서 모션 및 센서 모델을 선택합니다.
- ROS로 래핑하기 위해 메시지/서비스가 필요한 경우
beluga_ros를 사용하거나, 커스텀 C++ 프로그램에서 독립형 필터를 실행합니다. beluga_amcl노드를 실행 (nav2_amcl파라미터 형식을 미러링하는 YAML 파일과 함께)하여 실행합니다.- 검증 제공된 시스템 테스트 또는 벤치마크 스위트를 사용하여 검증합니다.
시작하기 – README는 상세한 빌드 지침, API 참조 및 예제 런치 파일에 대해 온라인 문서 사이트 (https://ekumen-os.github.io/beluga)를 참조하도록 안내합니다. CONTRIBUTING.md 가이드를 통해 기여가 환영됩니다.
Beluga는 일반적인 AI/LLM 프로젝트가 아니라, Monte Carlo Localization에 집중하는 진정한, 프로덕션급 로보틱스 라이브러리입니다.",
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트