MichaelGrupp/evo
Python package for the evaluation of odometry and SLAM
evo – 오도메트리 및 SLAM 평가 도구 (Python)
개요
- 오도메트리 또는 SLAM 시스템에서 생성된 궤적을 로드, 비교 및 시각화하기 위한 명령줄 도구와 소규모 라이브러리를 제공하는 Python 패키지입니다.
- Linux, macOS, Windows에서 작동하며 ROS 1/ROS 2 bag 파일에서 데이터를 직접 읽을 수 있습니다.
사용 이유
- 다양한 SLAM/오도메트리 파이프라인이 여러 형식(TUM, KITTI, EuRoC, ROS topics, bag files)으로 궤적을 출력합니다.
evo는 이러한 형식을 정규화하여 나란히 비교 평가할 수 있게 해줍니다. - 절대 포즈 오차(APE) 및 상대 포즈 오차(RPE)와 같은 일반적인 오차 지표를 구현하며, 정렬, 스케일 보정(단안 SLAM에 유용) 및 궤적 연관성 옵션을 제공합니다.
- 출판 가능한 수준의 플롯(2D, 3D, 지도 타일 포함, LaTeX 호환)을 생성하고 결과를 CSV/Excel 표로 내보낼 수 있습니다.
- 선택적 통합:
- 풍부한 GUI 백엔드를 위한 PyQt6.
- 지리적 지도 타일을 추가하기 위한 contextily.
- Rerun 시각화 도구로 결과를 스트리밍하기 위한 rerun-sdk.
주요 구성 요소
| 도구 | 목적 |
|---|---|
evo_ape |
참조 궤적과 하나 이상의 추정치 사이의 절대 포즈 오차를 계산합니다. |
evo_rpe |
상대 포즈 오차(고정된 거리/각도에서의 드리프트)를 계산합니다. |
evo_traj |
궤적을 플롯, 분석 또는 내보냅니다. 다양한 출력 형식과 지도 오버레이를 지원합니다. |
evo_res |
여러 지표 결과 파일을 집계하여 요약 통계 및 비교 플롯을 생성합니다. |
evo_config |
전역 설정 (예: 플롯 백엔드). |
evo_ipython |
대화형 탐색을 위해 라이브러리가 사전 로드된 IPython 셸을 실행합니다. |
설치
# 권장: 격리된 환경(venv, uv, pipx 등)에 설치하세요
pip install evo # PyPI에서 – 최신 안정 버전을 가져옵니다
# 또는, 개발용:
git clone https://github.com/MichaelGrupp/evo.git
cd evo
pip install --editable.
- Python 3.10+가 필요합니다.
- 선택적 종속성(PyQt6, contextily, rerun-sdk, ROS)은 요청 시 자동으로 설치되지만, 핵심 기능은 이러한 도구 없이도 작동합니다.
전형적인 워크플로우 (예시)
- 궤적 플롯
Ground truth에 대한 두 SLAM 실행의 나란한 플롯을 생성합니다.cd test/data evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz - 지표 실행
APE를 계산하고, 플롯을 보여주며, 나중에 집계할 수 있도록 상세 출력을 저장합니다.mkdir results evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz \ --save_results results/ORB.zip - 여러 결과 비교
요약 통계, 바이올린/박스 플롯 및 CSV 표를 생성합니다.evo_res results/*.zip -p --save_table results/table.csv
확장성
- 이 패키지는
core라이브러리(지표 구현, 궤적 처리)와tools(CLI 래퍼)로 나뉩니다. 사용자 정의 평가 파이프라인을 구축하거나 다른 연구 프레임워크와 통합하기 위해 자신의 Python 코드에서 라이브러리를 가져올 수 있습니다.
문서 및 도움말
- 각 명령의
--help를 통한 전체 CLI 참조. - 지원되는 형식, 플롯 옵션 및 Rerun 통합을 다루는 GitHub의 상세 위키.
- Jupyter notebook
metrics_tutorial.ipynb가 대화형 사용법을 보여줍니다.
라이선스
- GPL-3.0 이상. 학술 작업에
evo를 사용하는 경우, README에서 인용(BibTeX 제공)을 요청합니다.
요약하자면, evo는 로봇 공학 연구자가 커스텀 파서나 플롯 코드를 작성하지 않고도 오도메트리/SLAM 출력을 빠르게 벤치마킹할 수 있게 해주는 성숙하고 잘 검증된 툴박스입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트