manankharwar/fusioncore
ROS 2 localization for outdoor robots: IMU, wheel encoders and GPS fused in a 23-state UKF at 100 Hz. When the estimate goes wrong it reports which sensor and why, instead of drifting silently. Apache 2.0.
해결하는 문제
FusionCore는 실외 로봇을 위한 안정적이고 고주파(100 Hz) 위치 추정을 제공하기 위해 설계된 센서 융합 라이브러리입니다. 단순히 설명 없이 드리프트가 발생하는 것이 아니라, 정확히 어떤 센서가 추정 오류를 일으키고 있는지, 왜 그런지에 대한 상세한 진단 정보를 제공함으로써 '침묵적 드리프트' 문제를 해결합니다.
작동 방식
IMU, 휠 엔코더, GPS(GNSS), 시각 SLAM의 데이터를 융합하기 위해 23상태 확장 칼만 필터(UKF)를 사용합니다. 주요 기술적 특징은 다음과 같습니다:
- 역추정(Retrodiction): 지연된 GPS 정정이 도착했을 때, IMU 레인지 버퍼가 업데이트를 재실행하여 정확한 타임스탬프에서 상태를 재구성합니다.
- **적응적 노이즈: **(Adaptive Noise) 지속적으로 자이로 및 가속도 센서의 편향을 추정하고, 노이즈가 많거나 미끄러지는 휠에 대응하기 위해 적응적 노이즈 공분산 업데이트를 사용합니다.
- **ECEF 융합: **(ECEF Fusion) UTM 존 경계 문제를 피하기 위해 GPS를 지구 중심 지구 고정(ECEF) 좌표계에서 직접 융합합니다.
- **진단 기능: **(Diagnostics) 버려진 측정치에 대한 실시간 건강 상태와 거부 사유(예:
CHI2_FAILED,IMPLAUSIBLE_JUMP)를 게시합니다.
대상 사용자
농업 로봇이나 자율 밴과 같은 실외 자율 차량을 개발하는 로봇 공학자 및 개발자로, ROS 2(Jazzy 및 Humble) 또는 순수 C++ 환경에서 쉽게 설정할 수 있고 신뢰할 수 있는 위치 추정 스택이 필요한 분들입니다.
주요 특징
- **고성능: **(High Performance) Raspberry Pi 4에서 사이클당 1ms 미만으로 실행 가능합니다.
- **ROS 2 독립: **(ROS 2 Independent) 핵심 필터는 ROS 종속성이 없는 순수 C++17 라이브러리입니다.
- **강건성: **(Robustness) 정지 시 드리프트를 방지하는 제로 속도 업데이트(ZUPT)와 이상치를 거부하는 카이제곱 게이트를 포함합니다.
- **배포 중심 설계: **(Deployment-Oriented) 적응 추정기 사용으로 수동 파라미터 조정을 최소화하도록 설계되었습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트