2026/9/16 1:59:03

Rerun Measurements 原语:为标量数据记录不确定性并绘制误差带

Rerun Measurements 原语:为标量数据记录不确定性并绘制误差带 Rerun Measurements 原语为标量数据记录不确定性并绘制误差带【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerunMeasurements是 Rerun 新增的标量测量原语archetype用于一次性记录「数值 方差 单位」面向压力、温度、照度、相对湿度、测距等带不确定性的传感器数据。在时序视图TimeSeriesView中每条序列会被绘制为一条折线并在其上下各延伸一个标准差方差的平方根宽的半透明误差带。读完本文你将掌握Measurements的完整字段语义、Python/Rust 调用方式、底层可视化实现以及它与Scalars原语的关键区别。背景为什么需要 Measurements常规的Scalars原语只记录标量值本身样式颜色、线宽等需要额外的SeriesLines原语另行指定。而真实传感器不仅输出测量值还往往同时报告不确定性方差。Measurements把「值、不确定性、单位、样式」绑定到一个原语里一次log调用即可完成记录专为传感器类多模态数据设计。从类型定义看该原语以Plotting分类收录、标记为未发布unreleased且状态为 unstable其类型定义文件位于 measurements.def.rs。MCAP 导入器已经为 ROS 的sensor_msgs消息生成了对应的快照验证如 ros_fluid_pressure.snap说明它天然服务于压力、温度、照度、湿度等常见 ROS 传感器数据流。核心概念值 方差 单位Measurements的核心语义在 类型参考文档 中定义每个测量值附带一个方差variancesσ²单位为测量值单位的平方在时序视图中每条序列绘制为一条折线外加一个半透明误差带上下各为一个标准差方差的平方根宽若不确定性未知则可以不设置variances此时只画折线不画误差带0方差表示该值被完美已知同样不绘制误差带。两个伴随新组件Measurements引入了两个新组件Variance方差的 Float64 封装语义为「测量值的方差 σ²单位为测量值单位的平方」0表示完美已知、不画误差带。实现见 variance.rs。UnitUtf8 字符串封装仅用于展示如Pa、lux显示在图例legend和 tooltip 中不影响数值计算。实现见 unit.rs。字段总览required / recommended / optional依据 类型参考文档Measurements共有 9 个字段按必需程度分为三档级别字段对应组件说明RequiredvaluesScalar被测标量值RecommendedvariancesVariance方差 σ²长度需与values一致可留空OptionalunitsUnit展示用单位出现在图例与 tooltip长度需与values一致预期不随时间变化OptionalcolorsColor对应序列的颜色可随时间变化但可能造成折线不连续OptionalwidthsStrokeWidth对应序列的线宽可随时间变化但可能造成折线不连续OptionalnamesName序列显示名用于图例预期不随时间变化Optionalvisible_seriesVisible控制哪些序列可见通过它隐藏的序列仍会出现在图例中Optionalaggregation_policyAggregationPolicy缩放相关的标量聚合策略仅当 X 轴步长小于单个像素一个像素覆盖多个数据刻度时触发可显著提升性能并避免过度绘制Optionalinterpolation_modeInterpolationMode数据点之间的插值方式默认线性插值可用Step*变体得到阶梯线Rust 侧生成的Measurements结构体与其with_*构造方法一一对应见 measurements.rs其中with_many_aggregation_policy、with_many_interpolation_mode用于配合columns批量列式写入。快速上手三种语言的最小示例官方示例「Pressure with variance」展示了两路并行压力传感器单位 Pa随时间缓慢漂移方差的记录方式对应的可运行片段位于 measurements_simple.py、measurements_simple.rs 与 measurements_simple.cpp。Pythonimport math import rerun as rr rr.init(rerun_example_measurements_simple, spawnTrue) # 两路并行压力传感器Pa各自带有缓慢漂移的方差 for step in range(64): rr.set_time(step, sequencestep) pressures [ 101_325.0 50.0 * math.sin(step / 10.0), 101_300.0 30.0 * math.cos(step / 8.0), ] variances [ 100.0 25.0 * math.sin(step / 7.0), 80.0 15.0 * math.cos(step / 11.0), ] rr.log( pressure, rr.Measurements(valuespressures, variancesvariances, unitsPa), )Rustlet rec rerun::RecordingStreamBuilder::new(rerun_example_measurements_simple).spawn()?; for step in 0..64 { rec.set_time_sequence(step, step); let pressures [ 101_325.0 50.0 * (step as f64 / 10.0).sin(), 101_300.0 30.0 * (step as f64 / 8.0).cos(), ]; let variances [ 100.0 25.0 * (step as f64 / 7.0).sin(), 80.0 15.0 * (step as f64 / 11.0).cos(), ]; rec.log( pressure, rerun::Measurements::new(pressures) .with_variances(variances) .with_units([Pa]), )?; }注意Measurements::new(values)只接受值数组方差与单位通过with_variances、with_units链式追加。每次时间步都重新 log 完整的两路值多路传感器共享同一实体路径pressure时会被视为多条序列。渲染原理MeasurementsSeries 可视化系统在源码层面Measurements由时序视图中的专用可视化系统MeasurementsSeriesSystem负责渲染见 measurements_visualizer_system.rs。值得关注的是查询约束中的with_allow_static_data(false)Measurements不允许静态数据因为时间轴X 轴取当前时间线的值静态数据没有时间维度无法正确绘制。这也解释了参考文档中的约定——测量值不应是 static且每个时间戳的数值数量预期随时间保持一致。在数据加载阶段MeasurementsSeriesSystem通过load_line_series_with_styling与LineSeriesSource组装序列value_descriptor指向Measurements.valuesvariance_descriptor指向Measurements.variances填充PlotSeries::variances并绘制为误差带unit_descriptor指向Measurements.units填充到图例与 tooltip样式列颜色、线宽、名称、可见性、聚合策略、插值模式全部来自Measurements自身的组件描述符LineSeriesStyling::measurements()。这与 line_series_loader.rs 中的设计一致SeriesLinesSystem与MeasurementsSeriesSystem都绘制「每条序列一条线」二者的差异只体现在「值从哪来、样式从哪来」。Measurements把样式内聚到自己身上因此无需像Scalars那样额外配套SeriesLines。对应的渲染测试覆盖了误差带绘制、图例与 tooltip 行为见 re_view_time_series/tests/measurements.rs 与 basic.rs。与 Scalars 的对比维度ScalarsMeasurements记录内容纯标量值值 方差 单位样式来源需要单独的SeriesLines原语自带全部样式字段一次 log 完成不确定性不支持通过variances绘制 ±1σ 误差带单位展示不支持units显示于图例与 tooltip静态数据允许不允许依赖时间线驱动 X 轴使用约束与兼容性提醒稳定性Measurements、Variance、Unit均标注为unstable后续可能发生不向后兼容的变更生产环境接入前请关注版本演进见 measurements.md时序一致每个时间戳的数值数量应保持一致variances、units的长度需与values匹配样式字段限制units、names、aggregation_policy、interpolation_mode预期不随时间变化colors、widths、visible_series允许变化但可能导致折线出现不连续可展示视图Measurements可显示在时序视图TimeSeriesView与数据表视图DataframeView中适用于压力、温度、照度、相对湿度、测距等「数值 不确定性」成对出现的传感器场景不确定性未知时留空variances即可退化为普通折线。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考