DORA 数据流调试与可观测性实战指南:从录制重放到分布式监控
2026/9/18 2:37:03 网站建设 项目流程

DORA 数据流调试与可观测性实战指南:从录制重放到分布式监控

【免费下载链接】doraDORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed dataflow capabilities. Applications are modeled as directed graphs, also referred to as pipelines.项目地址: https://gitcode.com/GitHub_Trending/do/dora

本文以 DORA(Dataflow-Oriented Robotic Architecture)官方调试文档为主体,完整覆盖 record/replay、topic 检查、节点管理、运行时参数、日志与追踪分析、资源监控等全部调试能力,并结合仓库内 CLI、录制库与协调器源码给出底层实现依据。读完本文,你将掌握一套从"数据流出了问题"到"离线复现并定位根因"的端到端调试方法论,能够在不接入任何外部可观测性基础设施的情况下独立排查与测量 DORA 数据流。


前置条件:开启调试消息发布

DORA 中,topic echotopic hztopic info等主题检查命令依赖 daemon 将节点间消息额外发布到 Zenoh,再由 coordinator 通过 WebSocket 代理给 CLI 客户端。因此在使用这些命令前,必须先开启调试消息发布,二选一:

方式一:CLI 参数(推荐)

dora start dataflow.yml --debug dora run dataflow.yml --debug

方式二:在 YAML 描述符中声明

debug: enable_debug_inspection: true

未开启时,主题检查命令会直接返回错误。从源码看,该开关在 binaries/daemon/src/lib.rs 与 binaries/coordinator/src/ws_control.rs 中均有引用:daemon 侧决定是否把节点消息发布到 Zenoh,coordinator 侧在收到TopicSubscribe请求时校验"dataflow 存在且已开启enable_debug_inspection",否则拒绝订阅(详见 docs/websocket-topic-data-channel.md)。

不需要该开关的命令recordreplaylogslisttopgraphnode info/restart/stopparamdoctortopic pubtopic echo/hz/info一样需要开启(topic list例外,它只读描述符、不需要开启)。


快速调试清单

当数据流行为异常时,按下面的顺序排查:

# 1. 运行完整环境诊断 dora doctor --dataflow dataflow.yml # 2. 当前有哪些数据流在运行? dora list # 3. 检查出问题的节点 dora node info -d my-dataflow problem-node # 4. 检查节点资源占用 dora top # 5. 流式查看问题节点的日志 dora logs my-dataflow --node problem-node --follow --level debug # 6. 节点是否在产生输出? dora topic echo -d my-dataflow problem-node/output # 7. 注入测试数据 dora topic pub -d my-dataflow problem-node/input '[1, 2, 3]' # 8. 发布频率是否符合预期? dora topic hz -d my-dataflow --window 5 # 9. 查看/修改运行时参数 dora param list -d my-dataflow problem-node dora param set -d my-dataflow problem-node debug_level 2 # 10. 重启异常节点(无需停止整个数据流) dora node restart -d my-dataflow problem-node # 11. 查看协调器内置追踪(无需外部基础设施) dora trace list dora trace view <trace-id-prefix> # 12. 可视化数据流图 dora graph dataflow.yml --open # 13. 录制用于离线分析 dora record dataflow.yml -o debug-capture.drec

这套流程从"环境是否健康"出发,逐层收敛到"单个节点的状态、日志、输入输出、频率、参数、进程生命周期",最后以录制收尾,把现场保存下来供离线分析。


常见错误消息速查

当命令输出或日志中已经包含明确的错误片段时,先对照下表定位方向:

