Files
OmniSocketGo/CLAUDE.md
2026-04-03 12:04:39 +08:00

54 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 通信场景说明
## 系统拓扑
- 系统中有 `A/B/C/D` 四个终端。
- `A``C` 在同一侧,`B``D` 在同一侧。
- 实际运行时不是一条端到端 KCP而是两条独立 KCP 链路:
- `B <-> D`
- `D <-> A`
- `C` 只负责 UDP 端口转发。
- 整体目标是让 `A``B` 双向通信:
- `A -> B` 发送控制命令
- `B -> A` 发送视频和其他反馈数据
## 网络情况
- 主要瓶颈在 `B` 侧 5G 链路,`A` 侧是有线网络,不是主要约束。
- `B <-> D` 的时延抖动较大:
- 常见约 `15-60 ms`
- 最差约 `80-90 ms`
- 带宽是明显非对称的:
- `B -> D``8 Mbps`,偏低且不稳定
- `D -> B``27-50 Mbps`,更高但也有波动
- 工程含义:
- 控制流必须优先保障
- 视频流必须限速并具备自适应能力
- 不能默认把所有流合成一个共享传输就一定更优
## 三个项目的角色
- `OmniSocketGo`
- 底层传输项目
- 使用 C 编写
- 提供 OmniSocket/KCP 传输能力,以及视频发送等原生传输程序
- `robot-command-center`
- A 侧上层应用
- 主要负责接收视频帧,并提供监控/展示能力
- 当前通过本机 `A-side OmniDaemon` 使用传输能力
- `tienkung-szu`
- 上层控制项目
- 同时包含 A 侧控制发送和 B 侧控制执行逻辑
- A 侧典型入口是键盘/Xbox sender
- B 侧典型入口是 `rl_control_node.py` / `rl_control_node_sim.py`,负责接收控制并驱动机器人行为
## 当前架构方向
- `A` 侧通过 `A-side OmniDaemon` 统一管理本机的控制发送和视频接收。
- `B` 侧通过 `B-side OmniDaemon` 统一管理本机的控制接收和视频发送。
- 核心原则:
- 控制流与视频流逻辑分离
- 每台主机通过本地 daemon 统一持有传输会话
- 后续围绕真实网络瓶颈做 telemetry、调度和速率自适应
## 代码原则
- 一定要精简,不能写过于复杂和冗余的代码,因为必须确保各个环节可控,在低延迟的要求下,需要细化各个环节的消耗
## SSH原则
- 如果你需要SSH到某个远程端执行操作一定要确保不做删除文件操作确保留有记录