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 2.
Beluga – 로봇을 위한 몬테카를로 국소화
무엇인가요 – Beluga는 C++17 라이브러리로, 몬테카를로 국소화(MCL) 알고리즘 계열을 구현합니다. 이는 많은 이동형 로봇 내비게이션 스택이 지도상에서 로봇의 자세를 추정하는 데 사용하는 핵심 기술입니다. 코드는 ROS에 종속되지 않도록 설계되었지만, 이 리포지토리에는 ROS 전용 래퍼도 함께 제공되어, Beluga 노드를 ROS 기반 로봇 스택에 바로 삽입할 수 있습니다.
주요 구성 요소
| 패키지 | 역할 |
|---|---|
beluga |
핵심이며, ROS에 의존하지 않는 파티클 필터 라이브러리. |
beluga_ros |
ROS 메시지/서비스를 핵심 라이브러리로 변환하는 얇은 연결 레이어. |
beluga_amcl |
기존의 nav2_amcl/amcl 노드와 유사한 동작을 하는 즉시 실행 가능한 ROS 노드로, 내부적으로 Beluga를 사용합니다. |
beluga_example |
TurtleBot 2 또는 Andino 로봇에서 AMCL 노드를 시작하는 방법을 보여주는 시작 파일과 소규모 데모 프로그램. |
beluga_system_tests |
전체 ROS 시스템을 구동하여 정확성을 검증하는 통합 테스트 스위트. |
beluye_vdb |
선택적 확장 기능으로, OpenVDB를 Beluga에 통합하여 3D 복셀 기반 국소화를 가능하게 합니다. |
왜 중요한가요 – 전통적인 AMCL 구현은 ROS에 강하게 결합되어 있으며 확장하기 어려울 수 있습니다. Beluga의 설계는 알고리즘의 핵심과 미들웨어를 분리하여 다음과 같은 작업을 쉽게 만듭니다:
- 사용자 정의 운동 모델이나 센서 모델을 교체 가능하게.
- 비-ROS 프로젝트(예: 시뮬레이션, 임베디드 시스템)에서도 라이브러리를 재사용 가능하게.
- 전체 ROS 스택을 포함하지 않고도 자동화된 벤치마크를 실행 가능하게.
사용 방법
- 라이브러리 추가 –
beluga패키지를 CMake/colcon 또는 Bazel 워크스페이스에 포함합니다. - 래퍼 선택 – 이미 ROS 1/2를 사용 중이라면,
beluga_ros또는beluga_amcl을 종속성으로 추가하여/tf를 발행하고 레이저 스캔, 오도메트리 등을 구독하는 노드를 얻습니다. - 구성 – 노드는 표준
amcl과 동일한 매개변수(지도, 파티클 수, 재샘플링 임계값 등)를 읽기 때문에, 기존 Nav2 시작 파일에 최소한의 변경만으로 삽입할 수 있습니다. - 확장 –
beluga의 추상 인터페이스를 상속하여 사용자 정의 운동 모델이나 센서 모델을 구현. 파티클 필터의 나머지 부분은 그대로 유지됩니다. - 벤치마크 – 내장된 벤치마크 스크립트를 사용하여 다양한 구성(파티클 수, 재샘플링 전략 등)을 비교하고 회귀를 방지합니다.
대상 사용자 – 신뢰성 있고 잘 테스트된 파티클 필터 국소화 엔진이 필요한 로봇 개발자. 특히 알고리즘 코드와 ROS 미들웨어 간의 명확한 분리를 원하거나, 커스텀 하드웨어(예: Raspberry Pi 기반 로봇)용 국소화를 구축하는 사람.
문서 및 커뮤니티 – 완전한 API 문서는 https://ekumen-os.github.io/beluga 에 호스팅되며, CI 배지로 Colcon 및 Bazel에서 지속적인 테스트 상태를 확인할 수 있습니다. 프로젝트는 Apache-2.0 라이선스를 따르며, 상업적 및 학술적 사용을 장려합니다.
Beluga는 머신러닝 모델이 아닙니다. 전통적인 확률적 로보틱스 알고리즘이지만, 로보틱스/신체화된 지능 분야에 명확히 위치하고 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트