错误信息(或片段)可能原因修复或下一步
Could not connect to the daemon节点尝试连接本地 daemon 端口,但 daemon 未监听或端口错误dora up启动运行时;使用自定义端口时检查DORA_DAEMON_LOCAL_LISTEN_PORT
failed to request node config from daemon手动启动的节点连上了 daemon,但 daemon 无法返回节点配置通过dora start/dora run启动节点,或确认节点 ID 存在于正在运行的数据流中
failed to register node with dora-daemondaemon 拒绝了节点注册请求检查dora up启动进程的 daemon stderr,确认节点 ID 与数据流 ID 与当前运行一致
no running dataflow with ID ...CLI 命令使用了上次运行的过期数据流 ID运行dora list,用当前数据流 ID 重试,或用dora stop停止旧引用
node ... not connected命令指向的节点未连接、已崩溃或已关闭运行dora node info -d <dataflow> <node>并查看dora logs <dataflow> --node <node>
node ... channel full节点来不及消费控制消息,daemon 无法入队新事件dora top查看压力,检查节点日志,降低输入速率或重启节点
node ... channel closed节点控制通道关闭,通常是因为节点进程已退出dora logs <dataflow> --node <node>查找崩溃或关闭原因,然后重启节点
failed to serialize param value for node ...运行时参数更新无法编码投递给目标节点检查dora param set传入的值,与dora param list显示的参数类型比对
unexpected ... replycoordinator、daemon 或节点 API 版本对协议应答的预期不一致确认所有二进制来自同一 Dora 构建,然后依次重启 coordinator、daemon 与数据流
coordinator heartbeat timeout (20s)daemon 停止收到 coordinator 心跳检查 coordinator 与 daemon 日志中的断连,用dora downdora up重启
there is already a running dataflow with ID ...新启动请求复用了仍在活跃的 ID运行dora list,停止过期的数据流,或用不同名称/ID 启动
failed to infer JSON schema提供给主题或交互式输入的 JSON 无法映射为 Arrow schema确认 JSON 合法且元素同构,或改用感知 schema 的生产者发布数据
Arrow IPC stream contained no record batches生产者发送了空或非法的 Arrow IPC 负载先验证上游节点输出与录制/重放文件,再调试下游消费者
zenoh publish failed直接 Zenoh 发布失败,消息未能经快速路径送达检查 Zenoh/网络配置与节点日志;部分发布失败时 Dora 可能回退到 daemon 路径

录制与重放(Record & Replay)

录制把运行中的数据流消息写入文件;重放则用录制数据替换源节点,让你在没有硬件的情况下复现行为。

录制数据流

# 录制所有主题(默认输出:recording_{timestamp}.drec) dora record dataflow.yml # 指定输出文件 dora record dataflow.yml -o my-capture.drec

实现机制:CLI 会向数据流注入一个隐藏的__dora_record__节点,它订阅所有节点输出并写入.drec文件。录制节点二进制(dora-record-node,位于 binaries/record-node/src/main.rs)在首次使用时自动构建。录制持续运行,直到按下 Ctrl-C 或数据流停止。

从 binaries/cli/src/command/record.rs 源码可以看到注入细节:

  • 描述符中的每个node/output主题会被重新编码为记录节点的输入 IDnode___output(输入 ID 不能含/),并通过DORA_RECORD_TOPICS环境变量传给记录节点;
  • 注入节点默认带queue_size: 100的输入队列(DEFAULT_RECORD_QUEUE_SIZE,约是实时队列深度的 10 倍),因为记录节点的工作是磁盘 I/O,突发的写停顿需要缓冲余量;
  • 不要为记录节点声明queue_policy: backpressure——这会把生产者的整个输出钉在 daemon 路径上,让所有消费者离开零拷贝 direct-zenoh 路径,改变被录制数据流的传输方式(源码测试record_inputs_do_not_declare_a_queue_policy专门固化了这一点);
  • Ctrl-C 采用"第一次优雅收尾、第二次立即退出"的两级处理(record_ctrlc_action),避免被卡死的磁盘写吞掉后续信号。

此外dora record还支持--queue-size N调整每个主题的缓冲深度(不适用于--proxy模式),默认 100;峰值内存约为2 × queue_size × 单条负载大小,调整大帧场景前建议先阅读 docs/cli.md。

录制特定主题

# 只录制 camera 与 lidar dora record dataflow.yml --topics sensor/image,lidar/points

主题命名格式为node_id/output_id。可用主题通过dora topic list -d <dataflow>发现。源码中discover_descriptor_outputs会遍历描述符里的普通节点、单 operator 节点与多 operator 节点的所有输出;若--topics指定了描述符中不存在的主题,会立即报错并列出可选主题(在触发记录节点二进制构建之前就会校验,避免先花几分钟编译再失败)。

代理录制(远程 / 无盘场景)

当目标机器没有本地磁盘,或你想把录制文件落到自己的工作站上时:

# 先(分离地)启动数据流 dora start dataflow.yml --detach # 通过 WebSocket 代理录制——数据经 coordinator 流向 CLI dora record dataflow.yml --proxy -o capture.drec # 通过代理录制指定主题 dora record dataflow.yml --proxy --topics sensor/image,lidar/points

代理模式的工作方式:

  1. 数据流必须已经运行(dora start --detach);
  2. CLI 通过 WebSocket 连接 coordinator;
  3. coordinator 代表 CLI 订阅 Zenoh 主题;
  4. 消息数据以 WebSocket 二进制帧流式传回 CLI;
  5. CLI 在本地写入.drec文件。

此模式要求描述符开启enable_debug_inspection: true。若同时运行了多个数据流,--proxy模式会按名称自动匹配(匹配dora start --name指定的名称),否则弹出选择器;还可用--name显式指定。

什么时候用--proxy

  • 无本地磁盘的嵌入式目标;
  • 希望录制文件落在工作站上的远程机器;
  • 只有 WebSocket 连通性(无法直连 Zenoh)的场景。

什么时候用默认模式(不带--proxy):

  • 同机或共享文件系统;
  • 高吞吐场景(无 WebSocket 开销);
  • 不需要enable_debug_inspection

重放录制

# 按原始速度重放 dora replay recording.drec # 以 2 倍速重放 dora replay recording.drec --speed 2.0 # 尽可能快地重放(speed 0) dora replay recording.drec --speed 0

重放的工作原理:

  1. 读取.drec文件头获取原始数据流描述符;
  2. 识别产生录制数据的节点;
  3. dora-replay-node实例替换这些源节点;
  4. 运行修改后的数据流——下游节点接收到的重放数据与实时数据完全一致。

重放节点二进制(dora-replay-node,位于 binaries/replay-node/src/main.rs)同样在首次使用时自动构建。从源码看,重放节点通过DORA_REPLAY_FILEDORA_REPLAY_NODEDORA_REPLAY_SPEEDDORA_REPLAY_LOOP环境变量接收参数,按每条记录的时间戳偏移做节流(pacing_sleep_nanos),并会在等待间隙轮询 daemon 的Stop事件以保证可被及时停止;--speed 0时跳过节流直接全速发送。

重放选项

参数默认值说明
--speed <FLOAT>1.0播放速度倍率。2.0= 2 倍速,0.5= 半速,0= 尽可能快
--loop关闭循环重放录制
--replace <NODES>所有已录制节点要替换的节点列表(逗号分隔)
--output-yaml <PATH>-只写出修改后的描述符 YAML,不实际运行

选择性重放

只替换特定源节点,其余保持实时:

# 只替换 sensor 节点,camera 保持实时 dora replay recording.drec --replace sensor # 替换 sensor 与 lidar,其余保持实时 dora replay recording.drec --replace sensor,lidar

当你想用已知输入数据调试某条处理管线、同时保持系统其他部分实时运行时,这个能力非常有用。

干跑(输出 YAML)

record 与 replay 都支持--output-yaml查看修改后的描述符而不运行:

# 查看注入记录节点后的描述符 dora record dataflow.yml --output-yaml record-modified.yml # 查看重放修改后的描述符 dora replay recording.drec --output-yaml replay-modified.yml

录制文件格式(.drec)

.drec是一个简单的二进制文件:

┌──────────────────────────────────┐ │ Header (binary) │ │ version: u32 │ │ start_nanos: u64 │ │ dataflow_id: Uuid │ │ descriptor_yaml: Vec<u8> │ ├──────────────────────────────────┤ │ Entry 1 (binary) │ │ node_id: String │ │ output_id: String │ │ timestamp_offset_nanos: u64 │ │ event_bytes: Vec<u8> │ ├──────────────────────────────────┤ │ Entry 2 ... │ ├──────────────────────────────────┤ │ ... │ ├──────────────────────────────────┤ │ Footer (binary) │ │ total_messages: u64 │ │ total_bytes: u64 │ └──────────────────────────────────┘

在 libraries/recording/src/lib.rs 中可以找到更精确的实现事实:

  • 文件以 8 字节魔数DORAREC\x00开头,footer 以DORAEND\x00开头;
  • 当前格式版本FORMAT_VERSION = 2:容器框架(header、每条记录长度、footer)是手写的小端序字段,而event_bytes内部是Timestamped<InterDaemonEvent>的 postcard 序列化负载——与 daemon 之间在线上传输的格式完全相同;
  • 1.0 之前的录制使用 bincode 编码event_bytes且版本号为 1,本版本会直接拒绝打开(read_header会报 "recording format version 1 is no longer supported" 并提示用当前版本重新录制);
  • 单条记录或描述符 YAML 上限 64 MiB(MAX_RECORD_BYTES),防止用伪造的u32::MAX长度字段触发内存耗尽;
  • 读取器对截断文件宽容:崩溃或 Ctrl-C 留下的"只有长度前缀、没有完整记录体"的尾部记录会被优雅跳过,已完整写入的记录仍然全部可重放;
  • 头部的descriptor_yaml保存原始数据流描述符,重放时据此重建数据流。

节点管理

节点信息(Node Info)

获取单个节点的详细信息,包括状态、输入、输出、指标与重启次数:

dora node info -d my-dataflow camera # JSON 输出 dora node info -d my-dataflow camera --format json

节点重启(Node Restart)

无需停止整个数据流即可重启单个节点,适合恢复异常节点或应用配置变更:

# 使用默认宽限期重启 dora node restart -d my-dataflow camera # 使用自定义宽限期重启 dora node restart -d my-dataflow camera --grace 10s

实现上,daemon 先发送停止事件,等待宽限期结束,再重新拉起节点进程。

节点停止(Node Stop)

停止单个节点而不停止整个数据流:

dora node stop -d my-dataflow camera # 自定义宽限期 dora node stop -d my-dataflow camera --grace 5s

主题检查(Topic Inspection)

主题检查命令通过 coordinator 的 WebSocket 代理订阅运行中的数据流消息。需要--debug标志或enable_debug_inspection: true

主题数据通道的底层机制(详见 docs/websocket-topic-data-channel.md):coordinator 代表 CLI 订阅 Zenoh 主题dora/{dataflow_id}/{node_id}/{data_id},把每条Timestamped<InterDaemonEvent>(postcard 序列化)原样加上 16 字节订阅 UUID 前缀后,以二进制帧推给 CLI。订阅握手携带protocol_version(当前为 2),防止 bincode 时代的旧客户端误解析新帧。通道容量 64,满了即丢弃以保新鲜度——高吞吐主题在慢速 WebSocket 上可能出现丢帧,表现为topic hz频率偏低但不会卡死。

列出主题(Listing Topics)

# 列出运行中数据流的所有主题 dora topic list -d my-dataflow # JSON 输出 dora topic list -d my-dataflow --format json

显示每个输出、由哪个节点发布、哪些节点订阅。该命令只读描述符,不需要enable_debug_inspection

回显主题数据(Echoing Topic Data)

将实时主题数据流式输出到终端:

