1. 课程导入
在自动驾驶与机器人系统的研发过程中,车辆或机器人每天都会产生海量的运行数据。这些数据既包含传感器原始输入,也包含规划控制指令、系统状态与故障信息。如何把这些数据完整地"录下来"、稳定地"放回去"、并从中"挖出"有价值的信息,是每一个工程团队都必须解决的核心问题。Cyber RT 作为面向自动驾驶场景的高性能运行时框架,提供了一套完整的记录(Record)与回放(Replay)机制,配合数据分析工具链,构成了研发闭环中不可或缺的一环。
本课程的目标,是带领大家从零建立"记录—回放—分析"的完整工程能力。学完本课程后,你应当能够:理解 Cyber RT 记录文件的结构与通道模型;熟练使用录制与回放命令完成数据采集与复现;掌握基于记录数据的离线调试、算法回归与性能评估方法;并能够搭建一套可复用的数据分析流水线。
核心概念:通道、记录文件与回放
Cyber RT 的数据流转围绕"通道(Channel)"展开。每个通道对应一类消息,例如激光雷达点云、摄像头图像、底盘状态或规划轨迹。节点通过 Reader/Writer 在通道上收发消息,而记录模块则像一个"旁路监听器",把指定通道上的消息按时间顺序写入记录文件。
记录文件本质上是一个按时间戳组织的事件序列,每个事件包含通道名、消息类型、时间戳和序列化后的消息体。回放时,系统按照原始时间戳重新发布这些消息,使下游节点仿佛"重新经历"了一遍当时的运行过程。这种"时间可重放"的特性,是离线调试与算法回归的基础。
三个关键概念:
- 录制(Record):将实时通道消息持久化为记录文件,强调完整性与低侵入性。
- 回放(Replay):按原始时间轴重新发布消息,强调时序保真与可控速率。
- 分析(Analysis):对记录数据进行解析、统计、可视化与对比,强调可量化与可复现。
整体框架:从数据采集到分析闭环
下图展示了 Cyber RT 记录回放与数据分析工程的整体框架。左侧是数据产生与录制,中间是记录文件与回放引擎,右侧是分析与应用。理解这张图,就理解了本课程的主线。
典型应用场景
记录回放与分析能力在实际工程中有着广泛的应用。下面通过一个表格梳理常见场景、对应手段与关注指标。
| 应用场景 | 主要手段 | 关注指标 |
|---|---|---|
| 路测问题复现 | 录制原始数据,回放至算法节点 | 时序一致性、消息完整性 |
| 算法版本回归 | 同一记录文件回放不同版本 | 轨迹偏差、成功率、误报率 |
| 系统性能分析 | 统计通道频率与处理时延 | 丢帧率、端到端时延 |
| 场景数据挖掘 | 批量解析记录,筛选关键片段 | 场景覆盖率、样本均衡性 |
| 仿真回灌测试 | 回放数据注入仿真环境 | 闭环稳定性、接管次数 |
方法流程:一次完整的记录回放分析
为了让抽象概念落地,我们用一个最小可运行的流程串起整条链路。假设你已经有一个可用的 Cyber RT 环境。
# 1. 查看当前系统中的通道
cyber_channel list
# 2. 录制指定通道到记录文件
cyber_recorder record -c /lidar/front /camera/front /chassis/status -o demo.record
# 3. 查看记录文件信息
cyber_recorder info demo.record
# 4. 按原始速率回放
cyber_recorder play -f demo.record
# 5. 以 2 倍速回放并循环
cyber_recorder play -f demo.record -r 2 -l
录制完成后,记录文件就是一份"可反复使用的实验样本"。你可以把它交给算法同学复现问题,也可以交给测试同学做回归,还可以交给数据同学做统计分析。这正是记录回放工程的价值所在:把一次性的路测,变成可复用的数据资产。
实践建议:录制时尽量明确通道清单,避免全量录制导致文件过大;回放前先用 cyber_recorder info 确认通道与时间范围,避免"放了半天没数据"。
常见误区与复盘
初学者在接触记录回放时,容易陷入几个典型误区,提前了解可以少走弯路。
- 误区一:认为回放就是简单重发。实际上回放涉及时间轴重建、消息顺序保证和速率控制,时序错乱会直接导致算法行为异常。
- 误区二:录制时通道越多越好。无关通道会显著增大文件体积,拖慢回放与分析效率,应按需选择。
- 误区三:忽略消息类型与版本兼容。记录文件中的消息结构若与当前代码不一致,回放会解析失败,需保持接口版本一致。
- 误区四:只回放不分析。回放只是手段,真正的价值在于通过分析得到可量化的结论并驱动迭代。
注意:记录文件往往包含真实道路数据,涉及隐私与合规问题。在存储、传输和共享时,应遵守团队与法规的数据管理要求。