远程实时操控技术详解
远程实时操控(Teleoperation / 遥操)要求 低延迟音视频 与 高频控制指令 在弱网、多网切换下仍可靠同步。工业场景(Robotaxi 接管、工程机械、具身智能数采)与消费级 RTC(会议、直播)需求不同:需要 帧级音视频-控制对齐 、多路视频 、多网融合 ,以及 接管权限、审计与合规。下文从架构、时延口径、TRRO 技术栈、厂商选型、接管流程、POC 验收到自研路径一并梳理。
速览
- 链路:现场 Device SDK → 云端接入/转发 → 远端 Controller SDK。
- 测什么 :分清 G2G 端到端 、视频处理段 、控制环 ;验收靠 POC 实测,不单靠宣传数字。
- TRRO :SDK + 云管端;MQTT 信令 + WebRTC 媒体 + 独立控制通道;Multipath、SFU 只转发。
- 火山路线 :RTC 音视频 + RTS 信令自建 + 自研设备管理。
- 自研:LiveKit/WHIP 适合原型;工业级要补 Multipath、治理与 POC 清单。
目录
- [1. 遥操系统通用架构](#1. 遥操系统通用架构)
- [2. 时延口径、100Hz 与帧级对齐](#2. 时延口径、100Hz 与帧级对齐)
- [3. 腾讯云 TRRO 产品与指标](#3. 腾讯云 TRRO 产品与指标)
- [4. TRRO 技术栈分层](#4. TRRO 技术栈分层)
- [5. TRRO 与 TRTC 的关系](#5. TRRO 与 TRTC 的关系)
- [6. 自研 UDP 引擎 vs 开源 WebRTC](#6. 自研 UDP 引擎 vs 开源 WebRTC)
- [7. 火山 RTC、RTS 与 TRRO](#7. 火山 RTC、RTS 与 TRRO)
- [8. 国内外其他方案速览](#8. 国内外其他方案速览)
- [9. TRRO / Soliton / Voysys 细对比](#9. TRRO / Soliton / Voysys 细对比)
- [10. AIRTC 与清流鼎点公开案例](#10. AIRTC 与清流鼎点公开案例)
- [11. 基于 LiveKit、WHIP 等开源自研](#11. 基于 LiveKit、WHIP 等开源自研)
- [12. 接管流程与安全治理](#12. 接管流程与安全治理)
- [13. POC 验收清单](#13. POC 验收清单)
- [14. 选型决策树](#14. 选型决策树)
- [15. 合规、部署与数据驻留](#15. 合规、部署与数据驻留)
- [16. 延伸阅读](#16. 延伸阅读)
1. 遥操系统通用架构
#mermaid-svg-jbcK5Av1z3qFU5Iv{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-jbcK5Av1z3qFU5Iv .error-icon{fill:#552222;}#mermaid-svg-jbcK5Av1z3qFU5Iv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jbcK5Av1z3qFU5Iv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .marker.cross{stroke:#333333;}#mermaid-svg-jbcK5Av1z3qFU5Iv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jbcK5Av1z3qFU5Iv p{margin:0;}#mermaid-svg-jbcK5Av1z3qFU5Iv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .cluster-label text{fill:#333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .cluster-label span{color:#333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .cluster-label span p{background-color:transparent;}#mermaid-svg-jbcK5Av1z3qFU5Iv .label text,#mermaid-svg-jbcK5Av1z3qFU5Iv span{fill:#333;color:#333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .node rect,#mermaid-svg-jbcK5Av1z3qFU5Iv .node circle,#mermaid-svg-jbcK5Av1z3qFU5Iv .node ellipse,#mermaid-svg-jbcK5Av1z3qFU5Iv .node polygon,#mermaid-svg-jbcK5Av1z3qFU5Iv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jbcK5Av1z3qFU5Iv .rough-node .label text,#mermaid-svg-jbcK5Av1z3qFU5Iv .node .label text,#mermaid-svg-jbcK5Av1z3qFU5Iv .image-shape .label,#mermaid-svg-jbcK5Av1z3qFU5Iv .icon-shape .label{text-anchor:middle;}#mermaid-svg-jbcK5Av1z3qFU5Iv .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-jbcK5Av1z3qFU5Iv .rough-node .label,#mermaid-svg-jbcK5Av1z3qFU5Iv .node .label,#mermaid-svg-jbcK5Av1z3qFU5Iv .image-shape .label,#mermaid-svg-jbcK5Av1z3qFU5Iv .icon-shape .label{text-align:center;}#mermaid-svg-jbcK5Av1z3qFU5Iv .node.clickable{cursor:pointer;}#mermaid-svg-jbcK5Av1z3qFU5Iv .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .arrowheadPath{fill:#333333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jbcK5Av1z3qFU5Iv .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jbcK5Av1z3qFU5Iv .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-jbcK5Av1z3qFU5Iv .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jbcK5Av1z3qFU5Iv .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-jbcK5Av1z3qFU5Iv .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jbcK5Av1z3qFU5Iv .cluster text{fill:#333;}#mermaid-svg-jbcK5Av1z3qFU5Iv .cluster span{color:#333;}#mermaid-svg-jbcK5Av1z3qFU5Iv div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jbcK5Av1z3qFU5Iv .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-jbcK5Av1z3qFU5Iv rect.text{fill:none;stroke-width:0;}#mermaid-svg-jbcK5Av1z3qFU5Iv .icon-shape,#mermaid-svg-jbcK5Av1z3qFU5Iv .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jbcK5Av1z3qFU5Iv .icon-shape p,#mermaid-svg-jbcK5Av1z3qFU5Iv .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-jbcK5Av1z3qFU5Iv .icon-shape .label rect,#mermaid-svg-jbcK5Av1z3qFU5Iv .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jbcK5Av1z3qFU5Iv .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-jbcK5Av1z3qFU5Iv .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-jbcK5Av1z3qFU5Iv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 远端操控端
云端
现场设备端
控制 UDP
摄像头 N 路
控制器 / CAN / 杆量
Device SDK
接入鉴权
媒体转发 SFU
旁路录制 / 推 CDN
多网融合网关
Controller SDK
PC / VR / 手机
| 能力块 |
遥操刚需 |
普通会议 RTC 常见做法 |
| 视频 |
多路(挖机/环视可达 8 路)、弱网带宽分配 |
单人/少路、混流美颜 |
| 控制 |
独立高频通道 、与视频 时间戳对齐 |
无专用通道或 DataChannel 自建 |
| 网络 |
多 5G/4G/WiFi 融合 ,切换 <50ms 量级 |
单链路,断网即断会话 |
| 后台 |
设备生命周期、接管仲裁、审计、旁路录制 |
房间/用户管理为主 |
2. 时延口径、100Hz 与帧级对齐
2.1 时延术语(勿混用)
| 术语 |
含义 |
常见测法 |
| Glass-to-glass(G2G) |
现场物理变化 → 操控端屏幕可见 |
高帧率测试图案 + 光电传感器或屏上时间戳 |
| 视频处理时延 |
采集→编码→发送前的 处理段(非全程) |
厂商内部 profile;TRRO 公开 <30ms 多指此段 |
| 端到端画面时延 |
含网络 + 解码 + 渲染的 单向视觉延迟 |
与 RTT 不同;产品页常按网络距离分级 |
| 控制环延迟 |
杆量/指令发出 → 车端/机器人 执行或状态回显 |
与视频分开测 |
| VCCT / RCCT(TRRO SDK) |
视频控制闭环 / 控制信道 往返 时延 |
TRRO_onAllLatencyReport 的 latency2、rcct;详见 TRRO SDK 剖析 §4.3 |
| RTT |
往返时延 |
不等同于操控员看到的画面延迟 |
为何会出现「同城 50ms」与「5G 专网 100ms」并存? 不同材料可能分别强调 处理段 + 短距离链路 与 完整 G2G(含公网 RTT/2、解码渲染) 。采购与 POC 应要求厂商写明 测量定义、网络条件、路数、分辨率码率。
2.2 五段时延预算(工程拆解)
#mermaid-svg-bFqluAYHDrrjDXFw{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bFqluAYHDrrjDXFw .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bFqluAYHDrrjDXFw .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bFqluAYHDrrjDXFw .error-icon{fill:#552222;}#mermaid-svg-bFqluAYHDrrjDXFw .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bFqluAYHDrrjDXFw .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bFqluAYHDrrjDXFw .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bFqluAYHDrrjDXFw .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bFqluAYHDrrjDXFw .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bFqluAYHDrrjDXFw .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bFqluAYHDrrjDXFw .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bFqluAYHDrrjDXFw .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bFqluAYHDrrjDXFw .marker.cross{stroke:#333333;}#mermaid-svg-bFqluAYHDrrjDXFw svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bFqluAYHDrrjDXFw p{margin:0;}#mermaid-svg-bFqluAYHDrrjDXFw .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bFqluAYHDrrjDXFw .cluster-label text{fill:#333;}#mermaid-svg-bFqluAYHDrrjDXFw .cluster-label span{color:#333;}#mermaid-svg-bFqluAYHDrrjDXFw .cluster-label span p{background-color:transparent;}#mermaid-svg-bFqluAYHDrrjDXFw .label text,#mermaid-svg-bFqluAYHDrrjDXFw span{fill:#333;color:#333;}#mermaid-svg-bFqluAYHDrrjDXFw .node rect,#mermaid-svg-bFqluAYHDrrjDXFw .node circle,#mermaid-svg-bFqluAYHDrrjDXFw .node ellipse,#mermaid-svg-bFqluAYHDrrjDXFw .node polygon,#mermaid-svg-bFqluAYHDrrjDXFw .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bFqluAYHDrrjDXFw .rough-node .label text,#mermaid-svg-bFqluAYHDrrjDXFw .node .label text,#mermaid-svg-bFqluAYHDrrjDXFw .image-shape .label,#mermaid-svg-bFqluAYHDrrjDXFw .icon-shape .label{text-anchor:middle;}#mermaid-svg-bFqluAYHDrrjDXFw .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bFqluAYHDrrjDXFw .rough-node .label,#mermaid-svg-bFqluAYHDrrjDXFw .node .label,#mermaid-svg-bFqluAYHDrrjDXFw .image-shape .label,#mermaid-svg-bFqluAYHDrrjDXFw .icon-shape .label{text-align:center;}#mermaid-svg-bFqluAYHDrrjDXFw .node.clickable{cursor:pointer;}#mermaid-svg-bFqluAYHDrrjDXFw .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bFqluAYHDrrjDXFw .arrowheadPath{fill:#333333;}#mermaid-svg-bFqluAYHDrrjDXFw .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bFqluAYHDrrjDXFw .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bFqluAYHDrrjDXFw .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bFqluAYHDrrjDXFw .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bFqluAYHDrrjDXFw .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bFqluAYHDrrjDXFw .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bFqluAYHDrrjDXFw .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bFqluAYHDrrjDXFw .cluster text{fill:#333;}#mermaid-svg-bFqluAYHDrrjDXFw .cluster span{color:#333;}#mermaid-svg-bFqluAYHDrrjDXFw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bFqluAYHDrrjDXFw .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bFqluAYHDrrjDXFw rect.text{fill:none;stroke-width:0;}#mermaid-svg-bFqluAYHDrrjDXFw .icon-shape,#mermaid-svg-bFqluAYHDrrjDXFw .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bFqluAYHDrrjDXFw .icon-shape p,#mermaid-svg-bFqluAYHDrrjDXFw .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bFqluAYHDrrjDXFw .icon-shape .label rect,#mermaid-svg-bFqluAYHDrrjDXFw .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bFqluAYHDrrjDXFw .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bFqluAYHDrrjDXFw .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bFqluAYHDrrjDXFw :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 采集
编码
网络传输
解码
渲染显示
| 阶段 |
主要内容 |
遥操优化要点 |
| 采集 |
相机曝光、CSI/USB 取流 |
全局快门、短曝光;车端硬编前尽量减少缓冲 |
| 编码 |
H.264/H.265/AV1、GOP |
短 GOP(如 ≤15~30 帧);硬件编码 NVENC/OMX |
| 网络 |
上行 + 云转发 + 下行 |
Multipath、FEC、浅队列;SFU 不混流 |
| 解码 |
硬解/软解 |
操控端优先硬解、零拷贝渲染 |
| 渲染 |
显示合成 |
浏览器 DOM 合成会增加延迟;原生/全屏更低 |
TRRO 等方案把 处理段压到 <30ms 、5G 专网 G2G ~100ms ,本质是五段 同时 收紧,而非只优化其中一段。
2.3 「100Hz 控制」指什么
| 层次 |
说明 |
| 通道能力(厂商宣传) |
SDK/云端 最高约 100Hz 发送/同步遥操数据(如 TRRO) |
| 网络可达 |
弱网、拥塞时 实际频率下降;与视频 FEC 抢带宽 |
| 车端/机器人执行 |
底盘/关节控制环可能 10~50Hz;安全限速、滤波会再降 |
| 人机操控 |
人手/摇杆有效带宽通常 远低于 100Hz |
结论:100Hz 是传输通道上限 ,不是「操控员每一帧指令都被执行」。验收应写清 发送频率、到达率、执行延迟 各自指标。
2.4 帧级对齐(VLA / 具身数采)
数采训练需要:某一视频帧 对应 哪一时刻的关节/杆量/末端位姿。
| 要点 |
实践 |
| 统一时钟 |
单调时钟 / PTP;避免仅依赖各端 System.currentTimeMillis() |
| 打标位置 |
采集端、编码前或 SDK 内 统一 time_base ;旁路录制带 相同时间戳域 |
| 导出格式 |
视频 MP4 + 控制 JSON/Protobuf/Parquet;或厂商 对齐录制包 |
| ROS / ROS2 |
常见路径:/camera/image + /joint_states → message_filters 时间同步 → rosbag2;云端 TRRO 旁路文件需 再映射到 ROS 时间 或训练管线直接消费带戳二进制 |
| 验收 |
随机抽帧核对:帧 PTS 与控制序列 最大偏差 < 阈值(如 20~50ms,业务自定) |
3. 腾讯云 TRRO 产品与指标
TRRO (Tencent Remote Real-Time Operation,亦称「实时互动-工业能源版」)面向 具身智能、L3/L4 接管、工程机械、物流/清扫机器人运维 ,提供 设备端 + 操控端 SDK + 云端 的「遥操 + 采集 + 存储」闭环。
3.1 典型场景
| 场景 |
痛点 |
TRRO 侧能力 |
| 具身智能跨域数采 |
视频与遥操时间戳难对齐 |
高频录制、帧级对齐 |
| Robotaxi 远程接管 |
单网不稳定 |
多 5G/4G 融合 |
| 远程挖掘机 |
弱网、多路视频 |
最高 8 路、弱网优化 |
| 物流/清扫机器人运维 |
低成本监控+远控 |
多 4G 融合 |
3.2 硬核指标(公开口径对照)
| 指标 |
公开口径(摘要) |
备注 |
| 核心视频处理时延 |
<30ms |
非 全程 G2G |
| 端到端画面时延 |
5G 专网约 100ms ;省内 150ms ;国内公网 200ms |
见 产品页 |
| 车载相机端到端 |
本地 <100ms ;公网 <150ms |
与相机类型、RTT 相关 |
| 控制同步频率 |
最高 100Hz |
见 §2.3 |
| 并发视频 |
单设备最高 8 路 |
|
| 弱网 |
~30% 丢包 卡顿率 <1% |
宣传口径 |
| 多网切换 |
<50ms 量级 |
Multipath 场景 |
| 安全 |
一话一密、设备认证、操控权限;国密可选 |
|
3.3 公开客户案例(摘要)
| 客户 |
场景要点 |
| 智元 Agibot |
缓解画面与指令不同步 |
| 越疆 DOBOT |
低延迟推流 + VR 遥控 |
| 艾欧智能 |
跨约 1.2 万公里远程双臂任务(2025 ICRA 相关报道) |
| 鹿明 Lumos |
数采与远控低延迟 |
3.4 SDK 角色(接入轮廓)
| SDK |
部署位置 |
职责(概念级) |
Field / Gateway SDK (libtrro_field + trro_field.h;Android/iOS 为 TrroGateway) |
车端/机器人/现场工控 |
多路采集编码、控制数据收发、按需推流、旁路录制、鉴权入网 |
Remote / Controller SDK (libtrro_remote + trro_remote.h;Android/iOS 为 TrroRemote) |
安全员 PC/VR/平板 |
订阅多路视频、下发控制、会话与权限状态 |
| 云端控制台 |
SaaS / 私有化 |
设备注册、权限、会话、录制、审计 |
对外主契约为 C flat API (TRRO_init* / TRRO_connectField 等),各平台 Demo 通过 AAR/Framework/CGO/ctypes/JNA 等胶水层接入;细节见 腾讯 TRRO SDK 深度剖析。不可与 TRTC 进房接口混用(见 §5)。
3.5 部署与计费(采购常问)
| 模式 |
说明 |
| 公有云 SaaS |
开箱控制台 + 按 流量/时长/并发 等计费(以商务报价为准) |
| 私有化 / 专有云 |
数据不出公网、等保场景;需自建运维 |
| 试用 |
产品页提供试用申请;同一设备标识同时仅允许一个连接(产品 FAQ) |
4. TRRO 技术栈分层
TRRO Native 侧并非「纯自研 UDP 单栈」,而是 三分库 + 三通道 :产品层(libtrro_field / libtrro_remote)负责 MQTT 信令、Multipath、控制通道与权限;媒体/传输层(librtc_media + librtc_engine)基于 WebRTC 族 ICE/SRTP 承载多路音视频,并在弱网算法上针对遥操场景深度定制。
#mermaid-svg-dmPvjNdix4CDHntt{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-dmPvjNdix4CDHntt .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-dmPvjNdix4CDHntt .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-dmPvjNdix4CDHntt .error-icon{fill:#552222;}#mermaid-svg-dmPvjNdix4CDHntt .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dmPvjNdix4CDHntt .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-dmPvjNdix4CDHntt .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dmPvjNdix4CDHntt .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dmPvjNdix4CDHntt .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-dmPvjNdix4CDHntt .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dmPvjNdix4CDHntt .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dmPvjNdix4CDHntt .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dmPvjNdix4CDHntt .marker.cross{stroke:#333333;}#mermaid-svg-dmPvjNdix4CDHntt svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dmPvjNdix4CDHntt p{margin:0;}#mermaid-svg-dmPvjNdix4CDHntt .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-dmPvjNdix4CDHntt .cluster-label text{fill:#333;}#mermaid-svg-dmPvjNdix4CDHntt .cluster-label span{color:#333;}#mermaid-svg-dmPvjNdix4CDHntt .cluster-label span p{background-color:transparent;}#mermaid-svg-dmPvjNdix4CDHntt .label text,#mermaid-svg-dmPvjNdix4CDHntt span{fill:#333;color:#333;}#mermaid-svg-dmPvjNdix4CDHntt .node rect,#mermaid-svg-dmPvjNdix4CDHntt .node circle,#mermaid-svg-dmPvjNdix4CDHntt .node ellipse,#mermaid-svg-dmPvjNdix4CDHntt .node polygon,#mermaid-svg-dmPvjNdix4CDHntt .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dmPvjNdix4CDHntt .rough-node .label text,#mermaid-svg-dmPvjNdix4CDHntt .node .label text,#mermaid-svg-dmPvjNdix4CDHntt .image-shape .label,#mermaid-svg-dmPvjNdix4CDHntt .icon-shape .label{text-anchor:middle;}#mermaid-svg-dmPvjNdix4CDHntt .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-dmPvjNdix4CDHntt .rough-node .label,#mermaid-svg-dmPvjNdix4CDHntt .node .label,#mermaid-svg-dmPvjNdix4CDHntt .image-shape .label,#mermaid-svg-dmPvjNdix4CDHntt .icon-shape .label{text-align:center;}#mermaid-svg-dmPvjNdix4CDHntt .node.clickable{cursor:pointer;}#mermaid-svg-dmPvjNdix4CDHntt .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-dmPvjNdix4CDHntt .arrowheadPath{fill:#333333;}#mermaid-svg-dmPvjNdix4CDHntt .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-dmPvjNdix4CDHntt .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-dmPvjNdix4CDHntt .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dmPvjNdix4CDHntt .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-dmPvjNdix4CDHntt .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dmPvjNdix4CDHntt .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-dmPvjNdix4CDHntt .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-dmPvjNdix4CDHntt .cluster text{fill:#333;}#mermaid-svg-dmPvjNdix4CDHntt .cluster span{color:#333;}#mermaid-svg-dmPvjNdix4CDHntt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-dmPvjNdix4CDHntt .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-dmPvjNdix4CDHntt rect.text{fill:none;stroke-width:0;}#mermaid-svg-dmPvjNdix4CDHntt .icon-shape,#mermaid-svg-dmPvjNdix4CDHntt .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dmPvjNdix4CDHntt .icon-shape p,#mermaid-svg-dmPvjNdix4CDHntt .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-dmPvjNdix4CDHntt .icon-shape .label rect,#mermaid-svg-dmPvjNdix4CDHntt .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dmPvjNdix4CDHntt .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-dmPvjNdix4CDHntt .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-dmPvjNdix4CDHntt :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 媒体传输 librtc_media + librtc_engine
TRRO 产品层 libtrro_field / libtrro_remote
云端 TRRO
旁路录制 / 推 CDN / COS
应用 / SDK API
H.264/H.265/AV1 + OPUS
控制指令二进制 QoS 0/1
MQTT 信令 paho.mqtt.c
Multipath 多网融合
master/guest 权限仲裁
独立控制通道
WebRTC ICE/SRTP
FEC / NACK / 改良拥塞控制
云端 SFU 只转发不混流
| 层级 |
技术要素 |
| 三通道 |
① MQTT 设备注册/配置/会话;② WebRTC 多路音视频;③ 独立二进制控制 (TRRO_sendControlData,QoS 0/1,内建 VCCT/RCCT 度量) |
| 端侧 SDK |
Linux(x86_64/aarch64、Jetson)、Windows、Android、iOS、Web、HarmonyOS;C ABI + 各平台官方封装 |
| 媒体栈 |
librtc_engine(ICE/SRTP/FEC/NACK)+ librtc_media(FFmpeg 桥接、硬编硬解) |
| 云端 |
Token/证书鉴权;SFU 不混流;Multipath 融合调度;旁路 MP4/HLS、COS |
| 弱网算法 |
在 WebRTC 栈之上做 FEC、NACK+ARQ、浅 JitterBuffer、码率联动(与 §6 中「相对通用 libWebRTC 的定制」一致) |
架构与 API 细节、Multipath 配置、Demo 胶水层见 腾讯 TRRO SDK 深度剖析 §3~§6.7。
5. TRRO 与 TRTC 的关系
TRRO 不是 TRTC SDK 封装;API 独立,但 共用底层 UDP 传输内核、弱网算法与编解码适配。
| 维度 |
TRTC |
TRRO |
| 定位 |
会议、直播、互动 |
工业遥操、数采、接管 |
| 控制通道 |
无专用高频遥操通道 |
独立 UDP,最高 100Hz,帧对齐 |
| 媒体 |
混流、美颜、CDN |
SFU 只转发 |
| 混用 |
不能用 TRTC API 替代 TRRO 遥操 |
|
6. 自研 UDP 引擎 vs 开源 WebRTC
以下为 公开技术材料归纳,非第三方独立测评。
| 维度 |
libWebRTC |
腾讯自研 UDP 引擎(TRRO/TRTC 类) |
| FEC |
XOR / FlexFEC 为主 |
XOR + RS;按帧类型动态冗余 |
| NACK |
NACK + 超时 |
时间序 SACK-like + probe |
| JitterBuffer |
会议向偏保守 |
与 FEC/流控联动、初始更浅 |
| 拥塞控制 |
GCC |
改良 GCC + 类 BBR、编码联动 |
| SFU |
可混流 |
只转发 |
| Multipath / 控制 |
无原生 |
Multipath + 独立控制 UDP |
7. 火山 RTC、RTS 与 TRRO
7.1 总览对比
| 维度 |
腾讯云 TRRO |
火山引擎 RTC + 自建 |
| 产品形态 |
行业解决方案(SDK + 云管端) |
通用 RTC SDK + 业务自建 |
| 音视频 |
遥操优化、多路弱网 |
低延迟模式、车机硬编优化、百毫秒级宣传 |
| 控制 |
内置 高频通道 + 帧对齐 |
RTS(实时信令)或自建二进制通道 |
| 多网融合 |
原生 Multipath |
无原生多网捆绑 |
| 设备管理 |
控制台标配 |
需自研 |
7.2 火山 RTS(Real-time Signaling)是什么
火山 RTS 提供基于 实时音视频网络 的 低延迟信令/消息 能力(与 RTC 房间网络复用),常用于:
- 杆量、按键、轻量控制指令;
- 与 RTC 音视频 同厂商、同接入点,减少异构对接。
| 对比项 |
TRRO 控制通道 |
火山 RTC + RTS |
| 产品化 |
遥操场景 一体化(QoS、对齐、录制) |
RTS 为 通用信令 ;遥操 QoS、对齐 需业务设计 |
| 与视频关系 |
物理分离 UDP + 时间戳对齐机制 |
复用 RTC 网络;是否帧级对齐 看自研协议 |
| 延迟宣传 |
100Hz + 多网 |
RTS 端到端信令有 ~51ms 量级 宣传(非 G2G 视频) |
| 多网 |
Multipath |
单链路为主 |
7.3 平行驾驶 / 车机典型栈(火山路线)
车端:相机/环视 → 火山 RTC(低延迟、硬编)→ 上行
杆量/CAN → RTS 或自定义二进制消息 → 上行
云端/业务:自建设备管理、会话、权限、录制索引
操控端:RTC 拉流 + RTS 发控 + 自研 HMI
适合:已有火山生态 、轻量接管演示 、或 音视频为主、控制协议已成熟 的团队。量产 Robotaxi / 多路挖机 / VLA 对齐数采 通常还要评估 Multipath 与对齐录制是否满足 §13。火山 RTC Native 栈、RTS 双栈、NICO 编解码与各平台产物见 火山引擎 RTC SDK 深度剖析。
8. 国内外其他方案速览
8.1 国内
| 厂商/产品 |
特点 |
遥操完备度 |
| 声网 Agora |
全球 RTC、互动/无人机场景多;低延迟模式、SEI |
通用 RTC;控制与多网需自建 |
| 阿里云 RTC |
极速模式、SEI 透传;配 IoT |
通用 RTC + 自建信令 |
| 华为云 RTC + IoTDA |
百毫秒级 + IoT 下发 |
政企/车企常见 |
| AIRTC(相速/当虹) |
机器人向、点云/多路 |
机器狗等 公开案例 |
| 清流鼎点 iLive |
超低延时、多径、嵌入式 |
底层 SDK,遥驾署名少 |
| ToDesk 企业 API |
远维低延迟 |
轻量远控,非工业 CAN/多网 |
8.2 海外
| 厂商 |
产品 |
特点 |
| Soliton Zao |
SDK / Zao-X 硬件 |
RASCOW2、多 SIM Bonding、CAN Tunnel |
| Voysys |
Teleop Platform |
低 GPU 占用、HMI 工具链 |
| LiveKit |
开源 SFU |
自建;见 §11 |
9. TRRO / Soliton / Voysys 细对比
| 维度 |
腾讯 TRRO |
Soliton Zao |
Voysys |
| 架构 |
云中继(可私有化) |
P2P 为主 + 硬件 |
P2P/轻中继 |
| G2G |
公网百毫秒级(§3.2) |
5G 宣传 ~35--40ms |
蜂窝 ~<50ms |
| 控制 |
UDP QoS、100Hz、帧对齐 |
Serial/CAN Tunnel |
独立数据通道 |
| 多网 |
Multipath |
最多 8 SIM Bonding |
Multi-link |
| 交付 |
SaaS 控制台 + SDK |
硬件或 OEM SDK |
Daemon + Player |
10. AIRTC 与清流鼎点公开案例
| 维度 |
AIRTC |
清流鼎点 iLive |
| 遥操客户 |
云深处 四足;滨江公安 巡逻机器人 |
遥驾署名少 |
| 其他 |
德施曼门锁视音频 |
全民 K 歌、央视等 互动娱乐 |
| 宣传延迟 |
机器狗 <100ms |
WiFi 40--50ms 、4G/5G <90ms |
11. 基于 LiveKit、WHIP 等开源自研
11.1 瓶颈(工业级)
| 瓶颈 |
说明 |
| 公网 G2G <150ms 稳定 |
短 GOP、浅 JitterBuffer、硬编硬解 |
| 控制 QoS |
DataChannel:最新态覆盖、优先级、与视频对齐 |
| Multipath |
标准 WebRTC 无;切基站易断 |
| 治理 |
鉴权、接管仲裁、审计(见 §12) |
11.2 WHIP / WHEP(WebRTC 上行标准)
| 标准 |
角色 |
| WHIP |
WebRTC 推流 入口(HTTP POST SDP) |
| WHEP |
WebRTC 拉流 播放 |
LiveKit、mediasoup、ZLMediaKit 等已支持 WHIP/WHEP 方向接入,适合 浏览器/轻量操控端 快速拉流;控制通道仍须另建(DataChannel 或独立 UDP),Multipath 仍缺。
11.3 周期与折中
| 路径 |
人力/周期(量级) |
| MVP |
2~4 人,2~3 个月 |
| 工业级 |
再 2~4 个月 弱网 + 治理 |
| 折中 |
LiveKit Cloud 验证 HMI → 再采购 TRRO 等 |
12. 接管流程与安全治理
遥操不仅是「低延迟」,更是 安全关键流程(尤其 L3/L4、矿区机械)。
#mermaid-svg-GKTk7Oeu4FsWcr8j{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-GKTk7Oeu4FsWcr8j .error-icon{fill:#552222;}#mermaid-svg-GKTk7Oeu4FsWcr8j .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GKTk7Oeu4FsWcr8j .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .marker.cross{stroke:#333333;}#mermaid-svg-GKTk7Oeu4FsWcr8j svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GKTk7Oeu4FsWcr8j p{margin:0;}#mermaid-svg-GKTk7Oeu4FsWcr8j .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .cluster-label text{fill:#333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .cluster-label span{color:#333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .cluster-label span p{background-color:transparent;}#mermaid-svg-GKTk7Oeu4FsWcr8j .label text,#mermaid-svg-GKTk7Oeu4FsWcr8j span{fill:#333;color:#333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .node rect,#mermaid-svg-GKTk7Oeu4FsWcr8j .node circle,#mermaid-svg-GKTk7Oeu4FsWcr8j .node ellipse,#mermaid-svg-GKTk7Oeu4FsWcr8j .node polygon,#mermaid-svg-GKTk7Oeu4FsWcr8j .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-GKTk7Oeu4FsWcr8j .rough-node .label text,#mermaid-svg-GKTk7Oeu4FsWcr8j .node .label text,#mermaid-svg-GKTk7Oeu4FsWcr8j .image-shape .label,#mermaid-svg-GKTk7Oeu4FsWcr8j .icon-shape .label{text-anchor:middle;}#mermaid-svg-GKTk7Oeu4FsWcr8j .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-GKTk7Oeu4FsWcr8j .rough-node .label,#mermaid-svg-GKTk7Oeu4FsWcr8j .node .label,#mermaid-svg-GKTk7Oeu4FsWcr8j .image-shape .label,#mermaid-svg-GKTk7Oeu4FsWcr8j .icon-shape .label{text-align:center;}#mermaid-svg-GKTk7Oeu4FsWcr8j .node.clickable{cursor:pointer;}#mermaid-svg-GKTk7Oeu4FsWcr8j .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .arrowheadPath{fill:#333333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-GKTk7Oeu4FsWcr8j .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GKTk7Oeu4FsWcr8j .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-GKTk7Oeu4FsWcr8j .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GKTk7Oeu4FsWcr8j .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-GKTk7Oeu4FsWcr8j .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-GKTk7Oeu4FsWcr8j .cluster text{fill:#333;}#mermaid-svg-GKTk7Oeu4FsWcr8j .cluster span{color:#333;}#mermaid-svg-GKTk7Oeu4FsWcr8j div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-GKTk7Oeu4FsWcr8j .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-GKTk7Oeu4FsWcr8j rect.text{fill:none;stroke-width:0;}#mermaid-svg-GKTk7Oeu4FsWcr8j .icon-shape,#mermaid-svg-GKTk7Oeu4FsWcr8j .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GKTk7Oeu4FsWcr8j .icon-shape p,#mermaid-svg-GKTk7Oeu4FsWcr8j .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-GKTk7Oeu4FsWcr8j .icon-shape .label rect,#mermaid-svg-GKTk7Oeu4FsWcr8j .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GKTk7Oeu4FsWcr8j .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-GKTk7Oeu4FsWcr8j .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-GKTk7Oeu4FsWcr8j :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 通过
拒绝
恢复自动驾驶
靠边/停车
故障
车辆/设备异常或请求接管
调度告警
安全员鉴权
建立遥操会话 TRRO/自建
审计记录
远程操控
结束条件
退出接管
安全停车
升级处置
旁路录制 / 审计日志
| 能力 |
商业方案(如 TRRO)常见 |
自研易缺 |
| 谁可接管 |
角色权限、黑白名单、项目隔离 |
需自建 RBAC |
| 同时多人 |
1 对多观看、单一 master 接管权 (TRRO:TRRO_requestPermission → 现场 TRRO_setOperationPermission;非 master 发控返回 TRRO_UNAUTHORIZED) |
易竞态 |
| 会话审计 |
操作日志、录制留存 |
合规风险 |
| 失效降级 |
超时断控、车端 本地最小风险策略 |
必须与车端安全栈联调 |
| 同一设备连接 |
产品规则:同设备 ID 仅一个活跃连接 |
自研需等价约束 |
车端应保证:通信丢失 → 减速/停车/驻车,不依赖云端最后一包指令。
13. POC 验收清单
签约前建议在 真实或模拟网络 下实测,勿仅看宣传 PPT。
13.1 环境与网络
| # |
测试项 |
建议方法 |
记录 |
| 1 |
5G 专网 / 公网 |
分别测 G2G、控制环 |
分辨率、码率、路数 |
| 2 |
单卡 vs 双卡/三卡 Multipath |
固定路线跑 ≥1 周 |
卡顿次数、切换耗时 |
| 3 |
弱网 30% 丢包 |
tc/netem 或弱网箱 |
卡顿率是否 <1%(自定 SLA) |
| 4 |
限速 1Mbps |
产品宣传常见场景 |
1080P 是否可用 |
| 5 |
基站切换 / 拔卡 |
移动路线 |
是否 <50ms 无感、是否黑屏 |
13.2 功能与对齐
| # |
测试项 |
建议方法 |
| 6 |
8 路视频同传 |
挖机/环视配置 |
| 7 |
100Hz 控制 |
实测 发送/到达频率 ;注意 SDK 3 秒消息条数 / 1 秒字节量限流 (超限 TRRO_MESSAGE_RATE_EXCEED 等),100Hz 宜 打包聚合 而非逐条发送 |
| 8 |
帧级对齐 |
导出录制;抽帧核对 PTS 与控制 最大偏差 |
| 9 |
ROS2 管线(若适用) |
rosbag2 回放验证同步(§2.4) |
| 10 |
多人抢接管 |
权限与仲裁是否符合预期 |
| 11 |
旁路录制 |
事故回溯、训练数据可用性 |
| 12 |
私有化/鉴权 |
一话一密、非法设备拒绝 |
13.3 交付物
- POC 报告模板:网络拓扑、指标定义、原始曲线、失败案例;
- SLA 写入合同:G2G、丢包、切换、对齐偏差阈值。
14. 选型决策树
#mermaid-svg-YWKzxDvF1Mb2af21{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-YWKzxDvF1Mb2af21 .error-icon{fill:#552222;}#mermaid-svg-YWKzxDvF1Mb2af21 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YWKzxDvF1Mb2af21 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YWKzxDvF1Mb2af21 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YWKzxDvF1Mb2af21 .marker.cross{stroke:#333333;}#mermaid-svg-YWKzxDvF1Mb2af21 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YWKzxDvF1Mb2af21 p{margin:0;}#mermaid-svg-YWKzxDvF1Mb2af21 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-YWKzxDvF1Mb2af21 .cluster-label text{fill:#333;}#mermaid-svg-YWKzxDvF1Mb2af21 .cluster-label span{color:#333;}#mermaid-svg-YWKzxDvF1Mb2af21 .cluster-label span p{background-color:transparent;}#mermaid-svg-YWKzxDvF1Mb2af21 .label text,#mermaid-svg-YWKzxDvF1Mb2af21 span{fill:#333;color:#333;}#mermaid-svg-YWKzxDvF1Mb2af21 .node rect,#mermaid-svg-YWKzxDvF1Mb2af21 .node circle,#mermaid-svg-YWKzxDvF1Mb2af21 .node ellipse,#mermaid-svg-YWKzxDvF1Mb2af21 .node polygon,#mermaid-svg-YWKzxDvF1Mb2af21 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-YWKzxDvF1Mb2af21 .rough-node .label text,#mermaid-svg-YWKzxDvF1Mb2af21 .node .label text,#mermaid-svg-YWKzxDvF1Mb2af21 .image-shape .label,#mermaid-svg-YWKzxDvF1Mb2af21 .icon-shape .label{text-anchor:middle;}#mermaid-svg-YWKzxDvF1Mb2af21 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-YWKzxDvF1Mb2af21 .rough-node .label,#mermaid-svg-YWKzxDvF1Mb2af21 .node .label,#mermaid-svg-YWKzxDvF1Mb2af21 .image-shape .label,#mermaid-svg-YWKzxDvF1Mb2af21 .icon-shape .label{text-align:center;}#mermaid-svg-YWKzxDvF1Mb2af21 .node.clickable{cursor:pointer;}#mermaid-svg-YWKzxDvF1Mb2af21 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-YWKzxDvF1Mb2af21 .arrowheadPath{fill:#333333;}#mermaid-svg-YWKzxDvF1Mb2af21 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-YWKzxDvF1Mb2af21 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-YWKzxDvF1Mb2af21 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YWKzxDvF1Mb2af21 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-YWKzxDvF1Mb2af21 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YWKzxDvF1Mb2af21 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-YWKzxDvF1Mb2af21 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-YWKzxDvF1Mb2af21 .cluster text{fill:#333;}#mermaid-svg-YWKzxDvF1Mb2af21 .cluster span{color:#333;}#mermaid-svg-YWKzxDvF1Mb2af21 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-YWKzxDvF1Mb2af21 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-YWKzxDvF1Mb2af21 rect.text{fill:none;stroke-width:0;}#mermaid-svg-YWKzxDvF1Mb2af21 .icon-shape,#mermaid-svg-YWKzxDvF1Mb2af21 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YWKzxDvF1Mb2af21 .icon-shape p,#mermaid-svg-YWKzxDvF1Mb2af21 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-YWKzxDvF1Mb2af21 .icon-shape .label rect,#mermaid-svg-YWKzxDvF1Mb2af21 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YWKzxDvF1Mb2af21 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-YWKzxDvF1Mb2af21 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-YWKzxDvF1Mb2af21 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否 局域网
是
是
是
否
否
是
否
远程操控需求
跨地域广域网?
直连 / LiveKit 实验
工业级数采/接管?
国内云管+合规?
腾讯云 TRRO
Soliton / Voysys
火山/声网/阿里/华为 RTC + RTS/自建
已深度火山?
RTC + RTS + 自研管理
声网等通用 RTC
§13 POC 验收
| 场景 |
优先考虑 |
| L4 接管、矿区挖机、VLA 数采 |
TRRO |
| 极限低延迟、离线、特种 |
Soliton Zao |
| 车队叠加遥操 HMI |
Voysys 或 TRRO |
| 机器狗对标 |
AIRTC + TRRO |
| 原型 / 实验室 |
LiveKit / WHIP |
| 火山生态、平行驾驶 |
RTC + RTS |
| 互动/无人机已有声网 |
Agora + 自建控制 |
Android / 无 Spring 服务端 :走 Device/Controller SDK + Disposable 式会话生命周期(移动端 Activity 销毁须断会话);勿假设云端控制台能力可省略。
15. 合规、部署与数据驻留
| 主题 |
要点 |
| L3/L4 远程接管 |
属 安全关键 能力;需与车端 最小风险策略 、ODD、运营规范一并设计;路测与地方监管要求 以当地法规为准 |
| 数据出境 |
音视频/控制数据是否出境;选 国内云区域 或 私有化 TRRO |
| 等保 / 国密 |
TRRO 宣传支持国密、等保适配;自建需单独评估 |
| 录制留存 |
事故溯源、训练数据版权与授权 |
| 涉密 / 军工 |
倾向 Soliton 离线 或 专网私有化,避免公网中继 |
16. 延伸阅读
落地时注意:文中延迟与丢包数字均为 厂商公开或社区文章口径 ;TRRO 与 TRTC、火山 RTC API 不可混用 ;自研 WebRTC 不等于 商业遥操的 Multipath、对齐录制与治理------验收以 §13 POC 为准。