# 回显单个主题 dora topic echo -d my-dataflow camera_node/image # 回显多个主题 dora topic echo -d my-dataflow robot1/pose robot2/vel # JSON 输出(便于管道给 jq 等工具) dora topic echo -d my-dataflow robot1/pose --format json # 回显所有主题 dora topic echo -d my-dataflow

每行显示主题名、Arrow 数据内容与元数据参数。--format json输出机器可读:

{"timestamp":1709000000000,"name":"robot1/pose","data":[1.0,2.0,3.0],"metadata":null}

测量频率(Measuring Frequency)

交互式 TUI,展示每个主题的发布频率:

# 所有主题,10 秒滑动窗口 dora topic hz -d my-dataflow --window 10 # 指定主题,5 秒窗口 dora topic hz -d my-dataflow robot1/pose robot2/vel --window 5

TUI 显示:

  • 平均频率(Hz)
  • 平均、最小、最大间隔
  • 标准差
  • 展示近期活跃度的迷你走势图

q或 Ctrl-C 退出。需要交互式终端。

发布测试数据(Publishing Test Data)

向运行中的数据流注入数据以进行测试。需要enable_debug_inspection: true

# 发布单个 Arrow 数组 dora topic pub -d my-dataflow sensor/threshold '[42]' # 从 JSON 文件发布 dora topic pub -d my-dataflow sensor/config --file test-config.json # 发布多条消息 dora topic pub -d my-dataflow sensor/trigger '[1]' --count 10

适用场景:

  • 用已知输入数据测试节点行为;
  • 触发下游节点的特定代码路径;
  • 在没有硬件的情况下模拟传感器输入。

主题元数据与统计(Topic Metadata and Stats)

一次性统计采集:

# 采集 5 秒统计(默认) dora topic info -d my-dataflow camera_node/image # 采集 10 秒 dora topic info -d my-dataflow camera_node/image --duration 10

报告内容:

  • Arrow 数据类型
  • 发布节点
  • 订阅节点(来自描述符)
  • 消息数量与带宽
  • 发布频率

运行时参数(Runtime Parameters)

运行时参数允许你在数据流运行期间读取和修改节点配置,无需重启。参数存储在 coordinator 中,并可转发给运行中的节点。

# 列出节点的所有参数 dora param list -d my-dataflow detector # 获取单个参数 dora param get -d my-dataflow detector confidence # 设置参数(值为 JSON) dora param set -d my-dataflow detector confidence 0.8 dora param set -d my-dataflow detector config '{"nms": 0.5, "classes": ["car", "person"]}' # 删除参数 dora param delete -d my-dataflow detector confidence

参数持久化在 coordinator 存储中(内存实现或 redb 后端,见 libraries/coordinator-store/src/lib.rs 的InMemoryStore与可选redb-backendfeature)。节点运行中时,param set还会把新值转发给节点的 daemon。节点可以通过节点事件流读取参数。

限制:键最长 256 字节,序列化后的值最大 64 KB。


环境诊断(dora doctor)

dora doctor对运行环境做全面健康检查:

# 基础诊断 dora doctor # 诊断 + 数据流校验 dora doctor --dataflow dataflow.yml

执行的检查项:

  1. 共享内存权限(仅 Linux——校验/dev/shm是否为1777模式,保证零拷贝 IPC 可用);
  2. uv是否可用(dora build --uv与管理式 Python 环境流程需要);
  3. coordinator 可达性;
  4. 已连接的 daemon 状态;
  5. 活跃数据流健康度;
  6. 数据流 YAML 校验(若提供--dataflow)。

排查任何问题时都应先用它,也可以在 CI 中用它验证测试前的环境。


追踪检查(Trace Inspection)

coordinator 在内存中捕获dora_coordinatordora_corecrate 产生的追踪 span(环形缓冲,最多 4096 个 span)。无需任何外部追踪基础设施(不需要 Jaeger、Tempo 等)即可查看这些追踪。

列出追踪

dora trace list

