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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
480f544bf923d74a62d4e602ce4c92dc9e306f11f9bacabfa8653aa9b1a07adb
|
|
| MD5 |
370529e57cef26ec23ad6d572c1232ab
|
|
| BLAKE2b-256 |
18d7e712c9822148cafc31d0dc32a4bc941bc250cf901f716b6e181b6e9c368a
|
Provenance
The following attestation bundles were made for smfeval-0.3.0.tar.gz:
Publisher:
publish.yml on svendbot/smfeval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smfeval-0.3.0.tar.gz -
Subject digest:
480f544bf923d74a62d4e602ce4c92dc9e306f11f9bacabfa8653aa9b1a07adb - Sigstore transparency entry: 1630794855
- Sigstore integration time:
-
Permalink:
svendbot/smfeval@28496261090d1b3071869f0d006f19dff71fbd51 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/svendbot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@28496261090d1b3071869f0d006f19dff71fbd51 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ebc07aecb9bcc99466deb4800d6aa57839cd17676e0436db7ce70052afcc883
|
|
| MD5 |
caf084bdc3afbdcca1c2a814859c2d2e
|
|
| BLAKE2b-256 |
a3eb81cb6c12d9cda7d698f10b8bc3eada7e607f28393430369adbb92bc9e642
|
Provenance
The following attestation bundles were made for smfeval-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on svendbot/smfeval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smfeval-0.3.0-py3-none-any.whl -
Subject digest:
8ebc07aecb9bcc99466deb4800d6aa57839cd17676e0436db7ce70052afcc883 - Sigstore transparency entry: 1630794863
- Sigstore integration time:
-
Permalink:
svendbot/smfeval@28496261090d1b3071869f0d006f19dff71fbd51 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/svendbot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@28496261090d1b3071869f0d006f19dff71fbd51 -
Trigger Event:
push
-
Statement type: