Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data. Try it live at https://rerun.io/viewer.
- Python:
pip install -U rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.38.1/rerun_cpp_sdk.zip
โจ Overview & highlights
- Measurements archetype
- Local
.rrdfiles load via the Viewer catalog by default - Live and imported recordings
rerun --asset- Drive a running Viewer from Python
- Control the Viewer time cursor from Python
- Better time series plot interactions
- Keep following the time cursor after zooming or panning
- Tidier playhead controls
- TIFF support for
EncodedDepthImage LeRobotReader: stream LeRobot datasets as lazy chunk streams- gRPC server reflection
- Experimental agent panel
- More flexible experimental table blueprints
- Annotation context is a visualizer component source
- Server capabilities
- Viewer new-version notice
๐ Release notes: https://rerun.io/docs/changelog/changeset-0-38#highlights
โ ๏ธ Breaking changes
- Chunk API and stable readers moved out of
rerun.experimental - "Log setup for binaries is opt-in with feature
log_setup" --connectalso starts a local Viewer server- Experimental table blueprint redesigned
- MCAP importer maps ROS scalar sensor messages to
Measurements - Recorded labels no longer mix with annotation labels
- Custom views must now provide reflection metadata
- Python 3.10 is deprecated
- MCAP importer preserves ROS
/tf_staticmessage timing - ROS 2 MCAP importer outputs
VideoStream:codecas temporal data - TUID parsing requires canonical 32-character hexadecimal strings
๐งณ Migration guide: https://rerun.io/docs/changelog/changeset-0-38#breaking-changes
๐ Details
๐ Python API
py-chunk: Move stable chunk API & readers out ofexperimentalintorerun.chunkfor 0.38 ccc27e6- Expose ViewerClient time cursor control to Python 43d8836 (thanks @pablovela5620!)
- Decode the RRD footer once per
RrdReaderinstead of once perstore()046bdb6 re_lerobot: open(),stream() per-episode lazy chunk streaming 7b63de7- Generalize the
ViewerControlAPI 4bdf267
๐ชณ Bug fixes
- Fix cases of component mappings becoming incorrectly transitive 5b1d730
- Make sure old marking missing on just-loaded chunks don't cause warnings 3aa1977
- Fix rare viewer deadlock in renderer 6464bff
- Fix parsing of unicode escapes above U+FFFF in entity paths #12912 (thanks @jaideeppyne!)
- Report error for missing required components in mappings 655ac44
- Don't display
?url=with empty url 09f22fd - Fix table recognizing URLs embedded in strings too eagerly be47aed
- Grid map's cell_size can now be edited in the UI d0bef4f
- Enable importers on wasm ecca42f
- Fix missing task labels for LeRobot v3 datasets written with LeRobot 0.5.0+ f057ae9
- Fix theme warning for embedded viewers in Python notebooks 45c1135
- Fix dataframe UI warning bug 873e86d
- Fix: handle
file://prefixes on paths e372ae4
๐ Viewer improvements
- Add Measurement Archetype a1c8501
- Add version check on viewer startup cb5e9d6
- Overhaul table blueprint datastructures & start making them more powerful c1ea47a
- Use server capabilities in UI to know what can be registered to the server bab02d7
- Improve playhead navigation controls bc395cc
- Distinguish between Live and Imported recordings e926710
- Add TIFF support to
EncodedDepthImage6f95c34 - Fix how visualizer menu shows annotation context data & allow selecting it in the ui (and blueprint!) 392b05c
- Preserve relative time cursor on pan/zoom in time series & state timeline views 8097444
- Add experimental agent panel to the viewer 4ded82a
- Spawn all viewer services, even for
--connect(under free port) 785d27c
๐๏ธ OSS server
- Serve gRPC server reflection from all open-source gRPC servers b9ffa9c
๐ Performance improvements
- Speed up common entity path ancestor lookup #12910 (thanks @pnn64!)
- Losslessly compress all non-snapshot PNGs 099aa62
- Avoid allocations when resolving archetype field names #12921 (thanks @pnn64!)
- Enable the Viewer catalog by default (and allow opt-out) 3008fb0
๐ผ UI improvements
- Time series tooltip: add option to display all series values at once eb8d373
๐งข MCAP
- Move ROS
TFMessageto lens & remove/tf_staticspecial-casing 2c7a86b - convert ROS2 scalar sensor parsers to Measurements lenses e6f461f
- MCAP: Port ROS compressed image decoding to lenses 833c268
๐ฆ Dependencies
python: A deprecation notice for Python 3.10 dac09e2
๐คทโ Other
- Make
tracing-subscriberan optional dependency ofre_log#12909 (thanks @CattleProdigy!) - --asset flag to register asset to the viewer catalog 96d4950