显示所有已捕获追踪的根 span 名、span 数量、开始时间与总耗时:

TRACE ID ROOT SPAN SPANS STARTED DURATION a1b2c3d4e5f6 spawn_dataflow 12 2026-03-01 10:30:05 1.234s f8e7d6c5b4a3 build_dataflow 5 2026-03-01 10:29:58 0.500s

查看追踪

# 完整追踪 ID dora trace view a1b2c3d4-e5f6-7890-abcd-1234567890ab # 或使用唯一前缀 dora trace view a1b2c3d4

以缩进树展示 span 的父子关系、日志级别、耗时与 span 字段:

spawn_dataflow [INFO 1.234s] {build_id="abc", session_id="def"} build_dataflow [INFO 0.500s] download_node [DEBUG 0.200s] {url="..."} start_inner [INFO 0.734s] spawn_node [INFO 0.100s] {node_id="camera"} spawn_node [INFO 0.080s] {node_id="detector"}

何时使用追踪检查

  • 快速调试——不搭 Jaeger/Tempo 就能看到 coordinator 在startstopbuild期间做了什么;
  • 性能分析——定位数据流生命周期操作中的慢 span;
  • 部署排障——理解 coordinator 操作的顺序与耗时。

若需要跨 daemon 与节点的全链路分布式追踪,可设置DORA_OTLP_ENDPOINT并接入 OTLP 兼容后端。


资源监控(dora top)

dora top(别名dora inspect top)提供逐节点的实时资源占用 TUI:

# 默认 2 秒刷新 dora top # 自定义刷新间隔 dora top --refresh-interval 5 # JSON 快照(用于脚本/CI) dora top --once | jq .

每个节点显示:

  • CPU 使用率(单核百分比)
  • 内存(RSS)
  • 节点状态(Running、Restarting、Degraded、Failed)
  • 重启次数
  • 队列深度(待处理消息数)
  • 网络 TX/RX(经 Zenoh 的跨 daemon 字节数)
  • 磁盘 I/O 读/写

指标由 daemon 采集并上报 coordinator,因此对跨多机的分布式数据流同样有效。按q或 Ctrl-C 退出。

--once打印单次 JSON 快照后退出,适合 CI 流水线与监控集成。

注意事项:CPU 百分比按核计算,多线程节点可能超过 100%;不同机器上的节点 CPU 不同,百分比不可跨机直接比较。


日志分析(Log Analysis)

实时日志流

# 流式查看指定节点日志 dora logs my-dataflow --node sensor-node --follow # 流式查看所有节点日志 dora logs my-dataflow --all-nodes --follow # 按日志级别过滤 dora logs my-dataflow --node sensor-node --follow --level debug # 结合 grep 过滤 dora logs my-dataflow --all-nodes --follow --grep "error"

不带--follow时读取本地日志文件;带--follow时通过 WebSocket 从 coordinator 实时流式获取。

本地日志文件

日志存储在out/目录:

out/ <dataflow-uuid>/ log_<node-id>.jsonl # 当前日志 log_<node-id>.1.jsonl # 轮转(上一份) log_<node-id>.2.jsonl # 轮转(更早)

直接读取:

# 所有节点,读本地文件 dora logs --local --all-nodes # 指定节点,最后 50 行 dora logs --local --node sensor-node --tail 50

过滤与搜索

参数示例说明
--level <LEVEL>--level debug最低级别:error、warn、info、debug、trace、stdout
--log-filter <FILTER>--log-filter "sensor=debug,processor=warn"按节点设置级别过滤
--grep <PATTERN>--grep "timeout"大小写不敏感的子串匹配
--since <DURATION>--since 5m只看该时间之后的新日志
--until <DURATION>--until 1h只看该时间之前的旧日志
--tail <N>--tail 100显示最后 N 行
--log-format <FMT>--log-format json输出格式:pretty(默认)或 json

