4.1 理解 Host/Client 架构
理解 Host/Client 架构
在开始遥操作之前,先理解 LeKiWi 的软件架构,有助于后续操作顺利进行。
什么是 Host 和 Client
LeKiWi 的软件架构分为**机器人端(Host)和遥控端(Client)**两个独立的进程。
| 组件 | 角色 | 运行位置 | 职责 |
|---|---|---|---|
Host(lekiwi_host) |
机器人端服务进程 | 树莓派(机器人主控) | 管理硬件(电机、相机、底盘),监听网络连接 |
Client(teleoperate.py、record.py 等) |
遥控端控制进程 | 桌面 / 笔记本电脑 | 发送遥操作指令,记录数据集,显示相机画面 |
┌──────────────────────┐ Wi-Fi/LAN ┌──────────────────────┐
│ Host │ ◄──────────────────► │ Client │
│ 树莓派(机器人上) │ │ 桌面电脑(用户操作) │
│ │ │ │
│ · 管理电机/相机/底盘 │ │ · 发送遥操作指令 │
│ · 监听网络等待连接 │ │ · 记录数据集 │
│ · 执行动作指令 │ │ · 显示相机画面 │
│ · 回传传感器数据 │ │ · 键盘/手柄输入映射 │
└──────────────────────┘ └──────────────────────┘
为什么要分离
| 设计考量 | 说明 |
|---|---|
| 硬件接口统一 | Host 只负责驱动硬件,Client 只负责交互逻辑,各司其职 |
| 网络透明 | 本地用 127.0.0.1,远程用实际 IP,Client 代码无需修改 |
| 安全保护 | Client 断开后 Host 继续运行,自动停止底盘(超时保护),机器人不会失控 |
| 多端接入 | 同一个 Host 可被键盘控制、手柄控制、自动推理等不同 Client 连接 |
| 减轻主控负担 | 数据记录的文件 I/O 在 Client 端完成,不占用树莓派存储和 CPU |
本地模式 vs 远程模式
| 本地模式 | 远程模式 | |
|---|---|---|
| Host 和 Client 位置 | 同一台机器 | 不同机器 |
| IP 配置 | 127.0.0.1 |
机器人实际 IP |
| 适用场景 | 开发调试 | 实际场地使用 |
有线版 LeKiWi 无需远程模式,所有命令在桌面电脑直接执行。
操作顺序
必须先启动 Host,再启动 Client。Host 启动后会打印 Listening on tcp://*:5555,表示等待 Client 连接。
接下来的两节将分别讲解如何在树莓派上启动 Host,以及在桌面端启动 Client 进行遥操作。