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)은 요청 시 자동으로 설치되지만, 핵심 기능은 이러한 도구 없이도 작동합니다.

전형적인 워크플로우 (예시)

  1. 궤적 플롯
    cd test/data
    evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz
    
    Ground truth에 대한 두 SLAM 실행의 나란한 플롯을 생성합니다.
  2. 지표 실행
    mkdir results
    evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz \
            --save_results results/ORB.zip
    
    APE를 계산하고, 플롯을 보여주며, 나중에 집계할 수 있도록 상세 출력을 저장합니다.
  3. 여러 결과 비교
    evo_res results/*.zip -p --save_table results/table.csv
    
    요약 통계, 바이올린/박스 플롯 및 CSV 표를 생성합니다.

확장성

  • 이 패키지는 core 라이브러리(지표 구현, 궤적 처리)와 tools(CLI 래퍼)로 나뉩니다. 사용자 정의 평가 파이프라인을 구축하거나 다른 연구 프레임워크와 통합하기 위해 자신의 Python 코드에서 라이브러리를 가져올 수 있습니다.

문서 및 도움말

  • 각 명령의 --help를 통한 전체 CLI 참조.
  • 지원되는 형식, 플롯 옵션 및 Rerun 통합을 다루는 GitHub의 상세 위키.
  • Jupyter notebook metrics_tutorial.ipynb가 대화형 사용법을 보여줍니다.

라이선스

  • GPL-3.0 이상. 학술 작업에 evo를 사용하는 경우, README에서 인용(BibTeX 제공)을 요청합니다.

요약하자면, evo는 로봇 공학 연구자가 커스텀 파서나 플롯 코드를 작성하지 않고도 오도메트리/SLAM 출력을 빠르게 벤치마킹할 수 있게 해주는 성숙하고 잘 검증된 툴박스입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트