locusrobotics/fuse
The fuse stack provides a general architecture for performing sensor fusion live on a robot. Some possible applications include state estimation, localization, mapping, and calibration.
해결하는 문제
로봇에서 실시간 센서 융합을 수행하기 위한 일반적인 아키텍처를 제공하여 상태 추정, 로컬라이제이션, 매핑, 캘리브레이션과 같은 작업을 간소화합니다. 개발자는 다양한 센서 모델을 연결하는 복잡한 코드 구현에 시간을 쓰지 않고, 로봇과 센서의 모델링에 집중할 수 있습니다.
작동 방식
fuse는 Google의 Ceres Solver를 사용한 비선형 최소 제곱 최적화를 통해 로봇의 가장 가능성이 높은 상태를 결정하는 ROS 프레임워크입니다. 플러그인 기반 시스템으로 작동합니다:
- 센서 모델: 원시 데이터를 수신하고 최적화기용 제약 조건(수학적 오차 항)을 생성합니다.
- 운동 모델: 서로 다른 타임스탬프 간의 제약 조건을 생성하여 상태를 연결하며, 특히 센서가 비동기적으로 작동할 때 유용합니다.
- 최적화기: 제약 조건과 변수를 그래프로 수집하고 각 상태 변수의 최적 값을 계산합니다.
- 퍼블리셔: 최적화된 상태 값을 받아 ROS 토픽으로 파생된 값을 다시 게시합니다.
대상 사용자
다수의 센서(예: 휠 엔코더, 레이저)의 데이터를 실시간으로 융합하여 로봇의 자세를 추정하거나 시스템 파라미터를 캘리브레이션해야 하는 로봇 개발자.
주요 특징
- 플러그인 기반 아키텍처: 센서 모델, 운동 모델, 퍼블리셔 모두 플러그인으로 구성되어 쉽게 교체하거나 공유할 수 있습니다.
- 비동기 지원: 운동 모델을 사용해 서로 다른 주파수와 시계를 가진 센서의 간격을 제약 그래프에서 보완합니다.
- 확장 가능한 상태 변수: 표준 2D/3D 위치, 자세, 속도 외에도 사용자 정의 변수 정의를 지원합니다.
- 온라인 캘리브레이션: 로봇의 자세와 함께 변화하는 시스템 파라미터(예: 휠 직경 마모)를 추정할 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트