- 基于控制器协议在 App 侧实现 **TCP Socket 通信层**:消息帧封装与粘包拆包、心跳保活、超时重试、退避重连、异常兜底;关键指令增加幂等与状态校验
- 实现 **实时状态同步**:对接状态接口并抽象统一状态模型,位置、任务、电量、告警;使用 Flow 驱动 UI 差量刷新,完善断线与恢复状态管理
- 实现 **OpenGL ES 地图渲染**:点云、激光点、机器人位姿叠加显示;处理 map 与 robot 坐标系与 mat4 变换;点数据采用 VBO 批量更新并进行渲染节流
- 实现 **任务系统**:点位选择、路径组合、下发前检查、执行监控;覆盖单任务、循环任务、多点路径;输出进度、失败原因与可恢复提示
- 手机端实现 **开环远动控制逻辑**:输入、指令下发、状态回显;提供实时位置与地图查看能力用于现场操作
架构:
多模块 Clean 分层:presentation -> core -> domain -> model,底层通讯库 seer_api 由 core/domain 依赖。
UI 采用 MVVM:Activity/Fragment/Compose 负责展示与交互,ViewModel 调用 model/usecase,通过 Flow/StateFlow 推送状态。
依赖倒置:model 只放接口/用例/领域模型;domain 实现网关并做 DTO→领域映射;core 用 Hilt 组装依赖;presentation 只消费 model 能力
难点:
机器人协议复杂/兼容性:seer_api 用 RbkEncoder/RbkDecoder 统一二进制帧、GZIP/编码兜底,并用 RbkClient 按 API 号路由到不同端口
大文件地图与点云体量:保存地图时剥离点云避免 JSON 膨胀,加载时再从包内 2dpc 二进制/Protobuf 提取补齐