1.什么是 Cyber RT?

  • 组件机制(Component对算法模块进行封装)
  • 通信机制(Node节点,Reader/Writer)

  • 插件(cyber_recorder/cyber_monitor)

2.MQTT协议

  • 应用层协议
    • 相比与HTTP协议
      • 轻量级与低开销,适合资源受限的设备,如传感器(报文头部较小,包含报文类型+服务质量QoS)
      • 通信模式不同: MQTT(长连接)是发布/订阅;HTTP是请求/响应
    • 发布/订阅模型(Pub/Sub)
      • 发布者(Publisher):向某主题(Topic)发送消息。
      • 订阅者(Subscriber):订阅某主题,接收相关消息。
      • 代理(Broker):中间人,负责接收、过滤和转发消息。
    • 支持不同服务质量(QoS)等级
      • QoS 0:消息最多发送一次,发布者发送后不关心是否成功送达。(消息可能丢失)
      • QoS 1:保证消息至少送达一次,但可能重复(可能重复)。
      • QoS 2:确保消息 不丢失、不重复,传递“正好一次”(确保不重复也不丢失)。

3.发布/订阅与请求/响应的区别

  • 请求/响应: 客户端主动发起请求,服务器接收并返回响应。

    • 同步性:请求发出后等待结果,典型例子是 HTTP。
    • 一对一通信:请求方和响应方直接通信。
    • 短连接/无状态:HTTP 通常是一次性事务
  • 发布/订阅: 消息生产者(Publisher)发布消息到某个“主题”(Topic),消息消费者(Subscriber)只要订阅了该主题,就能收到消息。

    • 异步性:发布者不关心谁在接收,订阅者也不直接请求。
    • 一对多通信:一个消息可被多个订阅者接收。
    • 解耦:发布者与订阅者不直接耦合,通过 消息中间件/Broker 转发。

4.MQTT的broker对消息的转发

  • 存储消息:
    • QoS > 0: Broker 会临时缓存消息直到确认完成
    • QoS 0: 立即转发给匹配的订阅者,不做确认,也不缓存

注:若订阅者 QoS < 发布者 QoS,则以 订阅者 QoS 为准

  • 主题匹配: Broker 维护一个 订阅表,记录哪些客户端订阅了哪些主题。

5.介绍一下cyber::Reader

  • 订阅消息通道: 每个消息在 Cyber RT 中通过 Channel传递,Reader 就是某个模块用来“订阅”消息的对象。

  • 解码消息内容:底层消息通常用 Protobuf 定义格式。Reader 能自动解析收到的二进制流,转成对应的 Protobuf 对象。

  • 触发回调: 当有新消息到来时,Reader 会执行用户注册的回调函数。

    注:Reader也提供主动轮询来获取消息的方法。

6.时间线为什么要用protobuf定义?

  • 相比与Json,解析速度更快,相比于文本,不用手写解析器
  • 可以实现二进制与文本的无缝切换
  • 相比于json更加安全,会进行数据类型检查
  • Cyber RT 的消息机制就是基于 Protobuf 的,统一格式能直接借用已有工具链(Writer/Reader、日志工具等)

7.RTPS协议

Cyber RT借助 RTPS 作为底层消息传输机制来实现跨进程、跨机器的分布式通信。

工作流程:

  • 节点启动:Cyber RT 节点 → 创建 RTPS Participant

  • 自动发现:通过多播广播 → 发现同一 Domain 的其他 Participant

  • Endpoint 注册:Writer 和 Reader 通告自己 → 建立 Topic 映射

  • 数据传输:Writer 发送 DATA → Reader 接收 → 可根据 QoS 确保可靠性。

  • 心跳与重传:Writer 周期发送 HEARTBEAT → Reader 若发现丢包,回复 ACKNACK → Writer 重传。

RTPS协议和MQTT协议的区别:RTPS 更适合本地局域网内的实时分布式通信,而 MQTT 更适合跨互联网的轻量级物联网应用。

image-20250827235934872

注:RTPS协议可以通过缓存来实现可靠性:

  • Writer 侧缓存 = 便于重传(数据丢包时能重新发)。

  • Reader 侧缓存 = 防止上层应用消费不及时时丢失数据。

8.视频压缩

压缩的原始数据采用YUV格式:

  • Y亮度(人眼对亮度比颜色更敏感,所以 Y 分量保留较高分辨率)

  • UV: 色度(人眼对颜色细节不如亮度敏感,所以 U、V 分量可以降低分辨率(采样),常见的有 4:2:0、4:2:2、4:4:4。)

    image-20250828002736224

视频压缩原理:

  • 空间冗余:相邻像素之间存在相关性
  • 时间冗余:前后帧图像之间存在相关性
  • 视觉冗余:人眼对于某些细节不敏感(有损压缩)
  • 编码冗余:哈夫曼编码(出现次数多的像素,用少的位数来编码)

解码顺序:I、P、B

显示顺序:I、B、P

注:B帧位于I帧和P帧之间会延迟编码

GOP: 两个 I 帧之间的帧数。

GOP 间隔大(I帧少)的影响

  • 压缩率更高

    • I帧体积大,占用码率多。
    • 减少 I 帧 → 更多 P/B 帧 → 平均码率下降 → 更高压缩比。
  • 随机访问不方便

    • 视频播放器需要从 I 帧开始解码。
    • GOP 太长 → 跳转到任意时间点时,必须先找到最近 I 帧 → 延迟增加。
  • 误差累积

    • P/B 帧是基于前帧预测的。
    • GOP 太长 → 预测链条长 → 误差容易累积 → 视频容易出现马赛克或画质下降。
    • 特别在网络传输丢包时,长 GOP 更容易造成严重图像损坏。
  • GOP 太长 → P/B 帧依赖链长 → 解码延迟大

image-20250828005020163