环境变量:

  • DORA_LOG_LEVEL——默认日志级别
  • DORA_LOG_FORMAT——默认日志格式
  • DORA_LOG_FILTER——默认按节点过滤规则

数据流可视化(Dataflow Visualization)

生成数据流的可视化图:

# 生成 HTML 并在浏览器打开 dora graph dataflow.yml --open # 生成 Mermaid 图文本 dora graph dataflow.yml --mermaid

Mermaid 输出可以粘贴到 mermaid.live 或用于 GitHub Markdown:

HTML 模式生成一个自包含的交互式 mermaid.js 图文件。


监控运行中的数据流

# 完整环境诊断 dora doctor # 列出所有数据流(活跃与已结束) dora list # 从列表清除已结束/失败条目(保持 coordinator 运行) dora clean # 列出指定数据流中的节点 dora node list -d my-dataflow # 获取指定节点的详细信息 dora node info -d my-dataflow camera # 检查 coordinator/daemon 状态 dora status # 查看/修改运行时参数 dora param list -d my-dataflow detector dora param set -d my-dataflow detector threshold 0.5

dora list显示每个数据流的 UUID、名称、状态与节点数。其他命令用-d <name>指定目标数据流。当列表被历史运行产生的已完成/失败条目塞满时,dora clean可以在不重启 coordinator 的情况下清除它们——注意,清理后dora logs <uuid>将无法再用于这些数据流。


端到端调试工作流

工作流 1:节点不产生输出

# 1. 确认节点在运行 dora list dora top # 2. 查看其日志 dora logs my-dataflow --node problem-node --follow --level trace # 3. 检查上游节点是否在发布 dora topic echo -d my-dataflow upstream-node/output # 4. 核对主题接线 dora topic list -d my-dataflow dora graph dataflow.yml --open

工作流 2:数据异常或数值错误

# 1. 回显主题查看原始数据 dora topic echo -d my-dataflow node/output --format json # 2. 录制用于离线分析 dora record dataflow.yml -o debug.drec # 3. 用已知输入重放以隔离问题 dora replay debug.drec --replace sensor --speed 0

工作流 3:性能问题

# 1. 检查各节点 CPU/内存 dora top # 2. 测量发布频率 dora topic hz -d my-dataflow --window 10 # 3. 获取可疑瓶颈的带宽统计 dora topic info -d my-dataflow heavy-node/output --duration 10 # 4. 录制并以最大速度重放,寻找吞吐上限 dora record dataflow.yml -o perf.drec dora replay perf.drec --speed 0

工作流 4:复现现场问题

# 在机器人/目标机器上: dora start dataflow.yml --detach dora record dataflow.yml --proxy -o field-capture.drec # 把 .drec 文件拷到工作站后: dora replay field-capture.drec dora replay field-capture.drec --speed 0.5 # 慢动作回放 dora replay field-capture.drec --loop # 连续回放

工作流 5:远程调试(无法直连)

当只有 coordinator 的 WebSocket 连通性时:

# 以下命令全部走 WebSocket——无需 Zenoh dora list dora top dora logs my-dataflow --all-nodes --follow dora topic echo -d my-dataflow node/output dora topic hz -d my-dataflow dora record dataflow.yml --proxy -o remote-capture.drec

进一步阅读

  • CLI 命令参考——完整命令参考
  • WebSocket 控制面——CLI 如何与 coordinator 通信
  • WebSocket 主题数据通道——主题数据如何被代理转发
  • 测试指南——如何运行冒烟测试
  • 数据流 YAML 规范——描述符中debug字段等配置项的完整定义
  • 仓库中的调试相关实现与测试:binaries/cli/src/command/record.rsbinaries/replay-node/src/main.rsbinaries/record-node/src/main.rslibraries/recording/src/lib.rsbinaries/coordinator/src/ws_control.rs

【免费下载链接】doraDORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed dataflow capabilities. Applications are modeled as directed graphs, also referred to as pipelines.项目地址: https://gitcode.com/GitHub_Trending/do/dora

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询