ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Rerun StateChange Archetype 详解:在 Rerun 中建模与可视化离散状态机

Rerun StateChange Archetype 详解:在 Rerun 中建模与可视化离散状态机 Rerun StateChange Archetype 详解在 Rerun 中建模与可视化离散状态机【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerunStateChange 是 Rerun 类型系统中专门用来描述实体进入新状态的 Archetype适合表达离散状态机、模式切换以及随时间演进的状态变化。本文基于仓库中的自动生成参考文档、各语言 SDK 的类型实现与官方示例片段完整讲解 StateChange 的字段定义、空状态reset语义、Python / Rust / C 三种 API 的用法以及它在 State Timeline 视图中的渲染机制——读者读完即可掌握如何在 Rerun 应用中记录、查询并可视化机器人或系统的状态切换历史。StateChange 的核心概念StateChange 代表一个实体在某一时刻向新状态的迁移A state change, representing a transition of an entity into a new state。它适用于以下典型场景离散状态机门体开/关、机器人自主/接管、相机开关机等模式切换导航模式、工作模式等随时间变化的枚举值状态随时间演进每个被记录的 StateChange 都在其对应时间点标记一个新状态即状态是从该时刻起生效的mark a new state at the given time。两个关键语义值得注意null 状态即重置记录一个null状态会把当前状态清空在 State Timeline 视图中表现为一段缺口gap直到下一个状态被记录为止可视化形态State Timeline 视图把这些状态记录显示为随时间展开的水平彩色泳道horizontal colored lanes。字段定义只有一个必填字段stateStateChange 只有一个组件字段且为必填字段类型说明stateText必填新的状态值数组中的每个实例在 State Timeline 视图中各占一条泳道从 Rust 类型定义可以进一步确认这一结构StateChange结构体只含一个可选的序列化组件批字段statearchetype 名称为rerun.archetypes.StateChange其唯一组件描述符映射到rerun.components.Text组件标识为StateChange:state见 state_change.rs 中的descriptor_state()与NUM_COMPONENTS 1定义。state字段还有两条实践约束来自 state_change.rs 中with_state的文档注释三类值都算重置空字符串、数组中的 null 条目、以及空的 state 数组例如通过clear_fields()清空字段都会结束前一个状态并在泳道中留出一个缺口数组长度应保持恒定state数组的长度不应随时间改变——每增加一个实例就多一条泳道长度漂移会让泳道归属变得混乱。三语言 API 实战示例以下示例来自仓库官方示例片段Rust 版 state_change.rs、Python 版 state_change.py、C 版 state_change.cpp演示一个门实体在三个时间步上开/关切换并在 State Timeline 中呈现为一条泳道。Rustfn main() - Result(), Boxdyn std::error::Error { let rec rerun::RecordingStreamBuilder::new(rerun_example_state_change) .spawn()?; rec.set_time_sequence(step, 0); rec.log(door, rerun::StateChange::single(open))?; rec.set_time_sequence(step, 1); rec.log(door, rerun::StateChange::single(closed))?; rec.set_time_sequence(step, 2); rec.log(door, rerun::StateChange::single(open))?; Ok(()) }Pythonimport rerun as rr rr.init(rerun_example_state_change, spawnTrue) rr.set_time(step, sequence0) rr.log(door, rr.StateChange(stateopen)) rr.set_time(step, sequence1) rr.log(door, rr.StateChange(stateclosed)) rr.set_time(step, sequence2) rr.log(door, rr.StateChange(stateopen))C#include rerun.hpp int main(int argc, char* argv[]) { const auto rec rerun::RecordingStream(rerun_example_state_change); rec.spawn().exit_on_failure(); rec.set_time_sequence(step, 0); rec.log(door, rerun::StateChange().with_state({open})); rec.set_time_sequence(step, 1); rec.log(door, rerun::StateChange().with_state({closed})); rec.set_time_sequence(step, 2); rec.log(door, rerun::StateChange().with_state({open})); }Rust 构造器的细节Rust SDK 在生成的类型state_change.rs之上还额外提供了两个便捷构造器定义在 state_change_ext.rsStateChange::single(state)为单泳道场景构造一个只含一个状态值的状态记录是最常用的入口示例片段中即用它StateChange::with_state_opt(states)接收OptionText迭代器其中None条目会重置对应实例的状态、在其泳道中留一个缺口。文档注释特别指出这是with_state无法表达的能力——with_state只接受存在的值而with_state_opt可以显式表达这一时刻该实例无状态。此外Rust 端通用构造器还支持with_state批量设置多实例状态、clear_fields写入空 state 数组等价于整体重置、以及columns/columns_of_unit_batches把组件批切分成子批便于列式数据直接灌入 Rerun。在 Rerun 中的展示State Timeline 视图StateChange 可以被两种视图消费对应文档Can be shown in一节StateTimelineView以水平彩色泳道展示状态随时间的变化是本 archetype 的主战场DataframeView以数据帧形式查看状态列的原始值。渲染侧的实现值得了解State Timeline 视图由StateVisualizer负责把存储中的StateChange行转换为彩色泳道visualizer.rs。从源码结构看其关键行为包括每条视觉指令一个泳道组每个 state 实例一条泳道StateVisualizer查询StateChange的state组件每个实体路径通常对应一个泳道组组内泳道数量等于 state 数组长度颜色由状态值哈希派生color_for_value对原始状态值做哈希得到稳定颜色这样即使后续新增、重排状态值既有颜色也不会漂移也可以配合StateConfiguration手动指定颜色、标签与可见性隐藏值即缺口泳道构建阶段中隐藏的/被重置的值会被渲染成缺口与文档中null状态显示为 gap的语义一一对应对状态列做类型约束visualizer 约束StateChange:state必须是Text类型SingleRequiredComponentConstraint::new::Text保证查询到的列能确定地转换为泳道。该视图相关的行为测试位于 re_view_state_timeline/tests 目录如basic.rs、tooltip.rs、visible_time_range.rs等可作为验证泳道渲染行为的参考。相关 API 文档索引各语言 API 的权威文档链接与原始参考文档保持一致C API docs forStateChangeref.rerun.io C stable 文档Python API docs forStateChangeref.rerun.io Python stablererun.archetypes.StateChangeRust API docs forStateChangedocs.rsrerun::archetypes::StateChange仓库内对应的类型入口文件Rust 类型定义与文档state_change.rsPython 类型定义state_change.py类型定义源codegen 输入state_change.def.rs参考文档本身由crates/build/re_types_builder/src/codegen/docs/website.rs自动生成见 state_change.md小结StateChange 是一个极简但语义完整的 archetype一个必填的Text字段state配合null/空即重置的规则就能把离散状态机、模式切换等场景落到 Rerun 的时间轴数据模型上State Timeline 视图则把它自动呈现为稳定的彩色泳道。实际使用时记住三点即可——状态值数组长度保持恒定、用None/null 表达重置、多实例场景优先选用with_state_optRust或等价的可选值构造方式来显式制造缺口。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表