Skip to main content

Probabilistic SLAM trajectory format and scoring tool

Project description

smfeval

Score SLAM trajectories that report uncertainty. Works on Gaussian-, ensemble-, or deterministic-pose estimates on SE(3) and gives back proper scoring rules plus calibration diagnostics.

Full documentation lives under docs/; run make docs to build the HTML version and make test to run the test suite.

Install

Requires Python ≥ 3.10. With uv:

uv sync

Runtime depends only on NumPy ≥ 1.24 and SciPy ≥ 1.10.

Use

Validate a trajectory file:

uv run smfeval validate path/to/est.SQUARE

Score an estimate against a ground-truth trajectory (SQUARE format or plain TUM):

uv run smfeval score est.SQUARE gt.TUM

Example output:

Synchronization
  Mode:                   interpolate_gt
  Pairs matched:          5,738 / 5,738
  Dropped:                0
  GP σ (m):   median 0.0003, p95 0.0004, p99 0.0011

Alignment
  Gauge (declared):       gravity_yaw
  Mode applied:           se3   (6 DoF)
  Fitted Δxyz:            (-28.4562, 28.0381, -4.7399) m
  Fit residual (m):       median 0.9007, p95 1.2460
                          6 DoF removed over 649 m of trajectory

Scores
  Translation CRPS:           mean 0.281 m   [95% CI 0.224, 0.334]   (n=5738)
                              median 0.313, std 0.124, min 0.014, max 0.503
                              block length (Politis–White): 176.5
  Rotation CRPS:              mean 0.036 rad   [95% CI 0.036, 0.037]   (n=5738)
                              median 0.036, std 0.002, min 0.030, max 0.043
                              block length (Politis–White): 173.8
  Energy score (SE(3)):       mean 0.802   [95% CI 0.637, 0.960]   (n=5738)
                              median 0.901, std 0.365, min 0.044, max 1.486
                              block length (Politis–White): 176.5
  Log score (joint):          mean 1401860.038   [95% CI 1050457.394, 1733644.908]
                              median 1317643.220, std 848368.184
                              block length (Politis–White): 175.1
  Log score (translation):    mean 1008309.207   [95% CI 690401.685, 1341320.364]
                              median 903201.643, std 777138.180
                              block length (Politis–White): 175.5
  Log score (rotation):       mean 271085.256   [95% CI 244685.182, 299495.521]
                              median 271799.807, std 83672.340
                              block length (Politis–White): 172.7
  Interval score:             mean 15.996   [95% CI 12.522, 19.090]   (n=5738)
                              median 17.973, std 7.325
                              block length (Politis–White): 176.5

Calibration
  PIT uniformity (KS):    p = 0.000  ⚠ possible miscalibration
  90% Mahalanobis coverage:  0.0%     (nominal 90.0%)
  Translation z-score:    mean 741.74, std 349.38   (over-confident)

Recommendations
  - Coverage below nominal combined with KS p < 0.05 — the filter is
    over-confident (claimed Σ too tight, truth falls outside the
    predicted intervals); widen process noise. Miscalibration is
    unlikely to be explained by sync error alone.

The report has six sections — synchronisation, alignment, ensemble diagnostics (when applicable), scores, calibration, recommendations — following the layout in SQUARE_spec.md. See docs/ for what each statistic means and how it's computed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smfeval-0.3.0.tar.gz (415.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smfeval-0.3.0-py3-none-any.whl (55.2 kB view details)

Uploaded Python 3

File details

Details for the file smfeval-0.3.0.tar.gz.

File metadata

  • Download URL: smfeval-0.3.0.tar.gz
  • Upload date:
  • Size: 415.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for smfeval-0.3.0.tar.gz
Algorithm Hash digest
SHA256 480f544bf923d74a62d4e602ce4c92dc9e306f11f9bacabfa8653aa9b1a07adb
MD5 370529e57cef26ec23ad6d572c1232ab
BLAKE2b-256 18d7e712c9822148cafc31d0dc32a4bc941bc250cf901f716b6e181b6e9c368a

See more details on using hashes here.

Provenance

The following attestation bundles were made for smfeval-0.3.0.tar.gz:

Publisher: publish.yml on svendbot/smfeval

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smfeval-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: smfeval-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 55.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for smfeval-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ebc07aecb9bcc99466deb4800d6aa57839cd17676e0436db7ce70052afcc883
MD5 caf084bdc3afbdcca1c2a814859c2d2e
BLAKE2b-256 a3eb81cb6c12d9cda7d698f10b8bc3eada7e607f28393430369adbb92bc9e642

See more details on using hashes here.

Provenance

The following attestation bundles were made for smfeval-0.3.0-py3-none-any.whl:

Publisher: publish.yml on svendbot/smfeval

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page